diff --git a/experiment/meteo_france_SCM_study/__init__.py b/experiment/meteo_france_SCM_models/__init__.py
similarity index 100%
rename from experiment/meteo_france_SCM_study/__init__.py
rename to experiment/meteo_france_SCM_models/__init__.py
diff --git a/experiment/meteo_france_SCM_study/visualization/hypercube_visualization/__init__.py b/experiment/meteo_france_SCM_models/study/__init__.py
similarity index 100%
rename from experiment/meteo_france_SCM_study/visualization/hypercube_visualization/__init__.py
rename to experiment/meteo_france_SCM_models/study/__init__.py
diff --git a/experiment/meteo_france_SCM_study/abstract_extended_study.py b/experiment/meteo_france_SCM_models/study/abstract_extended_study.py
similarity index 97%
rename from experiment/meteo_france_SCM_study/abstract_extended_study.py
rename to experiment/meteo_france_SCM_models/study/abstract_extended_study.py
index a2d39a70a8b68e30d28f4bd25b92029bbefb9fab..e14d632479627710803929d7720cd0ec45d63f8b 100644
--- a/experiment/meteo_france_SCM_study/abstract_extended_study.py
+++ b/experiment/meteo_france_SCM_models/study/abstract_extended_study.py
@@ -1,7 +1,7 @@
 import numpy as np
 from collections import OrderedDict
 
-from experiment.meteo_france_SCM_study.abstract_study import AbstractStudy
+from experiment.meteo_france_SCM_models.study.abstract_study import AbstractStudy
 from spatio_temporal_dataset.coordinates.spatial_coordinates.abstract_spatial_coordinates import \
     AbstractSpatialCoordinates
 
diff --git a/experiment/meteo_france_SCM_study/abstract_study.py b/experiment/meteo_france_SCM_models/study/abstract_study.py
similarity index 98%
rename from experiment/meteo_france_SCM_study/abstract_study.py
rename to experiment/meteo_france_SCM_models/study/abstract_study.py
index 51b76c85a99079c0fa6b23b4a2a5ca15c24bad59..7b37cc844d0e273d04ccbe3c146380c174acbcdd 100644
--- a/experiment/meteo_france_SCM_study/abstract_study.py
+++ b/experiment/meteo_france_SCM_models/study/abstract_study.py
@@ -15,9 +15,9 @@ from matplotlib import cm
 from matplotlib.colors import Normalize
 from netCDF4 import Dataset
 
-from experiment.meteo_france_SCM_study.abstract_variable import AbstractVariable
-from experiment.meteo_france_SCM_study.scm_constants import ALTITUDES, ZS_INT_23, ZS_INT_MASK, LONGITUDES, LATITUDES
-from experiment.meteo_france_SCM_study.visualization.utils import get_km_formatter
+from experiment.meteo_france_SCM_models.study.abstract_variable import AbstractVariable
+from experiment.meteo_france_SCM_models.study.scm_constants import ALTITUDES, ZS_INT_23, ZS_INT_MASK, LONGITUDES, LATITUDES
+from experiment.meteo_france_SCM_models.visualization.utils import get_km_formatter
 from extreme_estimator.extreme_models.margin_model.margin_function.abstract_margin_function import \
     AbstractMarginFunction
 from extreme_estimator.margin_fits.plot.create_shifted_cmap import get_color_rbga_shifted, create_colorbase_axis
diff --git a/experiment/meteo_france_SCM_study/abstract_variable.py b/experiment/meteo_france_SCM_models/study/abstract_variable.py
similarity index 75%
rename from experiment/meteo_france_SCM_study/abstract_variable.py
rename to experiment/meteo_france_SCM_models/study/abstract_variable.py
index 2ed37e127d7f23d93ba9525fe1dd8aa24b76e9ae..9e5a07c400f6cc7f93e76bda78d681417c67cece 100644
--- a/experiment/meteo_france_SCM_study/abstract_variable.py
+++ b/experiment/meteo_france_SCM_models/study/abstract_variable.py
@@ -9,8 +9,9 @@ class AbstractVariable(object):
     NAME = ''
     UNIT = ''
 
-    def __init__(self, variable_array):
+    def __init__(self, variable_array, nb_consecutive_days_of_snowfall=1):
         self.variable_array = variable_array
+        self.nb_consecutive_days_of_snowfall = nb_consecutive_days_of_snowfall
 
     @classmethod
     def keyword(cls):
diff --git a/experiment/meteo_france_SCM_study/visualization/studies_visualization/__init__.py b/experiment/meteo_france_SCM_models/study/crocus/__init__.py
similarity index 100%
rename from experiment/meteo_france_SCM_study/visualization/studies_visualization/__init__.py
rename to experiment/meteo_france_SCM_models/study/crocus/__init__.py
diff --git a/experiment/meteo_france_SCM_models/study/crocus/crocus.py b/experiment/meteo_france_SCM_models/study/crocus/crocus.py
new file mode 100644
index 0000000000000000000000000000000000000000..e974080280ae8c837db47654d9d13defceef4441
--- /dev/null
+++ b/experiment/meteo_france_SCM_models/study/crocus/crocus.py
@@ -0,0 +1,71 @@
+import numpy as np
+
+from experiment.meteo_france_SCM_models.study.abstract_extended_study import AbstractExtendedStudy
+from experiment.meteo_france_SCM_models.study.abstract_study import AbstractStudy
+from experiment.meteo_france_SCM_models.study.crocus.crocus_variables import CrocusSweVariable, CrocusDepthVariable
+
+
+class Crocus(AbstractStudy):
+    """
+    In the Crocus data, there is no 'massifsList' variable, thus we assume massifs are ordered just like Safran data
+    """
+
+    def __init__(self, variable_class, *args, **kwargs):
+        assert variable_class in [CrocusSweVariable, CrocusDepthVariable]
+        super().__init__(variable_class, *args, **kwargs)
+        self.model_name = 'Crocus'
+
+    def annual_aggregation_function(self, *args, **kwargs):
+        return np.mean(*args, **kwargs)
+
+    def winter_annual_aggregation(self, time_serie):
+        # In the Durand paper, we only want the data from November to April
+        # 91 = 30 + 31 + 30 first days of the time serie correspond to the month of August + September + October
+        # 92 = 31 + 30 + 31 last days correspond to the month of May + June + JUly
+        return super().apply_annual_aggregation(time_serie[91:-92, ...])
+
+
+class CrocusSwe(Crocus):
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(CrocusSweVariable, *args, **kwargs)
+
+    def apply_annual_aggregation(self, time_serie):
+        return self.winter_annual_aggregation(time_serie)
+
+
+class ExtendedCrocusSwe(AbstractExtendedStudy, CrocusSwe):
+    pass
+
+
+class CrocusDepth(Crocus):
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(CrocusDepthVariable, *args, **kwargs)
+
+    def apply_annual_aggregation(self, time_serie):
+        return self.winter_annual_aggregation(time_serie)
+
+
+class ExtendedCrocusDepth(AbstractExtendedStudy, CrocusDepth):
+    pass
+
+
+class CrocusDaysWithSnowOnGround(Crocus):
+    """Having snow on the ground is equivalent to snow depth > 0"""
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(CrocusDepthVariable, *args, **kwargs)
+
+    def annual_aggregation_function(self, *args, **kwargs):
+        return np.count_nonzero(*args, **kwargs)
+
+
+if __name__ == '__main__':
+    for variable_class in [CrocusSweVariable, CrocusDepthVariable][:1]:
+        study = Crocus(variable_class=variable_class, altitude=2400)
+        d = study.year_to_dataset_ordered_dict[1960]
+        print(study.df_massifs_longitude_and_latitude)
+        time_arr = np.array(d.variables['time'])
+        a = study.year_to_daily_time_serie_array[1960]
+        print(a.shape)
diff --git a/experiment/meteo_france_SCM_models/study/crocus/crocus_variables.py b/experiment/meteo_france_SCM_models/study/crocus/crocus_variables.py
new file mode 100644
index 0000000000000000000000000000000000000000..874517a3e8dd2b9e8ca8dab424d8b1c70878e947
--- /dev/null
+++ b/experiment/meteo_france_SCM_models/study/crocus/crocus_variables.py
@@ -0,0 +1,28 @@
+import numpy as np
+
+from experiment.meteo_france_SCM_models.study.abstract_variable import AbstractVariable
+
+
+class CrocusVariable(AbstractVariable):
+
+    @property
+    def daily_time_serie_array(self) -> np.ndarray:
+        return self.variable_array
+
+
+class CrocusSweVariable(CrocusVariable):
+    NAME = 'Snow Water Equivalent'
+    UNIT = 'kg per m2 or mm'
+
+    @classmethod
+    def keyword(cls):
+        return 'SWE_1DY_ISBA'
+
+
+class CrocusDepthVariable(CrocusVariable):
+    NAME = 'Snow Depth'
+    UNIT = 'm'
+
+    @classmethod
+    def keyword(cls):
+        return "SD_1DY_ISBA"
diff --git a/experiment/meteo_france_SCM_models/study/cumulated_study.py b/experiment/meteo_france_SCM_models/study/cumulated_study.py
new file mode 100644
index 0000000000000000000000000000000000000000..e5300ff483796c7a0ae87a09483e89ed57d7cc54
--- /dev/null
+++ b/experiment/meteo_france_SCM_models/study/cumulated_study.py
@@ -0,0 +1,20 @@
+import numpy as np
+
+from experiment.meteo_france_SCM_models.study.abstract_study import AbstractStudy
+from experiment.meteo_france_SCM_models.study.abstract_variable import AbstractVariable
+
+
+class CumulatedStudy(AbstractStudy):
+    def __init__(self, variable_class: type, nb_consecutive_days: int = 1, *args, **kwargs):
+        assert nb_consecutive_days in [1, 3, 5, 7]
+        super().__init__(variable_class, *args, **kwargs)
+        self.nb_consecutive_days = nb_consecutive_days
+
+    def instantiate_variable_object(self, variable_array) -> AbstractVariable:
+        return self.variable_class(variable_array, self.nb_consecutive_days)
+
+    @property
+    def variable_name(self):
+        return super().variable_name + ' cumulated over {} day(s)'.format(self.nb_consecutive_days)
+
+
diff --git a/experiment/meteo_france_SCM_study/visualization/study_visualization/__init__.py b/experiment/meteo_france_SCM_models/study/safran/__init__.py
similarity index 100%
rename from experiment/meteo_france_SCM_study/visualization/study_visualization/__init__.py
rename to experiment/meteo_france_SCM_models/study/safran/__init__.py
diff --git a/experiment/meteo_france_SCM_models/study/safran/safran.py b/experiment/meteo_france_SCM_models/study/safran/safran.py
new file mode 100644
index 0000000000000000000000000000000000000000..f845aa013330365a25eea51fb9e342ec97d873eb
--- /dev/null
+++ b/experiment/meteo_france_SCM_models/study/safran/safran.py
@@ -0,0 +1,74 @@
+import numpy as np
+
+from experiment.meteo_france_SCM_models.study.abstract_extended_study import AbstractExtendedStudy
+from experiment.meteo_france_SCM_models.study.abstract_study import AbstractStudy
+from experiment.meteo_france_SCM_models.study.abstract_variable import AbstractVariable
+from experiment.meteo_france_SCM_models.study.cumulated_study import CumulatedStudy
+from experiment.meteo_france_SCM_models.study.safran.safran_variable import SafranSnowfallVariable, \
+    SafranRainfallVariable, SafranTemperatureVariable, SafranTotalPrecipVariable
+
+
+class Safran(AbstractStudy):
+
+    def __init__(self, variable_class: type, *args, **kwargs):
+        assert variable_class in [SafranSnowfallVariable, SafranRainfallVariable, SafranTemperatureVariable,
+                                  SafranTotalPrecipVariable]
+        super().__init__(variable_class, *args, **kwargs)
+        self.model_name = 'Safran'
+
+    def annual_aggregation_function(self, *args, **kwargs):
+        return np.sum(*args, **kwargs)
+
+
+class SafranSnowfall(Safran, CumulatedStudy):
+
+    def __init__(self, *args, **kwargs):
+        CumulatedStudy.__init__(self, SafranSnowfallVariable, *args, **kwargs)
+        Safran.__init__(self, SafranSnowfallVariable, *args, **kwargs)
+
+
+class ExtendedSafranSnowfall(AbstractExtendedStudy, SafranSnowfall):
+    pass
+
+
+class SafranRainfall(CumulatedStudy, Safran):
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(SafranRainfallVariable, *args, **kwargs)
+
+
+class SafranTotalPrecip(CumulatedStudy, Safran):
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(SafranTotalPrecipVariable, *args, **kwargs)
+
+    def instantiate_variable_object(self, variable_array) -> AbstractVariable:
+        variable_array_snowfall, variable_array_rainfall = variable_array
+        return self.variable_class(variable_array_snowfall, variable_array_rainfall, self.nb_consecutive_days)
+
+
+class ExtendedSafranTotalPrecip(AbstractExtendedStudy, SafranTotalPrecip):
+    pass
+
+
+class SafranTemperature(Safran):
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(SafranTemperatureVariable, *args, **kwargs)
+
+    def annual_aggregation_function(self, *args, **kwargs):
+        return np.mean(*args, **kwargs)
+
+
+if __name__ == '__main__':
+    study = SafranSnowfall()
+    d = study.year_to_dataset_ordered_dict[1958]
+    # print(d.variables['time'])
+    # print(study.all_massif_names)
+    # print(study.massif_name_to_altitudes)
+    # print(study.year_to_daily_time_serie_array[1958].shape)
+    print(study.missing_massif_name)
+
+    # print(len(d.variables['time']))
+    # print(study.year_to_annual_total)
+    # print(study.df_annual_total.columns)
diff --git a/experiment/meteo_france_SCM_models/study/safran/safran_variable.py b/experiment/meteo_france_SCM_models/study/safran/safran_variable.py
new file mode 100644
index 0000000000000000000000000000000000000000..d2c8faa113467438f3bc77fac5c00f8b33c381a6
--- /dev/null
+++ b/experiment/meteo_france_SCM_models/study/safran/safran_variable.py
@@ -0,0 +1,109 @@
+import numpy as np
+
+from experiment.meteo_france_SCM_models.study.abstract_variable import AbstractVariable
+
+
+class SafranSnowfallVariable(AbstractVariable):
+    """"
+    Safran data is hourly
+
+    Hypothesis:
+
+    -How to count how much snowfall in one hour ?
+        I take the average between the rhythm of snowfall per second between the start and the end
+        and multiply that by 60 x 60 which corresponds to the number of seconds in one hour
+
+    -How do how I define the limit of a day ?
+        From the start, i.e. in August at 4am something like that,then if I add a 24H duration, I arrive to the next day
+
+    -How do you aggregate several days ?
+        We aggregate all the N consecutive days into a value x_i, then we take the max
+        (but here the problem might be that the x_i are not idnependent, they are highly dependent one from another)
+    """
+
+    NAME = 'Snowfall'
+    UNIT = 'kg per m2 or mm'
+
+    @classmethod
+    def keyword(cls):
+        return 'Snowf'
+
+    def __init__(self, variable_array, nb_consecutive_days_of_snowfall=1):
+        super().__init__(variable_array)
+        self.nb_consecutive_days_of_snowfall = nb_consecutive_days_of_snowfall
+        # Compute the daily snowfall in kg/m2
+        snowfall_rates = variable_array
+
+        # Compute the mean snowrate, then multiply it by 60 * 60 * 24
+        # day_duration_in_seconds = 24 * 60 * 60
+        # nb_days = len(snowfall_rates) // 24
+        # print(nb_days)
+        # daily_snowrate = [np.mean(snowfall_rates[24 * i:24 * (i + 1) + 1], axis=0) for i in range(nb_days)]
+        # self.daily_snowfall = day_duration_in_seconds * np.array(daily_snowrate)
+
+        # Compute the hourly snowfall first, then aggregate
+        mean_snowfall_rates = 0.5 * (snowfall_rates[:-1] + snowfall_rates[1:])
+        hourly_snowfall = 60 * 60 * mean_snowfall_rates
+        # Transform the snowfall amount into a dataframe
+        nb_days = len(hourly_snowfall) // 24
+        self.daily_snowfall = [sum(hourly_snowfall[24 * i:24 * (i + 1)]) for i in range(nb_days)]
+
+    @property
+    def daily_time_serie_array(self) -> np.ndarray:
+        # Aggregate the daily snowfall by the number of consecutive days
+        shifted_list = [self.daily_snowfall[i:] for i in range(self.nb_consecutive_days_of_snowfall)]
+        # First element of shifted_list is of length n, Second element of length n-1, Third element n-2....
+        # The zip is done with respect to the shortest list
+        snowfall_in_consecutive_days = np.array([sum(e) for e in zip(*shifted_list)])
+        # The returned array is of size n-nb_days+1 x nb_massif
+
+        # so that the length of the vector match a year, we can add zeros (since it corresponds to the July month,
+        # we are sure that there is no snowfall at this period) However such trick does not work for other variable such as Temperature
+
+        return snowfall_in_consecutive_days
+
+
+class SafranRainfallVariable(SafranSnowfallVariable):
+    NAME = 'Rainfall'
+    UNIT = 'kg per m2 or mm'
+
+    @classmethod
+    def keyword(cls):
+        return 'Rainf'
+
+
+class SafranTotalPrecipVariable(AbstractVariable):
+
+    def __init__(self, snow_variable_array, rain_variable_array, nb_consecutive_days_of_snowfall=1):
+        super().__init__(None)
+        self.snow_precipitation = SafranSnowfallVariable(snow_variable_array, nb_consecutive_days_of_snowfall)
+        self.rain_precipitation = SafranRainfallVariable(rain_variable_array, nb_consecutive_days_of_snowfall)
+
+    @classmethod
+    def keyword(cls):
+        return [SafranSnowfallVariable.keyword(), SafranRainfallVariable.keyword()]
+
+    @property
+    def daily_time_serie_array(self) -> np.ndarray:
+        return self.snow_precipitation.daily_time_serie_array + self.rain_precipitation.daily_time_serie_array
+
+
+class SafranTemperatureVariable(AbstractVariable):
+    NAME = 'Temperature'
+    UNIT = 'Celsius Degrees'
+
+    @classmethod
+    def keyword(cls):
+        return 'Tair'
+
+    def __init__(self, variable_array):
+        super().__init__(variable_array)
+        # Temperature are in K, I transform them as celsius
+        self.hourly_temperature = self.variable_array - 273.15
+        nb_days = len(self.hourly_temperature) // 24
+        # Compute the mean temperature
+        self.daily_temperature = [np.mean(self.hourly_temperature[24 * i:24 * (i + 1)], axis=0) for i in range(nb_days)]
+
+    @property
+    def daily_time_serie_array(self):
+        return np.array(self.daily_temperature)
diff --git a/experiment/meteo_france_SCM_study/scm_constants.py b/experiment/meteo_france_SCM_models/study/scm_constants.py
similarity index 100%
rename from experiment/meteo_france_SCM_study/scm_constants.py
rename to experiment/meteo_france_SCM_models/study/scm_constants.py
diff --git a/experiment/meteo_france_SCM_models/visualization/__init__.py b/experiment/meteo_france_SCM_models/visualization/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/experiment/meteo_france_SCM_models/visualization/hypercube_visualization/__init__.py b/experiment/meteo_france_SCM_models/visualization/hypercube_visualization/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/experiment/meteo_france_SCM_study/visualization/hypercube_visualization/abstract_hypercube_visualizer.py b/experiment/meteo_france_SCM_models/visualization/hypercube_visualization/abstract_hypercube_visualizer.py
similarity index 96%
rename from experiment/meteo_france_SCM_study/visualization/hypercube_visualization/abstract_hypercube_visualizer.py
rename to experiment/meteo_france_SCM_models/visualization/hypercube_visualization/abstract_hypercube_visualizer.py
index 32ff017e459cb0f2f6050d5bc46facc27b72e20b..ab333ca2358d2956a20e86ceaa26ad616aa2fe1a 100644
--- a/experiment/meteo_france_SCM_study/visualization/hypercube_visualization/abstract_hypercube_visualizer.py
+++ b/experiment/meteo_france_SCM_models/visualization/hypercube_visualization/abstract_hypercube_visualizer.py
@@ -5,7 +5,7 @@ from typing import Dict, Tuple
 import matplotlib.pyplot as plt
 import pandas as pd
 
-from experiment.meteo_france_SCM_study.visualization.study_visualization.study_visualizer import StudyVisualizer
+from experiment.meteo_france_SCM_models.visualization.study_visualization.study_visualizer import StudyVisualizer
 from utils import cached_property, VERSION_TIME, get_display_name_from_object_type
 
 
diff --git a/experiment/meteo_france_SCM_study/visualization/hypercube_visualization/altitude_hypercube_visualizer.py b/experiment/meteo_france_SCM_models/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
similarity index 97%
rename from experiment/meteo_france_SCM_study/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
rename to experiment/meteo_france_SCM_models/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
index cb8557e287c999291afcdd361b17e29db0432016..ff0083457087b6b30eac7b475085e67800e08789 100644
--- a/experiment/meteo_france_SCM_study/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
+++ b/experiment/meteo_france_SCM_models/visualization/hypercube_visualization/altitude_hypercube_visualizer.py
@@ -2,9 +2,9 @@ import matplotlib.pyplot as plt
 import numpy as np
 import pandas as pd
 
-from experiment.meteo_france_SCM_study.visualization.hypercube_visualization.abstract_hypercube_visualizer import \
+from experiment.meteo_france_SCM_models.visualization.hypercube_visualization.abstract_hypercube_visualizer import \
     AbstractHypercubeVisualizer
-from experiment.meteo_france_SCM_study.visualization.study_visualization.study_visualizer import StudyVisualizer
+from experiment.meteo_france_SCM_models.visualization.study_visualization.study_visualizer import StudyVisualizer
 from experiment.trend_analysis.univariate_test.abstract_univariate_test import AbstractUnivariateTest
 from utils import get_display_name_from_object_type
 
diff --git a/experiment/meteo_france_SCM_study/visualization/hypercube_visualization/main_hypercube_visualization.py b/experiment/meteo_france_SCM_models/visualization/hypercube_visualization/main_hypercube_visualization.py
similarity index 94%
rename from experiment/meteo_france_SCM_study/visualization/hypercube_visualization/main_hypercube_visualization.py
rename to experiment/meteo_france_SCM_models/visualization/hypercube_visualization/main_hypercube_visualization.py
index f274e0ab70060fc9c79cd065d556cb05d3580fde..b46406c74993ff2d2e3bd5c16c3d3189d8770618 100644
--- a/experiment/meteo_france_SCM_study/visualization/hypercube_visualization/main_hypercube_visualization.py
+++ b/experiment/meteo_france_SCM_models/visualization/hypercube_visualization/main_hypercube_visualization.py
@@ -2,13 +2,13 @@ import time
 from itertools import product
 from collections import OrderedDict
 
-from experiment.meteo_france_SCM_study.visualization.hypercube_visualization.altitude_hypercube_visualizer import \
+from experiment.meteo_france_SCM_models.visualization.hypercube_visualization.altitude_hypercube_visualizer import \
     AltitudeHypercubeVisualizer, Altitude_Hypercube_Year_Visualizer
-from experiment.meteo_france_SCM_study.visualization.hypercube_visualization.quantity_altitude_visualizer import \
+from experiment.meteo_france_SCM_models.visualization.hypercube_visualization.quantity_altitude_visualizer import \
     QuantityAltitudeHypercubeVisualizer
-from experiment.meteo_france_SCM_study.visualization.study_visualization.main_study_visualizer import ALL_ALTITUDES, \
+from experiment.meteo_france_SCM_models.visualization.study_visualization.main_study_visualizer import ALL_ALTITUDES, \
     SCM_STUDIES, study_iterator, study_iterator_global
-from experiment.meteo_france_SCM_study.visualization.study_visualization.study_visualizer import StudyVisualizer
+from experiment.meteo_france_SCM_models.visualization.study_visualization.study_visualizer import StudyVisualizer
 from experiment.trend_analysis.univariate_test.abstract_gev_change_point_test import GevLocationChangePointTest, \
     GevScaleChangePointTest, GevShapeChangePointTest
 from utils import get_display_name_from_object_type
diff --git a/experiment/meteo_france_SCM_study/visualization/hypercube_visualization/quantity_altitude_visualizer.py b/experiment/meteo_france_SCM_models/visualization/hypercube_visualization/quantity_altitude_visualizer.py
similarity index 93%
rename from experiment/meteo_france_SCM_study/visualization/hypercube_visualization/quantity_altitude_visualizer.py
rename to experiment/meteo_france_SCM_models/visualization/hypercube_visualization/quantity_altitude_visualizer.py
index f4e29b8b1aa21209814e6501dbc64a4fa356ee59..c558f29861cfdb64c2a81158309712bdc2dae6c8 100644
--- a/experiment/meteo_france_SCM_study/visualization/hypercube_visualization/quantity_altitude_visualizer.py
+++ b/experiment/meteo_france_SCM_models/visualization/hypercube_visualization/quantity_altitude_visualizer.py
@@ -1,6 +1,6 @@
 import pandas as pd
 
-from experiment.meteo_france_SCM_study.visualization.hypercube_visualization.altitude_hypercube_visualizer import \
+from experiment.meteo_france_SCM_models.visualization.hypercube_visualization.altitude_hypercube_visualizer import \
     AltitudeHypercubeVisualizer
 
 
diff --git a/experiment/meteo_france_SCM_models/visualization/studies_visualization/__init__.py b/experiment/meteo_france_SCM_models/visualization/studies_visualization/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/experiment/meteo_france_SCM_study/visualization/studies_visualization/main_studies_visualizer.py b/experiment/meteo_france_SCM_models/visualization/studies_visualization/main_studies_visualizer.py
similarity index 84%
rename from experiment/meteo_france_SCM_study/visualization/studies_visualization/main_studies_visualizer.py
rename to experiment/meteo_france_SCM_models/visualization/studies_visualization/main_studies_visualizer.py
index dbfb52b61814050952726c5c0a3de22095dac92c..ceed354d79333460fdb8af810844553f6684504a 100644
--- a/experiment/meteo_france_SCM_study/visualization/studies_visualization/main_studies_visualizer.py
+++ b/experiment/meteo_france_SCM_models/visualization/studies_visualization/main_studies_visualizer.py
@@ -3,14 +3,14 @@ from experiment.trend_analysis.abstract_score import MannKendall, WeigthedScore,
 from experiment.trend_analysis.univariate_test.abstract_gev_change_point_test import GevLocationChangePointTest, \
     GevScaleChangePointTest, GevShapeChangePointTest
 from experiment.trend_analysis.univariate_test.abstract_univariate_test import MannKendallTrendTest
-from experiment.meteo_france_SCM_study.safran.safran import ExtendedSafranTotalPrecip
-from experiment.meteo_france_SCM_study.visualization.studies_visualization.studies import Studies
-from experiment.meteo_france_SCM_study.visualization.studies_visualization.studies_visualizer import StudiesVisualizer, \
+from experiment.meteo_france_SCM_models.study.safran.safran import ExtendedSafranTotalPrecip
+from experiment.meteo_france_SCM_models.visualization.studies_visualization.studies import Studies
+from experiment.meteo_france_SCM_models.visualization.studies_visualization.studies_visualizer import StudiesVisualizer, \
     AltitudeVisualizer
-from experiment.meteo_france_SCM_study.visualization.study_visualization.main_study_visualizer import ALL_ALTITUDES, \
+from experiment.meteo_france_SCM_models.visualization.study_visualization.main_study_visualizer import ALL_ALTITUDES, \
     study_iterator_global, SCM_STUDIES
 
-from experiment.meteo_france_SCM_study.visualization.study_visualization.study_visualizer import StudyVisualizer
+from experiment.meteo_france_SCM_models.visualization.study_visualization.study_visualizer import StudyVisualizer
 from collections import OrderedDict
 
 
diff --git a/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies.py b/experiment/meteo_france_SCM_models/visualization/studies_visualization/studies.py
similarity index 86%
rename from experiment/meteo_france_SCM_study/visualization/studies_visualization/studies.py
rename to experiment/meteo_france_SCM_models/visualization/studies_visualization/studies.py
index 350f90d6f2043a86bf57df6a0483ca1a476f45cc..8affe7977966765c55670b617b17d421ea4f40fc 100644
--- a/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies.py
+++ b/experiment/meteo_france_SCM_models/visualization/studies_visualization/studies.py
@@ -1,8 +1,8 @@
 from collections import OrderedDict
 from typing import Dict
 
-from experiment.meteo_france_SCM_study.abstract_study import AbstractStudy
-from experiment.meteo_france_SCM_study.scm_constants import ALTITUDES
+from experiment.meteo_france_SCM_models.study.abstract_study import AbstractStudy
+from experiment.meteo_france_SCM_models.study.scm_constants import ALTITUDES
 
 
 class Studies(object):
diff --git a/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies_visualizer.py b/experiment/meteo_france_SCM_models/visualization/studies_visualization/studies_visualizer.py
similarity index 96%
rename from experiment/meteo_france_SCM_study/visualization/studies_visualization/studies_visualizer.py
rename to experiment/meteo_france_SCM_models/visualization/studies_visualization/studies_visualizer.py
index 664506f859ae2917f796157e5d8aeb4b65190313..56abb1415be8b7b43b450cfb750e8e1de0d9b003 100644
--- a/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies_visualizer.py
+++ b/experiment/meteo_france_SCM_models/visualization/studies_visualization/studies_visualizer.py
@@ -9,12 +9,12 @@ import pandas as pd
 import matplotlib.pyplot as plt
 from matplotlib.lines import Line2D
 
-from experiment.meteo_france_SCM_study.abstract_extended_study import AbstractExtendedStudy
+from experiment.meteo_france_SCM_models.study.abstract_extended_study import AbstractExtendedStudy
 from experiment.trend_analysis.univariate_test.abstract_univariate_test import AbstractUnivariateTest
-from experiment.meteo_france_SCM_study.visualization.studies_visualization.studies import \
+from experiment.meteo_france_SCM_models.visualization.studies_visualization.studies import \
     Studies
-from experiment.meteo_france_SCM_study.visualization.study_visualization.study_visualizer import StudyVisualizer
-from experiment.meteo_france_SCM_study.visualization.utils import plot_df
+from experiment.meteo_france_SCM_models.visualization.study_visualization.study_visualizer import StudyVisualizer
+from experiment.meteo_france_SCM_models.visualization.utils import plot_df
 from utils import cached_property, get_display_name_from_object_type, VERSION_TIME
 
 
diff --git a/experiment/meteo_france_SCM_models/visualization/study_visualization/__init__.py b/experiment/meteo_france_SCM_models/visualization/study_visualization/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/experiment/meteo_france_SCM_study/visualization/study_visualization/main_study_visualizer.py b/experiment/meteo_france_SCM_models/visualization/study_visualization/main_study_visualizer.py
similarity index 95%
rename from experiment/meteo_france_SCM_study/visualization/study_visualization/main_study_visualizer.py
rename to experiment/meteo_france_SCM_models/visualization/study_visualization/main_study_visualizer.py
index 4f74b69f8c0bb2438ea59dcbb6c1d4b9c6c7b318..57323d9075eec00ee93c14a63bcff527c27f2310 100644
--- a/experiment/meteo_france_SCM_study/visualization/study_visualization/main_study_visualizer.py
+++ b/experiment/meteo_france_SCM_models/visualization/study_visualization/main_study_visualizer.py
@@ -2,13 +2,13 @@ import time
 from typing import List
 
 from experiment.trend_analysis.abstract_score import MannKendall
-from experiment.meteo_france_SCM_study.abstract_study import AbstractStudy
-from experiment.meteo_france_SCM_study.crocus.crocus import CrocusDepth, CrocusSwe, ExtendedCrocusDepth, \
+from experiment.meteo_france_SCM_models.study.abstract_study import AbstractStudy
+from experiment.meteo_france_SCM_models.study.crocus.crocus import CrocusDepth, CrocusSwe, ExtendedCrocusDepth, \
     ExtendedCrocusSwe, CrocusDaysWithSnowOnGround
-from experiment.meteo_france_SCM_study.safran.safran import SafranSnowfall, ExtendedSafranSnowfall, SafranRainfall, \
+from experiment.meteo_france_SCM_models.study.safran.safran import SafranSnowfall, ExtendedSafranSnowfall, SafranRainfall, \
     SafranTemperature, SafranTotalPrecip
 
-from experiment.meteo_france_SCM_study.visualization.study_visualization.study_visualizer import StudyVisualizer
+from experiment.meteo_france_SCM_models.visualization.study_visualization.study_visualizer import StudyVisualizer
 from collections import OrderedDict
 
 from experiment.trend_analysis.univariate_test.abstract_gev_change_point_test import GevLocationChangePointTest
diff --git a/experiment/meteo_france_SCM_study/visualization/study_visualization/study_visualizer.py b/experiment/meteo_france_SCM_models/visualization/study_visualization/study_visualizer.py
similarity index 98%
rename from experiment/meteo_france_SCM_study/visualization/study_visualization/study_visualizer.py
rename to experiment/meteo_france_SCM_models/visualization/study_visualization/study_visualizer.py
index a5deda714f8a0c1168074bec984df70fb6143264..836b8ca0effbc0d5829c826aa3239be15b4c8abe 100644
--- a/experiment/meteo_france_SCM_study/visualization/study_visualization/study_visualizer.py
+++ b/experiment/meteo_france_SCM_models/visualization/study_visualization/study_visualizer.py
@@ -10,12 +10,12 @@ import pandas as pd
 import seaborn as sns
 
 from experiment.trend_analysis.abstract_score import MeanScore, AbstractTrendScore
-from experiment.meteo_france_SCM_study.abstract_study import AbstractStudy
+from experiment.meteo_france_SCM_models.study.abstract_study import AbstractStudy
 from experiment.trend_analysis.univariate_test.abstract_gev_change_point_test import AbstractGevChangePointTest
 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_SCM_study.visualization.utils import create_adjusted_axes
+from experiment.meteo_france_SCM_models.visualization.utils import create_adjusted_axes
 from experiment.utils import average_smoothing_with_sliding_window
 from extreme_estimator.estimator.full_estimator.abstract_full_estimator import \
     FullEstimatorInASingleStepWithSmoothMargin
@@ -333,9 +333,11 @@ class StudyVisualizer(object):
 
     @property
     def starting_years(self):
+        # Starting years are any potential between the start_year and the end_year.
+        # start_year is a potential starting_year
+        # end_year is not a potential starting_year
         start_year, stop_year = self.study.start_year_and_stop_year
-        # return list(range(start_year, stop_year - 2 * self.number_of_top_values))
-        return list(range(start_year, 1991))
+        return list(range(start_year, stop_year))
 
     @cached_property
     def massif_name_to_detailed_scores(self):
diff --git a/experiment/meteo_france_SCM_study/visualization/utils.py b/experiment/meteo_france_SCM_models/visualization/utils.py
similarity index 100%
rename from experiment/meteo_france_SCM_study/visualization/utils.py
rename to experiment/meteo_france_SCM_models/visualization/utils.py
diff --git a/experiment/meteo_france_SCM_study/safran/fit_safran.py b/experiment/meteo_france_SCM_study/safran/fit_safran.py
deleted file mode 100644
index 3b46d8e756cc2e5dbefe83257c6a2c664aaf6aec..0000000000000000000000000000000000000000
--- a/experiment/meteo_france_SCM_study/safran/fit_safran.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import pandas as pd
-
-from experiment.meteo_france_SCM_study.safran.safran import ExtendedSafranSnowfall
-from utils import VERSION
-
-
-def fit_mle_gev_for_all_safran_and_different_days():
-    # Dump the result in a csv
-    dfs = []
-    for safran_alti in [1800, 2400][:1]:
-        for nb_day in [1, 3, 7][:]:
-            print('alti: {}, nb_day: {}'.format(safran_alti, nb_day))
-            # safran = Safran(safran_alti, nb_day)
-            safran = ExtendedSafranSnowfall(safran_alti, nb_day)
-            df = safran.df_gev_mle_each_massif
-            df.index += ' Safran{} with {} days'.format(safran.altitude, safran.nb_consecutive_days)
-            dfs.append(df)
-    df = pd.concat(dfs)
-    path = r'/home/erwan/Documents/projects/spatiotemporalextremes/local/spatio_temporal_datasets/results/fit_mle_massif/fit_mle_gev_{}.csv'
-    df.to_csv(path.format(VERSION))
-
-
-if __name__ == '__main__':
-    fit_mle_gev_for_all_safran_and_different_days()
diff --git a/experiment/trend_analysis/non_stationary_trends.py b/experiment/trend_analysis/non_stationary_trends.py
index 627e3281cd2897c9c3ff954730cb909ac5bf5c11..e7e96bc91fd6e6c5405292b98701058bb0023afc 100644
--- a/experiment/trend_analysis/non_stationary_trends.py
+++ b/experiment/trend_analysis/non_stationary_trends.py
@@ -4,7 +4,7 @@ from typing import Union
 
 import pandas as pd
 
-from experiment.meteo_france_SCM_study.visualization.utils import align_yaxis_on_zero
+from experiment.meteo_france_SCM_models.visualization.utils import align_yaxis_on_zero
 from extreme_estimator.estimator.abstract_estimator import AbstractEstimator
 from scipy.stats import chi2
 from extreme_estimator.estimator.full_estimator.abstract_full_estimator import \
diff --git a/extreme_estimator/extreme_models/margin_model/margin_function/abstract_margin_function.py b/extreme_estimator/extreme_models/margin_model/margin_function/abstract_margin_function.py
index 34cc9b0d4f488c4687350e17628e1773f31822e0..315ab036d6fba0bf6f335d05cd052c94284c7c63 100644
--- a/extreme_estimator/extreme_models/margin_model/margin_function/abstract_margin_function.py
+++ b/extreme_estimator/extreme_models/margin_model/margin_function/abstract_margin_function.py
@@ -5,7 +5,7 @@ import matplotlib.pyplot as plt
 import numpy as np
 import pandas as pd
 
-from experiment.meteo_france_SCM_study.visualization.utils import create_adjusted_axes
+from experiment.meteo_france_SCM_models.visualization.utils import create_adjusted_axes
 from extreme_estimator.margin_fits.gev.gev_params import GevParams
 from extreme_estimator.margin_fits.plot.create_shifted_cmap import imshow_shifted
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
diff --git a/test/test_experiment/test_SCM_study.py b/test/test_experiment/test_SCM_study.py
index e8070c84f14c6f36af0efb63415b6d8ce18c255a..cde5ebf2f8cfc765233dc4039b0eb9760b90cbdb 100644
--- a/test/test_experiment/test_SCM_study.py
+++ b/test/test_experiment/test_SCM_study.py
@@ -3,12 +3,10 @@ import unittest
 
 import pandas as pd
 
-from experiment.meteo_france_SCM_study.crocus.crocus import ExtendedCrocusSwe
-from experiment.meteo_france_SCM_study.visualization.study_visualization.main_study_visualizer import study_iterator
-from experiment.meteo_france_SCM_study.safran.safran import SafranSnowfall, ExtendedSafranSnowfall, SafranTemperature, \
-    SafranRainfall, SafranTotalPrecip
-from experiment.meteo_france_SCM_study.visualization.study_visualization.study_visualizer import StudyVisualizer
-from test.test_utils import load_scm_studies
+from experiment.meteo_france_SCM_models.visualization.study_visualization.main_study_visualizer import study_iterator
+from experiment.meteo_france_SCM_models.study.safran.safran import SafranSnowfall, ExtendedSafranSnowfall, SafranTemperature, \
+    SafranTotalPrecip
+from experiment.meteo_france_SCM_models.visualization.study_visualization.study_visualizer import StudyVisualizer
 
 
 # TESTS TO REACTIVATE SOMETIMES
diff --git a/test/test_experiment/test_coordinate_sensitivity.py b/test/test_experiment/test_coordinate_sensitivity.py
index 2674c703e04c3463fb3e766ad14145415ce5fbf7..2282a8b3b6d99509ea8e3827a6b965eb5fcaece5 100644
--- a/test/test_experiment/test_coordinate_sensitivity.py
+++ b/test/test_experiment/test_coordinate_sensitivity.py
@@ -1,11 +1,11 @@
 import unittest
 
-from experiment.meteo_france_SCM_study.crocus.crocus import CrocusSwe
-from experiment.meteo_france_SCM_study.visualization.study_visualization.main_study_visualizer import \
+from experiment.meteo_france_SCM_models.study.crocus.crocus import CrocusSwe
+from experiment.meteo_france_SCM_models.visualization.study_visualization.main_study_visualizer import \
     study_iterator_global
 from experiment.trend_analysis.non_stationary_trends import \
     ConditionalIndedendenceLocationTrendTest
-from experiment.meteo_france_SCM_study.visualization.study_visualization.study_visualizer import StudyVisualizer
+from experiment.meteo_france_SCM_models.visualization.study_visualization.study_visualizer import StudyVisualizer
 from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.uniform_normalization import \
     BetweenZeroAndOneNormalization, BetweenZeroAndOneNormalizationMinEpsilon, BetweenZeroAndOneNormalizationMaxEpsilon
 from utils import get_display_name_from_object_type
diff --git a/test/test_utils.py b/test/test_utils.py
index 00fe031f846ae3ed6b5ec4b484af9c1356da638f..a53cb224c9f31b655ea837fbd3fe7d95c88e4eb3 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -1,9 +1,8 @@
 from itertools import product
 from typing import List
 
-from experiment.meteo_france_SCM_study.abstract_study import AbstractStudy
-from experiment.meteo_france_SCM_study.crocus.crocus import Crocus, CrocusSwe, CrocusDepth
-from experiment.meteo_france_SCM_study.crocus.crocus_variables import CrocusSweVariable, CrocusDepthVariable
+from experiment.meteo_france_SCM_models.study.abstract_study import AbstractStudy
+from experiment.meteo_france_SCM_models.study.crocus.crocus import Crocus, CrocusSwe, CrocusDepth
 from extreme_estimator.estimator.full_estimator.abstract_full_estimator import SmoothMarginalsThenUnitaryMsp, \
     FullEstimatorInASingleStepWithSmoothMargin
 from extreme_estimator.estimator.max_stable_estimator.abstract_max_stable_estimator import MaxStableEstimator
@@ -15,7 +14,7 @@ from extreme_estimator.extreme_models.max_stable_model.abstract_max_stable_model
     AbstractMaxStableModelWithCovarianceFunction, CovarianceFunction
 from extreme_estimator.extreme_models.max_stable_model.max_stable_models import Smith, BrownResnick, Schlather, \
     Geometric, ExtremalT, ISchlather
-from experiment.meteo_france_SCM_study.safran.safran import SafranSnowfall, Safran, SafranRainfall, \
+from experiment.meteo_france_SCM_models.study.safran.safran import SafranSnowfall, Safran, SafranRainfall, \
     SafranTemperature, SafranTotalPrecip
 from spatio_temporal_dataset.coordinates.spatial_coordinates.alps_station_3D_coordinates import \
     AlpsStation3DCoordinatesWithAnisotropy