Commit 2704b134 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[exceeding] final little modifications of code for the first review - v1 of the NHESS paper

parent dadce483
No related merge requests found
Showing with 40 additions and 33 deletions
+40 -33
...@@ -172,8 +172,6 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer): ...@@ -172,8 +172,6 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
return massif_name_to_trend_test_that_minimized_aic return massif_name_to_trend_test_that_minimized_aic
def get_trend_trend_test(self, massif_name, trend_test_classes): def get_trend_trend_test(self, massif_name, trend_test_classes):
x, y = self.massif_name_to_years_and_maxima_for_model_fitting[massif_name] x, y = self.massif_name_to_years_and_maxima_for_model_fitting[massif_name]
quantile_level = self.massif_name_to_eurocode_quantile_level_in_practice[massif_name] quantile_level = self.massif_name_to_eurocode_quantile_level_in_practice[massif_name]
...@@ -226,7 +224,7 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer): ...@@ -226,7 +224,7 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
ax.get_xaxis().set_visible(True) ax.get_xaxis().set_visible(True)
ax.set_xticks([]) ax.set_xticks([])
ax.set_xlabel('Altitude = {}m'.format(self.study.altitude), fontsize=15) ax.set_xlabel('Altitude = {}m'.format(self.study.altitude), fontsize=15)
middle_word = 'o' if (not add_colorbar and self.study.altitude == 2700) else '' middle_word = 'o' if (not add_colorbar and self.study.altitude in [1800, 2700]) else ''
self.plot_name = 'tdlr_trends_w' + middle_word + '_colorbar' self.plot_name = 'tdlr_trends_w' + middle_word + '_colorbar'
self.show_or_save_to_file(add_classic_title=False, tight_layout=True, no_title=True, self.show_or_save_to_file(add_classic_title=False, tight_layout=True, no_title=True,
dpi=500) dpi=500)
......
...@@ -19,7 +19,7 @@ def tuples_for_examples_paper1(examples_for_the_paper=True): ...@@ -19,7 +19,7 @@ def tuples_for_examples_paper1(examples_for_the_paper=True):
else: else:
marker_altitude_massif_name_for_paper1 = [ marker_altitude_massif_name_for_paper1 = [
('magenta', 600, 'Parpaillon'), ('magenta', 600, 'Parpaillon'),
('darkmagenta', 300, 'Devoluy'), # ('darkmagenta', 300, 'Devoluy'),
('mediumpurple', 300, 'Aravis'), ('mediumpurple', 300, 'Aravis'),
] ]
return marker_altitude_massif_name_for_paper1 return marker_altitude_massif_name_for_paper1
...@@ -34,7 +34,7 @@ def max_graph_annual_maxima_poster(): ...@@ -34,7 +34,7 @@ def max_graph_annual_maxima_poster():
save_to_file = True save_to_file = True
study_class = CrocusSnowLoadTotal study_class = CrocusSnowLoadTotal
examples_for_the_paper = True examples_for_the_paper = False
ax = plt.gca() ax = plt.gca()
if examples_for_the_paper: if examples_for_the_paper:
......
...@@ -38,11 +38,11 @@ def compute_minimized_aic(visualizer): ...@@ -38,11 +38,11 @@ def compute_minimized_aic(visualizer):
_ = visualizer.massif_name_to_trend_test_that_minimized_aic _ = visualizer.massif_name_to_trend_test_that_minimized_aic
return True return True
def intermediate_result(altitudes, massif_names=None, def intermediate_result(altitudes, massif_names=None,
model_subsets_for_uncertainty=None, uncertainty_methods=None, model_subsets_for_uncertainty=None, uncertainty_methods=None,
study_class=CrocusSnowLoadTotal, study_class=CrocusSnowLoadTotal,
multiprocessing=False): multiprocessing=False,
only_histogram=False):
""" """
Plot all the trends for all altitudes Plot all the trends for all altitudes
And enable to plot uncertainty plot for some specific massif_names, uncertainty methods to be fast And enable to plot uncertainty plot for some specific massif_names, uncertainty methods to be fast
...@@ -56,29 +56,32 @@ def intermediate_result(altitudes, massif_names=None, ...@@ -56,29 +56,32 @@ def intermediate_result(altitudes, massif_names=None,
# Load altitude to visualizer # Load altitude to visualizer
altitude_to_visualizer = load_altitude_to_visualizer(altitudes, massif_names, model_subsets_for_uncertainty, altitude_to_visualizer = load_altitude_to_visualizer(altitudes, massif_names, model_subsets_for_uncertainty,
study_class, uncertainty_methods) study_class, uncertainty_methods)
# Load variable object efficiently if only_histogram:
for v in altitude_to_visualizer.values(): plot_uncertainty_histogram(altitude_to_visualizer)
_ = v.study.year_to_variable_object
# Compute minimized value efficiently
# visualizers = list()
if multiprocessing:
with Pool(NB_CORES) as p:
_ = p.imap(compute_minimized_aic, altitude_to_visualizer.values())
else: else:
for visualizer in altitude_to_visualizer.values(): # Load variable object efficiently
_ = compute_minimized_aic(visualizer) for v in altitude_to_visualizer.values():
_ = v.study.year_to_variable_object
# Compute minimized value efficiently
# visualizers = list()
if multiprocessing:
with Pool(NB_CORES) as p:
_ = p.imap(compute_minimized_aic, altitude_to_visualizer.values())
else:
for visualizer in altitude_to_visualizer.values():
_ = compute_minimized_aic(visualizer)
# Plots # Plots
plot_trend_map(altitude_to_visualizer) plot_trend_map(altitude_to_visualizer)
plot_trend_curves(altitude_to_visualizer={a: v for a, v in altitude_to_visualizer.items() if a >= 900}) plot_trend_curves(altitude_to_visualizer={a: v for a, v in altitude_to_visualizer.items() if a >= 900})
plot_uncertainty_massifs(altitude_to_visualizer) plot_uncertainty_massifs(altitude_to_visualizer)
plot_uncertainty_histogram(altitude_to_visualizer) plot_uncertainty_histogram(altitude_to_visualizer)
plot_selection_curves(altitude_to_visualizer) plot_selection_curves(altitude_to_visualizer)
plot_intensity_against_gumbel_quantile_for_3_examples(altitude_to_visualizer) plot_intensity_against_gumbel_quantile_for_3_examples(altitude_to_visualizer)
# Additional plots # Additional plots
# uncertainty_interval_size(altitude_to_visualizer) # uncertainty_interval_size(altitude_to_visualizer)
# plot_full_diagnostic(altitude_to_visualizer) # plot_full_diagnostic(altitude_to_visualizer)
def major_result(): def major_result():
...@@ -86,20 +89,24 @@ def major_result(): ...@@ -86,20 +89,24 @@ def major_result():
ConfidenceIntervalMethodFromExtremes.ci_mle][1:] ConfidenceIntervalMethodFromExtremes.ci_mle][1:]
# massif_names = ['Beaufortain', 'Vercors'] # massif_names = ['Beaufortain', 'Vercors']
massif_names = None massif_names = None
study_classes = paper_study_classes[:1] study_classes = paper_study_classes[:]
# study_classes = [CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days][::-1] # study_classes = [CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days][::-1]
altitudes = [300, 600, 900, 1800, 2700][:2] altitudes = [300, 600, 900, 1800, 2700][:2]
altitudes = [300, 600, 900, 1200, 1500, 1800] altitudes = [300, 600, 900, 1200, 1500, 1800]
altitudes = paper_altitudes altitudes = paper_altitudes
# altitudes = [900, 1800, 270{{0][:1] # altitudes = [900, 1800, 270{{0][:1]
for study_class in study_classes: for study_class in study_classes:
if study_class == CrocusSnowLoadEurocode: print('new stuy class', study_class)
if study_class is CrocusSnowLoadEurocode:
model_subsets_for_uncertainty = [ModelSubsetForUncertainty.stationary_gumbel] model_subsets_for_uncertainty = [ModelSubsetForUncertainty.stationary_gumbel]
only_histogram = True
else: else:
model_subsets_for_uncertainty = None model_subsets_for_uncertainty = None
only_histogram = False
intermediate_result(altitudes, massif_names, model_subsets_for_uncertainty, intermediate_result(altitudes, massif_names, model_subsets_for_uncertainty,
uncertainty_methods, study_class, uncertainty_methods, study_class,
multiprocessing=True) multiprocessing=True,
only_histogram=only_histogram)
if __name__ == '__main__': if __name__ == '__main__':
......
...@@ -22,6 +22,8 @@ def plot_trend_map(altitude_to_visualizer): ...@@ -22,6 +22,8 @@ def plot_trend_map(altitude_to_visualizer):
# Plot 2700 also with a colorbar # Plot 2700 also with a colorbar
if altitude == 2700: if altitude == 2700:
visualizer.plot_trends(max_abs_tdrl_above_900, add_colorbar=True) visualizer.plot_trends(max_abs_tdrl_above_900, add_colorbar=True)
if altitude == 1800:
visualizer.plot_trends(max_abs_tdrl_above_900, add_colorbar=False)
else: else:
max_abs_tdrl_below_900 = max(altitude_to_visualizer[300].max_abs_change, max_abs_tdrl_below_900 = max(altitude_to_visualizer[300].max_abs_change,
altitude_to_visualizer[600].max_abs_change) altitude_to_visualizer[600].max_abs_change)
......
...@@ -30,11 +30,11 @@ def plot_uncertainty_massifs(altitude_to_visualizer: Dict[int, StudyVisualizerFo ...@@ -30,11 +30,11 @@ def plot_uncertainty_massifs(altitude_to_visualizer: Dict[int, StudyVisualizerFo
visualizer = list(altitude_to_visualizer.values())[-1] visualizer = list(altitude_to_visualizer.values())[-1]
# Subdivide massif names in group of 3 # Subdivide massif names in group of 3
m = 1 m = 1
uncertainty_massif_names = visualizer.uncertainty_massif_names massif_names_fitted = visualizer.intersection_of_massif_names_fitted
n = (len(uncertainty_massif_names) // m) n = (len(massif_names_fitted) // m)
print('total nb of massif', n) print('total nb of massif', n)
for i in list(range(n))[:]: for i in list(range(n))[:]:
massif_names = uncertainty_massif_names[m * i: m * (i + 1)] massif_names = massif_names_fitted[m * i: m * (i + 1)]
print(massif_names) print(massif_names)
plot_subgroup_uncertainty_massifs(altitude_to_visualizer, massif_names) plot_subgroup_uncertainty_massifs(altitude_to_visualizer, massif_names)
......
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