Commit 145e046a authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[projections] fix main_data.py by fixing rcp_extended for adamont_v2

parent 8dbaaf17
No related merge requests found
Showing with 31 additions and 22 deletions
+31 -22
...@@ -83,23 +83,21 @@ class AbstractAdamontStudy(AbstractStudy): ...@@ -83,23 +83,21 @@ class AbstractAdamontStudy(AbstractStudy):
def load_year_to_annual_maxima_version_2(self): def load_year_to_annual_maxima_version_2(self):
year_to_annual_maxima = OrderedDict() year_to_annual_maxima = OrderedDict()
for dataset in self.datasets: for dataset, real_scenario in zip(self.datasets, self.adamont_real_scenarios):
annual_maxima = np.array(dataset.variables[self.variable_class.indicator_name_for_maxima]) annual_maxima = np.array(dataset.variables[self.variable_class.indicator_name_for_maxima])
assert annual_maxima.shape[1] == len(self.column_mask) assert annual_maxima.shape[1] == len(self.column_mask)
annual_maxima = annual_maxima[:, self.column_mask] annual_maxima = annual_maxima[:, self.column_mask]
year_to_annual_maxima = OrderedDict() year_min, year_max = get_year_min_and_year_max_from_scenario(real_scenario, self.gcm_rcm_couple)
year_min, year_max = get_year_min_and_year_max_from_scenario(self.scenario, self.gcm_rcm_couple)
years = list(range(year_min, year_max + 1)) years = list(range(year_min, year_max + 1))
if self.scenario in adamont_scenarios_real: time = np.array(dataset.variables['time'])
time = np.array(dataset.variables['time']) msg = 'len_years={} while len_time={},' \
msg = 'len_years={} while len_time={},' \ 'check year_min and year_max, ' \
'check year_min and year_max, ' \ 'check in debug mode the time field of the daatset to see the starting date'.format(years, time)
'check in debug mode the time field of the daatset to see the starting date'.format(years, time) # # Some print to check which year are in the data
# # Some print to check which year are in the data # start = datetime(year=2005, month=8, day=1, hour=6, minute=0, second=0)
# start = datetime(year=2005, month=8, day=1, hour=6, minute=0, second=0) # dates = [start + timedelta(hours=int(h)) for h in time]
# dates = [start + timedelta(hours=int(h)) for h in time] # print(["{}-{}".format(date.year-1, date.year) for date in dates])
# print(["{}-{}".format(date.year-1, date.year) for date in dates]) assert len(years) == len(time), msg
assert len(years) == len(time), msg
for year, maxima in zip(years, annual_maxima): for year, maxima in zip(years, annual_maxima):
if self.year_min <= year <= self.year_max: if self.year_min <= year <= self.year_max:
year_to_annual_maxima[year] = maxima year_to_annual_maxima[year] = maxima
......
...@@ -25,8 +25,8 @@ class AdamontSnowfall(AbstractAdamontStudy): ...@@ -25,8 +25,8 @@ class AdamontSnowfall(AbstractAdamontStudy):
if __name__ == '__main__': if __name__ == '__main__':
study = AdamontSnowfall(altitude=1800, adamont_version=2, gcm_rcm_couple=('HadGEM2-ES', 'RACMO22E'), study = AdamontSnowfall(altitude=1800, adamont_version=1, gcm_rcm_couple=('HadGEM2-ES', 'RACMO22E'),
scenario=AdamontScenario.rcp85) scenario=AdamontScenario.rcp85_extended)
pass pass
print(study.year_to_annual_maxima) print(study.year_to_annual_maxima)
print(study.year_to_annual_maxima) print(study.year_to_annual_maxima)
...@@ -107,6 +107,7 @@ class AdamontStudies(object): ...@@ -107,6 +107,7 @@ class AdamontStudies(object):
massif_name.replace('_', ' '), massif_name.replace('_', ' '),
self.study.altitude) self.study.altitude)
fontsize = 13 fontsize = 13
ax.tick_params(axis='both', which='major', labelsize=fontsize)
if legend_and_labels: if legend_and_labels:
ax.set_ylabel('{} ({})'.format(plot_name, self.study.variable_unit), fontsize=fontsize) ax.set_ylabel('{} ({})'.format(plot_name, self.study.variable_unit), fontsize=fontsize)
ax.set_xlabel('years', fontsize=fontsize) ax.set_xlabel('years', fontsize=fontsize)
......
...@@ -6,11 +6,12 @@ mpl.use('Agg') ...@@ -6,11 +6,12 @@ mpl.use('Agg')
mpl.rcParams['text.usetex'] = True mpl.rcParams['text.usetex'] = True
mpl.rcParams['text.latex.preamble'] = [r'\usepackage{amsmath}'] mpl.rcParams['text.latex.preamble'] = [r'\usepackage{amsmath}']
import matplotlib.pyplot as plt
from projects.projected_snowfall.evaluation.comparison_plot import individual_plot from projects.projected_snowfall.evaluation.comparison_plot import individual_plot
from extreme_data.meteo_france_data.adamont_data.adamont.adamont_snowfall import AdamontSnowfall from extreme_data.meteo_france_data.adamont_data.adamont.adamont_snowfall import AdamontSnowfall
from extreme_data.meteo_france_data.adamont_data.adamont_scenario import AdamontScenario, get_gcm_rcm_couples, \ from extreme_data.meteo_france_data.adamont_data.adamont_scenario import AdamontScenario, get_gcm_rcm_couples, \
scenario_to_real_scenarios, rcp_scenarios scenario_to_real_scenarios, rcp_scenarios, rcm_scenarios_extended
from extreme_data.meteo_france_data.adamont_data.adamont_studies import AdamontStudies from extreme_data.meteo_france_data.adamont_data.adamont_studies import AdamontStudies
from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall1Day from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall1Day
from extreme_data.meteo_france_data.scm_models_data.utils import Season from extreme_data.meteo_france_data.scm_models_data.utils import Season
...@@ -23,10 +24,11 @@ def main(): ...@@ -23,10 +24,11 @@ def main():
year_max = 2100 year_max = 2100
massif_names = ['Vanoise'] massif_names = ['Vanoise']
season = Season.annual season = Season.annual
scenarios = [AdamontScenario.rcp26_extended, AdamontScenario.rcp45_extended, AdamontScenario.rcp85_extended] scenarios = rcm_scenarios_extended
# scenarios = rcp_scenarios # scenarios = rcp_scenarios
altitudes = [600, 2100, 3600] altitudes = [600, 2100, 3600]
for altitude, adamont_scenario in list(zip(altitudes, scenarios))[-1:]: for altitude, adamont_scenario in list(zip(altitudes, scenarios))[:]:
plt.figure(figsize=(20, 5))
# Loading part # Loading part
scm_study = scm_study_class(altitude=altitude) scm_study = scm_study_class(altitude=altitude)
real_adamont_scenario = scenario_to_real_scenarios(adamont_scenario=adamont_scenario)[-1] real_adamont_scenario = scenario_to_real_scenarios(adamont_scenario=adamont_scenario)[-1]
...@@ -35,10 +37,9 @@ def main(): ...@@ -35,10 +37,9 @@ def main():
altitude=altitude, year_min_studies=year_min, year_max_studies=year_max, altitude=altitude, year_min_studies=year_min, year_max_studies=year_max,
season=season, scenario=adamont_scenario) season=season, scenario=adamont_scenario)
print(altitude, adamont_scenario) print(altitude, adamont_scenario)
adamont_studies.plot_maxima_time_series_adamont(massif_names=massif_names, scm_study=scm_study, legend_and_labels=False) adamont_studies.plot_maxima_time_series_adamont(massif_names=massif_names,
scm_study=scm_study, legend_and_labels=False)
if __name__ == '__main__': if __name__ == '__main__':
fast_list = [1, 2, 4, 6][:1] main()
for fast in fast_list:
main()
...@@ -40,6 +40,14 @@ class TestAdamontStudy(unittest.TestCase): ...@@ -40,6 +40,14 @@ class TestAdamontStudy(unittest.TestCase):
year_min=year_min, gcm_rcm_couple=gcm_rcm_couple) year_min=year_min, gcm_rcm_couple=gcm_rcm_couple)
assert set(adamont_study.study_massif_names) == set(reanalysis_study.study_massif_names) assert set(adamont_study.study_massif_names) == set(reanalysis_study.study_massif_names)
def test_rcp_extended(self):
for version in [1, 2]:
study = AdamontSnowfall(altitude=1800, adamont_version=version, gcm_rcm_couple=('HadGEM2-ES', 'RACMO22E'),
scenario=AdamontScenario.rcp85_extended)
self.assertEqual(len(study.ordered_years), len(study.massif_name_to_annual_maxima["Vanoise"]))
self.assertTrue(True)
def test_existing_gcm_rcm_couple_and_rcp(self): def test_existing_gcm_rcm_couple_and_rcp(self):
altitude = 1800 altitude = 1800
for scenario in rcp_scenarios[:]: for scenario in rcp_scenarios[:]:
...@@ -55,5 +63,6 @@ class TestAdamontStudy(unittest.TestCase): ...@@ -55,5 +63,6 @@ class TestAdamontStudy(unittest.TestCase):
self.assertTrue(True) self.assertTrue(True)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()
Supports Markdown
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