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):
return massif_name_to_trend_test_that_minimized_aic
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]
quantile_level = self.massif_name_to_eurocode_quantile_level_in_practice[massif_name]
......@@ -226,7 +224,7 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
ax.get_xaxis().set_visible(True)
ax.set_xticks([])
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.show_or_save_to_file(add_classic_title=False, tight_layout=True, no_title=True,
dpi=500)
......
......@@ -19,7 +19,7 @@ def tuples_for_examples_paper1(examples_for_the_paper=True):
else:
marker_altitude_massif_name_for_paper1 = [
('magenta', 600, 'Parpaillon'),
('darkmagenta', 300, 'Devoluy'),
# ('darkmagenta', 300, 'Devoluy'),
('mediumpurple', 300, 'Aravis'),
]
return marker_altitude_massif_name_for_paper1
......@@ -34,7 +34,7 @@ def max_graph_annual_maxima_poster():
save_to_file = True
study_class = CrocusSnowLoadTotal
examples_for_the_paper = True
examples_for_the_paper = False
ax = plt.gca()
if examples_for_the_paper:
......
......@@ -38,11 +38,11 @@ def compute_minimized_aic(visualizer):
_ = visualizer.massif_name_to_trend_test_that_minimized_aic
return True
def intermediate_result(altitudes, massif_names=None,
model_subsets_for_uncertainty=None, uncertainty_methods=None,
study_class=CrocusSnowLoadTotal,
multiprocessing=False):
multiprocessing=False,
only_histogram=False):
"""
Plot all the trends for all altitudes
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,
# Load altitude to visualizer
altitude_to_visualizer = load_altitude_to_visualizer(altitudes, massif_names, model_subsets_for_uncertainty,
study_class, uncertainty_methods)
# Load variable object efficiently
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())
if only_histogram:
plot_uncertainty_histogram(altitude_to_visualizer)
else:
for visualizer in altitude_to_visualizer.values():
_ = compute_minimized_aic(visualizer)
# Load variable object efficiently
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
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_uncertainty_massifs(altitude_to_visualizer)
plot_uncertainty_histogram(altitude_to_visualizer)
plot_selection_curves(altitude_to_visualizer)
plot_intensity_against_gumbel_quantile_for_3_examples(altitude_to_visualizer)
# Plots
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_uncertainty_massifs(altitude_to_visualizer)
plot_uncertainty_histogram(altitude_to_visualizer)
plot_selection_curves(altitude_to_visualizer)
plot_intensity_against_gumbel_quantile_for_3_examples(altitude_to_visualizer)
# Additional plots
# uncertainty_interval_size(altitude_to_visualizer)
# plot_full_diagnostic(altitude_to_visualizer)
# Additional plots
# uncertainty_interval_size(altitude_to_visualizer)
# plot_full_diagnostic(altitude_to_visualizer)
def major_result():
......@@ -86,20 +89,24 @@ def major_result():
ConfidenceIntervalMethodFromExtremes.ci_mle][1:]
# massif_names = ['Beaufortain', 'Vercors']
massif_names = None
study_classes = paper_study_classes[:1]
study_classes = paper_study_classes[:]
# study_classes = [CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days][::-1]
altitudes = [300, 600, 900, 1800, 2700][:2]
altitudes = [300, 600, 900, 1200, 1500, 1800]
altitudes = paper_altitudes
# altitudes = [900, 1800, 270{{0][:1]
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]
only_histogram = True
else:
model_subsets_for_uncertainty = None
only_histogram = False
intermediate_result(altitudes, massif_names, model_subsets_for_uncertainty,
uncertainty_methods, study_class,
multiprocessing=True)
multiprocessing=True,
only_histogram=only_histogram)
if __name__ == '__main__':
......
......@@ -22,6 +22,8 @@ def plot_trend_map(altitude_to_visualizer):
# Plot 2700 also with a colorbar
if altitude == 2700:
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:
max_abs_tdrl_below_900 = max(altitude_to_visualizer[300].max_abs_change,
altitude_to_visualizer[600].max_abs_change)
......
......@@ -30,11 +30,11 @@ def plot_uncertainty_massifs(altitude_to_visualizer: Dict[int, StudyVisualizerFo
visualizer = list(altitude_to_visualizer.values())[-1]
# Subdivide massif names in group of 3
m = 1
uncertainty_massif_names = visualizer.uncertainty_massif_names
n = (len(uncertainty_massif_names) // m)
massif_names_fitted = visualizer.intersection_of_massif_names_fitted
n = (len(massif_names_fitted) // m)
print('total nb of massif', 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)
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