diff --git a/experiment/eurocode_data/main_eurocode_drawing.py b/experiment/eurocode_data/main_eurocode_drawing.py index f6c15f6f00eb76c420e9b292e9fa70c9fdc4c1e0..c3db7810f9ac9037fcd7bab3d0f5cdd23e839796 100644 --- a/experiment/eurocode_data/main_eurocode_drawing.py +++ b/experiment/eurocode_data/main_eurocode_drawing.py @@ -3,15 +3,14 @@ import os.path as op import matplotlib.pyplot as plt from collections import OrderedDict -from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \ StudyVisualizer from extreme_fit.model.result_from_model_fit.result_from_extremes.eurocode_return_level_uncertainties import \ ConfidenceIntervalMethodFromExtremes -from experiment.eurocode_data.eurocode_visualizer import \ +from experiment.paper_past_snow_loads.result_trends_and_return_levels.eurocode_visualizer import \ plot_massif_name_to_model_name_to_uncertainty_method_to_ordered_dict, get_model_name from experiment.eurocode_data.massif_name_to_departement import MASSIF_NAMES_ALPS -from experiment.eurocode_data.utils import EUROCODE_ALTITUDES, LAST_YEAR_FOR_EUROCODE +from experiment.eurocode_data.utils import EUROCODE_ALTITUDES from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSwe3Days, CrocusSweTotal from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer import \ AltitudeHypercubeVisualizer diff --git a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py index 9832ac59370208f1d8a9e03cc0059fff03f46788..0bcf0f0e5f8de0e4a1067da76e4414f91252bf54 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py @@ -3,7 +3,7 @@ from typing import List from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \ StudyVisualizer -from experiment.paper_past_snow_loads.data.crocus_study_comparison_with_eurocode import CrocusDifferenceSnowLoad, \ +from experiment.paper_past_snow_loads.result_data_comparison_with_eurocode.crocus_study_comparison_with_eurocode import CrocusDifferenceSnowLoad, \ CrocusSnowDensityAtMaxofSwe, CrocusDifferenceSnowLoadRescaledAndEurocodeToSeeSynchronization from experiment.trend_analysis.abstract_score import MannKendall from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy diff --git a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py index 2829bf6edda69417827909218ba72c97879879dc..90dc5297f02a84635777438cac458500438565f2 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py @@ -354,22 +354,22 @@ class StudyVisualizer(VisualizationParameters): start_year, stop_year = self.study.start_year_and_stop_year return list(range(start_year, stop_year)) - def massif_name_to_altitude_and_eurocode_level_uncertainty(self, model_class, last_year_for_the_data, massif_names, - ci_method, temporal_covariate) -> Dict[ + def massif_name_to_altitude_and_eurocode_level_uncertainty(self, model_class, massif_names, + ci_method, effective_temporal_covariate) -> Dict[ str, Tuple[int, EurocodeConfidenceIntervalFromExtremes]]: massif_ids_and_names = [(massif_id, massif_name) for massif_id, massif_name in enumerate(self.study.study_massif_names) if massif_name in massif_names] arguments = [ - [last_year_for_the_data, self.smooth_maxima_x_y(massif_id), model_class, ci_method, temporal_covariate] for + [self.smooth_maxima_x_y(massif_id), model_class, ci_method, effective_temporal_covariate] for massif_id, _ in massif_ids_and_names] if self.multiprocessing: with Pool(NB_CORES) as p: res = p.starmap(compute_eurocode_confidence_interval, arguments) else: res = [compute_eurocode_confidence_interval(*argument) for argument in arguments] - res_and_altitude = [(self.study.altitude, r) for r in res] + altitudes_and_res = [(self.study.altitude, r) for r in res] massif_name_to_eurocode_return_level_uncertainty = OrderedDict( - zip([massif_name for _, massif_name in massif_ids_and_names], res_and_altitude)) + zip([massif_name for _, massif_name in massif_ids_and_names], altitudes_and_res)) return massif_name_to_eurocode_return_level_uncertainty # def dep_class_to_eurocode_level_uncertainty(self, model_class, last_year_for_the_data): diff --git a/experiment/paper_past_snow_loads/method/main_result.py b/experiment/paper_past_snow_loads/method/main_result.py deleted file mode 100644 index 085564f9a0bec7c42ee46758cf726d2355fc4537..0000000000000000000000000000000000000000 --- a/experiment/paper_past_snow_loads/method/main_result.py +++ /dev/null @@ -1,15 +0,0 @@ -from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal -from experiment.paper_past_snow_loads.method.study_visualizer_for_non_stationary_trends import \ - StudyVisualizerForNonStationaryTrends - -ALTITUDE_TRENDS = [1800] - - -def draw_snow_load_map(altitude): - study = CrocusSnowLoadTotal(altitude=altitude) - visualizer = StudyVisualizerForNonStationaryTrends(study, multiprocessing=True) - visualizer.plot_trends() - -if __name__ == '__main__': - draw_snow_load_map(altitude=1800) - diff --git a/experiment/paper_past_snow_loads/result_return_level_uncertainty/__init__.py b/experiment/paper_past_snow_loads/result_data_comparison_with_eurocode/__init__.py similarity index 100% rename from experiment/paper_past_snow_loads/result_return_level_uncertainty/__init__.py rename to experiment/paper_past_snow_loads/result_data_comparison_with_eurocode/__init__.py diff --git a/experiment/paper_past_snow_loads/data/crocus_study_comparison_with_eurocode.py b/experiment/paper_past_snow_loads/result_data_comparison_with_eurocode/crocus_study_comparison_with_eurocode.py similarity index 100% rename from experiment/paper_past_snow_loads/data/crocus_study_comparison_with_eurocode.py rename to experiment/paper_past_snow_loads/result_data_comparison_with_eurocode/crocus_study_comparison_with_eurocode.py diff --git a/experiment/paper_past_snow_loads/data/main_comparison_with_eurocode.py b/experiment/paper_past_snow_loads/result_data_comparison_with_eurocode/main_comparison_with_eurocode.py similarity index 93% rename from experiment/paper_past_snow_loads/data/main_comparison_with_eurocode.py rename to experiment/paper_past_snow_loads/result_data_comparison_with_eurocode/main_comparison_with_eurocode.py index 7cfc18fc9c518081dcfac2d8068390cec7fc6180..f694cc755cd7a8e8a163f3f5fd286a7eb184164e 100644 --- a/experiment/paper_past_snow_loads/data/main_comparison_with_eurocode.py +++ b/experiment/paper_past_snow_loads/result_data_comparison_with_eurocode/main_comparison_with_eurocode.py @@ -4,7 +4,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizat StudyVisualizer import matplotlib.pyplot as plt -from experiment.paper_past_snow_loads.data.crocus_study_comparison_with_eurocode import CrocusDifferenceSnowLoad, \ +from experiment.paper_past_snow_loads.result_data_comparison_with_eurocode.crocus_study_comparison_with_eurocode import CrocusDifferenceSnowLoad, \ CrocusSnowDensityAtMaxofSwe, CrocusDifferenceSnowLoadRescaledAndEurocodeToSeeSynchronization diff --git a/experiment/paper_past_snow_loads/result_snow_load_trends/__init__.py b/experiment/paper_past_snow_loads/result_mcmc_check_for_return_levels/__init__.py similarity index 100% rename from experiment/paper_past_snow_loads/result_snow_load_trends/__init__.py rename to experiment/paper_past_snow_loads/result_mcmc_check_for_return_levels/__init__.py diff --git a/experiment/paper_past_snow_loads/result_return_level_uncertainty/main_bayesian_mcmc.py b/experiment/paper_past_snow_loads/result_mcmc_check_for_return_levels/main_bayesian_mcmc.py similarity index 100% rename from experiment/paper_past_snow_loads/result_return_level_uncertainty/main_bayesian_mcmc.py rename to experiment/paper_past_snow_loads/result_mcmc_check_for_return_levels/main_bayesian_mcmc.py diff --git a/experiment/paper_past_snow_loads/result_snow_load_trends/main_mle_diagnosis.py b/experiment/paper_past_snow_loads/result_mle_check_for_trends/__init__.py similarity index 100% rename from experiment/paper_past_snow_loads/result_snow_load_trends/main_mle_diagnosis.py rename to experiment/paper_past_snow_loads/result_mle_check_for_trends/__init__.py diff --git a/experiment/paper_past_snow_loads/result_mle_check_for_trends/main_mle_diagnosis.py b/experiment/paper_past_snow_loads/result_mle_check_for_trends/main_mle_diagnosis.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/experiment/paper_past_snow_loads/result_trends_and_return_levels/__init__.py b/experiment/paper_past_snow_loads/result_trends_and_return_levels/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/experiment/eurocode_data/eurocode_visualizer.py b/experiment/paper_past_snow_loads/result_trends_and_return_levels/eurocode_visualizer.py similarity index 53% rename from experiment/eurocode_data/eurocode_visualizer.py rename to experiment/paper_past_snow_loads/result_trends_and_return_levels/eurocode_visualizer.py index dcf9bec186ea9dcdd7539bdb9f9d76943b9e7171..df17fadcff4eef4ed4aa51dac930e6962fb5ae29 100644 --- a/experiment/eurocode_data/eurocode_visualizer.py +++ b/experiment/paper_past_snow_loads/result_trends_and_return_levels/eurocode_visualizer.py @@ -12,7 +12,7 @@ from root_utils import get_display_name_from_object_type def get_label_name(model_name, ci_method_name: str): is_non_stationary = model_name == 'NonStationary' - model_symbol = '{\mu_1, \sigma_1}' if is_non_stationary else '0' + model_symbol = 'N' if is_non_stationary else '0' parameter = ', 2017' if is_non_stationary else '' model_name = ' $ \widehat{z_p}(\\boldsymbol{\\theta_{\mathcal{M}_' model_name += model_symbol @@ -25,14 +25,56 @@ def get_label_name(model_name, ci_method_name: str): def get_model_name(model_class): return get_display_name_from_object_type(model_class).split('Stationary')[0] + 'Stationary' +def massif_name_to_ordered_return_level_uncertainties(altitude_to_visualizer, massif_names, + uncertainty_methods, temporal_covariate, + non_stationary_model): + massif_name_to_ordered_eurocode_level_uncertainty = { + massif_name: {ci_method: [] for ci_method in uncertainty_methods} for massif_name in massif_names} + for altitude, visualizer in altitude_to_visualizer.items(): + print('Processing altitude = {} '.format(altitude)) + for ci_method in uncertainty_methods: + d = visualizer.massif_name_to_altitude_and_eurocode_level_uncertainty_for_minimized_aic_model_class( + massif_names, ci_method, + temporal_covariate, non_stationary_model) + # Append the altitude one by one + for massif_name, return_level_uncertainty in d.items(): + print(massif_name, return_level_uncertainty[0], return_level_uncertainty[1].confidence_interval, + return_level_uncertainty[1].mean_estimate) + massif_name_to_ordered_eurocode_level_uncertainty[massif_name][ci_method].append( + return_level_uncertainty) + return massif_name_to_ordered_eurocode_level_uncertainty -def plot_massif_name_to_model_name_to_uncertainty_method_to_ordered_dict(d, nb_massif_names, nb_model_names): + +def plot_massif_name_to_model_name_to_uncertainty_method_to_ordered_dict(altitude_to_visualizer, + massif_names, + non_stationary_models_for_uncertainty, + uncertainty_methods): """ Rows correspond to massif names Columns correspond to stationary/non stationary model name for a given date - Uncertainty method correpsond to the different plot on the graph + Uncertainty result_trends_and_return_levels correpsond to the different plot on the graph :return: """ + # Compute the dictionary of interest + # Plot uncertainties + model_name_to_massif_name_to_ordered_return_level = {} + for non_stationary_model in non_stationary_models_for_uncertainty: + d = massif_name_to_ordered_return_level_uncertainties(altitude_to_visualizer, massif_names, + uncertainty_methods, + temporal_covariate=2017, + non_stationary_model=non_stationary_model) + model_name_to_massif_name_to_ordered_return_level[non_stationary_model] = d + + # Transform the dictionary into the desired format + d = {} + for massif_name in massif_names: + d2 = {model_name: model_name_to_massif_name_to_ordered_return_level[model_name][massif_name] for model_name + in + model_name_to_massif_name_to_ordered_return_level.keys()} + d[massif_name] = d2 + + nb_massif_names = len(massif_names) + nb_model_names = len(non_stationary_models_for_uncertainty) axes = create_adjusted_axes(nb_massif_names, nb_model_names) if nb_massif_names == 1: axes = [axes] @@ -40,6 +82,13 @@ def plot_massif_name_to_model_name_to_uncertainty_method_to_ordered_dict(d, nb_m plot_model_name_to_uncertainty_method_to_ordered_dict(model_name_to_uncertainty_level, massif_name, ax) + # Save plot + visualizer = list(altitude_to_visualizer.values())[0] + massif_names_str = '_'.join(massif_names) + model_names_str = 'NonStationarity=' + '_'.join([str(e) for e in non_stationary_models_for_uncertainty]) + visualizer.plot_name = model_names_str + '_' + massif_names_str + visualizer.show_or_save_to_file(no_title=True) + # plt.suptitle('50-year return levels of extreme snow loads in France for several confiance interval methods.') def plot_model_name_to_uncertainty_method_to_ordered_dict(d, massif_name, axes): @@ -55,7 +104,7 @@ def plot_label_to_ordered_return_level_uncertainties(ax, massif_name, model_name Dict[str, List[ EurocodeConfidenceIntervalFromExtremes]]): """ Generic function that might be used by many other more global functions""" - colors = ['tab:blue', 'tab:orange', 'tab:purple', 'tab:olive'] + colors = ['tab:green', 'tab:olive'] alpha = 0.2 # Display the EUROCODE return level eurocode_region = massif_name_to_eurocode_region[massif_name]() @@ -68,8 +117,7 @@ def plot_label_to_ordered_return_level_uncertainties(ax, massif_name, model_name # Plot eurocode standards only for the first loop if j == 0: eurocode_region.plot_eurocode_snow_load_on_ground_characteristic_value_variable_action(ax, altitudes=altitudes) - conversion_factor = 9.8 / 1000 - mean = [r.mean_estimate * conversion_factor for r in ordered_return_level_uncertaines] + mean = [r.mean_estimate for r in ordered_return_level_uncertaines] # Filter and keep only non nan values not_nan_index = [not np.isnan(m) for m in mean] mean = list(np.array(mean)[not_nan_index]) @@ -78,20 +126,21 @@ def plot_label_to_ordered_return_level_uncertainties(ax, massif_name, model_name ci_method_name = str(label).split('.')[1].replace('_', ' ') ax.plot(altitudes, mean, linestyle='--', marker='o', color=color, label=get_label_name(model_name, ci_method_name)) - lower_bound = [r.confidence_interval[0] * conversion_factor for r in ordered_return_level_uncertaines] - upper_bound = [r.confidence_interval[1] * conversion_factor for r in ordered_return_level_uncertaines] + lower_bound = [r.confidence_interval[0] for r in ordered_return_level_uncertaines] + upper_bound = [r.confidence_interval[1] for r in ordered_return_level_uncertaines] ax.fill_between(altitudes, lower_bound, upper_bound, color=color, alpha=alpha) ax.legend(loc=2) ax.set_ylim([0.0, 16]) massif_name_str = massif_name.replace('_', ' ') eurocode_region_str = get_display_name_from_object_type(type(eurocode_region)) - if 'Non' in model_name: + is_non_stationary_model = model_name if isinstance(model_name, bool) else 'Non' in model_name + if is_non_stationary_model: model_name = 'non-stationary' else: model_name = 'stationary' title = '{} ({} Eurocodes area) with a {} model'.format(massif_name_str, eurocode_region_str, model_name) ax.set_title(title) - ax.set_ylabel('50-year return level (kN $m^-2$)') + ax.set_ylabel('50-year return level of SL (kN $m^-2$)') ax.set_xlabel('Altitude (m)') ax.grid() diff --git a/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py b/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py new file mode 100644 index 0000000000000000000000000000000000000000..98e7beb713fc46000d1c84de5bd064ba40098e65 --- /dev/null +++ b/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py @@ -0,0 +1,51 @@ +from collections import OrderedDict +import os.path as op + +import matplotlib as mpl +import matplotlib.pyplot as plt + +from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \ + StudyVisualizer +from experiment.paper_past_snow_loads.result_trends_and_return_levels.eurocode_visualizer import \ + plot_massif_name_to_model_name_to_uncertainty_method_to_ordered_dict +from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal +from experiment.paper_past_snow_loads.result_trends_and_return_levels.study_visualizer_for_non_stationary_trends import \ + StudyVisualizerForNonStationaryTrends +from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \ + ConfidenceIntervalMethodFromExtremes +from root_utils import VERSION_TIME + +mpl.rcParams['text.usetex'] = True +mpl.rcParams['text.latex.preamble'] = [r'\usepackage{amsmath}'] + + +def draw_snow_load_map(altitude): + visualizer = StudyVisualizerForNonStationaryTrends(CrocusSnowLoadTotal(altitude=altitude), multiprocessing=True) + visualizer.plot_trends() + + +def main_results(): + altitudes = [[1500, 1800]][0] + uncertainty_methods = [ConfidenceIntervalMethodFromExtremes.my_bayes, + ConfidenceIntervalMethodFromExtremes.ci_mle][1:] + massif_names = ['Chartreuse'] + non_stationary_models_for_uncertainty = [False, True][:1] + # Load altitude to visualizer + altitude_to_visualizer = OrderedDict() + for altitude in altitudes: + altitude_to_visualizer[altitude] = StudyVisualizerForNonStationaryTrends( + study=CrocusSnowLoadTotal(altitude=altitude), multiprocessing=True, save_to_file=True) + # Plot trends + max_abs_tdrl = max([visualizer.max_abs_tdrl for visualizer in altitude_to_visualizer.values()]) + for visualizer in altitude_to_visualizer.values(): + visualizer.plot_trends(max_abs_tdrl) + # Plot graph + plot_massif_name_to_model_name_to_uncertainty_method_to_ordered_dict(altitude_to_visualizer, + massif_names, + non_stationary_models_for_uncertainty, + uncertainty_methods) + + +if __name__ == '__main__': + # draw_snow_load_map(altitude=1800) + main_results() diff --git a/experiment/paper_past_snow_loads/method/study_visualizer_for_non_stationary_trends.py b/experiment/paper_past_snow_loads/result_trends_and_return_levels/study_visualizer_for_non_stationary_trends.py similarity index 62% rename from experiment/paper_past_snow_loads/method/study_visualizer_for_non_stationary_trends.py rename to experiment/paper_past_snow_loads/result_trends_and_return_levels/study_visualizer_for_non_stationary_trends.py index 5905023795e3e18fc885239698eede30af43b5d3..429ef9948930617424fbb280489974ca1026c934 100644 --- a/experiment/paper_past_snow_loads/method/study_visualizer_for_non_stationary_trends.py +++ b/experiment/paper_past_snow_loads/result_trends_and_return_levels/study_visualizer_for_non_stationary_trends.py @@ -1,4 +1,7 @@ -from typing import Dict +from collections import OrderedDict +import matplotlib.pyplot as plt +from multiprocessing.pool import Pool +from typing import Dict, Tuple import numpy as np from cached_property import cached_property @@ -11,6 +14,10 @@ from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import Ab from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \ GevLocationTrendTest from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest +from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel +from extreme_fit.model.result_from_model_fit.result_from_extremes.eurocode_return_level_uncertainties import \ + compute_eurocode_confidence_interval, EurocodeConfidenceIntervalFromExtremes +from root_utils import NB_CORES class StudyVisualizerForNonStationaryTrends(StudyVisualizer): @@ -63,13 +70,23 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer): # Part 1 - Trends - def plot_trends(self): - v = max(abs(min(self.massif_name_to_tdrl_value.values())), max(self.massif_name_to_tdrl_value.values())) - vmin, vmax = -v, v - self.study.visualize_study(massif_name_to_value=self.massif_name_to_tdrl_value, vmin=vmin, vmax=vmax, + @property + def max_abs_tdrl(self): + return max(abs(min(self.massif_name_to_tdrl_value.values())), max(self.massif_name_to_tdrl_value.values())) + + def plot_trends(self, max_abs_tdrl=None): + if max_abs_tdrl is None: + max_abs_tdrl = self.max_abs_tdrl + assert max_abs_tdrl > 0 + self.study.visualize_study(massif_name_to_value=self.massif_name_to_tdrl_value, + vmin=-max_abs_tdrl, vmax=max_abs_tdrl, replace_blue_by_white=False, axis_off=True, show_label=False, add_colorbar=True, - massif_name_to_marker_style=self.massif_name_to_marker_style) + massif_name_to_marker_style=self.massif_name_to_marker_style, + show=self.show) + self.plot_name = 'tdlr_trends' + self.show_or_save_to_file(add_classic_title=False, tight_layout=False, no_title=True) + plt.close() @cached_property def massif_name_to_tdrl_value(self): @@ -88,10 +105,29 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer): # Part 1 - Uncertainty return level plot - @property - def massif_name_to_minimized_aic_model_class(self): - return {m: t.unconstrained_model_class for m, t in - self.massif_name_to_minimized_aic_non_stationary_trend_test.items()} + def massif_name_to_model_class(self, massif_name, non_stationary_model): + if not non_stationary_model: + return StationaryTemporalModel + else: + return self.massif_name_to_minimized_aic_non_stationary_trend_test[massif_name].unconstrained_model_class def massif_name_to_uncertainty(self): pass + + def massif_name_to_altitude_and_eurocode_level_uncertainty_for_minimized_aic_model_class(self, massif_names, + ci_method, + effective_temporal_covariate, + non_stationary_model) \ + -> Dict[str, Tuple[int, EurocodeConfidenceIntervalFromExtremes]]: + arguments = [ + [self.massif_name_to_non_null_years_and_maxima[m], + self.massif_name_to_model_class(m, non_stationary_model), + ci_method, effective_temporal_covariate] for m in massif_names] + if self.multiprocessing: + with Pool(NB_CORES) as p: + res = p.starmap(compute_eurocode_confidence_interval, arguments) + else: + res = [compute_eurocode_confidence_interval(*argument) for argument in arguments] + altitudes_and_res = [(self.study.altitude, r) for r in res] + massif_name_to_eurocode_return_level_uncertainty = OrderedDict(zip(massif_names, altitudes_and_res)) + return massif_name_to_eurocode_return_level_uncertainty diff --git a/extreme_fit/model/result_from_model_fit/result_from_extremes/eurocode_return_level_uncertainties.py b/extreme_fit/model/result_from_model_fit/result_from_extremes/eurocode_return_level_uncertainties.py index 5868612141c44c6c7fe5426698db1104cdc3ff42..99599dcad12e0d6a85111a6f40a6344069cd2452 100644 --- a/extreme_fit/model/result_from_model_fit/result_from_extremes/eurocode_return_level_uncertainties.py +++ b/extreme_fit/model/result_from_model_fit/result_from_extremes/eurocode_return_level_uncertainties.py @@ -11,10 +11,8 @@ from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_int ConfidenceIntervalMethodFromExtremes -def compute_eurocode_confidence_interval(last_year_for_the_data, smooth_maxima_x_y, model_class, ci_method, temporal_covariate): +def compute_eurocode_confidence_interval(smooth_maxima_x_y, model_class, ci_method, temporal_covariate): years, smooth_maxima = smooth_maxima_x_y - idx = years.index(last_year_for_the_data) + 1 - years, smooth_maxima = years[:idx], smooth_maxima[:idx] return EurocodeConfidenceIntervalFromExtremes.from_maxima_years_model_class(smooth_maxima, years, model_class, temporal_covariate, ci_method)