Commit 72de1a7f authored by Dumoulin Nicolas's avatar Dumoulin Nicolas
Browse files

input files copyed in an output directory

parent b3032ff7
......@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
import pandas as pd
import geopandas as gpd
import os, sys
import os, sys, time, shutil
import yaml
import numpy as np
from Indicator import Indicator
......@@ -13,7 +13,7 @@ from productivite import Productivity
from indice_biodiversite_2 import Biodiversity
from social import Social
from tqdm import tqdm
from patutils import md5sum
from patutils import md5sum, load_pat_patches
class Scenario:
def __init__(self, patches):
......@@ -23,8 +23,7 @@ class Scenario:
'''
Return an instance of class Patches by loading a shapefile of initial patches.
'''
scenario = Scenario(gpd.GeoDataFrame.from_file(shpfilename, encoding='utf-8'))
scenario.patches['init_cult'] = scenario.patches['cultgeopat']
scenario = Scenario(load_pat_patches(shpfilename))
return scenario
def reallocate(self, rng, targetPAT, ratioNbPatches):
......@@ -80,15 +79,28 @@ class MCMC:
print('Please copy the template file "MCMC_config.sample.yml" and adjust to your settings and run again this program')
sys.exit(1)
self.mcmc_config = yaml.load(open(mcmc_config_filename,'r'))
self.outputdir = self.mcmc_config['output_dir'] + '/' + time.strftime('%Y%m%d-%H%M%S') + '/'
if not os.path.exists(self.outputdir):
os.makedirs(self.outputdir)
print('All data will be written in {}'.format(self.outputdir))
else:
print('Output directory already exists! ({})'.format(self.outputdir))
sys.exit(1)
shutil.copy(mcmc_config_filename, self.outputdir)
for f in [ self.mcmc_config['patches'], self.mcmc_config['target'],
self.mcmc_config['indicators_config']['resilience'],
self.mcmc_config['indicators_config']['biodiversity']['matrixfilename'],
self.mcmc_config['indicators_config']['social']['cost_matrix_filename'],
self.mcmc_config['indicators_config']['social']['patches_costs_filename']
]:
shutil.copy(f, self.outputdir)
if 'rng_seed' in self.mcmc_config:
self.rng = np.random.RandomState(self.mcmc_config['rng_seed'])
else:
self.rng = np.random.RandomState(42)
print('MCMC initialized with default seed') # self.rng.get_state()
self.patches_md5sum = md5sum(self.mcmc_config['patches'])
self.patches = gpd.GeoDataFrame.from_file(self.mcmc_config['patches'], encoding='utf-8')
self.patches = self.patches[self.patches['cultgeopat']!='Non Considérée']
self.patches['init_cult'] = self.patches['cultgeopat']
self.patches = load_pat_patches(self.mcmc_config['patches'])
self.target = pd.read_csv(self.mcmc_config['target'], sep=';',index_col=0)
targetRatio = (self.target['2050']-self.target['2016'])/self.target['2016']
self.targetPAT = self.patches.groupby('cultgeopat')['SURF_PARC'].sum()*(1+targetRatio)
......@@ -102,7 +114,7 @@ class MCMC:
scenario.reallocate(self.rng, self.targetPAT, self.mcmc_config['ratio_patches_to_modify']) # 3.8 ms
scores.append(self.indicators.compute_indicators(scenario.patches))
scores = pd.DataFrame(scores, columns=self.indicators.indicators_names)
scores.to_csv('../output/mcmc2.csv')
scores.to_csv(self.outputdir+'mcmc.csv')
# TODO
# Storing variation of indicators
init_var = scores.std()
......@@ -110,13 +122,9 @@ class MCMC:
# sequential optimization loop
if __name__ == '__main__':
# scenario = Scenario.load_shp('../output/PAT_patches/PAT_patches.shp')
# target = pd.read_csv('../resources/targetPAT.csv', sep=';',index_col=0)
# targetRatio = (target['2050']-target['2016'])/target['2016']
# targetPAT = scenario.patches.groupby('cultgeopat')['SURF_PARC'].sum()*(1+targetRatio)
# rng = np.random.RandomState()
# scenario.reallocate(rng, targetPAT, 50)
mcmc = MCMC('MCMC_config.yml')
# scenario = Scenario(mcmc.patches.copy())
# scenario.reallocate(mcmc.rng, mcmc.targetPAT, mcmc.mcmc_config['ratio_patches_to_modify'])
mcmc.run()
# print(mcmc.indicators.biodiversity(mcmc.patches))
# print(mcmc.indicators.proximity(mcmc.patches))
patches: ../output/PAT_patches/PAT_patches.shp
target: ../resources/targetPAT.csv
output_dir: ../output/MCMC/
initial_nb_particles: 10
ratio_patches_to_modify: 0.05
indicators_config:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment