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