From 789b40af5aee2bc15a13156d3df2b70568b3c67d Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Tue, 17 Dec 2019 11:01:04 +0100
Subject: [PATCH] [PAPER 1] add gumbel model. add cmap for shape parameter
 visualization. refactor trend_test folder

---
 .../plot/create_shifted_cmap.py               |   4 +-
 .../scm_models_data/abstract_study.py         |   9 +-
 .../altitude_hypercube_visualizer.py          |   6 +-
 .../main_fast_hypercube_one_altitudes.py      |  11 +-
 .../main_fast_hypercube_several_altitudes.py  |   2 +-
 .../main_files/main_full_hypercube.py         |   2 +-
 .../main_studies_visualizer.py                |   2 +-
 .../main_study_visualizer.py                  |   3 +-
 .../stations_data/main_station_comparison.py  |   2 +-
 ...main3_non_stationary_strength_evolution.py |   4 +-
 ..._spatial_altitude_starting_years_impact.py |   4 +-
 ...n4_common_spatial_starting_years_impact.py |   4 +-
 .../main4_individual_starting_years_impact.py |   4 +-
 .../poster_EVAN2019/main_poster_EVAN2019.py   |   7 +-
 .../shape_prior_check/some_experiment_EVAN.py |  12 +-
 experiment/paper1_old/utils.py                |   2 +-
 .../main_shape_repartition.py                 |   9 +-
 .../study_visualizer_for_shape_repartition.py |  26 +++-
 .../main_result_trends_and_return_levels.py   |  17 +-
 .../plot_uncertainty_curves.py                |   3 +-
 ...dy_visualizer_for_non_stationary_trends.py |  41 +++--
 .../univariate_test/abstract_trend_test.py    |  40 -----
 .../extreme_trend_test/__init__.py            |   0
 .../abstract_gev_trend_test.py                |  11 ++
 .../trend_test_one_parameter/__init__.py      |   0
 ...bstract_comparison_non_stationary_model.py |  19 +--
 .../gev_trend_test_one_parameter.py           |  11 +-
 .../gumbel_trend_test_one_parameter.py        |  92 +++++++++++
 .../trend_test_three_parameters/__init__.py   |   0
 .../gumbel_trend_test_three_parameters.py     |  48 ++++++
 .../trend_test_two_parameters/__init__.py     |   0
 .../gev_trend_test_two_parameters.py          |   7 +-
 .../gumbel_test_two_parameters.py             |  32 ++++
 .../univariate_test/mann_kendall_test.py      | 146 ------------------
 .../univariate_test_results.py                |   4 +-
 .../temporal_linear_margin_models.py          |  28 ++--
 .../model/result_from_model_fit/utils.py      |   2 +-
 test/test_experiment/test_SCM_study.py        |   3 +-
 test/test_experiment/test_hypercube.py        |   5 +-
 .../test_gev_temporal_extremes_bayesian.py    |   2 +-
 .../test_gev_temporal_extremes_gumbel.py      |   5 +-
 .../test_gev_temporal_extremes_mle.py         |   2 +-
 42 files changed, 327 insertions(+), 304 deletions(-)
 delete mode 100644 experiment/trend_analysis/univariate_test/abstract_trend_test.py
 create mode 100644 experiment/trend_analysis/univariate_test/extreme_trend_test/__init__.py
 rename experiment/trend_analysis/univariate_test/{ => extreme_trend_test}/abstract_gev_trend_test.py (97%)
 create mode 100644 experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/__init__.py
 rename experiment/trend_analysis/univariate_test/{ => extreme_trend_test/trend_test_one_parameter}/abstract_comparison_non_stationary_model.py (69%)
 rename experiment/trend_analysis/univariate_test/{ => extreme_trend_test/trend_test_one_parameter}/gev_trend_test_one_parameter.py (87%)
 create mode 100644 experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gumbel_trend_test_one_parameter.py
 create mode 100644 experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/__init__.py
 create mode 100644 experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/gumbel_trend_test_three_parameters.py
 create mode 100644 experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/__init__.py
 rename experiment/trend_analysis/univariate_test/{ => extreme_trend_test/trend_test_two_parameters}/gev_trend_test_two_parameters.py (90%)
 create mode 100644 experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gumbel_test_two_parameters.py
 delete mode 100644 experiment/trend_analysis/univariate_test/mann_kendall_test.py

diff --git a/experiment/meteo_france_data/plot/create_shifted_cmap.py b/experiment/meteo_france_data/plot/create_shifted_cmap.py
index dd49798c..7f6fc970 100644
--- a/experiment/meteo_france_data/plot/create_shifted_cmap.py
+++ b/experiment/meteo_france_data/plot/create_shifted_cmap.py
@@ -9,7 +9,7 @@ from experiment.meteo_france_data.plot.shifted_color_map import shiftedColorMap
 from extreme_fit.distribution.abstract_params import AbstractParams
 
 
-def get_shifted_map(vmin, vmax):
+def get_shifted_map(vmin, vmax, cmap=plt.cm.bwr):
     # Load the shifted cmap to center on a middle point
     if vmin < 0 < vmax:
         midpoint = 1 - vmax / (vmax + abs(vmin))
@@ -19,7 +19,7 @@ def get_shifted_map(vmin, vmax):
         midpoint = 0.0
     else:
         raise ValueError('Unexpected values: vmin={}, vmax={}'.format(vmin, vmax))
-    cmap = [plt.cm.coolwarm, plt.cm.bwr, plt.cm.seismic][1]
+    # cmap = [plt.cm.coolwarm, plt.cm.bwr, plt.cm.seismic][1]
     shifted_cmap = shiftedColorMap(cmap, midpoint=midpoint, name='shifted')
     return shifted_cmap
 
diff --git a/experiment/meteo_france_data/scm_models_data/abstract_study.py b/experiment/meteo_france_data/scm_models_data/abstract_study.py
index e773ac0f..d511884e 100644
--- a/experiment/meteo_france_data/scm_models_data/abstract_study.py
+++ b/experiment/meteo_france_data/scm_models_data/abstract_study.py
@@ -310,6 +310,7 @@ class AbstractStudy(object):
                         massif_name_to_hatch_boolean_list=None,
                         norm=None,
                         massif_name_to_marker_style=None,
+                        marker_style_to_label_name=None,
                         ticks_values_and_labels=None,
                         ):
         if ax is None:
@@ -402,7 +403,7 @@ class AbstractStudy(object):
 
         # Add legend for the marker
         if massif_name_to_marker_style is not None:
-            legend_elements = cls.get_legend_for_model_symbol(markersize=8)
+            legend_elements = cls.get_legend_for_model_symbol(marker_style_to_label_name, markersize=8)
             ax.legend(handles=legend_elements, bbox_to_anchor=(0.01, 0.03), loc='lower left')
             ax.annotate("Filled symbol = significant trend ", xy=(0.05, 0.015), xycoords='axes fraction', fontsize=7)
 
@@ -412,13 +413,11 @@ class AbstractStudy(object):
         return ax
 
     @classmethod
-    def get_legend_for_model_symbol(cls, markersize):
-        labels = ['\mathcal{M}_{\mu_1}', '\mathcal{M}_{\sigma_1}', '\mathcal{M}_{\mu_1, \sigma_1}']
-        markers = ["s", "^", "D"]
+    def get_legend_for_model_symbol(cls, marker_style_to_label_name, markersize):
         legend_elements = [
             Line2D([0], [0], marker=marker, color='w', label='${}$'.format(label),
                    markerfacecolor='w', markeredgecolor='k', markersize=markersize)
-            for label, marker in zip(labels, markers)
+            for marker, label in marker_style_to_label_name.items()
         ]
         return legend_elements
 
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
index ae0e5389..52c60ce4 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
@@ -1,16 +1,16 @@
 import numpy as np
 import pandas as pd
 import matplotlib.pyplot as plt
-from matplotlib.ticker import FormatStrFormatter, ScalarFormatter
+from matplotlib.ticker import ScalarFormatter
 from scipy.ndimage import gaussian_filter
 
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.abstract_hypercube_visualizer import \
     AbstractHypercubeVisualizer
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
-    SCM_STUDY_NAME_TO_COLOR, SCM_STUDY_NAME_TO_ABBREVIATION, SCM_STUDY_CLASS_TO_ABBREVIATION, SCM_STUDIES_NAMES
+    SCM_STUDY_NAME_TO_COLOR, SCM_STUDY_NAME_TO_ABBREVIATION, SCM_STUDY_CLASS_TO_ABBREVIATION
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
     StudyVisualizer
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
 from experiment.trend_analysis.univariate_test.abstract_univariate_test import AbstractUnivariateTest
 from root_utils import get_display_name_from_object_type
 
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_one_altitudes.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_one_altitudes.py
index 77152f09..bd461db4 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_one_altitudes.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_one_altitudes.py
@@ -1,18 +1,13 @@
 import time
 
 from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall
-from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer import \
-    AltitudeHypercubeVisualizer
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer_extended import \
-    AltitudeHypercubeVisualizerBisExtended, QuantityHypercubeWithoutTrendExtended, \
-    AltitudeHypercubeVisualizerWithoutTrendExtended, QuantityHypercubeWithoutTrend
-from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.quantity_altitude_visualizer import \
-    QuantityAltitudeHypercubeVisualizer
+    AltitudeHypercubeVisualizerBisExtended, QuantityHypercubeWithoutTrend
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.utils_hypercube import \
     load_altitude_visualizer, load_quantity_visualizer
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
-    ALL_ALTITUDES, SCM_STUDIES
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+    SCM_STUDIES
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevLocationTrendTest
 
 
 def get_fast_parameters(altitude=1800):
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_several_altitudes.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_several_altitudes.py
index 086e668b..d29f20a2 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_several_altitudes.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_fast_hypercube_several_altitudes.py
@@ -6,7 +6,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visual
     load_altitude_visualizer, load_quantity_visualizer
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
     ALL_ALTITUDES, SCM_STUDIES
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevLocationTrendTest
 
 
 def get_fast_parameters(altitude=None):
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py
index 21311fc2..4fb4fbdd 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py
@@ -6,7 +6,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visual
     load_altitude_visualizer, load_quantity_visualizer
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
     ALL_ALTITUDES, SCM_STUDIES
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevLocationTrendTest
 
 
 def get_full_parameters(altitude=None, offset_starting_year=10):
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/studies_visualization/main_studies_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/studies_visualization/main_studies_visualizer.py
index c3bfd1ec..3fbb7e9d 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/studies_visualization/main_studies_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/studies_visualization/main_studies_visualizer.py
@@ -1,6 +1,6 @@
 import time
 from experiment.trend_analysis.abstract_score import MannKendall, WeigthedScore, MeanScore, MedianScore
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import GevLocationChangePointTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import GevLocationChangePointTest, \
     GevScaleChangePointTest, GevShapeChangePointTest
 from experiment.trend_analysis.univariate_test.abstract_univariate_test import MannKendallTrendTest
 from experiment.meteo_france_data.scm_models_data.safran.safran import ExtendedSafranTotalPrecip
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py
index bc8a7058..1b9e076e 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py
@@ -18,7 +18,8 @@ from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSno
 
 from collections import OrderedDict
 
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
+    GevLocationTrendTest
 from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.uniform_normalization import \
     BetweenZeroAndOneNormalization, BetweenMinusOneAndOneNormalization
 from root_utils import get_display_name_from_object_type
diff --git a/experiment/meteo_france_data/stations_data/main_station_comparison.py b/experiment/meteo_france_data/stations_data/main_station_comparison.py
index 46076629..fa5cf0d0 100644
--- a/experiment/meteo_france_data/stations_data/main_station_comparison.py
+++ b/experiment/meteo_france_data/stations_data/main_station_comparison.py
@@ -2,7 +2,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizat
     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.abstract_gev_trend_test import GevLocationChangePointTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import GevLocationChangePointTest, \
     GevScaleChangePointTest, GevShapeChangePointTest
 
 
diff --git a/experiment/paper1_old/1 - non stationary model choice/main3_non_stationary_strength_evolution.py b/experiment/paper1_old/1 - non stationary model choice/main3_non_stationary_strength_evolution.py
index 78f9ba36..1f0b6ae1 100644
--- a/experiment/paper1_old/1 - non stationary model choice/main3_non_stationary_strength_evolution.py	
+++ b/experiment/paper1_old/1 - non stationary model choice/main3_non_stationary_strength_evolution.py	
@@ -2,9 +2,9 @@ import time
 
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevScaleTrendTest, \
     GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 
 """
 Visualize the 0.99 quantile initial value and its evolution
diff --git a/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_altitude_starting_years_impact.py b/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_altitude_starting_years_impact.py
index a6f8594c..20571443 100644
--- a/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_altitude_starting_years_impact.py	
+++ b/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_altitude_starting_years_impact.py	
@@ -2,9 +2,7 @@ import time
 
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
-    GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 
 """
 Visualize the 0.99 quantile initial value and its evolution
diff --git a/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_starting_years_impact.py b/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_starting_years_impact.py
index 46636df9..ef62be2f 100644
--- a/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_starting_years_impact.py	
+++ b/experiment/paper1_old/1 - non stationary model choice/main4_common_spatial_starting_years_impact.py	
@@ -2,9 +2,7 @@ import time
 
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
-    GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 
 """
 Visualize the 0.99 quantile initial value and its evolution
diff --git a/experiment/paper1_old/1 - non stationary model choice/main4_individual_starting_years_impact.py b/experiment/paper1_old/1 - non stationary model choice/main4_individual_starting_years_impact.py
index 1d9bcaa1..8f952b0c 100644
--- a/experiment/paper1_old/1 - non stationary model choice/main4_individual_starting_years_impact.py	
+++ b/experiment/paper1_old/1 - non stationary model choice/main4_individual_starting_years_impact.py	
@@ -2,9 +2,7 @@ import time
 
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
-    GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 
 """
 Visualize the 0.99 quantile initial value and its evolution
diff --git a/experiment/paper1_old/poster_EVAN2019/main_poster_EVAN2019.py b/experiment/paper1_old/poster_EVAN2019/main_poster_EVAN2019.py
index 530c55f3..7670f92b 100644
--- a/experiment/paper1_old/poster_EVAN2019/main_poster_EVAN2019.py
+++ b/experiment/paper1_old/poster_EVAN2019/main_poster_EVAN2019.py
@@ -1,12 +1,11 @@
-from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusDepth, CrocusSweTotal, CrocusSwe3Days
-from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall
+from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSwe3Days
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
     SCM_STUDIES
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevScaleTrendTest, \
     GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 from experiment.paper1_old.utils import get_full_altitude_visualizer
 
 POSTER_ALTITUDES = [900, 1800, 2700]
diff --git a/experiment/paper1_old/poster_EVAN2019/shape_prior_check/some_experiment_EVAN.py b/experiment/paper1_old/poster_EVAN2019/shape_prior_check/some_experiment_EVAN.py
index 0fc0501f..02d5f8ca 100644
--- a/experiment/paper1_old/poster_EVAN2019/shape_prior_check/some_experiment_EVAN.py
+++ b/experiment/paper1_old/poster_EVAN2019/shape_prior_check/some_experiment_EVAN.py
@@ -1,14 +1,10 @@
-from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusDepth, CrocusSweTotal, CrocusSwe3Days
-from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
-    Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
-from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
-    SCM_STUDIES
-from experiment.trend_analysis.univariate_test.abstract_comparison_non_stationary_model import ComparisonAgainstMu, \
+    Altitude_Hypercube_Year_Visualizer
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.abstract_comparison_non_stationary_model import ComparisonAgainstMu, \
     ComparisonAgainstSigma
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevScaleTrendTest, \
     GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 from experiment.paper1_old.utils import get_full_altitude_visualizer
 
 POSTER_ALTITUDES = [900, 1800, 2700]
diff --git a/experiment/paper1_old/utils.py b/experiment/paper1_old/utils.py
index 0634dbf5..55caf1fe 100644
--- a/experiment/paper1_old/utils.py
+++ b/experiment/paper1_old/utils.py
@@ -3,7 +3,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visual
     get_full_parameters
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.utils_hypercube import \
     load_altitude_visualizer
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import GevLocationTrendTest
 
 FULL_ALTITUDES = [900, 1200, 1500, 1800, 2100, 2400, 2700, 3000]
 
diff --git a/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/main_shape_repartition.py b/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/main_shape_repartition.py
index 26988557..953661f2 100644
--- a/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/main_shape_repartition.py
+++ b/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/main_shape_repartition.py
@@ -1,6 +1,6 @@
 from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal
 from experiment.paper_past_snow_loads.check_mle_convergence_for_trends.study_visualizer_for_shape_repartition import \
-    StudyVisualizerForShape, StudyVisualizerGumbel
+    StudyVisualizerForShape, StudyVisualizerGumbel, StudyVisualizerAll
 from experiment.paper_past_snow_loads.paper_main_utils import load_altitude_to_visualizer
 
 
@@ -20,11 +20,14 @@ def main_shape_repartition(altitudes, massif_names=None,
     max_abs_tdrl = max([visualizer.max_abs_change for visualizer in visualizers_for_altitudes])
     for visualizer in visualizers_for_altitudes:
         # visualizer.plot_trends(max_abs_tdrl, add_colorbar=visualizer.study.altitude == 2700)
-        visualizer.plot_trends(max_abs_tdrl, add_colorbar=True)
+        # visualizer.plot_trends(max_abs_tdrl, add_colorbar=True)
+        visualizer.plot_trends()
 
 
 if __name__ == '__main__':
     # main_shape_repartition([900], save_to_file=False)
     # main_shape_repartition([900, 1800, 2700])
     # main_shape_repartition([300, 600, 900, 1200, 1500, 1800, 2700])
-    main_shape_repartition([900], study_visualizer_class=StudyVisualizerGumbel)
+    main_shape_repartition([900], study_visualizer_class=StudyVisualizerAll, save_to_file=False)
+    # main_shape_repartition([300, 600, 900, 1200, 1500, 1800, 2100, 2400, 2700, 3000, 3300, 3600, 3900, 4200],
+    #                        study_visualizer_class=StudyVisualizerAll, save_to_file=True)
diff --git a/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/study_visualizer_for_shape_repartition.py b/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/study_visualizer_for_shape_repartition.py
index d7b62f8e..9368d8ef 100644
--- a/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/study_visualizer_for_shape_repartition.py
+++ b/experiment/paper_past_snow_loads/check_mle_convergence_for_trends/study_visualizer_for_shape_repartition.py
@@ -1,10 +1,12 @@
+import matplotlib
 from cached_property import cached_property
 
+from experiment.meteo_france_data.plot.create_shifted_cmap import get_shifted_map
 from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy
 from experiment.paper_past_snow_loads.study_visualizer_for_non_stationary_trends import \
     StudyVisualizerForNonStationaryTrends
 from experiment.trend_analysis.abstract_score import MeanScore
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest, \
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter import \
     GevStationaryVersusGumbel
 
 
@@ -41,8 +43,12 @@ class StudyVisualizerForShape(StudyVisualizerForNonStationaryTrends):
     def graduation(self):
         return 0.1
 
+    @cached_property
+    def cmap(self):
+        return get_shifted_map(-self._max_abs_change, self._max_abs_change, matplotlib.cm.get_cmap('BrBG_r'))
+
 
-class StudyVisualizerGumbel(StudyVisualizerForNonStationaryTrends):
+class StudyVisualizerGumbel(StudyVisualizerForShape):
 
     def __init__(self, study: AbstractStudy, show=True, save_to_file=False, only_one_graph=False, only_first_row=False,
                  vertical_kde_plot=False, year_for_kde_plot=None, plot_block_maxima_quantiles=False,
@@ -59,3 +65,19 @@ class StudyVisualizerGumbel(StudyVisualizerForNonStationaryTrends):
         # Assign default argument for the non stationary trends
         self.non_stationary_trend_test = [GevStationaryVersusGumbel]
         self.non_stationary_trend_test_to_marker = dict(zip(self.non_stationary_trend_test, ["o"]))
+
+
+class StudyVisualizerAll(StudyVisualizerForShape):
+
+    def __init__(self, study: AbstractStudy, show=True, save_to_file=False, only_one_graph=False, only_first_row=False,
+                 vertical_kde_plot=False, year_for_kde_plot=None, plot_block_maxima_quantiles=False,
+                 temporal_non_stationarity=False, transformation_class=None, verbose=False, multiprocessing=False,
+                 complete_non_stationary_trend_analysis=False, normalization_under_one_observations=True,
+                 score_class=MeanScore, uncertainty_methods=None, non_stationary_contexts=None,
+                 uncertainty_massif_names=None, effective_temporal_covariate=2017, relative_change_trend_plot=True):
+        super().__init__(study, show, save_to_file, only_one_graph, only_first_row, vertical_kde_plot,
+                         year_for_kde_plot, plot_block_maxima_quantiles, temporal_non_stationarity,
+                         transformation_class, verbose, multiprocessing, complete_non_stationary_trend_analysis,
+                         normalization_under_one_observations, score_class, uncertainty_methods,
+                         non_stationary_contexts, uncertainty_massif_names, effective_temporal_covariate,
+                         relative_change_trend_plot)
diff --git a/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py b/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py
index 65332ae3..1ee9c7bb 100644
--- a/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py
+++ b/experiment/paper_past_snow_loads/result_trends_and_return_levels/main_result_trends_and_return_levels.py
@@ -19,6 +19,7 @@ mpl.rcParams['text.usetex'] = True
 mpl.rcParams['text.latex.preamble'] = [r'\usepackage{amsmath}']
 import matplotlib.pyplot as plt
 
+
 def minor_result(altitude):
     """Plot trends for a single altitude to be fast"""
     visualizer = StudyVisualizerForNonStationaryTrends(CrocusSnowLoadTotal(altitude=altitude), multiprocessing=True,
@@ -26,10 +27,12 @@ def minor_result(altitude):
     visualizer.plot_trends()
     plt.show()
 
+
 def compute_minimized_aic(visualizer):
     _ = visualizer.massif_name_to_minimized_aic_non_stationary_trend_test
     return True
 
+
 def intermediate_result(altitudes, massif_names=None,
                         non_stationary_uncertainty=None, uncertainty_methods=None,
                         study_class=CrocusSnowLoadTotal,
@@ -65,7 +68,7 @@ def intermediate_result(altitudes, massif_names=None,
                                  if altitude in altitudes_for_plot_trend]
     max_abs_tdrl = max([visualizer.max_abs_change for visualizer in visualizers_for_altitudes])
     for visualizer in visualizers_for_altitudes:
-        visualizer.plot_trends(max_abs_tdrl, add_colorbar=visualizer.study.altitude==2700)
+        visualizer.plot_trends(max_abs_tdrl, add_colorbar=visualizer.study.altitude == 2700)
 
     # Plot graph
     plot_uncertainty_massifs(altitude_to_visualizer)
@@ -92,15 +95,15 @@ if __name__ == '__main__':
     #                        ConfidenceIntervalMethodFromExtremes.ci_mle][1:],
     #                     non_stationary_uncertainty=[False, True][1:],
     #                     multiprocessing=True)
-    intermediate_result(altitudes=paper_altitudes, massif_names=['Maurienne'],
-                        uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
-                           ConfidenceIntervalMethodFromExtremes.ci_mle][:],
-                        non_stationary_uncertainty=[False, True][:],
-                        multiprocessing=True)
+    # intermediate_result(altitudes=paper_altitudes, massif_names=['Maurienne'],
+    #                     uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
+    #                                          ConfidenceIntervalMethodFromExtremes.ci_mle][:],
+    #                     non_stationary_uncertainty=[False, True][:],
+    #                     multiprocessing=True)
     # intermediate_result(altitudes=[900, 1200], massif_names=None)
     # intermediate_result(ALL_ALTITUDES_WITHOUT_NAN)
     # intermediate_result(paper_altitudes)
-    # minor_result(altitude=900)
+    minor_result(altitude=900)
     # intermediate_result(altitudes=[1500, 1800], massif_names=['Chartreuse'],
     #                     uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.ci_mle,
     #                                          ConfidenceIntervalMethodFromExtremes.ci_bayes],
diff --git a/experiment/paper_past_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py b/experiment/paper_past_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py
index d1da622f..8c0ac530 100644
--- a/experiment/paper_past_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py
+++ b/experiment/paper_past_snow_loads/result_trends_and_return_levels/plot_uncertainty_curves.py
@@ -152,7 +152,8 @@ def plot_tdrl_bars(altitude_to_visualizer, ax, massif_name, valid_altitudes, leg
             # Better to plot all the markers on the same line
             ax.plot([altitude], 0, **marker_kwargs)
     # Add a legend plot
-    legend_elements = AbstractStudy.get_legend_for_model_symbol(markersize=9)
+    visualizer = visualizers[0]
+    legend_elements = AbstractStudy.get_legend_for_model_symbol(visualizer.marker_to_label, markersize=9)
     ax2 = ax.twinx()
     # ax2.legend(handles=legend_elements, bbox_to_anchor=(0.93, 0.7), loc='upper right')
     # ax2.annotate("Filled symbol = significant trend ", xy=(0.85, 0.5), xycoords='axes fraction', fontsize=7)
diff --git a/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py b/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py
index 976efe49..ba766f4c 100644
--- a/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py
+++ b/experiment/paper_past_snow_loads/study_visualizer_for_non_stationary_trends.py
@@ -1,7 +1,6 @@
-from collections import OrderedDict
 import matplotlib.pyplot as plt
 from multiprocessing.pool import Pool
-from typing import Dict, Tuple
+from typing import Dict
 
 import numpy as np
 from cached_property import cached_property
@@ -14,12 +13,18 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizat
     StudyVisualizer
 from experiment.paper_past_snow_loads.check_mcmc_convergence_for_return_levels.gelman_convergence_test import \
     compute_gelman_convergence_value
-from experiment.paper_past_snow_loads.paper_utils import dpi_paper1_figure
 from experiment.trend_analysis.abstract_score import MeanScore
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
-    GevLocationTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+from 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.gev_trend_test_one_parameter import \
+    GevLocationTrendTest, GevScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gumbel_trend_test_one_parameter import \
+    GumbelLocationTrendTest, GevStationaryVersusGumbel, GumbelScaleTrendTest, GumbelVersusGumbel
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_three_parameters.gumbel_trend_test_three_parameters import \
+    GevLocationAndScaleTrendTestAgainstGumbel
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import \
+    GevLocationAndScaleTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gumbel_test_two_parameters import \
+    GumbelLocationAndScaleTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel
 from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \
     ConfidenceIntervalMethodFromExtremes
@@ -39,12 +44,14 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
                  non_stationary_contexts=None,
                  uncertainty_massif_names=None,
                  effective_temporal_covariate=2017,
-                 relative_change_trend_plot=True):
+                 relative_change_trend_plot=True,
+                 non_stationary_trend_test_to_marker=None):
         super().__init__(study, show, save_to_file, only_one_graph, only_first_row, vertical_kde_plot,
                          year_for_kde_plot, plot_block_maxima_quantiles, temporal_non_stationarity,
                          transformation_class, verbose, multiprocessing, complete_non_stationary_trend_analysis,
                          normalization_under_one_observations, score_class)
         # Add some attributes
+        self.non_stationary_trend_test_to_marker = non_stationary_trend_test_to_marker
         self.relative_change_trend_plot = relative_change_trend_plot
         self.effective_temporal_covariate = effective_temporal_covariate
         self.non_stationary_contexts = non_stationary_contexts
@@ -58,10 +65,19 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
                                         ConfidenceIntervalMethodFromExtremes.ci_mle][1:]
         if self.uncertainty_massif_names is None:
             self.uncertainty_massif_names = self.study.study_massif_names
-        # Assign default argument for the non stationary trends
-        self.non_stationary_trend_test = [GevLocationTrendTest, GevScaleTrendTest, GevLocationAndScaleTrendTest]
-        self.non_stationary_trend_test_to_marker = dict(zip(self.non_stationary_trend_test, ["s", "^", "D"]))
-
+        if self.non_stationary_trend_test_to_marker is None:
+            # Assign default argument for the non stationary trends
+            # self.non_stationary_trend_test = [GumbelVersusGumbel,
+            #                                   GumbelLocationTrendTest, GumbelScaleTrendTest, GumbelLocationAndScaleTrendTest,
+            #                                   GevStationaryVersusGumbel,
+            #                                   GevLocationTrendTest, GevScaleTrendTest, GevLocationAndScaleTrendTest,
+            #                                   ]
+            self.non_stationary_trend_test = [GumbelVersusGumbel, GevLocationAndScaleTrendTestAgainstGumbel]
+            self.non_stationary_trend_test_to_marker = {t: t.marker for t in self.non_stationary_trend_test}
+                                                                # ["v", "^", "D", "X", "x", 7, 6, "d"]))
+        else:
+            self.non_stationary_trend_test = list(self.non_stationary_trend_test_to_marker.keys())
+        self.marker_to_label = {t.marker: t.label for t in self.non_stationary_trend_test}
         self.global_max_abs_change = None
 
     # Utils
@@ -125,6 +141,7 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer):
                                         axis_off=False, show_label=False,
                                         add_colorbar=add_colorbar,
                                         massif_name_to_marker_style=self.massif_name_to_marker_style,
+                                        marker_style_to_label_name=self.marker_to_label,
                                         massif_name_to_color=self.massif_name_to_color,
                                         cmap=self.cmap,
                                         show=False,
diff --git a/experiment/trend_analysis/univariate_test/abstract_trend_test.py b/experiment/trend_analysis/univariate_test/abstract_trend_test.py
deleted file mode 100644
index 9304b779..00000000
--- a/experiment/trend_analysis/univariate_test/abstract_trend_test.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import warnings
-
-import numpy as np
-
-from experiment.trend_analysis.univariate_test.mann_kendall_test import mann_kendall_test
-from experiment.trend_analysis.abstract_score import MannKendall
-from experiment.trend_analysis.univariate_test.abstract_univariate_test import AbstractUnivariateTest
-
-
-class MannKendallTrendTest(AbstractUnivariateTest):
-
-    def __init__(self, years, maxima, starting_year):
-        super().__init__(years, maxima, starting_year)
-        score = MannKendall()
-        # Compute score value
-        detailed_score = score.get_detailed_score(self.years_after_starting_year, self.maxima_after_starting_year)
-        self.score_value = detailed_score[0]
-        # Compute the Mann Kendall Test
-        MK, S = mann_kendall_test(t=self.years_after_starting_year,
-                                  x=self.maxima_after_starting_year,
-                                  eps=1e-5,
-                                  alpha=self.SIGNIFICANCE_LEVEL,
-                                  Ha='upordown')
-        # Raise warning if scores are differents
-        if S != self.score_value:
-            warnings.warn('S={} is different that score_value={}'.format(S, self.score_value), WarningScoreValue)
-        self.MK = MK
-
-    @property
-    def test_sign(self) -> int:
-        return np.sign(self.score_value)
-
-    @property
-    def is_significant(self) -> bool:
-        assert 'reject' in self.MK or 'accept' in self.MK
-        return 'accept' in self.MK
-
-
-class SpearmanRhoTrendTest(AbstractUnivariateTest):
-    pass
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/__init__.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/experiment/trend_analysis/univariate_test/abstract_gev_trend_test.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py
similarity index 97%
rename from experiment/trend_analysis/univariate_test/abstract_gev_trend_test.py
rename to experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py
index 8d3b47b0..907716d9 100644
--- a/experiment/trend_analysis/univariate_test/abstract_gev_trend_test.py
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py
@@ -14,6 +14,7 @@ from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_m
     StationaryTemporalModel
 from extreme_fit.model.utils import SafeRunException
 from extreme_fit.distribution.gev.gev_params import GevParams
+from root_utils import classproperty
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
 
 
@@ -193,3 +194,13 @@ class AbstractGevTrendTest(AbstractUnivariateTest):
             return 0.0
         else:
             return self.unconstrained_estimator_gev_params.quantile(p=self.quantile_level)
+
+    # Some class properties for display purpose
+
+    @classproperty
+    def marker(self):
+        raise NotImplementedError
+
+    @classproperty
+    def label(self):
+        return '\\mathcal{M}_{%s}'
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/__init__.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/experiment/trend_analysis/univariate_test/abstract_comparison_non_stationary_model.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/abstract_comparison_non_stationary_model.py
similarity index 69%
rename from experiment/trend_analysis/univariate_test/abstract_comparison_non_stationary_model.py
rename to experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/abstract_comparison_non_stationary_model.py
index cfd2dc5e..ee92cf5e 100644
--- a/experiment/trend_analysis/univariate_test/abstract_comparison_non_stationary_model.py
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/abstract_comparison_non_stationary_model.py
@@ -1,23 +1,14 @@
 from experiment.eurocode_data.utils import EUROCODE_QUANTILE
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
-from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
+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.gev_trend_test_one_parameter import \
+    GevTrendTestOneParameter
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
     NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel
 import numpy as np
 
 
-class AbstractComparisonNonStationaryModel(AbstractGevTrendTest):
-
-    @property
-    def degree_freedom_chi2(self) -> int:
-        raise NotImplementedError
-
-
-class AbstractComparisonNonStationaryModelOneParameter(AbstractComparisonNonStationaryModel):
-
-    @property
-    def degree_freedom_chi2(self) -> int:
-        return 1
+class AbstractComparisonNonStationaryModelOneParameter(GevTrendTestOneParameter):
 
     @property
     def test_sign(self) -> int:
diff --git a/experiment/trend_analysis/univariate_test/gev_trend_test_one_parameter.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gev_trend_test_one_parameter.py
similarity index 87%
rename from experiment/trend_analysis/univariate_test/gev_trend_test_one_parameter.py
rename to experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gev_trend_test_one_parameter.py
index 5a89e207..d09c5a3b 100644
--- a/experiment/trend_analysis/univariate_test/gev_trend_test_one_parameter.py
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gev_trend_test_one_parameter.py
@@ -1,8 +1,8 @@
 from experiment.eurocode_data.utils import EUROCODE_QUANTILE
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
     NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel, NonStationaryShapeTemporalModel, \
-    StationaryTemporalModel, GumbelTemporalModel
+    StationaryTemporalModel
 from extreme_fit.distribution.gev.gev_params import GevParams
 
 
@@ -86,10 +86,3 @@ class GevShapeTrendTest(GevTrendTestOneParameterAgainstStationary):
                          quantile_level=quantile_level)
 
 
-class GevStationaryVersusGumbel(GevTrendTestOneParameter):
-
-    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
-        super().__init__(years, maxima, starting_year,
-                         unconstrained_model_class=StationaryTemporalModel,
-                         constrained_model_class=GumbelTemporalModel,
-                         quantile_level=quantile_level)
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gumbel_trend_test_one_parameter.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gumbel_trend_test_one_parameter.py
new file mode 100644
index 00000000..71df5043
--- /dev/null
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_one_parameter/gumbel_trend_test_one_parameter.py
@@ -0,0 +1,92 @@
+# Comparison with the Gumbel model
+from experiment.eurocode_data.utils import EUROCODE_QUANTILE
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
+    GevTrendTestOneParameter, GevTrendTestOneParameterAgainstStationary
+from extreme_fit.distribution.gev.gev_params import GevParams
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
+    GumbelTemporalModel, NonStationaryLocationGumbelModel, NonStationaryScaleGumbelModel
+from root_utils import classproperty
+
+
+class GumbelVersusGumbel(GevTrendTestOneParameter):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=GumbelTemporalModel,
+                         constrained_model_class=GumbelTemporalModel,
+                         quantile_level=quantile_level)
+
+    @property
+    def is_significant(self) -> bool:
+        return False
+
+    @property
+    def total_number_of_parameters_for_unconstrained_model(self) -> int:
+        return 2
+
+    @property
+    def time_derivative_of_return_level(self):
+        return super().time_derivative_of_return_level()
+
+    @classproperty
+    def label(self):
+        return super().label % '0'
+
+    @classproperty
+    def marker(self):
+        return 'x'
+
+    def _slope_strength(self):
+        return 0.0
+
+
+class GevStationaryVersusGumbel(GevTrendTestOneParameter):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=StationaryTemporalModel,
+                         constrained_model_class=GumbelTemporalModel,
+                         quantile_level=quantile_level)
+
+    @property
+    def total_number_of_parameters_for_unconstrained_model(self) -> int:
+        return 3
+
+    def _slope_strength(self):
+        return 0.0
+
+class GumbelLocationTrendTest(GevTrendTestOneParameterAgainstStationary):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=NonStationaryLocationGumbelModel,
+                         gev_param_name=GevParams.LOC,
+                         quantile_level=quantile_level,
+                         constrained_model_class=GumbelTemporalModel)
+
+    @property
+    def total_number_of_parameters_for_unconstrained_model(self) -> int:
+        return 3
+
+    def _slope_strength(self):
+        return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(p=self.quantile_level,
+                                                                                       mu1=self.non_stationary_linear_coef)
+
+
+class GumbelScaleTrendTest(GevTrendTestOneParameterAgainstStationary):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=NonStationaryScaleGumbelModel,
+                         gev_param_name=GevParams.SCALE,
+                         quantile_level=quantile_level,
+                         constrained_model_class=GumbelTemporalModel)
+
+    def _slope_strength(self):
+        return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(
+            p=self.quantile_level,
+            sigma1=self.non_stationary_linear_coef)
+
+    @property
+    def total_number_of_parameters_for_unconstrained_model(self) -> int:
+        return 3
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/__init__.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/gumbel_trend_test_three_parameters.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/gumbel_trend_test_three_parameters.py
new file mode 100644
index 00000000..b5f6cbcc
--- /dev/null
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_three_parameters/gumbel_trend_test_three_parameters.py
@@ -0,0 +1,48 @@
+from experiment.eurocode_data.utils import EUROCODE_QUANTILE
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import \
+    GevLocationAndScaleTrendTest
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel
+from experiment.eurocode_data.utils import EUROCODE_QUANTILE
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
+    NonStationaryLocationAndScaleTemporalModel, StationaryTemporalModel, NonStationaryLocationAndScaleGumbelModel, \
+    GumbelTemporalModel
+from extreme_fit.distribution.gev.gev_params import GevParams
+from root_utils import classproperty
+
+
+class GevTrendTestThreeParameters(AbstractGevTrendTest):
+
+    @property
+    def degree_freedom_chi2(self) -> int:
+        return 3
+
+
+class GevLocationAndScaleTrendTestAgainstGumbel(GevTrendTestThreeParameters):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=NonStationaryLocationAndScaleTemporalModel,
+                         constrained_model_class=GumbelTemporalModel,
+                         quantile_level=quantile_level)
+
+    @property
+    def mu1(self):
+        return self.get_non_stationary_linear_coef(gev_param_name=GevParams.LOC)
+
+    @property
+    def sigma1(self):
+        return self.get_non_stationary_linear_coef(gev_param_name=GevParams.SCALE)
+
+    def _slope_strength(self):
+        return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(p=self.quantile_level,
+                                                                                       mu1=self.mu1,
+                                                                                       sigma1=self.sigma1)
+
+    @classproperty
+    def label(self):
+        return super().label % '\\zeta_0, \\mu_1, \\sigma_1'
+
+    @classproperty
+    def marker(self):
+        return 'd'
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/__init__.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/experiment/trend_analysis/univariate_test/gev_trend_test_two_parameters.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gev_trend_test_two_parameters.py
similarity index 90%
rename from experiment/trend_analysis/univariate_test/gev_trend_test_two_parameters.py
rename to experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gev_trend_test_two_parameters.py
index 2bd8a106..89cd18b3 100644
--- a/experiment/trend_analysis/univariate_test/gev_trend_test_two_parameters.py
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gev_trend_test_two_parameters.py
@@ -1,7 +1,8 @@
 from experiment.eurocode_data.utils import EUROCODE_QUANTILE
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
-    NonStationaryLocationAndScaleTemporalModel, StationaryTemporalModel
+    NonStationaryLocationAndScaleTemporalModel, StationaryTemporalModel, NonStationaryLocationAndScaleGumbelModel, \
+    GumbelTemporalModel
 from extreme_fit.distribution.gev.gev_params import GevParams
 
 
@@ -42,3 +43,5 @@ class GevLocationAndScaleTrendTest(GevTrendTestTwoParameters):
     @property
     def variance_difference_same_sign_as_slope_strenght(self) -> bool:
         return self.same_sign(self.sigma1, self._slope_strength())
+
+
diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gumbel_test_two_parameters.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gumbel_test_two_parameters.py
new file mode 100644
index 00000000..ea7648ac
--- /dev/null
+++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/trend_test_two_parameters/gumbel_test_two_parameters.py
@@ -0,0 +1,32 @@
+from experiment.eurocode_data.utils import EUROCODE_QUANTILE
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_two_parameters.gev_trend_test_two_parameters import \
+    GevTrendTestTwoParameters
+from extreme_fit.distribution.gev.gev_params import GevParams
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
+    NonStationaryLocationAndScaleGumbelModel, GumbelTemporalModel
+
+
+class GumbelLocationAndScaleTrendTest(GevTrendTestTwoParameters):
+
+    def __init__(self, years, maxima, starting_year, quantile_level=EUROCODE_QUANTILE):
+        super().__init__(years, maxima, starting_year,
+                         unconstrained_model_class=NonStationaryLocationAndScaleGumbelModel,
+                         constrained_model_class=GumbelTemporalModel,
+                         quantile_level=quantile_level)
+
+    @property
+    def total_number_of_parameters_for_unconstrained_model(self) -> int:
+        return 4
+
+    @property
+    def mu1(self):
+        return self.get_non_stationary_linear_coef(gev_param_name=GevParams.LOC)
+
+    @property
+    def sigma1(self):
+        return self.get_non_stationary_linear_coef(gev_param_name=GevParams.SCALE)
+
+    def _slope_strength(self):
+        return self.unconstrained_estimator_gev_params.time_derivative_of_return_level(p=self.quantile_level,
+                                                                                       mu1=self.mu1,
+                                                                                       sigma1=self.sigma1)
diff --git a/experiment/trend_analysis/univariate_test/mann_kendall_test.py b/experiment/trend_analysis/univariate_test/mann_kendall_test.py
deleted file mode 100644
index 8402791d..00000000
--- a/experiment/trend_analysis/univariate_test/mann_kendall_test.py
+++ /dev/null
@@ -1,146 +0,0 @@
-# Created: Mon Apr 17, 2017  01:18PM
-# Last modified: Mon Apr 17, 2017  09:24PM
-# Copyright: Bedartha Goswami <goswami@uni-potsdam.de>
-
-# This code was adapted from: https://up-rs-esp.github.io/mkt/
-
-import numpy as np
-from scipy.special import ndtri, ndtr
-import sys
-
-
-def mann_kendall_test(t, x, eps=None, alpha=None, Ha=None):
-    """
-    Runs the Mann-Kendall test for trend in time series data.
-
-    Parameters
-    ----------
-    t : 1D numpy.ndarray
-        array of the time points of measurements
-    x : 1D numpy.ndarray
-        array containing the measurements corresponding to entries of 't'
-    eps : scalar, float, greater than zero
-        least count error of measurements which help determine ties in the data
-    alpha : scalar, float, greater than zero
-        significance level of the statistical test (Type I error)
-    Ha : string, options include 'up', 'down', 'upordown'
-        type of test: one-sided ('up' or 'down') or two-sided ('updown')
-
-    Returns
-    -------
-    MK : string
-        result of the statistical test indicating whether or not to accept hte
-        alternative hypothesis 'Ha'
-    m : scalar, float
-        slope of the linear fit to the data
-    c : scalar, float
-        intercept of the linear fit to the data
-    p : scalar, float, greater than zero
-        p-value of the obtained Z-score statistic for the Mann-Kendall test
-
-    Raises
-    ------
-    AssertionError : error
-                    least count error of measurements 'eps' is not given
-    AssertionError : error
-                    significance level of test 'alpha' is not given
-    AssertionError : error
-                    alternative hypothesis 'Ha' is not given
-
-    """
-    # assert a least count for the measurements x
-    assert eps, "Please provide least count error for measurements 'x'"
-    assert alpha, "Please provide significance level 'alpha' for the test"
-    assert Ha, "Please provide the alternative hypothesis 'Ha'"
-
-    # estimate sign of all possible (n(n-1)) / 2 differences
-    n = len(t)
-    sgn = np.zeros((n, n), dtype="int")
-    for i in range(n):
-        tmp = x - x[i]
-        tmp[np.where(np.fabs(tmp) <= eps)] = 0.
-        sgn[i] = np.sign(tmp)
-
-    # estimate mean of the sign of all possible differences
-    S = sgn[np.triu_indices(n, k=1)].sum()
-
-    # estimate variance of the sign of all possible differences
-    # 1. Determine no. of tie groups 'p' and no. of ties in each group 'q'
-    np.fill_diagonal(sgn, eps * 1E6)
-    i, j = np.where(sgn == 0.)
-    ties = np.unique(x[i])
-    p = len(ties)
-    q = np.zeros(len(ties), dtype="int")
-    for k in range(p):
-        idx = np.where(np.fabs(x - ties[k]) < eps)[0]
-        q[k] = len(idx)
-    # 2. Determine the two terms in the variance calculation
-    term1 = n * (n - 1) * (2 * n + 5)
-    term2 = (q * (q - 1) * (2 * q + 5)).sum()
-    # 3. estimate variance
-    varS = float(term1 - term2) / 18.
-
-    # Compute the Z-score based on above estimated mean and variance
-    if S > eps:
-        Zmk = (S - 1) / np.sqrt(varS)
-    elif np.fabs(S) <= eps:
-        Zmk = 0.
-    elif S < -eps:
-        Zmk = (S + 1) / np.sqrt(varS)
-
-    # compute test based on given 'alpha' and alternative hypothesis
-    # note: for all the following cases, the null hypothesis Ho is:
-    # Ho := there is no monotonic trend
-    #
-    # Ha := There is an upward monotonic trend
-    if Ha == "up":
-        Z_ = ndtri(1. - alpha)
-        if Zmk >= Z_:
-            MK = "accept Ha := upward trend"
-        else:
-            MK = "reject Ha := upward trend"
-    # Ha := There is a downward monotonic trend
-    elif Ha == "down":
-        Z_ = ndtri(1. - alpha)
-        if Zmk <= -Z_:
-            MK = "accept Ha := downward trend"
-        else:
-            MK = "reject Ha := downward trend"
-    # Ha := There is an upward OR downward monotonic trend
-    elif Ha == "upordown":
-        Z_ = ndtri(1. - alpha / 2.)
-        if np.fabs(Zmk) >= Z_:
-            MK = "accept Ha := upward OR downward trend"
-        else:
-            MK = "reject Ha := upward OR downward trend"
-
-    # ----------
-    # AS A BONUS
-    # ----------
-    # # estimate the slope and intercept of the line
-    # m = np.corrcoef(t, x)[0, 1] * (np.std(x) / np.std(t))
-    # c = np.mean(x) - m * np.mean(t)
-    #
-    #
-    # # ----------
-    # # AS A BONUS
-    # # ----------
-    # # estimate the p-value for the obtained Z-score Zmk
-    # if S > eps:
-    #     if Ha == "up":
-    #         p = 1. - ndtr(Zmk)
-    #     elif Ha == "down":
-    #         p = ndtr(Zmk)
-    #     elif Ha == "upordown":
-    #         p = 0.5 * (1. - ndtr(Zmk))
-    # elif np.fabs(S) <= eps:
-    #     p = 0.5
-    # elif S < -eps:
-    #     if Ha == "up":
-    #         p = 1. - ndtr(Zmk)
-    #     elif Ha == "down":
-    #         p = ndtr(Zmk)
-    #     elif Ha == "upordown":
-    #         p = 0.5 * (ndtr(Zmk))
-
-    return MK, S
diff --git a/experiment/trend_analysis/univariate_test/univariate_test_results.py b/experiment/trend_analysis/univariate_test/univariate_test_results.py
index 009da783..a319c72e 100644
--- a/experiment/trend_analysis/univariate_test/univariate_test_results.py
+++ b/experiment/trend_analysis/univariate_test/univariate_test_results.py
@@ -2,9 +2,9 @@ from multiprocessing.pool import Pool
 
 import numpy as np
 
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import AbstractGevTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
-    AbstractTemporalLinearMarginModel, TemporalMarginFitMethod
+    TemporalMarginFitMethod
 from root_utils import NB_CORES
 
 
diff --git a/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py b/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py
index e6a54751..23be1575 100644
--- a/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py
+++ b/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py
@@ -11,15 +11,6 @@ class StationaryTemporalModel(AbstractTemporalLinearMarginModel):
         super().load_margin_functions({})
 
 
-class GumbelTemporalModel(StationaryTemporalModel):
-
-    def __init__(self, coordinates: AbstractCoordinates, use_start_value=False, params_start_fit=None,
-                 params_sample=None, starting_point=None, fit_method=TemporalMarginFitMethod.is_mev_gev_fit,
-                 nb_iterations_for_bayesian_fit=5000, params_start_fit_bayesian=None):
-        super().__init__(coordinates, use_start_value, params_start_fit, params_sample, starting_point, fit_method,
-                         nb_iterations_for_bayesian_fit, params_start_fit_bayesian, type_for_MLE="Gumbel")
-
-
 class NonStationaryLocationTemporalModel(AbstractTemporalLinearMarginModel):
 
     def load_margin_functions(self, gev_param_name_to_dims=None):
@@ -73,3 +64,22 @@ class NonStationaryLocationAndScaleTemporalModel(AbstractTemporalLinearMarginMod
     @property
     def sigl(self):
         return 1
+
+
+class GumbelTemporalModel(StationaryTemporalModel):
+
+    def __init__(self, coordinates: AbstractCoordinates, use_start_value=False, params_start_fit=None,
+                 params_sample=None, starting_point=None, fit_method=TemporalMarginFitMethod.is_mev_gev_fit,
+                 nb_iterations_for_bayesian_fit=5000, params_start_fit_bayesian=None):
+        super().__init__(coordinates, use_start_value, params_start_fit, params_sample, starting_point, fit_method,
+                         nb_iterations_for_bayesian_fit, params_start_fit_bayesian, type_for_MLE="Gumbel")
+
+
+class NonStationaryLocationGumbelModel(GumbelTemporalModel, NonStationaryLocationTemporalModel):
+    pass
+
+class NonStationaryScaleGumbelModel(GumbelTemporalModel, NonStationaryScaleTemporalModel):
+    pass
+
+class NonStationaryLocationAndScaleGumbelModel(GumbelTemporalModel, NonStationaryLocationAndScaleTemporalModel):
+    pass
\ No newline at end of file
diff --git a/extreme_fit/model/result_from_model_fit/utils.py b/extreme_fit/model/result_from_model_fit/utils.py
index 03d95a07..d98b6b53 100644
--- a/extreme_fit/model/result_from_model_fit/utils.py
+++ b/extreme_fit/model/result_from_model_fit/utils.py
@@ -19,7 +19,7 @@ def get_margin_coef_ordered_dict(gev_param_name_to_dim, mle_values, type_for_mle
     for gev_param_name in GevParams.PARAM_NAMES:
         # Add intercept (i.e. stationary parameter)
         intercept_coef_name = LinearCoef.coef_template_str(gev_param_name, LinearCoef.INTERCEPT_NAME).format(1)
-        if type_for_mle == "Gumbel" and i == 2:
+        if type_for_mle == "Gumbel" and gev_param_name == GevParams.SHAPE:
             coef_value = 0
         else:
             coef_value = mle_values[i]
diff --git a/test/test_experiment/test_SCM_study.py b/test/test_experiment/test_SCM_study.py
index 7a0aa485..542cb35e 100644
--- a/test/test_experiment/test_SCM_study.py
+++ b/test/test_experiment/test_SCM_study.py
@@ -12,7 +12,8 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizat
     study_iterator, study_iterator_global, SCM_STUDIES, ALL_ALTITUDES
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
     StudyVisualizer
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
+    GevLocationTrendTest
 from root_utils import get_display_name_from_object_type
 
 
diff --git a/test/test_experiment/test_hypercube.py b/test/test_experiment/test_hypercube.py
index ad3b15e6..80446d44 100644
--- a/test/test_experiment/test_hypercube.py
+++ b/test/test_experiment/test_hypercube.py
@@ -4,15 +4,14 @@ from collections import OrderedDict
 import numpy as np
 
 from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall
-from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer import \
-    AltitudeHypercubeVisualizer
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
     Altitude_Hypercube_Year_Visualizer
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
     study_iterator
 from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
     StudyVisualizer
-from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevLocationTrendTest
+from experiment.trend_analysis.univariate_test.extreme_trend_test.trend_test_one_parameter.gev_trend_test_one_parameter import \
+    GevLocationTrendTest
 from extreme_fit.model.utils import set_seed_for_test
 
 
diff --git a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py
index 86852146..ec0b6977 100644
--- a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py
+++ b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py
@@ -3,7 +3,7 @@ import unittest
 import numpy as np
 import pandas as pd
 
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import fitted_linear_margin_estimator
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import fitted_linear_margin_estimator
 from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
     TemporalMarginFitMethod
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
diff --git a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py
index 2996bb21..8aee8f21 100644
--- a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py
+++ b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py
@@ -3,11 +3,10 @@ import unittest
 import numpy as np
 import pandas as pd
 
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import fitted_linear_margin_estimator
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import fitted_linear_margin_estimator
 from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
     TemporalMarginFitMethod
-from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
-    NonStationaryLocationTemporalModel, NonStationaryLocationAndScaleTemporalModel, GumbelTemporalModel
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import GumbelTemporalModel
 from extreme_fit.model.utils import r, set_seed_r
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
 from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \
diff --git a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py
index 0d420386..f1dc68ff 100644
--- a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py
+++ b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py
@@ -3,7 +3,7 @@ import unittest
 import numpy as np
 import pandas as pd
 
-from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import fitted_linear_margin_estimator
+from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import fitted_linear_margin_estimator
 from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
     TemporalMarginFitMethod
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
-- 
GitLab