From 3745d411c0112564076a40d2d204be23a9b85e61 Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Wed, 18 Mar 2020 23:13:48 +0100 Subject: [PATCH] [refactor] remove trend analysis folder. create extreme_trend_test folder --- .../visualization/main_study_visualizer.py | 2 +- extreme_trend_test/abstract_gev_trend_test.py | 6 ++- .../visualizers}/__init__.py | 0 ...dy_visualizer_for_non_stationary_trends.py | 25 +++++------ .../study_visualizer_for_shape_repartition.py | 2 +- .../visualizers/utils.py | 3 +- .../__init__.py | 0 .../gelman_convergence_test.py | 0 .../main_bayesian_mcmc.py | 0 .../main_gelman_convergence_test.py | 0 .../contrasting_snow_loads/main_result.py | 15 +++---- .../plot_contrasting_trend_curves.py | 4 +- .../qqplot => checks}/__init__.py | 0 .../mixed_distribution_impact.py | 2 +- .../shape => checks/qqplot}/__init__.py | 0 .../qqplot/main_qqplot_for_big_shapes.py | 2 +- .../qqplot/plot_qqplot.py | 2 +- .../uncertainty_interval_size.py | 4 +- .../without_maximum/__init__.py | 0 .../main_fit_without_maximum.py | 0 ...study_visualizer_for_fit_witout_maximum.py | 2 +- .../{data => section_data}/__init__.py | 0 .../main_eurocode_plot.py | 0 .../main_example_swe_total_plot.py | 2 +- .../__init__.py | 0 .../crocus_study_comparison_with_eurocode.py | 0 .../main_comparison_with_eurocode_examples.py | 4 +- .../main_comparison_with_eurocode_global.py | 4 +- ...in_spatio_temporal_density_wrt_altitude.py | 4 +- .../__init__.py | 0 .../main_result_trends_and_return_levels.py | 45 +++---------------- .../main_shape_repartition.py | 5 +-- .../plot_diagnosis_risk.py | 2 +- .../plot_selection_curves.py | 8 ++-- .../plot_trend_curves.py | 4 +- .../plot_uncertainty_curves.py | 6 +-- .../plot_uncertainty_histogram.py | 6 +-- .../{paper_utils.py => utils.py} | 8 ---- test/test_experiment/test_trend_analysis.py | 2 +- 39 files changed, 58 insertions(+), 111 deletions(-) rename {projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels => extreme_trend_test/visualizers}/__init__.py (100%) rename {projects/exceeding_snow_loads => extreme_trend_test/visualizers}/study_visualizer_for_non_stationary_trends.py (96%) rename {projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape => extreme_trend_test/visualizers}/study_visualizer_for_shape_repartition.py (92%) rename projects/exceeding_snow_loads/paper_main_utils.py => extreme_trend_test/visualizers/utils.py (93%) rename projects/{exceeding_snow_loads/check_mle_convergence_for_trends => contrasting_snow_loads/check_mcmc_convergence_for_return_levels}/__init__.py (100%) rename projects/{exceeding_snow_loads => contrasting_snow_loads}/check_mcmc_convergence_for_return_levels/gelman_convergence_test.py (100%) rename projects/{exceeding_snow_loads => contrasting_snow_loads}/check_mcmc_convergence_for_return_levels/main_bayesian_mcmc.py (100%) rename projects/{exceeding_snow_loads => contrasting_snow_loads}/check_mcmc_convergence_for_return_levels/main_gelman_convergence_test.py (100%) rename projects/exceeding_snow_loads/{check_mle_convergence_for_trends/qqplot => checks}/__init__.py (100%) rename projects/exceeding_snow_loads/{check_mle_convergence_for_trends => checks}/mixed_distribution/mixed_distribution_impact.py (98%) rename projects/exceeding_snow_loads/{check_mle_convergence_for_trends/shape => checks/qqplot}/__init__.py (100%) rename projects/exceeding_snow_loads/{check_mle_convergence_for_trends => checks}/qqplot/main_qqplot_for_big_shapes.py (97%) rename projects/exceeding_snow_loads/{check_mle_convergence_for_trends => checks}/qqplot/plot_qqplot.py (99%) rename projects/exceeding_snow_loads/{check_mle_convergence_for_trends => checks}/uncertainty_interval_size.py (84%) rename projects/exceeding_snow_loads/{check_mle_convergence_for_trends => checks}/without_maximum/__init__.py (100%) rename projects/exceeding_snow_loads/{check_mle_convergence_for_trends => checks}/without_maximum/main_fit_without_maximum.py (100%) rename projects/exceeding_snow_loads/{check_mle_convergence_for_trends => checks}/without_maximum/study_visualizer_for_fit_witout_maximum.py (95%) rename projects/exceeding_snow_loads/{data => section_data}/__init__.py (100%) rename projects/exceeding_snow_loads/{data => section_data}/main_eurocode_plot.py (100%) rename projects/exceeding_snow_loads/{data => section_data}/main_example_swe_total_plot.py (97%) rename projects/exceeding_snow_loads/{discussion_data_comparison_with_eurocode => section_discussion}/__init__.py (100%) rename projects/exceeding_snow_loads/{discussion_data_comparison_with_eurocode => section_discussion}/crocus_study_comparison_with_eurocode.py (100%) rename projects/exceeding_snow_loads/{discussion_data_comparison_with_eurocode => section_discussion}/main_comparison_with_eurocode_examples.py (94%) rename projects/exceeding_snow_loads/{discussion_data_comparison_with_eurocode => section_discussion}/main_comparison_with_eurocode_global.py (94%) rename projects/exceeding_snow_loads/{discussion_data_comparison_with_eurocode => section_discussion}/main_spatio_temporal_density_wrt_altitude.py (93%) rename projects/exceeding_snow_loads/{result_trends_and_return_levels => section_results}/__init__.py (100%) rename projects/exceeding_snow_loads/{result_trends_and_return_levels => section_results}/main_result_trends_and_return_levels.py (55%) rename projects/exceeding_snow_loads/{check_mle_convergence_for_trends/shape => section_results}/main_shape_repartition.py (87%) rename projects/exceeding_snow_loads/{result_trends_and_return_levels => section_results}/plot_diagnosis_risk.py (92%) rename projects/exceeding_snow_loads/{result_trends_and_return_levels => section_results}/plot_selection_curves.py (94%) rename projects/exceeding_snow_loads/{result_trends_and_return_levels => section_results}/plot_trend_curves.py (96%) rename projects/exceeding_snow_loads/{result_trends_and_return_levels => section_results}/plot_uncertainty_curves.py (98%) rename projects/exceeding_snow_loads/{result_trends_and_return_levels => section_results}/plot_uncertainty_histogram.py (93%) rename projects/exceeding_snow_loads/{paper_utils.py => utils.py} (88%) diff --git a/experiment/meteo_france_data/scm_models_data/visualization/main_study_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/main_study_visualizer.py index 079ceeec..0ad748c0 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/main_study_visualizer.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/main_study_visualizer.py @@ -12,7 +12,7 @@ from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSno SafranTemperature, SafranPrecipitation from experiment.meteo_france_data.scm_models_data.visualization.study_visualizer import \ StudyVisualizer -from projects.exceeding_snow_loads.discussion_data_comparison_with_eurocode.crocus_study_comparison_with_eurocode import \ +from projects.exceeding_snow_loads.section_discussion.crocus_study_comparison_with_eurocode import \ CrocusDifferenceSnowLoad, \ CrocusSnowDensityAtMaxofSwe, CrocusDifferenceSnowLoadRescaledAndEurocodeToSeeSynchronization, \ CrocusSnowDepthDifference, CrocusSnowDepthAtMaxofSwe diff --git a/extreme_trend_test/abstract_gev_trend_test.py b/extreme_trend_test/abstract_gev_trend_test.py index e77c563e..d1a6fe6d 100644 --- a/extreme_trend_test/abstract_gev_trend_test.py +++ b/extreme_trend_test/abstract_gev_trend_test.py @@ -28,13 +28,15 @@ class AbstractGevTrendTest(object): constrained_model_class=StationaryTemporalModel, quantile_level=EUROCODE_QUANTILE, fit_method=TemporalMarginFitMethod.extremes_fevd_mle): - super().__init__(years, maxima, starting_year) + self.years = years + self.maxima = maxima + self.starting_year = starting_year self.unconstrained_model_class = unconstrained_model_class self.constrained_model_class = constrained_model_class self.quantile_level = quantile_level self.fit_method = fit_method # Load observations, coordinates and datasets - self.coordinates, self.dataset = load_temporal_coordinates_and_dataset(maxima, years) + self.coordinates, self.dataset = load_temporal_coordinates_and_dataset(self.maxima, self.years) # By default crashed boolean is False self.crashed = False try: diff --git a/projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/__init__.py b/extreme_trend_test/visualizers/__init__.py similarity index 100% rename from projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/__init__.py rename to extreme_trend_test/visualizers/__init__.py diff --git a/projects/exceeding_snow_loads/study_visualizer_for_non_stationary_trends.py b/extreme_trend_test/visualizers/study_visualizer_for_non_stationary_trends.py similarity index 96% rename from projects/exceeding_snow_loads/study_visualizer_for_non_stationary_trends.py rename to extreme_trend_test/visualizers/study_visualizer_for_non_stationary_trends.py index 8b2109f4..bbcc4d5d 100644 --- a/projects/exceeding_snow_loads/study_visualizer_for_non_stationary_trends.py +++ b/extreme_trend_test/visualizers/study_visualizer_for_non_stationary_trends.py @@ -1,4 +1,5 @@ from collections import OrderedDict, Counter +from enum import Enum from multiprocessing.pool import Pool from typing import Dict, List, Tuple @@ -15,9 +16,7 @@ from experiment.meteo_france_data.scm_models_data.abstract_extended_study import from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy from experiment.meteo_france_data.scm_models_data.visualization.study_visualizer import \ StudyVisualizer -from projects.exceeding_snow_loads.check_mcmc_convergence_for_return_levels.gelman_convergence_test import \ - compute_gelman_convergence_value -from projects.exceeding_snow_loads.paper_utils import ModelSubsetForUncertainty, NON_STATIONARY_TREND_TEST_PAPER +from projects.exceeding_snow_loads.utils import NON_STATIONARY_TREND_TEST_PAPER from extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest from extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter import \ GumbelLocationTrendTest, GevStationaryVersusGumbel, GumbelScaleTrendTest, GumbelVersusGumbel @@ -34,6 +33,14 @@ from extreme_fit.model.result_from_model_fit.result_from_extremes.eurocode_retur from root_utils import NB_CORES +class ModelSubsetForUncertainty(Enum): + stationary_gumbel = 0 + stationary_gumbel_and_gev = 1 + non_stationary_gumbel = 2 + non_stationary_gumbel_and_gev = 3 + stationary_gev = 4 + + class StudyVisualizerForNonStationaryTrends(StudyVisualizer): def __init__(self, study: AbstractStudy, show=True, save_to_file=False, only_one_graph=False, only_first_row=False, @@ -368,17 +375,6 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer): def model_name_to_uncertainty_method_to_ratio_above_eurocode(self): assert self.uncertainty_massif_names == self.study.study_massif_names - # Some checks with Gelman convergence diagnosis - - def massif_name_to_gelman_convergence_value(self, mcmc_iterations, model_class, nb_chains): - arguments = [(self.massif_name_to_years_and_maxima_for_model_fitting[m], mcmc_iterations, model_class, nb_chains) - for m in self.uncertainty_massif_names] - if self.multiprocessing: - with Pool(NB_CORES) as p: - res = p.starmap(compute_gelman_convergence_value, arguments) - else: - res = [compute_gelman_convergence_value(*argument) for argument in arguments] - return dict(zip(self.uncertainty_massif_names, res)) # Some values for the histogram @@ -505,3 +501,4 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer): psnow_before, psnow_after = [np.count_nonzero(s) / len(s) for s in [maxima_before, maxima_after]] return 100 * (psnow_after - psnow_before) / psnow_before return {m: compute_relative_change_in_psnow(self.massif_name_to_years_and_maxima[m][1]) for m in self.massifs_names_with_year_without_snow} + diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/study_visualizer_for_shape_repartition.py b/extreme_trend_test/visualizers/study_visualizer_for_shape_repartition.py similarity index 92% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/study_visualizer_for_shape_repartition.py rename to extreme_trend_test/visualizers/study_visualizer_for_shape_repartition.py index c4f0ace3..db6e3f3a 100644 --- a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/study_visualizer_for_shape_repartition.py +++ b/extreme_trend_test/visualizers/study_visualizer_for_shape_repartition.py @@ -3,7 +3,7 @@ from cached_property import cached_property from experiment.meteo_france_data.scm_models_data.visualization.create_shifted_cmap import get_shifted_map from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends diff --git a/projects/exceeding_snow_loads/paper_main_utils.py b/extreme_trend_test/visualizers/utils.py similarity index 93% rename from projects/exceeding_snow_loads/paper_main_utils.py rename to extreme_trend_test/visualizers/utils.py index 3bdc0c39..575c1424 100644 --- a/projects/exceeding_snow_loads/paper_main_utils.py +++ b/extreme_trend_test/visualizers/utils.py @@ -2,10 +2,9 @@ from collections import OrderedDict from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \ TemporalMarginFitMethod -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends - def load_altitude_to_visualizer(altitudes, massif_names, model_subsets_for_uncertainty, study_class, uncertainty_methods, study_visualizer_class=StudyVisualizerForNonStationaryTrends, diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/__init__.py b/projects/contrasting_snow_loads/check_mcmc_convergence_for_return_levels/__init__.py similarity index 100% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/__init__.py rename to projects/contrasting_snow_loads/check_mcmc_convergence_for_return_levels/__init__.py diff --git a/projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/gelman_convergence_test.py b/projects/contrasting_snow_loads/check_mcmc_convergence_for_return_levels/gelman_convergence_test.py similarity index 100% rename from projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/gelman_convergence_test.py rename to projects/contrasting_snow_loads/check_mcmc_convergence_for_return_levels/gelman_convergence_test.py diff --git a/projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_bayesian_mcmc.py b/projects/contrasting_snow_loads/check_mcmc_convergence_for_return_levels/main_bayesian_mcmc.py similarity index 100% rename from projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_bayesian_mcmc.py rename to projects/contrasting_snow_loads/check_mcmc_convergence_for_return_levels/main_bayesian_mcmc.py diff --git a/projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_gelman_convergence_test.py b/projects/contrasting_snow_loads/check_mcmc_convergence_for_return_levels/main_gelman_convergence_test.py similarity index 100% rename from projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_gelman_convergence_test.py rename to projects/contrasting_snow_loads/check_mcmc_convergence_for_return_levels/main_gelman_convergence_test.py diff --git a/projects/contrasting_snow_loads/main_result.py b/projects/contrasting_snow_loads/main_result.py index 61a9a827..1a810958 100644 --- a/projects/contrasting_snow_loads/main_result.py +++ b/projects/contrasting_snow_loads/main_result.py @@ -1,6 +1,9 @@ from multiprocessing.pool import Pool import matplotlib as mpl + +from extreme_trend_test.visualizers.utils import load_altitude_to_visualizer + mpl.use('Agg') mpl.rcParams['text.usetex'] = True mpl.rcParams['text.latex.preamble'] = [r'\usepackage{amsmath}'] @@ -11,21 +14,13 @@ from experiment.meteo_france_data.scm_models_data.safran.safran import SafranPre SafranSnowfall5Days, SafranSnowfall3Days, SafranSnowfall7Days, SafranRainfall1Day, SafranRainfall3Days, \ SafranRainfall5Days, SafranRainfall7Days -from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal, CrocusSnowLoad3Days, \ +from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoad3Days, \ CrocusSnowLoad5Days, CrocusSnowLoad7Days, CrocusSnowLoad1Day from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \ ConfidenceIntervalMethodFromExtremes from projects.contrasting_snow_loads.plot_contrasting_trend_curves import plot_contrasting_trend_curves -from projects.exceeding_snow_loads.paper_main_utils import load_altitude_to_visualizer -from projects.exceeding_snow_loads.paper_utils import paper_study_classes, paper_altitudes -from projects.exceeding_snow_loads.result_trends_and_return_levels.main_result_trends_and_return_levels import \ +from projects.exceeding_snow_loads.section_results.main_result_trends_and_return_levels import \ compute_minimized_aic -from projects.exceeding_snow_loads.result_trends_and_return_levels.plot_selection_curves import plot_selection_curves -from projects.exceeding_snow_loads.result_trends_and_return_levels.plot_trend_curves import plot_trend_curves, \ - plot_trend_map -from projects.exceeding_snow_loads.result_trends_and_return_levels.plot_uncertainty_curves import plot_uncertainty_massifs -from projects.exceeding_snow_loads.result_trends_and_return_levels.plot_uncertainty_histogram import \ - plot_uncertainty_histogram from root_utils import NB_CORES diff --git a/projects/contrasting_snow_loads/plot_contrasting_trend_curves.py b/projects/contrasting_snow_loads/plot_contrasting_trend_curves.py index 09790199..5e06210f 100644 --- a/projects/contrasting_snow_loads/plot_contrasting_trend_curves.py +++ b/projects/contrasting_snow_loads/plot_contrasting_trend_curves.py @@ -3,8 +3,8 @@ import matplotlib.pyplot as plt from experiment.meteo_france_data.scm_models_data.abstract_extended_study import AbstractExtendedStudy from experiment.meteo_france_data.scm_models_data.visualization.utils import create_adjusted_axes -from projects.exceeding_snow_loads.paper_utils import dpi_paper1_figure -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from projects.exceeding_snow_loads.utils import dpi_paper1_figure +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/__init__.py b/projects/exceeding_snow_loads/checks/__init__.py similarity index 100% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/__init__.py rename to projects/exceeding_snow_loads/checks/__init__.py diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/mixed_distribution/mixed_distribution_impact.py b/projects/exceeding_snow_loads/checks/mixed_distribution/mixed_distribution_impact.py similarity index 98% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/mixed_distribution/mixed_distribution_impact.py rename to projects/exceeding_snow_loads/checks/mixed_distribution/mixed_distribution_impact.py index 3f4927b6..485e72aa 100644 --- a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/mixed_distribution/mixed_distribution_impact.py +++ b/projects/exceeding_snow_loads/checks/mixed_distribution/mixed_distribution_impact.py @@ -1,7 +1,7 @@ import pandas as pd from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends def mix_dsitrbution_impact(): diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/__init__.py b/projects/exceeding_snow_loads/checks/qqplot/__init__.py similarity index 100% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/__init__.py rename to projects/exceeding_snow_loads/checks/qqplot/__init__.py diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py b/projects/exceeding_snow_loads/checks/qqplot/main_qqplot_for_big_shapes.py similarity index 97% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py rename to projects/exceeding_snow_loads/checks/qqplot/main_qqplot_for_big_shapes.py index de2dbae6..0c9c44e9 100644 --- a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py +++ b/projects/exceeding_snow_loads/checks/qqplot/main_qqplot_for_big_shapes.py @@ -3,7 +3,7 @@ import matplotlib.pyplot as plt from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal from experiment.meteo_france_data.scm_models_data.visualization.main_study_visualizer import \ ALL_ALTITUDES_WITHOUT_NAN -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/plot_qqplot.py b/projects/exceeding_snow_loads/checks/qqplot/plot_qqplot.py similarity index 99% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/plot_qqplot.py rename to projects/exceeding_snow_loads/checks/qqplot/plot_qqplot.py index 8dc0206f..6c215564 100644 --- a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/plot_qqplot.py +++ b/projects/exceeding_snow_loads/checks/qqplot/plot_qqplot.py @@ -12,7 +12,7 @@ from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear from extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \ AbstractExtractEurocodeReturnLevel from projects.exceeding_snow_loads.data.main_example_swe_total_plot import tuples_for_examples_paper1 -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends from extreme_fit.distribution.gev.gev_params import GevParams diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/uncertainty_interval_size.py b/projects/exceeding_snow_loads/checks/uncertainty_interval_size.py similarity index 84% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/uncertainty_interval_size.py rename to projects/exceeding_snow_loads/checks/uncertainty_interval_size.py index 5d73a753..2be62ddc 100644 --- a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/uncertainty_interval_size.py +++ b/projects/exceeding_snow_loads/checks/uncertainty_interval_size.py @@ -3,8 +3,8 @@ from typing import Dict import pandas as pd from experiment.eurocode_data.utils import EUROCODE_ALTITUDES -from projects.exceeding_snow_loads.paper_utils import ModelSubsetForUncertainty -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import \ + StudyVisualizerForNonStationaryTrends, ModelSubsetForUncertainty def uncertainty_interval_size(altitude_to_visualizer: Dict[int, StudyVisualizerForNonStationaryTrends]): diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/__init__.py b/projects/exceeding_snow_loads/checks/without_maximum/__init__.py similarity index 100% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/__init__.py rename to projects/exceeding_snow_loads/checks/without_maximum/__init__.py diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/main_fit_without_maximum.py b/projects/exceeding_snow_loads/checks/without_maximum/main_fit_without_maximum.py similarity index 100% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/main_fit_without_maximum.py rename to projects/exceeding_snow_loads/checks/without_maximum/main_fit_without_maximum.py diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/study_visualizer_for_fit_witout_maximum.py b/projects/exceeding_snow_loads/checks/without_maximum/study_visualizer_for_fit_witout_maximum.py similarity index 95% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/study_visualizer_for_fit_witout_maximum.py rename to projects/exceeding_snow_loads/checks/without_maximum/study_visualizer_for_fit_witout_maximum.py index 111d50eb..633ceaeb 100644 --- a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/study_visualizer_for_fit_witout_maximum.py +++ b/projects/exceeding_snow_loads/checks/without_maximum/study_visualizer_for_fit_witout_maximum.py @@ -4,7 +4,7 @@ import numpy as np from cached_property import cached_property from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends diff --git a/projects/exceeding_snow_loads/data/__init__.py b/projects/exceeding_snow_loads/section_data/__init__.py similarity index 100% rename from projects/exceeding_snow_loads/data/__init__.py rename to projects/exceeding_snow_loads/section_data/__init__.py diff --git a/projects/exceeding_snow_loads/data/main_eurocode_plot.py b/projects/exceeding_snow_loads/section_data/main_eurocode_plot.py similarity index 100% rename from projects/exceeding_snow_loads/data/main_eurocode_plot.py rename to projects/exceeding_snow_loads/section_data/main_eurocode_plot.py diff --git a/projects/exceeding_snow_loads/data/main_example_swe_total_plot.py b/projects/exceeding_snow_loads/section_data/main_example_swe_total_plot.py similarity index 97% rename from projects/exceeding_snow_loads/data/main_example_swe_total_plot.py rename to projects/exceeding_snow_loads/section_data/main_example_swe_total_plot.py index 94f8aee6..ed5fc29b 100644 --- a/projects/exceeding_snow_loads/data/main_example_swe_total_plot.py +++ b/projects/exceeding_snow_loads/section_data/main_example_swe_total_plot.py @@ -5,7 +5,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.main_study_visua study_iterator_global, SCM_STUDY_CLASS_TO_ABBREVIATION from experiment.meteo_france_data.scm_models_data.visualization.study_visualizer import \ StudyVisualizer -from projects.exceeding_snow_loads.paper_utils import dpi_paper1_figure +from projects.exceeding_snow_loads.utils import dpi_paper1_figure def tuples_for_examples_paper1(examples_for_the_paper=True): diff --git a/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/__init__.py b/projects/exceeding_snow_loads/section_discussion/__init__.py similarity index 100% rename from projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/__init__.py rename to projects/exceeding_snow_loads/section_discussion/__init__.py diff --git a/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/crocus_study_comparison_with_eurocode.py b/projects/exceeding_snow_loads/section_discussion/crocus_study_comparison_with_eurocode.py similarity index 100% rename from projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/crocus_study_comparison_with_eurocode.py rename to projects/exceeding_snow_loads/section_discussion/crocus_study_comparison_with_eurocode.py diff --git a/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_examples.py b/projects/exceeding_snow_loads/section_discussion/main_comparison_with_eurocode_examples.py similarity index 94% rename from projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_examples.py rename to projects/exceeding_snow_loads/section_discussion/main_comparison_with_eurocode_examples.py index 0abf3517..0adf4b01 100644 --- a/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_examples.py +++ b/projects/exceeding_snow_loads/section_discussion/main_comparison_with_eurocode_examples.py @@ -7,10 +7,10 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizer StudyVisualizer import matplotlib.pyplot as plt -from projects.exceeding_snow_loads.discussion_data_comparison_with_eurocode.crocus_study_comparison_with_eurocode import \ +from projects.exceeding_snow_loads.section_discussion.crocus_study_comparison_with_eurocode import \ CrocusDifferenceSnowLoad, \ CrocusSnowDensityAtMaxofSwe, CrocusSnowDepthDifference -from projects.exceeding_snow_loads.paper_utils import dpi_paper1_figure +from projects.exceeding_snow_loads.utils import dpi_paper1_figure def max_graph_annual_maxima_comparison(): diff --git a/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_global.py b/projects/exceeding_snow_loads/section_discussion/main_comparison_with_eurocode_global.py similarity index 94% rename from projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_global.py rename to projects/exceeding_snow_loads/section_discussion/main_comparison_with_eurocode_global.py index 07069c5f..454cadcb 100644 --- a/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_global.py +++ b/projects/exceeding_snow_loads/section_discussion/main_comparison_with_eurocode_global.py @@ -4,10 +4,10 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizer StudyVisualizer import matplotlib.pyplot as plt -from experiment.exceeding_snow_loads.discussion_data_comparison_with_eurocode.crocus_study_comparison_with_eurocode import \ +from projects.exceeding_snow_loads.section_discussion.crocus_study_comparison_with_eurocode import \ CrocusDifferenceSnowLoad, \ CrocusSnowDensityAtMaxofSwe, CrocusSnowDepthDifference -from experiment.exceeding_snow_loads.paper_utils import dpi_paper1_figure +from projects.exceeding_snow_loads.utils import dpi_paper1_figure def max_graph_annual_maxima_comparison(): diff --git a/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py b/projects/exceeding_snow_loads/section_discussion/main_spatio_temporal_density_wrt_altitude.py similarity index 93% rename from projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py rename to projects/exceeding_snow_loads/section_discussion/main_spatio_temporal_density_wrt_altitude.py index 96c796f2..4e6ce1fc 100644 --- a/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py +++ b/projects/exceeding_snow_loads/section_discussion/main_spatio_temporal_density_wrt_altitude.py @@ -4,9 +4,9 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizer StudyVisualizer import matplotlib.pyplot as plt -from experiment.exceeding_snow_loads.discussion_data_comparison_with_eurocode.crocus_study_comparison_with_eurocode import \ +from projects.exceeding_snow_loads.section_discussion.crocus_study_comparison_with_eurocode import \ CrocusSnowDensityAtMaxofSwe -from experiment.exceeding_snow_loads.paper_utils import dpi_paper1_figure +from projects.exceeding_snow_loads.utils import dpi_paper1_figure def density_wrt_altitude(): diff --git a/projects/exceeding_snow_loads/result_trends_and_return_levels/__init__.py b/projects/exceeding_snow_loads/section_results/__init__.py similarity index 100% rename from projects/exceeding_snow_loads/result_trends_and_return_levels/__init__.py rename to projects/exceeding_snow_loads/section_results/__init__.py diff --git a/projects/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py b/projects/exceeding_snow_loads/section_results/main_result_trends_and_return_levels.py similarity index 55% rename from projects/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py rename to projects/exceeding_snow_loads/section_results/main_result_trends_and_return_levels.py index c1ca9ea7..edffbfd8 100644 --- a/projects/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py +++ b/projects/exceeding_snow_loads/section_results/main_result_trends_and_return_levels.py @@ -2,20 +2,11 @@ from multiprocessing.pool import Pool import matplotlib as mpl -from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal, CrocusSnowLoad3Days, \ - CrocusSnowLoad5Days, CrocusSnowLoad7Days -from projects.exceeding_snow_loads.check_mle_convergence_for_trends.uncertainty_interval_size import \ - uncertainty_interval_size -from projects.exceeding_snow_loads.paper_main_utils import load_altitude_to_visualizer -from projects.exceeding_snow_loads.paper_utils import paper_study_classes, paper_altitudes -from projects.exceeding_snow_loads.result_trends_and_return_levels.plot_diagnosis_risk import plot_diagnosis_risk -from projects.exceeding_snow_loads.result_trends_and_return_levels.plot_selection_curves import plot_selection_curves -from projects.exceeding_snow_loads.result_trends_and_return_levels.plot_trend_curves import plot_trend_curves, \ - plot_trend_map -from projects.exceeding_snow_loads.result_trends_and_return_levels.plot_uncertainty_curves import plot_uncertainty_massifs -from projects.exceeding_snow_loads.result_trends_and_return_levels.plot_uncertainty_histogram import \ - plot_uncertainty_histogram -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal +from extreme_trend_test.visualizers.utils import load_altitude_to_visualizer +from projects.exceeding_snow_loads.utils import paper_study_classes, paper_altitudes +from projects.exceeding_snow_loads.section_results.plot_uncertainty_curves import plot_uncertainty_massifs +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \ ConfidenceIntervalMethodFromExtremes @@ -99,29 +90,3 @@ if __name__ == '__main__': # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, # ConfidenceIntervalMethodFromExtremes.ci_mle][1:], # multiprocessing=True) - # intermediate_result(altitudes=[900, 1200], massif_names=['Maurienne'], - # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, - # ConfidenceIntervalMethodFromExtremes.ci_mle][1:], - # non_stationary_uncertainty=[False, True][:], - # multiprocessing=True) - # intermediate_result(altitudes=[900, 1200], massif_names=None) - # intermediate_result(ALL_ALTITUDES_WITHOUT_NAN) - # intermediate_result(paper_altitudes) - # minor_result(altitude=900) - # intermediate_result(altitudes=[1500, 1800], massif_names=['Chartreuse'], - # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.ci_mle, - # ConfidenceIntervalMethodFromExtremes.ci_bayes], - # non_stationary_uncertainty=[True]) - # intermediate_result(altitudes=[1500, 1800], massif_names=None, - # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.ci_mle], - # non_stationary_uncertainty=[False]) - # intermediate_result(altitudes=[300, 600, 900, 1200, 1500, 1800], massif_names=None, - # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.ci_mle], - # non_stationary_uncertainty=[False]) - # intermediate_result(altitudes=[300, 600, 900, 1200, 1500, 1800, 2100, 2400, 2700], massif_names=None, - # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.ci_mle, - # ConfidenceIntervalMethodFromExtremes.ci_bayes], - # non_stationary_uncertainty=[False, True]) - # intermediate_result(altitudes=[300, 600, 900], massif_names=None, - # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.ci_mle], - # non_stationary_uncertainty=[False, True]) diff --git a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/main_shape_repartition.py b/projects/exceeding_snow_loads/section_results/main_shape_repartition.py similarity index 87% rename from projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/main_shape_repartition.py rename to projects/exceeding_snow_loads/section_results/main_shape_repartition.py index 90c2cb7c..0582eb32 100644 --- a/projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/main_shape_repartition.py +++ b/projects/exceeding_snow_loads/section_results/main_shape_repartition.py @@ -1,8 +1,7 @@ from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal -from projects.exceeding_snow_loads.check_mle_convergence_for_trends.shape.study_visualizer_for_shape_repartition import \ +from extreme_trend_test.visualizers.study_visualizer_for_shape_repartition import \ StudyVisualizerForShape -from projects.exceeding_snow_loads.paper_main_utils import load_altitude_to_visualizer -from projects.exceeding_snow_loads.paper_utils import paper_altitudes +from extreme_trend_test.visualizers.utils import load_altitude_to_visualizer def main_shape_repartition(altitudes, massif_names=None, diff --git a/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_diagnosis_risk.py b/projects/exceeding_snow_loads/section_results/plot_diagnosis_risk.py similarity index 92% rename from projects/exceeding_snow_loads/result_trends_and_return_levels/plot_diagnosis_risk.py rename to projects/exceeding_snow_loads/section_results/plot_diagnosis_risk.py index ade84a5f..daf93d71 100644 --- a/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_diagnosis_risk.py +++ b/projects/exceeding_snow_loads/section_results/plot_diagnosis_risk.py @@ -1,8 +1,8 @@ import matplotlib.pyplot as plt -from projects.exceeding_snow_loads.paper_utils import ModelSubsetForUncertainty, dpi_paper1_figure from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \ ConfidenceIntervalMethodFromExtremes +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import ModelSubsetForUncertainty def plot_diagnosis_risk(altitude_to_visualizer): diff --git a/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py b/projects/exceeding_snow_loads/section_results/plot_selection_curves.py similarity index 94% rename from projects/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py rename to projects/exceeding_snow_loads/section_results/plot_selection_curves.py index 0a47f45e..6f1f45cc 100644 --- a/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py +++ b/projects/exceeding_snow_loads/section_results/plot_selection_curves.py @@ -1,12 +1,10 @@ from typing import Dict -from collections import Counter import matplotlib.pyplot as plt -from experiment.meteo_france_data.scm_models_data.abstract_extended_study import AbstractExtendedStudy from experiment.meteo_france_data.scm_models_data.visualization.utils import create_adjusted_axes -from projects.exceeding_snow_loads.paper_utils import dpi_paper1_figure -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends -from itertools import chain +from projects.exceeding_snow_loads.utils import dpi_paper1_figure +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends + def permute(l, permutation): # permutation = [i//2 if i % 2 == 0 else 4 + i //2 for i in range(8)] diff --git a/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_trend_curves.py b/projects/exceeding_snow_loads/section_results/plot_trend_curves.py similarity index 96% rename from projects/exceeding_snow_loads/result_trends_and_return_levels/plot_trend_curves.py rename to projects/exceeding_snow_loads/section_results/plot_trend_curves.py index e2a14d70..0410a4fe 100644 --- a/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_trend_curves.py +++ b/projects/exceeding_snow_loads/section_results/plot_trend_curves.py @@ -3,8 +3,8 @@ import matplotlib.pyplot as plt from experiment.meteo_france_data.scm_models_data.abstract_extended_study import AbstractExtendedStudy from experiment.meteo_france_data.scm_models_data.visualization.utils import create_adjusted_axes -from projects.exceeding_snow_loads.paper_utils import dpi_paper1_figure -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from projects.exceeding_snow_loads.utils import dpi_paper1_figure +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends diff --git a/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py b/projects/exceeding_snow_loads/section_results/plot_uncertainty_curves.py similarity index 98% rename from projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py rename to projects/exceeding_snow_loads/section_results/plot_uncertainty_curves.py index 8f4d4caa..76666e3d 100644 --- a/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py +++ b/projects/exceeding_snow_loads/section_results/plot_uncertainty_curves.py @@ -6,9 +6,9 @@ import numpy as np from experiment.eurocode_data.utils import EUROCODE_RETURN_LEVEL_STR, EUROCODE_ALTITUDES, \ YEAR_OF_INTEREST_FOR_RETURN_LEVEL from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy, filled_marker_legend_list2 -from projects.exceeding_snow_loads.paper_utils import dpi_paper1_figure, ModelSubsetForUncertainty -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ - StudyVisualizerForNonStationaryTrends +from projects.exceeding_snow_loads.utils import dpi_paper1_figure +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import \ + StudyVisualizerForNonStationaryTrends, ModelSubsetForUncertainty from extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \ AbstractExtractEurocodeReturnLevel from experiment.eurocode_data.massif_name_to_departement import massif_name_to_eurocode_region diff --git a/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_histogram.py b/projects/exceeding_snow_loads/section_results/plot_uncertainty_histogram.py similarity index 93% rename from projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_histogram.py rename to projects/exceeding_snow_loads/section_results/plot_uncertainty_histogram.py index 15eb60fc..26e73132 100644 --- a/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_histogram.py +++ b/projects/exceeding_snow_loads/section_results/plot_uncertainty_histogram.py @@ -2,9 +2,9 @@ from typing import Dict import matplotlib.pyplot as plt import numpy as np -from experiment.eurocode_data.utils import EUROCODE_RETURN_LEVEL_STR, EUROCODE_ALTITUDES -from projects.exceeding_snow_loads.paper_utils import dpi_paper1_figure, ModelSubsetForUncertainty -from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from experiment.eurocode_data.utils import EUROCODE_ALTITUDES +from projects.exceeding_snow_loads.utils import dpi_paper1_figure +from extreme_trend_test.visualizers.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import ci_method_to_color, \ ci_method_to_label, ConfidenceIntervalMethodFromExtremes diff --git a/projects/exceeding_snow_loads/paper_utils.py b/projects/exceeding_snow_loads/utils.py similarity index 88% rename from projects/exceeding_snow_loads/paper_utils.py rename to projects/exceeding_snow_loads/utils.py index a3dc7eff..1a560af5 100644 --- a/projects/exceeding_snow_loads/paper_utils.py +++ b/projects/exceeding_snow_loads/utils.py @@ -24,11 +24,3 @@ NON_STATIONARY_TREND_TEST_PAPER = [GumbelVersusGumbel, GevLocationAgainstGumbel, GevScaleAgainstGumbel, GevLocationAndScaleTrendTestAgainstGumbel] - - -class ModelSubsetForUncertainty(Enum): - stationary_gumbel = 0 - stationary_gumbel_and_gev = 1 - non_stationary_gumbel = 2 - non_stationary_gumbel_and_gev = 3 - stationary_gev = 4 diff --git a/test/test_experiment/test_trend_analysis.py b/test/test_experiment/test_trend_analysis.py index 4b494bd0..e5bf0416 100644 --- a/test/test_experiment/test_trend_analysis.py +++ b/test/test_experiment/test_trend_analysis.py @@ -1,6 +1,6 @@ import unittest -from projects.exceeding_snow_loads.paper_utils import NON_STATIONARY_TREND_TEST_PAPER +from projects.exceeding_snow_loads.utils import NON_STATIONARY_TREND_TEST_PAPER class TestTrendAnalysis(unittest.TestCase): -- GitLab