From ac97c5fd42d67fafe486edbc69076dd08dfa8520 Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Wed, 18 Mar 2020 22:21:04 +0100 Subject: [PATCH] [refactor] step 2 big refactoring delete deprecated folders --- .../visualization/main_study_visualizer.py | 2 +- .../visualization/study_visualizer.py | 45 --- .../comparisons_visualization.py | 5 +- .../stations_data/main_spatial_comparison.py | 79 ------ .../stations_data/main_station_comparison.py | 65 ----- .../main_station_comparison_all_altitudes.py | 34 --- .../main_comparison_visualization.py | 0 experiment/robustness_plot/display_item.py | 22 -- .../max_stable_process_plot.py | 59 ---- .../spatial_robustness/alps_msp_robustness.py | 60 ---- .../unidimensional_robustness.py | 60 ---- experiment/robustness_plot/multiple_plot.py | 33 --- experiment/robustness_plot/single_plot.py | 134 --------- experiment/simulation/abstract_simulation.py | 263 ------------------ experiment/simulation/draft_main.py | 47 ---- .../simulation/lin_space2_simulation.py | 47 ---- experiment/simulation/lin_space_simulation.py | 38 --- .../abstract_univariate_test.py | 61 ---- .../abstract_gev_trend_test.py | 7 - papers/exceeding_snow_loads/data/__init__.py | 0 .../__init__.py | 0 .../presentation/__init__.py | 0 .../__init__.py | 0 papers/projection_snow_load/__init__.py | 0 .../visualization => projects}/__init__.py | 0 .../contrasting_snow_loads}/__init__.py | 0 .../contrasting_snow_loads/main_result.py | 16 +- ...tive_change_in_maxima_at_fixed_altitude.py | 0 .../plot_contrasting_trend_curves.py | 4 +- .../exceeding_snow_loads}/__init__.py | 0 .../__init__.py | 0 .../gelman_convergence_test.py | 0 .../main_bayesian_mcmc.py | 0 .../main_gelman_convergence_test.py | 0 .../__init__.py | 0 .../mixed_distribution_impact.py | 2 +- .../qqplot}/__init__.py | 0 .../qqplot/main_qqplot_for_big_shapes.py | 2 +- .../qqplot/plot_qqplot.py | 4 +- .../shape}/__init__.py | 0 .../shape/main_shape_repartition.py | 6 +- .../study_visualizer_for_shape_repartition.py | 2 +- .../uncertainty_interval_size.py | 4 +- .../without_maximum}/__init__.py | 0 .../main_fit_without_maximum.py | 2 +- ...study_visualizer_for_fit_witout_maximum.py | 2 +- .../exceeding_snow_loads/data}/__init__.py | 0 .../data/main_eurocode_plot.py | 0 .../data/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 | 0 ...in_spatio_temporal_density_wrt_altitude.py | 0 .../exceeding_snow_loads/paper_main_utils.py | 2 +- .../exceeding_snow_loads/paper_utils.py | 0 .../presentation}/__init__.py | 0 .../presentation/accumulation_in_winter.py | 0 .../presentation/statistical_model.py | 0 .../__init__.py | 0 .../main_result_trends_and_return_levels.py | 18 +- .../plot_diagnosis_risk.py | 2 +- .../plot_selection_curves.py | 6 +- .../plot_trend_curves.py | 4 +- .../plot_uncertainty_curves.py | 4 +- .../plot_uncertainty_histogram.py | 4 +- ...dy_visualizer_for_non_stationary_trends.py | 4 +- .../projection_snow_load}/__init__.py | 0 ...ence_between_reanalysis_and_simulations.py | 0 .../thesis_report}/__init__.py | 0 .../thesis_report}/gev_plot.py | 0 .../simulation_for_quantile_gap.py | 0 test/test_experiment/test_trend_analysis.py | 2 +- 73 files changed, 50 insertions(+), 1107 deletions(-) rename experiment/meteo_france_data/stations_data/{visualization/comparisons_visualization => }/comparisons_visualization.py (97%) delete mode 100644 experiment/meteo_france_data/stations_data/main_spatial_comparison.py delete mode 100644 experiment/meteo_france_data/stations_data/main_station_comparison.py delete mode 100644 experiment/meteo_france_data/stations_data/main_station_comparison_all_altitudes.py delete mode 100644 experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/main_comparison_visualization.py delete mode 100644 experiment/robustness_plot/display_item.py delete mode 100644 experiment/robustness_plot/estimation_robustness/max_stable_process_plot.py delete mode 100644 experiment/robustness_plot/estimation_robustness/spatial_robustness/alps_msp_robustness.py delete mode 100644 experiment/robustness_plot/estimation_robustness/unidimensional_robustness/unidimensional_robustness.py delete mode 100644 experiment/robustness_plot/multiple_plot.py delete mode 100644 experiment/robustness_plot/single_plot.py delete mode 100644 experiment/simulation/abstract_simulation.py delete mode 100644 experiment/simulation/draft_main.py delete mode 100644 experiment/simulation/lin_space2_simulation.py delete mode 100644 experiment/simulation/lin_space_simulation.py delete mode 100644 papers/exceeding_snow_loads/data/__init__.py delete mode 100644 papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/__init__.py delete mode 100644 papers/exceeding_snow_loads/presentation/__init__.py delete mode 100644 papers/exceeding_snow_loads/result_trends_and_return_levels/__init__.py delete mode 100644 papers/projection_snow_load/__init__.py rename {experiment/meteo_france_data/stations_data/visualization => projects}/__init__.py (100%) rename {experiment/meteo_france_data/stations_data/visualization/comparisons_visualization => projects/contrasting_snow_loads}/__init__.py (100%) rename {papers => projects}/contrasting_snow_loads/main_result.py (82%) rename {papers => projects}/contrasting_snow_loads/main_spatial_relative_change_in_maxima_at_fixed_altitude.py (100%) rename {papers => projects}/contrasting_snow_loads/plot_contrasting_trend_curves.py (95%) rename {experiment/robustness_plot => projects/exceeding_snow_loads}/__init__.py (100%) rename {experiment/robustness_plot/estimation_robustness => projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels}/__init__.py (100%) rename {papers => projects}/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/gelman_convergence_test.py (100%) rename {papers => projects}/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_bayesian_mcmc.py (100%) rename {papers => projects}/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_gelman_convergence_test.py (100%) rename {experiment/robustness_plot/estimation_robustness/spatial_robustness => projects/exceeding_snow_loads/check_mle_convergence_for_trends}/__init__.py (100%) rename {papers => projects}/exceeding_snow_loads/check_mle_convergence_for_trends/mixed_distribution/mixed_distribution_impact.py (98%) rename {experiment/robustness_plot/estimation_robustness/unidimensional_robustness => projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot}/__init__.py (100%) rename {papers => projects}/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py (97%) rename {papers => projects}/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/plot_qqplot.py (97%) rename {papers => projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape}/__init__.py (100%) rename {papers => projects}/exceeding_snow_loads/check_mle_convergence_for_trends/shape/main_shape_repartition.py (87%) rename {papers => projects}/exceeding_snow_loads/check_mle_convergence_for_trends/shape/study_visualizer_for_shape_repartition.py (92%) rename {papers => projects}/exceeding_snow_loads/check_mle_convergence_for_trends/uncertainty_interval_size.py (84%) rename {papers/contrasting_snow_loads => projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum}/__init__.py (100%) rename {papers => projects}/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/main_fit_without_maximum.py (86%) rename {papers => projects}/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/study_visualizer_for_fit_witout_maximum.py (95%) rename {papers/exceeding_snow_loads => projects/exceeding_snow_loads/data}/__init__.py (100%) rename {papers => projects}/exceeding_snow_loads/data/main_eurocode_plot.py (100%) rename {papers => projects}/exceeding_snow_loads/data/main_example_swe_total_plot.py (97%) rename {papers/exceeding_snow_loads/check_mcmc_convergence_for_return_levels => projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode}/__init__.py (100%) rename {papers => projects}/exceeding_snow_loads/discussion_data_comparison_with_eurocode/crocus_study_comparison_with_eurocode.py (100%) rename {papers => projects}/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_examples.py (94%) rename {papers => projects}/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_global.py (100%) rename {papers => projects}/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py (100%) rename {papers => projects}/exceeding_snow_loads/paper_main_utils.py (93%) rename {papers => projects}/exceeding_snow_loads/paper_utils.py (100%) rename {papers/exceeding_snow_loads/check_mle_convergence_for_trends => projects/exceeding_snow_loads/presentation}/__init__.py (100%) rename {papers => projects}/exceeding_snow_loads/presentation/accumulation_in_winter.py (100%) rename {papers => projects}/exceeding_snow_loads/presentation/statistical_model.py (100%) rename {papers/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot => projects/exceeding_snow_loads/result_trends_and_return_levels}/__init__.py (100%) rename {papers => projects}/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py (86%) rename {papers => projects}/exceeding_snow_loads/result_trends_and_return_levels/plot_diagnosis_risk.py (93%) rename {papers => projects}/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py (77%) rename {papers => projects}/exceeding_snow_loads/result_trends_and_return_levels/plot_trend_curves.py (96%) rename {papers => projects}/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py (98%) rename {papers => projects}/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_histogram.py (95%) rename {papers => projects}/exceeding_snow_loads/study_visualizer_for_non_stationary_trends.py (99%) rename {papers/exceeding_snow_loads/check_mle_convergence_for_trends/shape => projects/projection_snow_load}/__init__.py (100%) rename {papers => projects}/projection_snow_load/main_difference_between_reanalysis_and_simulations.py (100%) rename {papers/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum => projects/thesis_report}/__init__.py (100%) rename {thesis_report => projects/thesis_report}/gev_plot.py (100%) rename {thesis_report => projects/thesis_report}/simulation_for_quantile_gap.py (100%) 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 b8d9cc8b..2f9e1a1a 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 @@ -4,7 +4,7 @@ from typing import List from experiment.meteo_france_data.scm_models_data.crocus.crocus_variables import CrocusDensityVariable from experiment.meteo_france_data.scm_models_data.visualization.study_visualizer import \ StudyVisualizer -from papers.exceeding_snow_loads.discussion_data_comparison_with_eurocode.crocus_study_comparison_with_eurocode import \ +from projects.exceeding_snow_loads.discussion_data_comparison_with_eurocode.crocus_study_comparison_with_eurocode import \ CrocusDifferenceSnowLoad, \ CrocusSnowDensityAtMaxofSwe, CrocusDifferenceSnowLoadRescaledAndEurocodeToSeeSynchronization, \ CrocusSnowDepthDifference, CrocusSnowDepthAtMaxofSwe diff --git a/experiment/meteo_france_data/scm_models_data/visualization/study_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/study_visualizer.py index 9d34c7c1..3ee9fae7 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/study_visualizer.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/study_visualizer.py @@ -17,7 +17,6 @@ from extreme_fit.model.result_from_model_fit.result_from_extremes.eurocode_retur from experiment.meteo_france_data.scm_models_data.abstract_extended_study import AbstractExtendedStudy from experiment.trend_analysis.abstract_score import MeanScore, AbstractTrendScore from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy -from experiment.trend_analysis.univariate_test.abstract_univariate_test import AbstractUnivariateTest from experiment.trend_analysis.non_stationary_trends import \ ConditionalIndedendenceLocationTrendTest, MaxStableLocationTrendTest, IndependenceLocationTrendTest from experiment.meteo_france_data.scm_models_data.visualization.utils import create_adjusted_axes @@ -413,24 +412,6 @@ class StudyVisualizer(VisualizationParameters): massif_name_to_scores[massif_name] = np.array(detailed_scores) return massif_name_to_scores - def massif_name_to_df_trend_type(self, trend_test_class, starting_year_to_weight): - """ - Create a DataFrame with massif as index - :param trend_test_class: - :param starting_year_to_weight: - :return: - """ - massif_name_to_df_trend_type = {} - for massif_id, massif_name in enumerate(self.study.study_massif_names): - trend_type_and_weight = [] - years, smooth_maxima = self.smooth_maxima_x_y(massif_id) - for starting_year, weight in starting_year_to_weight.items(): - test_trend_type = self.compute_trend_test_result(smooth_maxima, starting_year, trend_test_class, years) - trend_type_and_weight.append((test_trend_type, weight)) - df = pd.DataFrame(trend_type_and_weight, columns=['trend type', 'weight']) - massif_name_to_df_trend_type[massif_name] = df - return massif_name_to_df_trend_type - def massif_name_to_gev_change_point_test_results(self, trend_test_class_for_change_point_test, starting_years_for_change_point_test, nb_massif_for_change_point_test=None, @@ -511,32 +492,6 @@ class StudyVisualizer(VisualizationParameters): return [pd.DataFrame(massif_name_to_res, index=self.starting_years_for_change_point_test).transpose() for massif_name_to_res in all_massif_name_to_res] - @staticmethod - def compute_trend_test_result(smooth_maxima, starting_year, trend_test_class, years): - trend_test = trend_test_class(years, smooth_maxima, starting_year) # type: AbstractUnivariateTest - return trend_test.test_trend_type - - def df_trend_test_count(self, trend_test_class, starting_year_to_weight): - """ - Index are the trend type - Columns are the massif - - :param starting_year_to_weight: - :param trend_test_class: - :return: - """ - massif_name_to_df_trend_type = self.massif_name_to_df_trend_type(trend_test_class, starting_year_to_weight) - df = pd.concat([100 * v.groupby(['trend type']).sum() - for v in massif_name_to_df_trend_type.values()], axis=1, sort=False) - df.fillna(0.0, inplace=True) - assert np.allclose(df.sum(axis=0), 100) - # Add the significant trend into the count of normal trend - if AbstractUnivariateTest.SIGNIFICATIVE_POSITIVE_TREND in df.index: - df.loc[AbstractUnivariateTest.POSITIVE_TREND] += df.loc[AbstractUnivariateTest.SIGNIFICATIVE_POSITIVE_TREND] - if AbstractUnivariateTest.SIGNIFICATIVE_NEGATIVE_TREND in df.index: - df.loc[AbstractUnivariateTest.NEGATIVE_TREND] += df.loc[AbstractUnivariateTest.SIGNIFICATIVE_NEGATIVE_TREND] - return df - @cached_property def massif_name_to_scores(self): return {k: v[:, 0] for k, v in self.massif_name_to_detailed_scores.items()} diff --git a/experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/comparisons_visualization.py b/experiment/meteo_france_data/stations_data/comparisons_visualization.py similarity index 97% rename from experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/comparisons_visualization.py rename to experiment/meteo_france_data/stations_data/comparisons_visualization.py index ed4e689d..d04fcc20 100644 --- a/experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/comparisons_visualization.py +++ b/experiment/meteo_france_data/stations_data/comparisons_visualization.py @@ -18,7 +18,7 @@ from experiment.trend_analysis.univariate_test.abstract_univariate_test import A from experiment.trend_analysis.univariate_test.univariate_test_results import compute_gev_change_point_test_results from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates -path = r'/home/erwan/Documents/projects/spatiotemporalextremes/experiment/meteo_france_data/stations_data/csv' +path = r'/data/meteo_france_data/stations_data/csv' path_last_csv_file = op.join(path, 'example.csv') path_backup_csv_file = op.join(path, 'example_backup.csv') @@ -115,12 +115,9 @@ class ComparisonsVisualization(VisualizationParameters): if TREND_TYPE_CNAME in df.columns: # Display the confusion matrix - print(df[TREND_TYPE_CNAME].values) - print(AbstractUnivariateTest.three_main_trend_types()) m = confusion_matrix(y_true=df[TREND_TYPE_CNAME].values, y_pred=df[SAFRAN_TREND_TYPE_CNAME].values, labels=AbstractUnivariateTest.three_main_trend_types()) - print(m) # Display the classification score per massif df[WELL_CLASSIFIED_CNAME] = df[TREND_TYPE_CNAME] == df[SAFRAN_TREND_TYPE_CNAME] diff --git a/experiment/meteo_france_data/stations_data/main_spatial_comparison.py b/experiment/meteo_france_data/stations_data/main_spatial_comparison.py deleted file mode 100644 index b2bdf90a..00000000 --- a/experiment/meteo_france_data/stations_data/main_spatial_comparison.py +++ /dev/null @@ -1,79 +0,0 @@ -from experiment.meteo_france_data.stations_data.comparison_analysis import ComparisonAnalysis -from extreme_fit.model.margin_model.linear_margin_model.linear_margin_model import LinearAllParametersAllDimsMarginModel -from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.uniform_normalization import \ - BetweenZeroAndOneNormalization -from root_utils import get_display_name_from_object_type - - -def choice_of_altitude_and_nb_border_data_to_remove_to_get_data_without_nan(): - for margin in [50, 100, 150, 200, 250, 300][2:3]: - for altitude in [900, 1200, 1800][:1]: - for nb in range(1, 4): - s = ComparisonAnalysis(altitude=altitude, nb_border_data_to_remove=nb, margin=margin) - print(margin, altitude, nb, 'nb massifs', len(s.intersection_massif_names), 'nb stations', - len(s.stations_observations), 'nb observations', s.stations_observations.nb_obs, - s.study_observations.nb_obs, - s.stations_coordinates.index) - - -def run_comparison_for_optimal_parameters_for_altitude_900(): - for nb in [0, 1, 2][:]: - for transformation_class in [None, BetweenZeroAndOneNormalization][1:]: - comparison = ComparisonAnalysis(altitude=900, nb_border_data_to_remove=nb, margin=150, - exclude_some_massifs_from_the_intersection=nb == 2, - transformation_class=transformation_class, - normalize_observations=True) - print('\n-----------\nnb:', nb, comparison.intersection_massif_names) - # margin_model_classes = [LinearShapeAllDimsMarginModel, LinearLocationAllDimsMarginModel, - # LinearAllParametersAllDimsMarginModel] - for margin_model_class in [LinearAllParametersAllDimsMarginModel]: - print(get_display_name_from_object_type(margin_model_class)) - comparison.spatial_comparison(margin_model_class) - - -""" -Comparaison données de re-analysis et données de stations - -J'ai utilisé le fichier "PrecipitationsAvalanches_MaxPrecipit_ParPoste_ParHiver_traites.xls" - -Après des analyses avec la fonction 'choice_of_altitude_and_nb_border_data_to_remove_to_get_data_without_nan' -j'ai choisis de lancer mes analyses avec: - -une altitude de 900m - -une margin de 150m (donc je selectionne toutes les stations entre 750m et 1050m). -Je ne choisis que des stations qui ont des observations complètes sur toute la periode d'observation. -et je m'asssure de n'avoir une seule station par massif (qui appartient à l intersection des massifs entre les study et les stations) - -Souvent les observations manquantes se situaient dans les premières ou dans les dernières années -j'ai donc ajouté un parametre nb_to_remove_border qui enlever ces observations (à la fois pour les study et les stations). -Ce parametre entrainent donc des datasets avec moins d observations, mais avec plus de masssifs/stations - -Par contre, dans le cas nb_to_remove=2, il y avait de grosses différences si j'incluais ou non le massif Mercantour -donc en tout attendant de mieux comprendre, j'ai prefere exclure ce massif dans ce cas - -Dans tous les cas, nb_to_remove de 0 à 2 -pour n'importe quel modele de marges -et pour un max stable BrownResnick ou ExtremalT -alors le signe des coefficient de marges selon les coordonées Lambert sont toujours les mêmes que l'on utilise les données -de reanalysis ou les données de stations -""" - - -""" -A way to improve the analysis would be to have another altitude of reference with a lot of data -But for the other altitude, we have data issues because there is a Nan in the middle of the data -Instead of removing on the side, I should remove the years that concerns as much station from the same altitude level -I should find the "optimal" years to remove -Then I should find a way to remove the same years in the study -""" - -def test_data(): - s = ComparisonAnalysis(altitude=900) - df = s.load_main_df() - print(df) - print(df.columns) - print(len(df)) - -if __name__ == '__main__': - test_data() - # run_comparison_for_optimal_parameters_for_altitude_900() - # choice_of_altitude_and_nb_border_data_to_remove_to_get_data_without_nan() diff --git a/experiment/meteo_france_data/stations_data/main_station_comparison.py b/experiment/meteo_france_data/stations_data/main_station_comparison.py deleted file mode 100644 index 03f44f67..00000000 --- a/experiment/meteo_france_data/stations_data/main_station_comparison.py +++ /dev/null @@ -1,65 +0,0 @@ -from experiment.meteo_france_data.scm_models_data.visualization.main_study_visualizer import \ - ALL_ALTITUDES_WITH_20_STATIONS_AT_LEAST -from experiment.meteo_france_data.stations_data.visualization.comparisons_visualization.comparisons_visualization import \ - ComparisonsVisualization, path_backup_csv_file -from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import GevLocationChangePointTest, \ - GevScaleChangePointTest, GevShapeChangePointTest - - -def visualize_all_stations(): - vizu = ComparisonsVisualization(altitudes=ALL_ALTITUDES_WITH_20_STATIONS_AT_LEAST, margin=150) - vizu.visualize_maximum(visualize_metric_only=False) - - -def visualize_non_nan_station(): - for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][1:2]: - vizu = ComparisonsVisualization(altitudes=ALL_ALTITUDES_WITH_20_STATIONS_AT_LEAST, - keep_only_station_without_nan_values=True, - normalize_observations=False, - trend_test_class=trend_test_class) - vizu.visualize_maximum(visualize_metric_only=True) - # vizu.visualize_gev() - - -def example(): - # this is a really good example for the maxima at least - # vizu = ComparisonsVisualization(altitudes=[900], normalize_observations=False) - # vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Beaufortain', show=True) - - vizu = ComparisonsVisualization(altitudes=[900], normalize_observations=False, keep_only_station_without_nan_values=True) - # vizu._visualize_ax_main(vizu.plot_gev, vizu.comparisons[0], 'Beaufortain', show=True) - vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Beaufortain', show=True) - -def wrong_example(): - vizu = ComparisonsVisualization(altitudes=[1200], normalize_observations=False) - # vizu._visualize_ax_main(vizu.plot_gev, vizu.comparisons[0], 'Beaufortain', show=True) - vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Chablais', show=True) - -def wrong_example2(): - vizu = ComparisonsVisualization(altitudes=[1200], normalize_observations=False) - vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Vanoise', show=True) - - vizu = ComparisonsVisualization(altitudes=[1800], normalize_observations=False) - vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Haute-Maurienne', show=True) - - vizu = ComparisonsVisualization(altitudes=[600], normalize_observations=False) - vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Mercantour', show=True) - -def wrong_example3(): - vizu = ComparisonsVisualization(altitudes=[1200], normalize_observations=False, keep_only_station_without_nan_values=True) - vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Devoluy', show=True) - - -def quick_metric_analysis(): - ComparisonsVisualization.visualize_metric(csv_filepath=path_backup_csv_file) - # ComparisonsVisualization.visualize_metric() - -if __name__ == '__main__': - # wrong_example3() - # visualize_fast_comparison() - visualize_all_stations() - # quick_metric_analysis() - # wrong_example2() - # visualize_non_nan_station() - # example() - diff --git a/experiment/meteo_france_data/stations_data/main_station_comparison_all_altitudes.py b/experiment/meteo_france_data/stations_data/main_station_comparison_all_altitudes.py deleted file mode 100644 index d9469c79..00000000 --- a/experiment/meteo_france_data/stations_data/main_station_comparison_all_altitudes.py +++ /dev/null @@ -1,34 +0,0 @@ -from experiment.meteo_france_data.scm_models_data.visualization.main_study_visualizer import \ - ALL_ALTITUDES -from experiment.meteo_france_data.stations_data.visualization.comparisons_visualization.comparisons_visualization import \ - ComparisonsVisualization - - -# Create the map with the average error per massif - -def visualize_all_stations_all_altitudes(): - vizu = ComparisonsVisualization(altitudes=ALL_ALTITUDES, margin=150, keep_only_station_without_nan_values=True) - vizu.visualize_maximum(visualize_metric_only=False) - - -# Zoom on each massif - -def example(): - vizu = ComparisonsVisualization(altitudes=[600], normalize_observations=False, keep_only_station_without_nan_values=False) - vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Mercantour', show=True, direct=True) - # vizu = ComparisonsVisualization(altitudes=[300], normalize_observations=False, keep_only_station_without_nan_values=False) - # vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Haut_Var-Haut_Verdon', show=True, direct=True) - # vizu = ComparisonsVisualization(altitudes=[1800], normalize_observations=False, keep_only_station_without_nan_values=False) - # vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Grandes-Rousses', show=True, direct=True) - -def example_good(): - # vizu = ComparisonsVisualization(altitudes=[900], normalize_observations=False, keep_only_station_without_nan_values=False) - # vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Beaufortain', show=True, direct=True) - vizu = ComparisonsVisualization(altitudes=[900], normalize_observations=False, keep_only_station_without_nan_values=False) - vizu._visualize_ax_main(vizu.plot_maxima, vizu.comparisons[0], 'Oisans', show=True, direct=True) - -if __name__ == '__main__': - # visualize_all_stations_all_altitudes() - # example() - example_good() - diff --git a/experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/main_comparison_visualization.py b/experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/main_comparison_visualization.py deleted file mode 100644 index e69de29b..00000000 diff --git a/experiment/robustness_plot/display_item.py b/experiment/robustness_plot/display_item.py deleted file mode 100644 index 48fda88d..00000000 --- a/experiment/robustness_plot/display_item.py +++ /dev/null @@ -1,22 +0,0 @@ - -class DisplayItem(object): - - def __init__(self, name, default_value): - self.name = name - self.default_value = default_value - - def display_name_from_value(self, value) -> str: - return '' - - def values_from_kwargs(self, **kwargs): - values = kwargs.get(self.name, [self.default_value]) - assert isinstance(values, list) - return values - - def value_from_kwargs(self, **kwargs): - return kwargs.get(self.name, self.default_value) - - def update_kwargs_value(self, value, **kwargs): - updated_kwargs = kwargs.copy() - updated_kwargs.update({self.name: value}) - return updated_kwargs \ No newline at end of file diff --git a/experiment/robustness_plot/estimation_robustness/max_stable_process_plot.py b/experiment/robustness_plot/estimation_robustness/max_stable_process_plot.py deleted file mode 100644 index 33b9e34c..00000000 --- a/experiment/robustness_plot/estimation_robustness/max_stable_process_plot.py +++ /dev/null @@ -1,59 +0,0 @@ -from extreme_fit.estimator.max_stable_estimator.abstract_max_stable_estimator import MaxStableEstimator -from extreme_fit.model.max_stable_model.abstract_max_stable_model import AbstractMaxStableModel -from extreme_fit.model.max_stable_model.max_stable_models import Smith -from experiment.robustness_plot.display_item import DisplayItem -from experiment.robustness_plot.multiple_plot import MultiplePlot -from experiment.robustness_plot.single_plot import SinglePlot -from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates -from spatio_temporal_dataset.coordinates.spatial_coordinates.generated_spatial_coordinates import CircleSpatialCoordinates -from spatio_temporal_dataset.dataset.simulation_dataset import MaxStableDataset - - -class MaxStableDisplayItem(DisplayItem): - - def display_name_from_value(self, value: AbstractMaxStableModel): - return value.cov_mod - - -class CoordinateDisplayItem(DisplayItem): - - def display_name_from_value(self, value: AbstractCoordinates): - return str(value).split('.')[-1].split("'")[0] - - -class MaxStableProcessPlot(object): - MaxStableModelItem = MaxStableDisplayItem('max_stable_model', Smith) - CoordinateClassItem = CoordinateDisplayItem('coordinate_class', CircleSpatialCoordinates) - NbStationItem = DisplayItem('Number of stations', 50) - NbObservationItem = DisplayItem('nb_obs', 60) - - def msp_spatial_ordinates(self, **kwargs_single_point) -> dict: - # Get the argument from kwargs - max_stable_model = self.MaxStableModelItem.value_from_kwargs( - **kwargs_single_point) # type: AbstractMaxStableModel - coordinate_class = self.CoordinateClassItem.value_from_kwargs(**kwargs_single_point) - nb_station = self.NbStationItem.value_from_kwargs(**kwargs_single_point) - nb_obs = self.NbObservationItem.value_from_kwargs(**kwargs_single_point) - # Run the estimation - spatial_coordinates = coordinate_class.from_nb_points(nb_points=nb_station) - dataset = MaxStableDataset.from_sampling(nb_obs=nb_obs, max_stable_model=max_stable_model, - coordinates=spatial_coordinates) - estimator = MaxStableEstimator(dataset, max_stable_model) - estimator.fit() - # Estimator was computing some error as follows: - # absolute_errors = {param_name: np.abs(param_true_value - self.max_stable_params_fitted[param_name]) - # for param_name, param_true_value in true_max_stable_params.items()} - # mean_absolute_error = np.mean(np.array(list(absolute_errors.values()))) - # return estimator.scalars(max_stable_model.params_sample) - - -class SingleMaxStableProcessPlot(SinglePlot, MaxStableProcessPlot): - - def compute_value_from_kwargs_single_point(self, **kwargs_single_point): - return self.msp_spatial_ordinates(**kwargs_single_point) - - -class MultipleMaxStableProcessPlot(MultiplePlot, MaxStableProcessPlot): - - def compute_value_from_kwargs_single_point(self, **kwargs_single_point): - return self.msp_spatial_ordinates(**kwargs_single_point) \ No newline at end of file diff --git a/experiment/robustness_plot/estimation_robustness/spatial_robustness/alps_msp_robustness.py b/experiment/robustness_plot/estimation_robustness/spatial_robustness/alps_msp_robustness.py deleted file mode 100644 index 26b98dc4..00000000 --- a/experiment/robustness_plot/estimation_robustness/spatial_robustness/alps_msp_robustness.py +++ /dev/null @@ -1,60 +0,0 @@ -from extreme_fit.model.max_stable_model.max_stable_models import Smith, BrownResnick -from experiment.robustness_plot.estimation_robustness.max_stable_process_plot import MultipleMaxStableProcessPlot, MaxStableProcessPlot -from experiment.robustness_plot.single_plot import SinglePlot -from spatio_temporal_dataset.coordinates.spatial_coordinates.alps_station_2D_coordinates import \ - AlpsStation2DCoordinatesBetweenZeroAndOne, AlpsStationCoordinatesBetweenZeroAndTwo -from spatio_temporal_dataset.coordinates.spatial_coordinates.generated_spatial_coordinates import CircleSpatialCoordinates, \ - CircleSpatialCoordinatesRadius2 - - -# def single_spatial_robustness_alps(): -# spatial_robustness = SingleMspSpatial(grid_row_item=SingleMspSpatial.NbObservationItem, -# grid_column_item=SingleMspSpatial.SpatialCoordinateClassItem, -# plot_row_item=SingleMspSpatial.NbStationItem, -# plot_label_item=SingleMspSpatial.MaxStableModelItem) -# # Put only the parameter that will vary -# spatial_robustness.robustness_grid_plot(**{ -# SingleMspSpatial.NbStationItem.name: list(range(43, 87, 15)), -# SingleMspSpatial.NbObservationItem.name: [10], -# SingleMspSpatial.MaxStableModelItem.name: [Smith(), BrownResnick()][:], -# SingleMspSpatial.SpatialCoordinateClassItem.name: [CircleCoordinatesRadius1, -# AlpsStationCoordinatesBetweenZeroAndOne][:], -# }) - - -def multiple_spatial_robustness_alps(): - nb_observation = 20 - nb_sample = 1 - plot_name = 'fast_result' - nb_stations = list(range(43, 87, 15)) - # nb_stations = [10, 20, 30] - - spatial_robustness = MultipleMaxStableProcessPlot( - grid_column_item=MaxStableProcessPlot.CoordinateClassItem, - plot_row_item=MaxStableProcessPlot.NbStationItem, - plot_label_item=MaxStableProcessPlot.MaxStableModelItem, - nb_samples=nb_sample, - main_title="Max stable analysis with {} years of spatio_temporal_observations".format(nb_observation), - plot_png_filename=plot_name - ) - # Load all the models - msp_models = [Smith(), BrownResnick()] - # for covariance_function in CovarianceFunction: - # msp_models.extend([ExtremalT(covariance_function=covariance_function)]) - - # Put only the parameter that will vary - spatial_robustness.robustness_grid_plot(**{ - # SinglePlot.OrdinateItem.name: [AbstractEstimator.MAE_ERROR, AbstractEstimator.DURATION], - MaxStableProcessPlot.NbStationItem.name: nb_stations, - MaxStableProcessPlot.NbObservationItem.name: nb_observation, - MaxStableProcessPlot.MaxStableModelItem.name: msp_models, - MaxStableProcessPlot.CoordinateClassItem.name: [CircleSpatialCoordinates, - CircleSpatialCoordinatesRadius2, - AlpsStation2DCoordinatesBetweenZeroAndOne, - AlpsStationCoordinatesBetweenZeroAndTwo][:], - }) - - -if __name__ == '__main__': - # single_spatial_robustness_alps() - multiple_spatial_robustness_alps() diff --git a/experiment/robustness_plot/estimation_robustness/unidimensional_robustness/unidimensional_robustness.py b/experiment/robustness_plot/estimation_robustness/unidimensional_robustness/unidimensional_robustness.py deleted file mode 100644 index e2d77b0f..00000000 --- a/experiment/robustness_plot/estimation_robustness/unidimensional_robustness/unidimensional_robustness.py +++ /dev/null @@ -1,60 +0,0 @@ -from extreme_fit.model.max_stable_model.max_stable_models import Smith, BrownResnick -from experiment.robustness_plot.estimation_robustness.max_stable_process_plot import MultipleMaxStableProcessPlot, MaxStableProcessPlot -from experiment.robustness_plot.single_plot import SinglePlot -from spatio_temporal_dataset.coordinates.spatial_coordinates.alps_station_2D_coordinates import \ - AlpsStation2DCoordinatesBetweenZeroAndOne, AlpsStationCoordinatesBetweenZeroAndTwo -from spatio_temporal_dataset.coordinates.spatial_coordinates.generated_spatial_coordinates import CircleSpatialCoordinates, \ - CircleSpatialCoordinatesRadius2 - - -# def single_spatial_robustness_alps(): -# spatial_robustness = SingleMspSpatial(grid_row_item=SingleMspSpatial.NbObservationItem, -# grid_column_item=SingleMspSpatial.SpatialCoordinateClassItem, -# plot_row_item=SingleMspSpatial.NbStationItem, -# plot_label_item=SingleMspSpatial.MaxStableModelItem) -# # Put only the parameter that will vary -# spatial_robustness.robustness_grid_plot(**{ -# SingleMspSpatial.NbStationItem.name: list(range(43, 87, 15)), -# SingleMspSpatial.NbObservationItem.name: [10], -# SingleMspSpatial.MaxStableModelItem.name: [Smith(), BrownResnick()][:], -# SingleMspSpatial.SpatialCoordinateClassItem.name: [CircleCoordinatesRadius1, -# AlpsStationCoordinatesBetweenZeroAndOne][:], -# }) - - -def multiple_unidimensional_robustness(): - nb_observation = 20 - nb_sample = 1 - plot_name = 'fast_result' - nb_stations = list(range(43, 87, 15)) - # nb_stations = [10, 20, 30] - - spatial_robustness = MultipleMaxStableProcessPlot( - grid_column_item=MaxStableProcessPlot.CoordinateClassItem, - plot_row_item=MaxStableProcessPlot.NbStationItem, - plot_label_item=MaxStableProcessPlot.MaxStableModelItem, - nb_samples=nb_sample, - main_title="Max stable analysis with {} years of spatio_temporal_observations".format(nb_observation), - plot_png_filename=plot_name - ) - # Load all the models - msp_models = [Smith(), BrownResnick()] - # for covariance_function in CovarianceFunction: - # msp_models.extend([ExtremalT(covariance_function=covariance_function)]) - - # Put only the parameter that will vary - spatial_robustness.robustness_grid_plot(**{ - # SinglePlot.OrdinateItem.name: [AbstractEstimator.MAE_ERROR, AbstractEstimator.DURATION], - MaxStableProcessPlot.NbStationItem.name: nb_stations, - MaxStableProcessPlot.NbObservationItem.name: nb_observation, - MaxStableProcessPlot.MaxStableModelItem.name: msp_models, - MaxStableProcessPlot.CoordinateClassItem.name: [CircleSpatialCoordinates, - CircleSpatialCoordinatesRadius2, - AlpsStation2DCoordinatesBetweenZeroAndOne, - AlpsStationCoordinatesBetweenZeroAndTwo][:], - }) - - -if __name__ == '__main__': - # single_spatial_robustness_alps() - multiple_unidimensional_robustness() diff --git a/experiment/robustness_plot/multiple_plot.py b/experiment/robustness_plot/multiple_plot.py deleted file mode 100644 index e0b733f2..00000000 --- a/experiment/robustness_plot/multiple_plot.py +++ /dev/null @@ -1,33 +0,0 @@ -from experiment.robustness_plot.single_plot import SinglePlot - - -class MultiplePlot(SinglePlot): - """ - In a Multiple Scalar plot, for each - - Each scalar, will be display on a grid row (to ease visual comparison) - """ - - def __init__(self, grid_column_item, plot_row_item, plot_label_item, nb_samples=1, main_title='', - plot_png_filename=None): - super().__init__(grid_row_item=self.OrdinateItem, grid_column_item=grid_column_item, - plot_row_item=plot_row_item, plot_label_item=plot_label_item, - nb_samples=nb_samples, main_title=main_title, plot_png_filename=plot_png_filename) - self.kwargs_single_point_to_errors = {} - - def cached_compute_value_from_kwargs_single_point(self, **kwargs_single_point): - # Compute hash - hash_from_kwargs_single_point = self.hash_from_kwargs_single_point(kwargs_single_point) - # Either compute the errors or Reload them from cached results - if hash_from_kwargs_single_point in self.kwargs_single_point_to_errors: - errors = self.kwargs_single_point_to_errors[hash_from_kwargs_single_point] - else: - errors = self.compute_value_from_kwargs_single_point(**kwargs_single_point) - self.kwargs_single_point_to_errors[hash_from_kwargs_single_point] = errors - return errors - - def hash_from_kwargs_single_point(self, kwargs_single_point): - items_except_error = [(k, v) for k, v in kwargs_single_point.items() if k != self.OrdinateItem.name] - ordered_dict_items_str = str(sorted(items_except_error, key=lambda x: x[0])) - hash_from_kwargs_single_point = hash(ordered_dict_items_str) - return hash_from_kwargs_single_point diff --git a/experiment/robustness_plot/single_plot.py b/experiment/robustness_plot/single_plot.py deleted file mode 100644 index e2fe7133..00000000 --- a/experiment/robustness_plot/single_plot.py +++ /dev/null @@ -1,134 +0,0 @@ -import os -import os.path as op - -import matplotlib.pyplot as plt -import numpy as np -from itertools import product - -from extreme_fit.estimator.abstract_estimator import AbstractEstimator -from experiment.robustness_plot.display_item import DisplayItem -from root_utils import get_full_path - -plt.style.use('seaborn-white') - - -class SinglePlot(object): - COLORS = ['blue', 'red', 'green', 'black', 'magenta', 'cyan'] - OrdinateItem = DisplayItem('ordinate', AbstractEstimator.MAE_ERROR) - - def __init__(self, grid_row_item, grid_column_item, plot_row_item, plot_label_item, nb_samples=1, main_title='', - plot_png_filename=None): - self.grid_row_item = grid_row_item # type: DisplayItem - self.grid_column_item = grid_column_item # type: DisplayItem - self.plot_row_item = plot_row_item # type: DisplayItem - self.plot_label_item = plot_label_item # type: DisplayItem - self.nb_samples = nb_samples - self.main_title = main_title - self.plot_png_filename = plot_png_filename - - def robustness_grid_plot(self, **kwargs): - # Extract Grid row and columns values - grid_row_values = self.grid_row_item.values_from_kwargs(**kwargs) - grid_column_values = self.grid_column_item.values_from_kwargs(**kwargs) - nb_grid_rows, nb_grid_columns = len(grid_row_values), len(grid_column_values) - # Start the overall plot - # fig = plt.figure() - fig, axes = plt.subplots(nb_grid_rows, nb_grid_columns, sharex='col', sharey='row') - fig.subplots_adjust(hspace=0.4, wspace=0.4, ) - for (i, grid_row_value), (j, grid_column_value) in product(enumerate(grid_row_values), - enumerate(grid_column_values)): - print('Grid plot: {}={} {}={}'.format(self.grid_row_item.name, grid_row_value, - self.grid_column_item.name, grid_column_value)) - ax = axes[i, j] - # ax = fig.add_subplot(nb_grid_rows, nb_grid_columns, i) - # Adapt the kwargs for the single plot - kwargs_single_plot = kwargs.copy() - kwargs_single_plot[self.grid_row_item.name] = grid_row_value - kwargs_single_plot[self.grid_column_item.name] = grid_column_value - self.robustness_single_plot(ax, **kwargs_single_plot) - self.add_sub_title(ax, grid_column_value, grid_row_value) - fig.suptitle(self.main_title) - self.save_plot() - plt.show() - - def save_plot(self): - if self.plot_png_filename is None: - return - assert isinstance(self.plot_png_filename, str) - relative_path = op.join('local', 'plot') - plot_pn_dirpath = get_full_path(relative_path=relative_path) - if not op.exists(plot_pn_dirpath): - os.makedirs(plot_pn_dirpath) - plot_pn_filepath = op.join(plot_pn_dirpath, self.plot_png_filename + '.png') - i = 2 - while op.exists(plot_pn_filepath): - plot_pn_filepath = op.join(plot_pn_dirpath, self.plot_png_filename + str(i) + '.png') - i += 1 - # plt.savefig(plot_pn_filepath, bbox_inches='tight') - plt.savefig(plot_pn_filepath) - - def robustness_single_plot(self, ax, **kwargs_single_plot): - plot_row_values = self.plot_row_item.values_from_kwargs(**kwargs_single_plot) - plot_label_values = self.plot_label_item.values_from_kwargs(**kwargs_single_plot) - ordinate_name = self.OrdinateItem.value_from_kwargs(**kwargs_single_plot) - for j, plot_label_value in enumerate(plot_label_values): - mean_values, std_values = self.compute_mean_and_std_ordinate_values(kwargs_single_plot, ordinate_name, - plot_label_value, plot_row_values) - ax.errorbar(plot_row_values, mean_values, std_values, - # linestyle='None', marker='^', - linewidth=0.5, - color=self.COLORS[j % len(self.COLORS)], - label=self.plot_label_item.display_name_from_value(plot_label_value)) - ax.legend() - # X axis - ax.set_xlabel(self.plot_row_item.name) - plt.setp(ax.get_xticklabels(), visible=True) - ax.xaxis.set_tick_params(labelbottom=True) - # Y axis - ax.set_ylabel(ordinate_name + ' ({} samples)'.format(self.nb_samples)) - plt.setp(ax.get_yticklabels(), visible=True) - ax.yaxis.set_tick_params(labelbottom=True) - - def compute_mean_and_std_ordinate_values(self, kwargs_single_plot, ordinate_name, plot_label_value, - plot_row_values): - all_ordinate_values = [] - for nb_sample in range(self.nb_samples): - # Important to add the nb_sample argument, to differentiate the different experiments - kwargs_single_plot['nb_sample'] = nb_sample - ordinate_values = self.compute_ordinate_values(kwargs_single_plot, ordinate_name, plot_label_value, - plot_row_values) - all_ordinate_values.append(ordinate_values) - all_ordinate_values = np.array(all_ordinate_values) - return np.mean(all_ordinate_values, axis=0), np.std(all_ordinate_values, axis=0) - - def compute_ordinate_values(self, kwargs_single_plot, ordinate_name, plot_label_value, plot_row_values): - # Compute - plot_row_value_to_ordinate_value = {} - # todo: do some parallzlization here - for plot_row_value in plot_row_values: - # Adapt the kwargs for the single value - kwargs_single_point = kwargs_single_plot.copy() - kwargs_single_point.update({self.plot_row_item.name: plot_row_value, - self.plot_label_item.name: plot_label_value}) - # The kwargs should not contain list of values - for k, v in kwargs_single_point.items(): - assert not isinstance(v, list), '"{}" argument is a list'.format(k) - # Compute ordinate values - ordinate_name_to_ordinate_value = self.cached_compute_value_from_kwargs_single_point(**kwargs_single_point) - plot_row_value_to_ordinate_value[plot_row_value] = ordinate_name_to_ordinate_value[ordinate_name] - # Plot the figure - plot_ordinate_values = [plot_row_value_to_ordinate_value[plot_row_value] for plot_row_value in - plot_row_values] - return plot_ordinate_values - - def compute_value_from_kwargs_single_point(self, **kwargs_single_point) -> dict: - pass - - def cached_compute_value_from_kwargs_single_point(self, **kwargs_single_point) -> dict: - return self.compute_value_from_kwargs_single_point(**kwargs_single_point) - - def add_sub_title(self, ax, grid_column_value, grid_row_value): - title_str = self.grid_row_item.display_name_from_value(grid_row_value) - title_str += ' ' if len(title_str) > 0 else '' - title_str += self.grid_column_item.display_name_from_value(grid_column_value) - ax.set_title(title_str) diff --git a/experiment/simulation/abstract_simulation.py b/experiment/simulation/abstract_simulation.py deleted file mode 100644 index 70f59120..00000000 --- a/experiment/simulation/abstract_simulation.py +++ /dev/null @@ -1,263 +0,0 @@ -import os -from typing import List - -import matplotlib -import matplotlib.colors as colors -import matplotlib.cm as cmx -import os.path as op -import pickle - -import matplotlib.cm as cm -import matplotlib.pyplot as plt -import numpy as np -import seaborn as sns -from numpy.linalg import LinAlgError - -from extreme_fit.estimator.abstract_estimator import AbstractEstimator -from extreme_fit.function.margin_function.abstract_margin_function import \ - AbstractMarginFunction -from extreme_fit.function.margin_function.combined_margin_function import \ - CombinedMarginFunction -from extreme_fit.function.margin_function.utils import error_dict_between_margin_functions -from extreme_fit.distribution.gev.gev_params import GevParams -from spatio_temporal_dataset.dataset.abstract_dataset import get_subset_dataset -from spatio_temporal_dataset.dataset.simulation_dataset import SimulatedDataset -from spatio_temporal_dataset.slicer.split import split_to_display_kwargs -from root_utils import get_full_path, get_display_name_from_object_type - -SIMULATION_RELATIVE_PATH = op.join('local', 'simulation') - - -class AbstractSimulation(object): - - def __init__(self, nb_fit=1): - self.nb_fit = nb_fit - self.margin_function_fitted_list = None # type: List[AbstractMarginFunction] - self.full_dataset = None - self.error_dict_all = None - self.margin_function_sample = None - self.mean_error_dict = None - self.mean_margin_function_fitted = None # type: AbstractMarginFunction - self.estimator_name = '' - - def fit(self, estimator_class, show=True): - assert estimator_class not in self.already_fitted_estimator_names, \ - 'This estimator class has already been fitted.' \ - 'Create a child class, if you wish to change some default parameters' - - # Load full dataset - full_dataset = self.load_full_dataset() - assert len(full_dataset.subset_id_to_column_idxs) == self.nb_fit - assert not full_dataset.slicer.some_required_ind_are_not_defined - - # Fit a margin function on each subset - margin_function_fitted_list = [] - for subset_id in range(self.nb_fit): - print('Fitting {}/{} of {}...'.format(subset_id + 1, self.nb_fit, - get_display_name_from_object_type(estimator_class))) - dataset = get_subset_dataset(full_dataset, subset_id=subset_id) # type: SimulatedDataset - estimator = estimator_class.from_dataset(dataset) # type: AbstractEstimator - # Fit the estimator and get the margin_function - estimator.fit() - margin_function_fitted_list.append(estimator.function_from_fit) - - # Individual error dict - self.dump_fitted_margins_pickle(estimator_class, margin_function_fitted_list) - - if show: - self.visualize_comparison_graph(estimator_names=[estimator_class]) - - def dump_fitted_margins_pickle(self, estimator_class, margin_function_fitted_list): - with open(self.fitted_margins_pickle_path(estimator_class), 'wb') as fp: - pickle.dump(margin_function_fitted_list, fp) - - def load_fitted_margins_pickles(self, estimator_class): - with open(self.fitted_margins_pickle_path(estimator_class), 'rb') as fp: - return pickle.load(fp) - - def visualize_comparison_graph(self, estimator_names=None): - # Visualize the result of several estimators on the same graph - if estimator_names is None: - estimator_names = self.already_fitted_estimator_names - assert len(estimator_names) > 0 - # Load dataset - self.full_dataset = self.load_full_dataset() - self.margin_function_sample = self.full_dataset.margin_model.margin_function_sample - - fig, axes = self.load_fig_and_axes() - - # Binary color should - values = np.linspace(0, 1, len(estimator_names)) - jet = plt.get_cmap('jet') - cNorm = matplotlib.colors.Normalize(vmin=0, vmax=values[-1]) - scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=jet) - colors = [scalarMap.to_rgba(value) for value in values] - - for j, (estimator_name, color) in enumerate(zip(estimator_names, colors)): - self.j = j - self.color = color - self.estimator_name = estimator_name - self.margin_function_fitted_list = self.load_fitted_margins_pickles(estimator_name) - - self.error_dict_all = [error_dict_between_margin_functions(reference=self.margin_function_sample, - fitted=margin_function_fitted) - for margin_function_fitted in self.margin_function_fitted_list] - - # Mean margin - self.mean_margin_function_fitted = CombinedMarginFunction.from_margin_functions( - self.margin_function_fitted_list) - - self.mean_error_dict = error_dict_between_margin_functions(self.margin_function_sample, - self.mean_margin_function_fitted) - self.visualize(fig, axes, show=False) - - title = self.main_title - for j, estimator_name in enumerate(estimator_names): - title += '\n y{}: {}'.format(j, estimator_name) - fig.suptitle(title) - plt.show() - - @property - def already_fitted_estimator_names(self): - return [d for d in os.listdir(self.directory_path) if op.isdir(op.join(self.directory_path, d))] - - @property - def main_title(self): - return self.full_dataset.slicer.summary(show=False) - - @staticmethod - def load_fig_and_axes(): - fig, axes = plt.subplots(GevParams.NB_SUMMARY_NAMES, 2) - fig.subplots_adjust(hspace=0.4, wspace=0.4) - return fig, axes - - def visualize(self, fig=None, axes=None, show=True): - if fig is None or axes is None: - fig, axes = self.load_fig_and_axes() - for i, gev_value_name in enumerate(GevParams.SUMMARY_NAMES): - self.margin_graph(axes[i, 0], gev_value_name) - self.score_graph(axes[i, 1], gev_value_name) - if show: - fig.suptitle(self.main_title) - plt.show() - - def margin_graph(self, ax, gev_value_name): - # Create bins of data, each with an associated color corresponding to its error - - data = self.mean_error_dict[gev_value_name].values - data_min, data_max = data.min(), data.max() - nb_bins = 1 - limits = np.linspace(data_min, data_max, num=nb_bins + 1) - limits[-1] += 0.01 - limits[0] -= 0.01 - # Binary color should - colors = cm.binary((limits - data_min / (data_max - data_min))) - - # Display train/test points - for split, marker in [(self.full_dataset.train_split, 'o'), (self.full_dataset.test_split, 'x')]: - for left_limit, right_limit, color in zip(limits[:-1], limits[1:], colors): - # Find for the split the index - data_ind = self.mean_error_dict[gev_value_name].loc[ - self.full_dataset.coordinates.coordinates_index(split)].values - data_filter = np.logical_and(left_limit <= data_ind, data_ind < right_limit) - - # todo: fix binary color problem - self.margin_function_sample.set_datapoint_display_parameters(split, datapoint_marker=marker, - filter=data_filter, - color='black', - datapoint_display=True) - self.margin_function_sample.visualize_single_param(gev_value_name, ax, show=False) - - # Display the individual fitted curve - for m in self.margin_function_fitted_list: - m.set_datapoint_display_parameters(linewidth=0.1, color=self.color) - m.visualize_single_param(gev_value_name, ax, show=False) - # Display the mean fitted curve - self.mean_margin_function_fitted.set_datapoint_display_parameters(color=self.color, linewidth=2) - self.mean_margin_function_fitted.visualize_single_param(gev_value_name, ax, show=False) - - def score_graph(self, ax, gev_value_name): - # todo: for the moment only the train/test are interresting (the spatio temporal isn"t working yet) - - sns.set_style('whitegrid') - s = self.mean_error_dict[gev_value_name] - for split in self.full_dataset.splits: - ind = self.full_dataset.coordinates_index(split) - data = s.loc[ind].values - display_kwargs = split_to_display_kwargs(split) - print(split, 'train' in split.name) - if 'train' in split.name: - display_kwargs.update({"label": 'y' + str(self.j)}) - markersize=3 - else: - markersize = 10 - ax.plot([data.mean()], [0], color=self.color, marker='o', markersize=markersize) - try: - sns.kdeplot(data, bw=1, ax=ax, color=self.color, **display_kwargs).set(xlim=0) - except LinAlgError as e: - if 'singular_matrix' in e.__repr__(): - continue - ax.legend() - - # X axis - ax.set_xlabel('Mean absolute error in %') - plt.setp(ax.get_xticklabels(), visible=True) - ax.xaxis.set_tick_params(labelbottom=True) - # Y axis - ax.set_ylabel(gev_value_name) - plt.setp(ax.get_yticklabels(), visible=True) - ax.yaxis.set_tick_params(labelbottom=True) - - # Input/Output - - @property - def name(self): - return str(type(self)).split('.')[-1].split('Simulation')[0] - - @property - def directory_path(self): - return op.join(get_full_path(relative_path=SIMULATION_RELATIVE_PATH), self.name, str(self.nb_fit)) - - @property - def dataset_path(self): - return op.join(self.directory_path, 'dataset') - - @property - def dataset_csv_path(self): - return self.dataset_path + '.csv' - - @property - def dataset_pickle_path(self): - return self.dataset_path + '.pkl' - - def fitted_margins_pickle_path(self, estimator_class): - d = op.join(self.directory_path, get_display_name_from_object_type(estimator_class)) - if not op.exists(d): - os.makedirs(d, exist_ok=True) - return op.join(d, 'fitted_margins.pkl') - - def dump(self): - pass - - def _dump(self, dataset: SimulatedDataset): - dataset.create_subsets(nb_subsets=self.nb_fit) - dataset.to_csv(self.dataset_csv_path) - # Pickle Dataset - if op.exists(self.dataset_pickle_path): - print('A dataset already exists, we will keep it intact, delete it manually if you want to change it') - # todo: print the parameters of the existing data, the parameters that were used to generate it - else: - with open(self.dataset_pickle_path, 'wb') as fp: - pickle.dump(dataset, fp) - - def load_full_dataset(self) -> SimulatedDataset: - # Class to handle pickle loading (and in case of module refactoring, I could change the module name here) - class RenamingUnpickler(pickle.Unpickler): - def find_class(self, module, name): - if module == 'mymodule': - module = 'mymodule2' - return super().find_class(module, name) - - with open(self.dataset_pickle_path, 'rb') as fp: - dataset = RenamingUnpickler(fp).load() - return dataset diff --git a/experiment/simulation/draft_main.py b/experiment/simulation/draft_main.py deleted file mode 100644 index c11e6422..00000000 --- a/experiment/simulation/draft_main.py +++ /dev/null @@ -1,47 +0,0 @@ -# -# -# -# if __name__ == '__main__': -# # Parameters -# scenarios = [] -# nb_obs_list = [] -# nb_fit = 1000 -# -# # Load the object that will handle the simulation -# simu = Simulations(nb_fit, scenarios, nb_obs_list) -# -# # Fit many estimators to this simulation -# estimator_types = [] -# for estimator_type in estimator_types: -# simu.fit(estimator_type) -# -# # Comparison of the diverse estimator -# -# # Compare all the estimator on a global graph (one graph per scenario) -# # On each graph the X axis should be the number of obs -# # the Y graph should the error -# simu.visualize_mean_test_error_graph(estimator_types, scenarios, nb_obs_list) -# # the other possible view, is to have one graph per number of observations -# # on the X axis should the name of the different estimator -# # on the y axis their error -# -# -# # Plot the same graph for the train/test error -# # For a single scenario, and a single obs (we give a plot detailing all the estimation steps that enabled to get -# # the result) -# simu.visualize_comparison_graph(estimator_types, scenario, nb_obs) -# -# # Analyse the result of a single estimator -# -# # Or all the result could be recorded in a matrix, with scenario as line, and nb_observaitons as columns -# # with the mean value (and the std in parenthesis) -# # (on the border on this matrix we should have the mean value) -# # for example, the first columns should be the mean of the other column for the same line -# simu.visualize_mean_test_error_matrix(estimator_type, scenarios, nb_obs_list) -# -# -# # -# simu.visualize -# -# -# diff --git a/experiment/simulation/lin_space2_simulation.py b/experiment/simulation/lin_space2_simulation.py deleted file mode 100644 index 5503c8de..00000000 --- a/experiment/simulation/lin_space2_simulation.py +++ /dev/null @@ -1,47 +0,0 @@ -from experiment.simulation.abstract_simulation import AbstractSimulation -from extreme_fit.estimator.full_estimator.full_estimator_for_simulation import FULL_ESTIMATORS_FOR_SIMULATION -from extreme_fit.estimator.margin_estimator.margin_estimator_for_simulation import \ - MARGIN_ESTIMATORS_FOR_SIMULATION -from extreme_fit.model.margin_model.linear_margin_model.linear_margin_model import ConstantMarginModel -from extreme_fit.model.max_stable_model.max_stable_models import Smith -from extreme_fit.distribution.gev.gev_params import GevParams -from spatio_temporal_dataset.coordinates.spatial_coordinates.coordinates_1D import LinSpaceSpatialCoordinates -from spatio_temporal_dataset.dataset.simulation_dataset import FullSimulatedDataset - - -class LinSpace5Simulation(AbstractSimulation): - FITTED_ESTIMATORS = [] - - def __init__(self, nb_fit=1): - super().__init__(nb_fit) - # Simulation parameters - # Number of observations - self.nb_obs = 60 - # 1 dimensional spatial coordinates (separated in train split and test split) - self.coordinates = LinSpaceSpatialCoordinates.from_nb_points(nb_points=100, - train_split_ratio=0.75) - # MarginModel Constant for simulation - params_sample = { - (GevParams.LOC, 0): 1.0, - (GevParams.SHAPE, 0): 1.0, - (GevParams.SCALE, 0): 1.0, - } - self.margin_model = ConstantMarginModel(coordinates=self.coordinates, - params_sample=params_sample) - # MaxStable Model for simulation - self.max_stable_model = Smith() - - def dump(self): - dataset = FullSimulatedDataset.from_double_sampling(nb_obs=self.nb_obs, margin_model=self.margin_model, - coordinates=self.coordinates, - max_stable_model=self.max_stable_model) - self._dump(dataset=dataset) - - -if __name__ == '__main__': - simu = LinSpace5Simulation(nb_fit=10) - simu.dump() - estimators_class = MARGIN_ESTIMATORS_FOR_SIMULATION + FULL_ESTIMATORS_FOR_SIMULATION - # for estimator_class in estimators_class[:]: - # simu.fit(estimator_class, show=False) - simu.visualize_comparison_graph() diff --git a/experiment/simulation/lin_space_simulation.py b/experiment/simulation/lin_space_simulation.py deleted file mode 100644 index 290701a2..00000000 --- a/experiment/simulation/lin_space_simulation.py +++ /dev/null @@ -1,38 +0,0 @@ -from experiment.simulation.abstract_simulation import AbstractSimulation -from extreme_fit.model.margin_model.linear_margin_model.linear_margin_model import ConstantMarginModel -from extreme_fit.model.max_stable_model.max_stable_models import Smith -from extreme_fit.distribution.gev.gev_params import GevParams -from spatio_temporal_dataset.coordinates.spatial_coordinates.coordinates_1D import LinSpaceSpatialCoordinates -from spatio_temporal_dataset.dataset.simulation_dataset import FullSimulatedDataset - - -class LinSpaceSimulation(AbstractSimulation): - FITTED_ESTIMATORS = [] - - def __init__(self, nb_fit=1): - super().__init__(nb_fit) - # Simulation parameters - self.nb_obs = 60 - self.coordinates = LinSpaceSpatialCoordinates.from_nb_points(nb_points=21, train_split_ratio=0.75) - # MarginModel Linear with respect to the shape (from 0.01 to 0.02) - params_sample = { - (GevParams.LOC, 0): 10, - (GevParams.SHAPE, 0): 1.0, - (GevParams.SCALE, 0): 1.0, - } - self.margin_model = ConstantMarginModel(coordinates=self.coordinates, params_sample=params_sample) - self.max_stable_model = Smith() - - def dump(self): - dataset = FullSimulatedDataset.from_double_sampling(nb_obs=self.nb_obs, margin_model=self.margin_model, - coordinates=self.coordinates, - max_stable_model=self.max_stable_model) - self._dump(dataset=dataset) - - -if __name__ == '__main__': - simu = LinSpaceSimulation(nb_fit=3) - simu.dump() - # for estimator_class in MARGIN_ESTIMATORS_FOR_SIMULATION + FULL_ESTIMATORS_FOR_SIMULATION: - # simu.fit(estimator_class, show=False) - simu.visualize_comparison_graph() diff --git a/experiment/trend_analysis/univariate_test/abstract_univariate_test.py b/experiment/trend_analysis/univariate_test/abstract_univariate_test.py index cf3f9b5c..f96d5907 100644 --- a/experiment/trend_analysis/univariate_test/abstract_univariate_test.py +++ b/experiment/trend_analysis/univariate_test/abstract_univariate_test.py @@ -48,24 +48,6 @@ class AbstractUnivariateTest(object): def three_main_trend_types(cls): return [cls.SIGNIFICATIVE_NEGATIVE_TREND, cls.NON_SIGNIFICATIVE_TREND, cls.SIGNIFICATIVE_POSITIVE_TREND] - @classmethod - def rgb_code_of_trend_colors(cls): - for name in ['lightgreen', 'lightcoral', 'darkgreen', 'darkred']: - print(name, colors.to_rgba(name)[:-1]) - - @classmethod - def display_trend_type_to_style(cls): - d = OrderedDict() - d[cls.POSITIVE_TREND] = 'lightgreen-' - d[cls.NEGATIVE_TREND] = 'lightcoral-' - d[cls.ALL_TREND] = 'k-' - d[cls.NON_SIGNIFICATIVE_TREND] = 'b-' - # d[cls.SIGNIFICATIVE_ALL_TREND] = 'k-' - d[cls.SIGNIFICATIVE_POSITIVE_TREND] = 'darkgreen-' - d[cls.SIGNIFICATIVE_NEGATIVE_TREND] = 'darkred-' - # d[cls.NO_TREND] = 'k--' - return d - @classmethod def get_display_trend_type(cls, real_trend_type): @@ -74,35 +56,6 @@ class AbstractUnivariateTest(object): else: return cls.NON_SIGNIFICATIVE_TREND - @classmethod - def get_real_trend_types(cls, display_trend_type): - if display_trend_type is cls.ALL_TREND: - return cls.real_trend_types() - elif display_trend_type is cls.SIGNIFICATIVE_ALL_TREND: - return [cls.SIGNIFICATIVE_POSITIVE_TREND, cls.SIGNIFICATIVE_NEGATIVE_TREND] - if display_trend_type is cls.POSITIVE_TREND: - return [cls.POSITIVE_TREND, cls.SIGNIFICATIVE_POSITIVE_TREND] - elif display_trend_type is cls.NEGATIVE_TREND: - return [cls.NEGATIVE_TREND, cls.SIGNIFICATIVE_NEGATIVE_TREND] - elif display_trend_type is cls.NON_SIGNIFICATIVE_TREND: - return [cls.POSITIVE_TREND, cls.NEGATIVE_TREND, cls.NO_TREND] - else: - return [display_trend_type] - - @classmethod - def get_cmap_from_trend_type(cls, trend_type): - if 'positive' in trend_type: - return plt.cm.Greens - elif 'negative' in trend_type: - return plt.cm.Reds - elif 'non' in trend_type: - return plt.cm.Blues - else: - return plt.cm.binary - - @property - def n(self): - return len(self.years) @property def time_derivative_of_return_level(self): @@ -130,20 +83,6 @@ class AbstractUnivariateTest(object): raise NotImplementedError -class ExampleRandomTrendTest(AbstractUnivariateTest): - - @property - def test_sign(self) -> int: - return random.randint(0, 2) - 1 - - @property - def is_significant(self) -> bool: - return random.randint(1, 10) == 10 - -class WarningScoreValue(Warning): - pass -if __name__ == '__main__': - AbstractUnivariateTest.rgb_code_of_trend_colors() \ No newline at end of file diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py index 45470bae..c518996a 100644 --- a/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py +++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py @@ -64,13 +64,6 @@ class AbstractGevTrendTest(AbstractUnivariateTest): def real_trend_types(cls): return super().real_trend_types() + [cls.RRunTimeError_TREND] - @classmethod - def get_real_trend_types(cls, display_trend_type): - real_trend_types = super().get_real_trend_types(display_trend_type) - if display_trend_type is cls.NON_SIGNIFICATIVE_TREND: - real_trend_types.append(cls.RRunTimeError_TREND) - return real_trend_types - @property def test_trend_type(self) -> str: if self.crashed: diff --git a/papers/exceeding_snow_loads/data/__init__.py b/papers/exceeding_snow_loads/data/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/__init__.py b/papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/papers/exceeding_snow_loads/presentation/__init__.py b/papers/exceeding_snow_loads/presentation/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/papers/exceeding_snow_loads/result_trends_and_return_levels/__init__.py b/papers/exceeding_snow_loads/result_trends_and_return_levels/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/papers/projection_snow_load/__init__.py b/papers/projection_snow_load/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/experiment/meteo_france_data/stations_data/visualization/__init__.py b/projects/__init__.py similarity index 100% rename from experiment/meteo_france_data/stations_data/visualization/__init__.py rename to projects/__init__.py diff --git a/experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/__init__.py b/projects/contrasting_snow_loads/__init__.py similarity index 100% rename from experiment/meteo_france_data/stations_data/visualization/comparisons_visualization/__init__.py rename to projects/contrasting_snow_loads/__init__.py diff --git a/papers/contrasting_snow_loads/main_result.py b/projects/contrasting_snow_loads/main_result.py similarity index 82% rename from papers/contrasting_snow_loads/main_result.py rename to projects/contrasting_snow_loads/main_result.py index 9c9719dd..61a9a827 100644 --- a/papers/contrasting_snow_loads/main_result.py +++ b/projects/contrasting_snow_loads/main_result.py @@ -15,16 +15,16 @@ from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSno CrocusSnowLoad5Days, CrocusSnowLoad7Days, CrocusSnowLoad1Day from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \ ConfidenceIntervalMethodFromExtremes -from papers.contrasting_snow_loads.plot_contrasting_trend_curves import plot_contrasting_trend_curves -from papers.exceeding_snow_loads.paper_main_utils import load_altitude_to_visualizer -from papers.exceeding_snow_loads.paper_utils import paper_study_classes, paper_altitudes -from papers.exceeding_snow_loads.result_trends_and_return_levels.main_result_trends_and_return_levels import \ +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 \ compute_minimized_aic -from papers.exceeding_snow_loads.result_trends_and_return_levels.plot_selection_curves import plot_selection_curves -from papers.exceeding_snow_loads.result_trends_and_return_levels.plot_trend_curves import plot_trend_curves, \ +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 papers.exceeding_snow_loads.result_trends_and_return_levels.plot_uncertainty_curves import plot_uncertainty_massifs -from papers.exceeding_snow_loads.result_trends_and_return_levels.plot_uncertainty_histogram import \ +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/papers/contrasting_snow_loads/main_spatial_relative_change_in_maxima_at_fixed_altitude.py b/projects/contrasting_snow_loads/main_spatial_relative_change_in_maxima_at_fixed_altitude.py similarity index 100% rename from papers/contrasting_snow_loads/main_spatial_relative_change_in_maxima_at_fixed_altitude.py rename to projects/contrasting_snow_loads/main_spatial_relative_change_in_maxima_at_fixed_altitude.py diff --git a/papers/contrasting_snow_loads/plot_contrasting_trend_curves.py b/projects/contrasting_snow_loads/plot_contrasting_trend_curves.py similarity index 95% rename from papers/contrasting_snow_loads/plot_contrasting_trend_curves.py rename to projects/contrasting_snow_loads/plot_contrasting_trend_curves.py index 3a02570e..09790199 100644 --- a/papers/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 papers.exceeding_snow_loads.paper_utils import dpi_paper1_figure -from papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from projects.exceeding_snow_loads.paper_utils import dpi_paper1_figure +from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends diff --git a/experiment/robustness_plot/__init__.py b/projects/exceeding_snow_loads/__init__.py similarity index 100% rename from experiment/robustness_plot/__init__.py rename to projects/exceeding_snow_loads/__init__.py diff --git a/experiment/robustness_plot/estimation_robustness/__init__.py b/projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/__init__.py similarity index 100% rename from experiment/robustness_plot/estimation_robustness/__init__.py rename to projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/__init__.py diff --git a/papers/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/gelman_convergence_test.py b/projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/gelman_convergence_test.py similarity index 100% rename from papers/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/gelman_convergence_test.py rename to projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/gelman_convergence_test.py diff --git a/papers/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_bayesian_mcmc.py b/projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_bayesian_mcmc.py similarity index 100% rename from papers/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_bayesian_mcmc.py rename to projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_bayesian_mcmc.py diff --git a/papers/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_gelman_convergence_test.py b/projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_gelman_convergence_test.py similarity index 100% rename from papers/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_gelman_convergence_test.py rename to projects/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/main_gelman_convergence_test.py diff --git a/experiment/robustness_plot/estimation_robustness/spatial_robustness/__init__.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/__init__.py similarity index 100% rename from experiment/robustness_plot/estimation_robustness/spatial_robustness/__init__.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/__init__.py diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/mixed_distribution/mixed_distribution_impact.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/mixed_distribution/mixed_distribution_impact.py similarity index 98% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/mixed_distribution/mixed_distribution_impact.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/mixed_distribution/mixed_distribution_impact.py index e713a827..3f4927b6 100644 --- a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/mixed_distribution/mixed_distribution_impact.py +++ b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/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 papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends +from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends def mix_dsitrbution_impact(): diff --git a/experiment/robustness_plot/estimation_robustness/unidimensional_robustness/__init__.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/__init__.py similarity index 100% rename from experiment/robustness_plot/estimation_robustness/unidimensional_robustness/__init__.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/__init__.py diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py similarity index 97% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py index 5b66afc5..de2dbae6 100644 --- a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/main_qqplot_for_big_shapes.py +++ b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/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 papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/plot_qqplot.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/plot_qqplot.py similarity index 97% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/plot_qqplot.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/plot_qqplot.py index f3de8750..8dc0206f 100644 --- a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/plot_qqplot.py +++ b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/plot_qqplot.py @@ -11,8 +11,8 @@ from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear TemporalMarginFitMethod from extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \ AbstractExtractEurocodeReturnLevel -from papers.exceeding_snow_loads.data.main_example_swe_total_plot import tuples_for_examples_paper1 -from papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +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 \ StudyVisualizerForNonStationaryTrends from extreme_fit.distribution.gev.gev_params import GevParams diff --git a/papers/__init__.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/__init__.py similarity index 100% rename from papers/__init__.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/__init__.py diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/shape/main_shape_repartition.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/main_shape_repartition.py similarity index 87% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/shape/main_shape_repartition.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/main_shape_repartition.py index 3ba5be62..90c2cb7c 100644 --- a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/shape/main_shape_repartition.py +++ b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/main_shape_repartition.py @@ -1,8 +1,8 @@ from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal -from papers.exceeding_snow_loads.check_mle_convergence_for_trends.shape.study_visualizer_for_shape_repartition import \ +from projects.exceeding_snow_loads.check_mle_convergence_for_trends.shape.study_visualizer_for_shape_repartition import \ StudyVisualizerForShape -from papers.exceeding_snow_loads.paper_main_utils import load_altitude_to_visualizer -from papers.exceeding_snow_loads.paper_utils import paper_altitudes +from projects.exceeding_snow_loads.paper_main_utils import load_altitude_to_visualizer +from projects.exceeding_snow_loads.paper_utils import paper_altitudes def main_shape_repartition(altitudes, massif_names=None, diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/shape/study_visualizer_for_shape_repartition.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/study_visualizer_for_shape_repartition.py similarity index 92% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/shape/study_visualizer_for_shape_repartition.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/study_visualizer_for_shape_repartition.py index 241c8508..c4f0ace3 100644 --- a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/shape/study_visualizer_for_shape_repartition.py +++ b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/shape/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 papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/uncertainty_interval_size.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/uncertainty_interval_size.py similarity index 84% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/uncertainty_interval_size.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/uncertainty_interval_size.py index 13767aa0..5d73a753 100644 --- a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/uncertainty_interval_size.py +++ b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/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 papers.exceeding_snow_loads.paper_utils import ModelSubsetForUncertainty -from papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends +from projects.exceeding_snow_loads.paper_utils import ModelSubsetForUncertainty +from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends def uncertainty_interval_size(altitude_to_visualizer: Dict[int, StudyVisualizerForNonStationaryTrends]): diff --git a/papers/contrasting_snow_loads/__init__.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/__init__.py similarity index 100% rename from papers/contrasting_snow_loads/__init__.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/__init__.py diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/main_fit_without_maximum.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/main_fit_without_maximum.py similarity index 86% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/main_fit_without_maximum.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/main_fit_without_maximum.py index 834198ee..c8e13780 100644 --- a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/main_fit_without_maximum.py +++ b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/main_fit_without_maximum.py @@ -3,7 +3,7 @@ from typing import Dict 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 papers.exceeding_snow_loads.check_mle_convergence_for_trends.without_maximum.study_visualizer_for_fit_witout_maximum import \ +from projects.exceeding_snow_loads.check_mle_convergence_for_trends.without_maximum.study_visualizer_for_fit_witout_maximum import \ StudyVisualizerForFitWithoutMaximum diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/study_visualizer_for_fit_witout_maximum.py b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/study_visualizer_for_fit_witout_maximum.py similarity index 95% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/study_visualizer_for_fit_witout_maximum.py rename to projects/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/study_visualizer_for_fit_witout_maximum.py index e1f62b2d..111d50eb 100644 --- a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/study_visualizer_for_fit_witout_maximum.py +++ b/projects/exceeding_snow_loads/check_mle_convergence_for_trends/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 papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends diff --git a/papers/exceeding_snow_loads/__init__.py b/projects/exceeding_snow_loads/data/__init__.py similarity index 100% rename from papers/exceeding_snow_loads/__init__.py rename to projects/exceeding_snow_loads/data/__init__.py diff --git a/papers/exceeding_snow_loads/data/main_eurocode_plot.py b/projects/exceeding_snow_loads/data/main_eurocode_plot.py similarity index 100% rename from papers/exceeding_snow_loads/data/main_eurocode_plot.py rename to projects/exceeding_snow_loads/data/main_eurocode_plot.py diff --git a/papers/exceeding_snow_loads/data/main_example_swe_total_plot.py b/projects/exceeding_snow_loads/data/main_example_swe_total_plot.py similarity index 97% rename from papers/exceeding_snow_loads/data/main_example_swe_total_plot.py rename to projects/exceeding_snow_loads/data/main_example_swe_total_plot.py index efdd80b0..94f8aee6 100644 --- a/papers/exceeding_snow_loads/data/main_example_swe_total_plot.py +++ b/projects/exceeding_snow_loads/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 papers.exceeding_snow_loads.paper_utils import dpi_paper1_figure +from projects.exceeding_snow_loads.paper_utils import dpi_paper1_figure def tuples_for_examples_paper1(examples_for_the_paper=True): diff --git a/papers/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/__init__.py b/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/__init__.py similarity index 100% rename from papers/exceeding_snow_loads/check_mcmc_convergence_for_return_levels/__init__.py rename to projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/__init__.py diff --git a/papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/crocus_study_comparison_with_eurocode.py b/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/crocus_study_comparison_with_eurocode.py similarity index 100% rename from papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/crocus_study_comparison_with_eurocode.py rename to projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/crocus_study_comparison_with_eurocode.py diff --git a/papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_examples.py b/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_examples.py similarity index 94% rename from papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_examples.py rename to projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_examples.py index 0017f555..0abf3517 100644 --- a/papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_examples.py +++ b/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/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 papers.exceeding_snow_loads.discussion_data_comparison_with_eurocode.crocus_study_comparison_with_eurocode import \ +from projects.exceeding_snow_loads.discussion_data_comparison_with_eurocode.crocus_study_comparison_with_eurocode import \ CrocusDifferenceSnowLoad, \ CrocusSnowDensityAtMaxofSwe, CrocusSnowDepthDifference -from papers.exceeding_snow_loads.paper_utils import dpi_paper1_figure +from projects.exceeding_snow_loads.paper_utils import dpi_paper1_figure def max_graph_annual_maxima_comparison(): diff --git a/papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_global.py b/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_global.py similarity index 100% rename from papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_global.py rename to projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_comparison_with_eurocode_global.py diff --git a/papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py b/projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py similarity index 100% rename from papers/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py rename to projects/exceeding_snow_loads/discussion_data_comparison_with_eurocode/main_spatio_temporal_density_wrt_altitude.py diff --git a/papers/exceeding_snow_loads/paper_main_utils.py b/projects/exceeding_snow_loads/paper_main_utils.py similarity index 93% rename from papers/exceeding_snow_loads/paper_main_utils.py rename to projects/exceeding_snow_loads/paper_main_utils.py index fabaea8a..3bdc0c39 100644 --- a/papers/exceeding_snow_loads/paper_main_utils.py +++ b/projects/exceeding_snow_loads/paper_main_utils.py @@ -2,7 +2,7 @@ from collections import OrderedDict from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \ TemporalMarginFitMethod -from papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends diff --git a/papers/exceeding_snow_loads/paper_utils.py b/projects/exceeding_snow_loads/paper_utils.py similarity index 100% rename from papers/exceeding_snow_loads/paper_utils.py rename to projects/exceeding_snow_loads/paper_utils.py diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/__init__.py b/projects/exceeding_snow_loads/presentation/__init__.py similarity index 100% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/__init__.py rename to projects/exceeding_snow_loads/presentation/__init__.py diff --git a/papers/exceeding_snow_loads/presentation/accumulation_in_winter.py b/projects/exceeding_snow_loads/presentation/accumulation_in_winter.py similarity index 100% rename from papers/exceeding_snow_loads/presentation/accumulation_in_winter.py rename to projects/exceeding_snow_loads/presentation/accumulation_in_winter.py diff --git a/papers/exceeding_snow_loads/presentation/statistical_model.py b/projects/exceeding_snow_loads/presentation/statistical_model.py similarity index 100% rename from papers/exceeding_snow_loads/presentation/statistical_model.py rename to projects/exceeding_snow_loads/presentation/statistical_model.py diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/__init__.py b/projects/exceeding_snow_loads/result_trends_and_return_levels/__init__.py similarity index 100% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/qqplot/__init__.py rename to projects/exceeding_snow_loads/result_trends_and_return_levels/__init__.py diff --git a/papers/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py b/projects/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py similarity index 86% rename from papers/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py rename to projects/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py index 8769a25b..c1ca9ea7 100644 --- a/papers/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py +++ b/projects/exceeding_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py @@ -4,18 +4,18 @@ import matplotlib as mpl from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal, CrocusSnowLoad3Days, \ CrocusSnowLoad5Days, CrocusSnowLoad7Days -from papers.exceeding_snow_loads.check_mle_convergence_for_trends.uncertainty_interval_size import \ +from projects.exceeding_snow_loads.check_mle_convergence_for_trends.uncertainty_interval_size import \ uncertainty_interval_size -from papers.exceeding_snow_loads.paper_main_utils import load_altitude_to_visualizer -from papers.exceeding_snow_loads.paper_utils import paper_study_classes, paper_altitudes -from papers.exceeding_snow_loads.result_trends_and_return_levels.plot_diagnosis_risk import plot_diagnosis_risk -from papers.exceeding_snow_loads.result_trends_and_return_levels.plot_selection_curves import plot_selection_curves -from papers.exceeding_snow_loads.result_trends_and_return_levels.plot_trend_curves import plot_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.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 papers.exceeding_snow_loads.result_trends_and_return_levels.plot_uncertainty_curves import plot_uncertainty_massifs -from papers.exceeding_snow_loads.result_trends_and_return_levels.plot_uncertainty_histogram import \ +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 papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \ ConfidenceIntervalMethodFromExtremes diff --git a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_diagnosis_risk.py b/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_diagnosis_risk.py similarity index 93% rename from papers/exceeding_snow_loads/result_trends_and_return_levels/plot_diagnosis_risk.py rename to projects/exceeding_snow_loads/result_trends_and_return_levels/plot_diagnosis_risk.py index 883ad64b..ade84a5f 100644 --- a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_diagnosis_risk.py +++ b/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_diagnosis_risk.py @@ -1,6 +1,6 @@ import matplotlib.pyplot as plt -from papers.exceeding_snow_loads.paper_utils import ModelSubsetForUncertainty, dpi_paper1_figure +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 diff --git a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py b/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py similarity index 77% rename from papers/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py rename to projects/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py index 698222a9..0a47f45e 100644 --- a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py +++ b/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_selection_curves.py @@ -4,8 +4,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 papers.exceeding_snow_loads.paper_utils import dpi_paper1_figure -from papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends +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 def permute(l, permutation): @@ -34,7 +34,7 @@ def plot_selection_curves(altitude_to_visualizer: Dict[int, StudyVisualizerForNo print(l) print(select_list) print(selected_and_signifcative_list) - # [(5, < class 'experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters.GevLocationAgainstGumbel'> ), (6, < class 'experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters.GevScaleAgainstGumbel' > ), (2, < class 'experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter.GumbelScaleTrendTest' > ), (1, < class 'experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter.GumbelLocationTrendTest' > ), (7, < class 'experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_three_parameters.gev_trend_test_three_parameters.GevLocationAndScaleTrendTestAgainstGumbel' > ), (3, < class 'experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gumbel_test_two_parameters.GumbelLocationAndScaleTrendTest' > ), (4, < class 'experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter.GevStationaryVersusGumbel' > ), (0, < class 'experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter.GumbelVersusGumbel' > )] + # [(5, < class 'data.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters.GevLocationAgainstGumbel'> ), (6, < class 'data.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters.GevScaleAgainstGumbel' > ), (2, < class 'data.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter.GumbelScaleTrendTest' > ), (1, < class 'data.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter.GumbelLocationTrendTest' > ), (7, < class 'data.trend_analysis.univariate_test.extreme_trend_test.trend_test_three_parameters.gev_trend_test_three_parameters.GevLocationAndScaleTrendTestAgainstGumbel' > ), (3, < class 'data.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gumbel_test_two_parameters.GumbelLocationAndScaleTrendTest' > ), (4, < class 'data.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter.GevStationaryVersusGumbel' > ), (0, < class 'data.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter.GumbelVersusGumbel' > )] # [32.64462809917355, 24.380165289256198, 12.396694214876034, 9.50413223140496, 9.090909090909092, 5.785123966942149, 3.71900826446281, 2.479338842975207] # [0, 13.223140495867769, 7.851239669421488, 8.264462809917354, 4.958677685950414, 2.479338842975207, 0.8264462809917356, 2.0661157024793386] diff --git a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_trend_curves.py b/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_trend_curves.py similarity index 96% rename from papers/exceeding_snow_loads/result_trends_and_return_levels/plot_trend_curves.py rename to projects/exceeding_snow_loads/result_trends_and_return_levels/plot_trend_curves.py index 51e554a7..e2a14d70 100644 --- a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_trend_curves.py +++ b/projects/exceeding_snow_loads/result_trends_and_return_levels/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 papers.exceeding_snow_loads.paper_utils import dpi_paper1_figure -from papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +from projects.exceeding_snow_loads.paper_utils import dpi_paper1_figure +from projects.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ StudyVisualizerForNonStationaryTrends diff --git a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py b/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py similarity index 98% rename from papers/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py rename to projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py index e68a8938..8f4d4caa 100644 --- a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py +++ b/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py @@ -6,8 +6,8 @@ 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 papers.exceeding_snow_loads.paper_utils import dpi_paper1_figure, ModelSubsetForUncertainty -from papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +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 extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \ AbstractExtractEurocodeReturnLevel diff --git a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_histogram.py b/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_histogram.py similarity index 95% rename from papers/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_histogram.py rename to projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_histogram.py index f81a1c81..15eb60fc 100644 --- a/papers/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_histogram.py +++ b/projects/exceeding_snow_loads/result_trends_and_return_levels/plot_uncertainty_histogram.py @@ -3,8 +3,8 @@ import matplotlib.pyplot as plt import numpy as np from experiment.eurocode_data.utils import EUROCODE_RETURN_LEVEL_STR, EUROCODE_ALTITUDES -from papers.exceeding_snow_loads.paper_utils import dpi_paper1_figure, ModelSubsetForUncertainty -from papers.exceeding_snow_loads.study_visualizer_for_non_stationary_trends import \ +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 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/papers/exceeding_snow_loads/study_visualizer_for_non_stationary_trends.py b/projects/exceeding_snow_loads/study_visualizer_for_non_stationary_trends.py similarity index 99% rename from papers/exceeding_snow_loads/study_visualizer_for_non_stationary_trends.py rename to projects/exceeding_snow_loads/study_visualizer_for_non_stationary_trends.py index 0bd3c014..63fa23fd 100644 --- a/papers/exceeding_snow_loads/study_visualizer_for_non_stationary_trends.py +++ b/projects/exceeding_snow_loads/study_visualizer_for_non_stationary_trends.py @@ -15,9 +15,9 @@ 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 papers.exceeding_snow_loads.check_mcmc_convergence_for_return_levels.gelman_convergence_test import \ +from projects.exceeding_snow_loads.check_mcmc_convergence_for_return_levels.gelman_convergence_test import \ compute_gelman_convergence_value -from papers.exceeding_snow_loads.paper_utils import ModelSubsetForUncertainty, NON_STATIONARY_TREND_TEST_PAPER +from projects.exceeding_snow_loads.paper_utils import ModelSubsetForUncertainty, NON_STATIONARY_TREND_TEST_PAPER from experiment.trend_analysis.abstract_score import MeanScore from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter import \ diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/shape/__init__.py b/projects/projection_snow_load/__init__.py similarity index 100% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/shape/__init__.py rename to projects/projection_snow_load/__init__.py diff --git a/papers/projection_snow_load/main_difference_between_reanalysis_and_simulations.py b/projects/projection_snow_load/main_difference_between_reanalysis_and_simulations.py similarity index 100% rename from papers/projection_snow_load/main_difference_between_reanalysis_and_simulations.py rename to projects/projection_snow_load/main_difference_between_reanalysis_and_simulations.py diff --git a/papers/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/__init__.py b/projects/thesis_report/__init__.py similarity index 100% rename from papers/exceeding_snow_loads/check_mle_convergence_for_trends/without_maximum/__init__.py rename to projects/thesis_report/__init__.py diff --git a/thesis_report/gev_plot.py b/projects/thesis_report/gev_plot.py similarity index 100% rename from thesis_report/gev_plot.py rename to projects/thesis_report/gev_plot.py diff --git a/thesis_report/simulation_for_quantile_gap.py b/projects/thesis_report/simulation_for_quantile_gap.py similarity index 100% rename from thesis_report/simulation_for_quantile_gap.py rename to projects/thesis_report/simulation_for_quantile_gap.py diff --git a/test/test_experiment/test_trend_analysis.py b/test/test_experiment/test_trend_analysis.py index 81fba150..4b494bd0 100644 --- a/test/test_experiment/test_trend_analysis.py +++ b/test/test_experiment/test_trend_analysis.py @@ -1,6 +1,6 @@ import unittest -from papers.exceeding_snow_loads.paper_utils import NON_STATIONARY_TREND_TEST_PAPER +from projects.exceeding_snow_loads.paper_utils import NON_STATIONARY_TREND_TEST_PAPER class TestTrendAnalysis(unittest.TestCase): -- GitLab