Commit d8bd3feb authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[projection snowfall] fix temperature for HadGem. rely on the merge visualizer.

parent 9473d0f3
No related merge requests found
Showing with 16 additions and 11 deletions
+16 -11
...@@ -93,14 +93,16 @@ def dat_to_csv(csv_filepath, txt_filepath, gcm): ...@@ -93,14 +93,16 @@ def dat_to_csv(csv_filepath, txt_filepath, gcm):
l = df_temp_until_july.sum(axis=1).values + df_temp_after_august.sum(axis=1).values l = df_temp_until_july.sum(axis=1).values + df_temp_after_august.sum(axis=1).values
l /= 12 l /= 12
l = [np.nan] + list(l) l = [np.nan] + list(l)
l = np.array(l)
assert len(l) == len(df.index) assert len(l) == len(df.index)
l[l < 280] = np.nan
# First we compute the standard column # First we compute the standard column
df = set_anomaly(df, mean_data=l, spline=False) df = set_anomaly(df, mean_data=l, spline=False)
# Then we regress some cubic spline on the temperature columns # Then we regress some cubic spline on the temperature columns
noisy_data = df[get_column_name(anomaly=False, spline=False)] noisy_data = df[get_column_name(anomaly=False, spline=False)]
ind = noisy_data > -50 ind = ~noisy_data.isna()
spline_data = noisy_data.copy() spline_data = noisy_data.copy()
spline_data.loc[ind] = apply_cubic_spline(noisy_data.loc[ind].index.values, noisy_data.loc[ind].values, gcm) spline_data.loc[ind] = apply_cubic_spline(noisy_data.loc[ind].index.values, noisy_data.loc[ind].values, gcm)
df = set_anomaly(df, mean_data=spline_data, spline=True) df = set_anomaly(df, mean_data=spline_data, spline=True)
......
...@@ -32,7 +32,7 @@ def main_plot_temperature_with_spline_on_top(anomaly=True): ...@@ -32,7 +32,7 @@ def main_plot_temperature_with_spline_on_top(anomaly=True):
scenarios = rcp_scenarios scenarios = rcp_scenarios
for scenario in scenarios: for scenario in scenarios:
label = gcm if scenario == scenarios[0] else None label = gcm if scenario == scenarios[0] else None
plot_temperature_for_rcp_gcm(ax, gcm, scenario, year_min=1951, year_max=2005, linestyle=linestyle, plot_temperature_for_rcp_gcm(ax, gcm, scenario, year_min=1850, year_max=2005, linestyle=linestyle,
label=label, spline=spline, anomaly=anomaly) label=label, spline=spline, anomaly=anomaly)
plot_temperature_for_rcp_gcm(ax, gcm, scenario, year_min=2005, year_max=2100, spline=spline, anomaly=anomaly) plot_temperature_for_rcp_gcm(ax, gcm, scenario, year_min=2005, year_max=2100, spline=spline, anomaly=anomaly)
......
...@@ -32,3 +32,7 @@ class OneFoldFitMerge(OneFoldFit): ...@@ -32,3 +32,7 @@ class OneFoldFitMerge(OneFoldFit):
merged_relative_changes = list(self.merge_function(np.array(all_relative_changes), axis=0)) merged_relative_changes = list(self.merge_function(np.array(all_relative_changes), axis=0))
assert len(all_relative_changes[0]) == len(merged_relative_changes) assert len(all_relative_changes[0]) == len(merged_relative_changes)
return merged_relative_changes return merged_relative_changes
@property
def best_shape(self):
return self.merge_function([o.best_shape for o in self.one_fold_fit_list])
...@@ -112,7 +112,7 @@ class VisualizerForProjectionEnsemble(object): ...@@ -112,7 +112,7 @@ class VisualizerForProjectionEnsemble(object):
merge_keys = [AbstractEnsembleFit.Median_merge, AbstractEnsembleFit.Mean_merge] merge_keys = [AbstractEnsembleFit.Median_merge, AbstractEnsembleFit.Mean_merge]
keys = self.gcm_rcm_couples + merge_keys keys = self.gcm_rcm_couples + merge_keys
# Only plot Mean for speed # Only plot Mean for speed
keys = [AbstractEnsembleFit.Mean_merge] # keys = [AbstractEnsembleFit.Mean_merge]
for key in keys: for key in keys:
visualizer_list = [independent_ensemble_fit.gcm_rcm_couple_to_visualizer[key] visualizer_list = [independent_ensemble_fit.gcm_rcm_couple_to_visualizer[key]
if key in self.gcm_rcm_couples if key in self.gcm_rcm_couples
......
...@@ -206,9 +206,9 @@ def main_paper2(): ...@@ -206,9 +206,9 @@ def main_paper2():
def main_paper3(): def main_paper3():
altitudes = list(chain.from_iterable(altitudes_for_groups)) altitudes = list(chain.from_iterable(altitudes_for_groups))
# altitudes = [1200, 1500, 1800] # altitudes = [1200, 1500, 1800]
for scenario in rcp_scenarios[2:]: for scenario in rcp_scenarios[:]:
gcm_rcm_couples = get_gcm_rcm_couples(scenario) gcm_rcm_couples = get_gcm_rcm_couples(scenario)
gcm_rcm_couples =[('CNRM-CM5', 'CCLM4-8-17')] # gcm_rcm_couples =[('CNRM-CM5', 'CCLM4-8-17')]
for gcm_rcm_couple in gcm_rcm_couples: for gcm_rcm_couple in gcm_rcm_couples:
visualizer = PointwiseGevStudyVisualizer(AdamontSnowfall, altitudes=altitudes, scenario=scenario, visualizer = PointwiseGevStudyVisualizer(AdamontSnowfall, altitudes=altitudes, scenario=scenario,
gcm_rcm_couple=gcm_rcm_couple) gcm_rcm_couple=gcm_rcm_couple)
......
...@@ -20,12 +20,11 @@ from extreme_data.meteo_france_data.scm_models_data.utils import Season ...@@ -20,12 +20,11 @@ from extreme_data.meteo_france_data.scm_models_data.utils import Season
def main(): def main():
scm_study_class = SafranSnowfall1Day scm_study_class = SafranSnowfall1Day
adamont_study_class = AdamontSnowfall adamont_study_class = AdamontSnowfall
year_min = 2006 year_min = 1950
year_max = 2100 year_max = 2100
massif_names = ['Vanoise'] massif_names = ['Vanoise']
season = Season.annual season = Season.annual
scenarios = rcm_scenarios_extended scenarios = rcm_scenarios_extended
scenarios = rcp_scenarios
altitudes = [600, 2100, 3600] altitudes = [600, 2100, 3600]
for altitude, adamont_scenario in list(zip(altitudes, scenarios))[:]: for altitude, adamont_scenario in list(zip(altitudes, scenarios))[:]:
plt.figure(figsize=(10, 5)) plt.figure(figsize=(10, 5))
...@@ -38,7 +37,7 @@ def main(): ...@@ -38,7 +37,7 @@ def main():
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, adamont_studies.plot_maxima_time_series_adamont(massif_names=massif_names,
scm_study=scm_study, legend_and_labels=True) scm_study=scm_study, legend_and_labels=False)
if __name__ == '__main__': if __name__ == '__main__':
......
...@@ -39,7 +39,7 @@ from extreme_data.meteo_france_data.scm_models_data.utils import Season ...@@ -39,7 +39,7 @@ from extreme_data.meteo_france_data.scm_models_data.utils import Season
def main(): def main():
start = time.time() start = time.time()
study_class = AdamontSnowfall study_class = AdamontSnowfall
ensemble_fit_classes = [IndependentEnsembleFit, TogetherEnsembleFit][1:] ensemble_fit_classes = [IndependentEnsembleFit, TogetherEnsembleFit][:1]
temporal_covariate_for_fit = [TimeTemporalCovariate, temporal_covariate_for_fit = [TimeTemporalCovariate,
AnomalyTemperatureWithSplineTemporalCovariate][0] AnomalyTemperatureWithSplineTemporalCovariate][0]
set_seed_for_test() set_seed_for_test()
...@@ -58,12 +58,12 @@ def main(): ...@@ -58,12 +58,12 @@ def main():
gcm_rcm_couples = get_gcm_rcm_couples(scenario) gcm_rcm_couples = get_gcm_rcm_couples(scenario)
if fast is None: if fast is None:
massif_names = None massif_names = None
gcm_rcm_couples = gcm_rcm_couples gcm_rcm_couples = gcm_rcm_couples[:2]
AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10 AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10
altitudes_list = altitudes_for_groups[3:] altitudes_list = altitudes_for_groups[3:]
elif fast: elif fast:
massif_names = ['Vanoise', 'Haute-Maurienne'] massif_names = ['Vanoise', 'Haute-Maurienne']
gcm_rcm_couples = gcm_rcm_couples[:] gcm_rcm_couples = gcm_rcm_couples[:2]
AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10 AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10
altitudes_list = altitudes_for_groups[:1] altitudes_list = altitudes_for_groups[:1]
else: else:
......
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