-
Le Roux Erwan authored
[projections] add test_massif_names_adamont_v2 to check that all massifs are the same than for SAFRAN 2020. add assertion to check to the year_min and year_max for each scenario. compute bias in the mean maxima at the masssif level
24da3d1e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
from enum import Enum
from extreme_data.meteo_france_data.adamont_data.adamont_gcm_rcm_couples import gcm_rcm_couple_to_color, \
get_gcm_rcm_couple_adamont_to_full_name
class AdamontScenario(Enum):
histo = 0
rcp26 = 1
rcp45 = 2
rcp85 = 3
rcp85_extended = 4
adamont_scenarios_real = [AdamontScenario.histo, AdamontScenario.rcp26, AdamontScenario.rcp45, AdamontScenario.rcp85]
def get_year_min_and_year_max_from_scenario(adamont_scenario, gcm_rcm_couple):
assert isinstance(adamont_scenario, AdamontScenario)
year_min = get_year_min(adamont_scenario, gcm_rcm_couple)
year_max = get_year_max(adamont_scenario, gcm_rcm_couple)
return year_min, year_max
def get_year_max(adamont_scenario, gcm_rcm_couple):
real_adamont_scenarios = scenario_to_real_scenarios(adamont_scenario)
gcm, rcm = gcm_rcm_couple
if any([scenario is not AdamontScenario.histo for scenario in real_adamont_scenarios]):
if gcm == 'HadGEM2-ES':
year_max = 2099
else:
year_max = 2100
else:
year_max = 2005
return year_max
def get_year_min(adamont_scenario, gcm_rcm_couple):
real_adamont_scenarios = scenario_to_real_scenarios(adamont_scenario)
gcm, rcm = gcm_rcm_couple
if AdamontScenario.histo in real_adamont_scenarios:
if gcm == 'HadGEM2-ES':
year_min = 1982
elif rcm == 'RCA4':
year_min = 1971
elif gcm_rcm_couple in [('NorESM1-M', 'HIRHAM5'), ('IPSL-CM5A-MR', 'WRF331F'), ('CNRM-CM5', 'ALADIN63'),
('IPSL-CM5A-MR', 'WRF381P')]:
year_min = 1952
else:
year_min = 1951
else:
year_min = 2006
return year_min
def load_gcm_rcm_couples(year_min=None, year_max=None,
adamont_scenario=AdamontScenario.histo,
adamont_version=2):
gcm_rcm_couples = []
gcm_rcm_couple_to_full_name = get_gcm_rcm_couple_adamont_to_full_name(adamont_version)
for gcm_rcm_couple in gcm_rcm_couple_to_full_name.keys():
year_min_couple, year_max_couple = get_year_min_and_year_max_from_scenario(
adamont_scenario=adamont_scenario,
gcm_rcm_couple=gcm_rcm_couple)
if (year_min is None) or (year_min_couple <= year_min):
if (year_max is None) or (year_max <= year_max_couple):
gcm_rcm_couples.append(gcm_rcm_couple)
return gcm_rcm_couples
def get_suffix_for_the_nc_file(adamont_scenario, gcm_rcm_couple):
assert isinstance(adamont_scenario, AdamontScenario)
year_min, year_max = get_year_min_and_year_max_from_scenario(adamont_scenario, gcm_rcm_couple)
return '{}080106_{}080106_daysum'.format(year_min - 1, year_max)
def scenario_to_str(adamont_scenario):
return '+'.join([str(real_adamont_scenario).split('.')[-1].upper()
for real_adamont_scenario in scenario_to_real_scenarios(adamont_scenario)])
def scenario_to_real_scenarios(adamont_scenario):
if adamont_scenario in adamont_scenarios_real:
return [adamont_scenario]
else:
if adamont_scenario is AdamontScenario.rcp85_extended:
return [AdamontScenario.histo, AdamontScenario.rcp85]
else:
raise NotImplementedError
def gcm_rcm_couple_to_str(gcm_rcm_couple):
return ' / '.join(gcm_rcm_couple)
def get_color_from_gcm_rcm_couple(gcm_rcm_couple):
return gcm_rcm_couple_to_color[gcm_rcm_couple]