From 892385b4685932d5376be7d3f47b189fa9b00fef Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Tue, 22 Oct 2019 14:12:31 +0200
Subject: [PATCH] [EUROCODE DATA] improve display for the eurocode return level
 graphs. rename linear margin temporal models.

---
 experiment/eurocode_data/eurocode_region.py   |  2 +-
 .../eurocode_data/eurocode_visualizer.py      | 10 +++--
 .../eurocode_data/main_eurocode_drawing.py    | 38 ++++++++++++-------
 experiment/eurocode_data/utils.py             |  2 +-
 .../trend_analysis/non_stationary_trends.py   |  6 +--
 ...bstract_comparison_non_stationary_model.py |  6 +--
 .../abstract_gev_trend_test.py                |  4 +-
 .../gev_trend_test_one_parameter.py           |  8 ++--
 .../gev_trend_test_two_parameters.py          |  6 +--
 .../temporal_linear_margin_models.py          | 12 +++---
 test/test_experiment/test_region_eurocode.py  | 13 ++++++-
 .../test_gev/test_gev_temporal.py             |  8 ++--
 .../test_gev/test_gev_temporal_bayesian.py    | 10 ++---
 test/test_utils.py                            |  4 +-
 14 files changed, 76 insertions(+), 53 deletions(-)

diff --git a/experiment/eurocode_data/eurocode_region.py b/experiment/eurocode_data/eurocode_region.py
index 722cc33d..cb92c1ab 100644
--- a/experiment/eurocode_data/eurocode_region.py
+++ b/experiment/eurocode_data/eurocode_region.py
@@ -42,7 +42,7 @@ class AbstractEurocodeRegion(object):
 
     def plot_max_loading(self, ax, altitudes):
         ax.plot(altitudes, [self.eurocode_max_loading(altitude) for altitude in altitudes],
-                label='Eurocode limit')
+                label='Eurocode limit', color='k')
 
 
 class C1(AbstractEurocodeRegion):
diff --git a/experiment/eurocode_data/eurocode_visualizer.py b/experiment/eurocode_data/eurocode_visualizer.py
index b5231235..69c80f60 100644
--- a/experiment/eurocode_data/eurocode_visualizer.py
+++ b/experiment/eurocode_data/eurocode_visualizer.py
@@ -9,7 +9,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.utils import cre
 
 
 def plot_model_name_to_dep_to_ordered_return_level_uncertainties(
-        dep_to_model_name_to_ordered_return_level_uncertainties, show=True):
+        dep_to_model_name_to_ordered_return_level_uncertainties, altitudes, show=True):
     # Create a 9 x 9 plot
     axes = create_adjusted_axes(3, 3)
     axes = list(axes.flatten())
@@ -21,6 +21,7 @@ def plot_model_name_to_dep_to_ordered_return_level_uncertainties(
     ax_to_departement = dict(zip(axes, DEPARTEMENT_TYPES[::-1]))
     for ax, departement in ax_to_departement.items():
         plot_dep_to_model_name_dep_to_ordered_return_level_uncertainties(ax, departement,
+                                                                         altitudes,
                                                                          dep_to_model_name_to_ordered_return_level_uncertainties[
                                                                              departement]
                                                                          )
@@ -35,11 +36,11 @@ def plot_model_name_to_dep_to_ordered_return_level_uncertainties(
 
 
 def plot_dep_to_model_name_dep_to_ordered_return_level_uncertainties(ax, dep_class,
+                                                                     altitudes,
                                                                      model_name_to_ordered_return_level_uncertainties:
                                                                      Dict[str, List[
                                                                          EurocodeLevelUncertaintyFromExtremes]]):
     colors = ['red', 'blue', 'green']
-    altitudes = EUROCODE_ALTITUDES
     alpha = 0.2
     # Display the EUROCODE return level
     dep_object = dep_class()
@@ -48,10 +49,11 @@ def plot_dep_to_model_name_dep_to_ordered_return_level_uncertainties(ax, dep_cla
     for color, (model_name, ordered_return_level_uncertaines) in zip(colors,
                                                                      model_name_to_ordered_return_level_uncertainties.items()):
         mean = [r.posterior_mean for r in ordered_return_level_uncertaines]
-        ax.plot(altitudes, mean, '-', color=color)
+        ax.plot(altitudes, mean, '-', color=color, label=model_name)
         lower_bound = [r.poster_uncertainty_interval[0] for r in ordered_return_level_uncertaines]
         upper_bound = [r.poster_uncertainty_interval[1] for r in ordered_return_level_uncertaines]
         ax.fill_between(altitudes, lower_bound, upper_bound, color=color, alpha=alpha)
+    ax.legend()
     ax.set_title(str(dep_object))
-    ax.set_ylabel('Maximum {} quantile (in N $m^-2$)'.format(EUROCODE_QUANTILE))
+    ax.set_ylabel('Maximum {} quantile in 2017 (in N $m^-2$)'.format(EUROCODE_QUANTILE))
     ax.set_xlabel('Altitude')
diff --git a/experiment/eurocode_data/main_eurocode_drawing.py b/experiment/eurocode_data/main_eurocode_drawing.py
index f5561017..af8a0800 100644
--- a/experiment/eurocode_data/main_eurocode_drawing.py
+++ b/experiment/eurocode_data/main_eurocode_drawing.py
@@ -1,3 +1,4 @@
+import time
 from collections import OrderedDict
 
 from experiment.eurocode_data.eurocode_visualizer import plot_model_name_to_dep_to_ordered_return_level_uncertainties
@@ -8,19 +9,19 @@ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visual
     AltitudeHypercubeVisualizer
 from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.utils_hypercube import \
     load_altitude_visualizer
-from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryStationModel, \
-    NonStationaryLocationAndScaleModel
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
+    NonStationaryLocationAndScaleTemporalModel
 from root_utils import get_display_name_from_object_type
 
 
 # Model class
 
 
-def dep_to_ordered_return_level_uncertainties(model_class, last_year_for_the_data):
-    model_name = get_display_name_from_object_type(type(model_class)) + ' ' + str(last_year_for_the_data)
+def dep_to_ordered_return_level_uncertainties(model_class, last_year_for_the_data, altitudes):
+    model_class_str = get_display_name_from_object_type(model_class).split('TemporalModel')[0]
+    model_name = model_class_str + ' 1958-' + str(last_year_for_the_data)
     # Load altitude visualizer
-    # todo: add last years attributes that enables to change the years
-    altitude_visualizer = load_altitude_visualizer(AltitudeHypercubeVisualizer, altitudes=EUROCODE_ALTITUDES,
+    altitude_visualizer = load_altitude_visualizer(AltitudeHypercubeVisualizer, altitudes=altitudes,
                                                    last_starting_year=None, nb_data_reduced_for_speed=False,
                                                    only_first_one=False, save_to_file=False,
                                                    exact_starting_year=1958,
@@ -30,7 +31,8 @@ def dep_to_ordered_return_level_uncertainties(model_class, last_year_for_the_dat
     # Loop on the data
     assert isinstance(altitude_visualizer.tuple_to_study_visualizer, OrderedDict)
     dep_to_ordered_return_level_uncertainty = {dep: [] for dep in DEPARTEMENT_TYPES}
-    for visualizer in altitude_visualizer.tuple_to_study_visualizer.values():
+    for altitude, visualizer in altitude_visualizer.tuple_to_study_visualizer.items():
+        print('{} processing altitude = {} '.format(model_name, altitude))
         dep_to_return_level_uncertainty = visualizer.dep_class_to_eurocode_level_uncertainty(model_class, last_year_for_the_data)
         for dep, return_level_uncertainty in dep_to_return_level_uncertainty.items():
             dep_to_ordered_return_level_uncertainty[dep].append(return_level_uncertainty)
@@ -39,15 +41,25 @@ def dep_to_ordered_return_level_uncertainties(model_class, last_year_for_the_dat
 
 
 def main_drawing():
+    # Select parameters
+    fast_plot = [True, False][1]
     model_class_and_last_year = [
-        (StationaryStationModel, LAST_YEAR_FOR_EUROCODE),
-        (StationaryStationModel, 2017),
-        (NonStationaryLocationAndScaleModel, 2017),
-    ][:1]
+                                    (StationaryTemporalModel, LAST_YEAR_FOR_EUROCODE),
+                                    (StationaryTemporalModel, 2017),
+                                    (NonStationaryLocationAndScaleTemporalModel, 2017),
+                                ][:]
+    altitudes = EUROCODE_ALTITUDES[:]
+    if fast_plot:
+        model_class_and_last_year = model_class_and_last_year[:1]
+        altitudes = altitudes[:2]
+
     model_name_to_dep_to_ordered_return_level = {}
     for model_class, last_year_for_the_data in model_class_and_last_year:
+        start = time.time()
         model_name_to_dep_to_ordered_return_level.update(
-            dep_to_ordered_return_level_uncertainties(model_class, last_year_for_the_data))
+            dep_to_ordered_return_level_uncertainties(model_class, last_year_for_the_data, altitudes))
+        duration = time.time() - start
+        print(model_class, duration)
     # Transform the dictionary into the desired format
     dep_to_model_name_to_ordered_return_level_uncertainties = {}
     for dep in DEPARTEMENT_TYPES:
@@ -56,7 +68,7 @@ def main_drawing():
         dep_to_model_name_to_ordered_return_level_uncertainties[dep] = d2
     # Plot graph
     plot_model_name_to_dep_to_ordered_return_level_uncertainties(
-        dep_to_model_name_to_ordered_return_level_uncertainties, show=True)
+        dep_to_model_name_to_ordered_return_level_uncertainties, altitudes, show=True)
 
 
 if __name__ == '__main__':
diff --git a/experiment/eurocode_data/utils.py b/experiment/eurocode_data/utils.py
index f293fdcd..c8476c6f 100644
--- a/experiment/eurocode_data/utils.py
+++ b/experiment/eurocode_data/utils.py
@@ -2,7 +2,7 @@
 # Eurocode quantile correspond to a 50 year return period
 EUROCODE_QUANTILE = 0.98
 # Altitudes (between low and mid altitudes) < 2000m
-EUROCODE_ALTITUDES = [900, 1200, 1500, 1800][:2]
+EUROCODE_ALTITUDES = [900, 1200, 1500, 1800]
 #  Last year taken into account for the Eurocode
 # Date of publication was 2014, therefore the winter 2013/2014 could not have been measured
 # Therefore, the winter 2012/2013 was the last one. Thus, 2012 is the last year for the Eurocode
diff --git a/experiment/trend_analysis/non_stationary_trends.py b/experiment/trend_analysis/non_stationary_trends.py
index ab4debc4..2f62913c 100644
--- a/experiment/trend_analysis/non_stationary_trends.py
+++ b/experiment/trend_analysis/non_stationary_trends.py
@@ -13,7 +13,7 @@ from extreme_fit.estimator.margin_estimator.abstract_margin_estimator import Lin
 from extreme_fit.model.margin_model.linear_margin_model.linear_margin_model import \
     LinearStationaryMarginModel, LinearNonStationaryLocationMarginModel
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
-    StationaryStationModel, NonStationaryLocationStationModel
+    StationaryTemporalModel, NonStationaryLocationTemporalModel
 from extreme_fit.model.margin_model.margin_function.linear_margin_function import LinearMarginFunction
 from extreme_fit.model.utils import OptimizationConstants
 from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
@@ -179,8 +179,8 @@ class IndependenceLocationTrendTest(AbstractNonStationaryTrendTest):
     def __init__(self, station_name, *args, **kwargs):
         super().__init__(*args, **kwargs,
                          estimator_class=LinearMarginEstimator,
-                         stationary_margin_model_class=StationaryStationModel,
-                         non_stationary_margin_model_class=NonStationaryLocationStationModel)
+                         stationary_margin_model_class=StationaryTemporalModel,
+                         non_stationary_margin_model_class=NonStationaryLocationTemporalModel)
         self.station_name = station_name
 
     @property
diff --git a/experiment/trend_analysis/univariate_test/abstract_comparison_non_stationary_model.py b/experiment/trend_analysis/univariate_test/abstract_comparison_non_stationary_model.py
index e7a64a34..51f0cc77 100644
--- a/experiment/trend_analysis/univariate_test/abstract_comparison_non_stationary_model.py
+++ b/experiment/trend_analysis/univariate_test/abstract_comparison_non_stationary_model.py
@@ -1,7 +1,7 @@
 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 extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
-    NonStationaryLocationStationModel, NonStationaryScaleStationModel
+    NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel
 import numpy as np
 
 
@@ -28,10 +28,10 @@ class AbstractComparisonNonStationaryModelOneParameter(AbstractComparisonNonStat
 class ComparisonAgainstMu(AbstractComparisonNonStationaryModelOneParameter, GevLocationAndScaleTrendTest):
 
     def __init__(self, years, maxima, starting_year):
-        super().__init__(years, maxima, starting_year, constrained_model_class=NonStationaryLocationStationModel)
+        super().__init__(years, maxima, starting_year, constrained_model_class=NonStationaryLocationTemporalModel)
 
 
 class ComparisonAgainstSigma(AbstractComparisonNonStationaryModelOneParameter, GevLocationAndScaleTrendTest):
 
     def __init__(self, years, maxima, starting_year):
-        super().__init__(years, maxima, starting_year, constrained_model_class=NonStationaryScaleStationModel)
+        super().__init__(years, maxima, starting_year, constrained_model_class=NonStationaryScaleTemporalModel)
diff --git a/experiment/trend_analysis/univariate_test/abstract_gev_trend_test.py b/experiment/trend_analysis/univariate_test/abstract_gev_trend_test.py
index cbea66c2..6a532548 100644
--- a/experiment/trend_analysis/univariate_test/abstract_gev_trend_test.py
+++ b/experiment/trend_analysis/univariate_test/abstract_gev_trend_test.py
@@ -11,7 +11,7 @@ from extreme_fit.estimator.margin_estimator.abstract_margin_estimator import Lin
 from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
     AbstractTemporalLinearMarginModel
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
-    StationaryStationModel
+    StationaryTemporalModel
 from extreme_fit.model.utils import SafeRunException
 from extreme_fit.distribution.gev.gev_params import GevParams
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
@@ -24,7 +24,7 @@ class AbstractGevTrendTest(AbstractUnivariateTest):
     nb_years_for_quantile_evolution = 10
 
     def __init__(self, years, maxima, starting_year, unconstrained_model_class,
-                 constrained_model_class=StationaryStationModel,
+                 constrained_model_class=StationaryTemporalModel,
                  fit_method=AbstractTemporalLinearMarginModel.ISMEV_GEV_FIT_METHOD_STR):
         super().__init__(years, maxima, starting_year)
         self.fit_method = fit_method
diff --git a/experiment/trend_analysis/univariate_test/gev_trend_test_one_parameter.py b/experiment/trend_analysis/univariate_test/gev_trend_test_one_parameter.py
index 27e2322b..9883777a 100644
--- a/experiment/trend_analysis/univariate_test/gev_trend_test_one_parameter.py
+++ b/experiment/trend_analysis/univariate_test/gev_trend_test_one_parameter.py
@@ -1,6 +1,6 @@
 from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
-    NonStationaryLocationStationModel, NonStationaryScaleStationModel, NonStationaryShapeStationModel
+    NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel, NonStationaryShapeTemporalModel
 from extreme_fit.distribution.gev.gev_params import GevParams
 
 
@@ -23,7 +23,7 @@ class GevLocationTrendTest(GevTrendTestOneParameter):
 
     def __init__(self, years, maxima, starting_year):
         super().__init__(years, maxima, starting_year,
-                         NonStationaryLocationStationModel, GevParams.LOC)
+                         NonStationaryLocationTemporalModel, GevParams.LOC)
 
     def _slope_strength(self):
         return self.non_stationary_constant_gev_params.quantile_strength_evolution(p=self.quantile_for_strength,
@@ -44,7 +44,7 @@ class GevScaleTrendTest(GevTrendTestOneParameter):
 
     def __init__(self, years, maxima, starting_year):
         super().__init__(years, maxima, starting_year,
-                         NonStationaryScaleStationModel, GevParams.SCALE)
+                         NonStationaryScaleTemporalModel, GevParams.SCALE)
 
     def _slope_strength(self):
         return self.non_stationary_constant_gev_params.quantile_strength_evolution(
@@ -67,4 +67,4 @@ class GevShapeTrendTest(GevTrendTestOneParameter):
 
     def __init__(self, years, maxima, starting_year):
         super().__init__(years, maxima, starting_year,
-                         NonStationaryShapeStationModel, GevParams.SHAPE)
+                         NonStationaryShapeTemporalModel, GevParams.SHAPE)
diff --git a/experiment/trend_analysis/univariate_test/gev_trend_test_two_parameters.py b/experiment/trend_analysis/univariate_test/gev_trend_test_two_parameters.py
index be3671df..85456427 100644
--- a/experiment/trend_analysis/univariate_test/gev_trend_test_two_parameters.py
+++ b/experiment/trend_analysis/univariate_test/gev_trend_test_two_parameters.py
@@ -1,6 +1,6 @@
 from experiment.trend_analysis.univariate_test.abstract_gev_trend_test import AbstractGevTrendTest
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
-    NonStationaryLocationAndScaleModel, StationaryStationModel
+    NonStationaryLocationAndScaleTemporalModel, StationaryTemporalModel
 from extreme_fit.distribution.gev.gev_params import GevParams
 
 
@@ -13,9 +13,9 @@ class GevTrendTestTwoParameters(AbstractGevTrendTest):
 
 class GevLocationAndScaleTrendTest(GevTrendTestTwoParameters):
 
-    def __init__(self, years, maxima, starting_year, constrained_model_class=StationaryStationModel):
+    def __init__(self, years, maxima, starting_year, constrained_model_class=StationaryTemporalModel):
         super().__init__(years, maxima, starting_year,
-                         NonStationaryLocationAndScaleModel, constrained_model_class=constrained_model_class)
+                         NonStationaryLocationAndScaleTemporalModel, constrained_model_class=constrained_model_class)
 
     @property
     def mu1(self):
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 1efcf41a..33d267bc 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
@@ -4,13 +4,13 @@ from extreme_fit.model.utils import r
 from extreme_fit.distribution.gev.gev_params import GevParams
 
 
-class StationaryStationModel(AbstractTemporalLinearMarginModel):
+class StationaryTemporalModel(AbstractTemporalLinearMarginModel):
 
     def load_margin_functions(self, gev_param_name_to_dims=None):
         super().load_margin_functions({})
 
 
-class NonStationaryLocationStationModel(AbstractTemporalLinearMarginModel):
+class NonStationaryLocationTemporalModel(AbstractTemporalLinearMarginModel):
 
     def load_margin_functions(self, gev_param_name_to_dims=None):
         super().load_margin_functions({GevParams.LOC: [self.coordinates.idx_temporal_coordinates]})
@@ -20,7 +20,7 @@ class NonStationaryLocationStationModel(AbstractTemporalLinearMarginModel):
         return 1
 
 
-class NonStationaryScaleStationModel(AbstractTemporalLinearMarginModel):
+class NonStationaryScaleTemporalModel(AbstractTemporalLinearMarginModel):
 
     def load_margin_functions(self, gev_param_name_to_dims=None):
         super().load_margin_functions({GevParams.SCALE: [self.coordinates.idx_temporal_coordinates]})
@@ -30,7 +30,7 @@ class NonStationaryScaleStationModel(AbstractTemporalLinearMarginModel):
         return 1
 
 
-class NonStationaryLogScaleStationModel(NonStationaryScaleStationModel):
+class NonStationaryLogScaleTemporalModel(NonStationaryScaleTemporalModel):
 
     def load_margin_functions(self, gev_param_name_to_dims=None):
         super().load_margin_functions({GevParams.SCALE: [self.coordinates.idx_temporal_coordinates]})
@@ -40,7 +40,7 @@ class NonStationaryLogScaleStationModel(NonStationaryScaleStationModel):
         return r('exp')
 
 
-class NonStationaryShapeStationModel(AbstractTemporalLinearMarginModel):
+class NonStationaryShapeTemporalModel(AbstractTemporalLinearMarginModel):
 
     def load_margin_functions(self, gev_param_name_to_dims=None):
         super().load_margin_functions({GevParams.SHAPE: [self.coordinates.idx_temporal_coordinates]})
@@ -50,7 +50,7 @@ class NonStationaryShapeStationModel(AbstractTemporalLinearMarginModel):
         return 1
 
 
-class NonStationaryLocationAndScaleModel(AbstractTemporalLinearMarginModel):
+class NonStationaryLocationAndScaleTemporalModel(AbstractTemporalLinearMarginModel):
 
     def load_margin_functions(self, gev_param_name_to_dims=None):
         super().load_margin_functions({GevParams.LOC: [self.coordinates.idx_temporal_coordinates],
diff --git a/test/test_experiment/test_region_eurocode.py b/test/test_experiment/test_region_eurocode.py
index 4aa64fb1..48db73b5 100644
--- a/test/test_experiment/test_region_eurocode.py
+++ b/test/test_experiment/test_region_eurocode.py
@@ -12,12 +12,21 @@ class TestCoordinateSensitivity(unittest.TestCase):
 
     def test_departement_eurocode_plot(self):
         # Create an example
-        example = EurocodeLevelUncertaintyFromExtremes(posterior_mean=1.0,
+        example1 = EurocodeLevelUncertaintyFromExtremes(posterior_mean=1.0,
                                                        poster_uncertainty_interval=(0.5, 1.25))
+        example2 = EurocodeLevelUncertaintyFromExtremes(posterior_mean=0.2,
+                                                       poster_uncertainty_interval=(0.1, 0.35))
+        example3 = EurocodeLevelUncertaintyFromExtremes(posterior_mean=0.4,
+                                                       poster_uncertainty_interval=(0.25, 0.6))
+        altitude_examples = EUROCODE_ALTITUDES[:2]
         dep_to_model_name_toreturn_level_uncertainty = {
-            dep: {"example": [example for _ in EUROCODE_ALTITUDES]} for dep in DEPARTEMENT_TYPES
+            dep: {"example1": [example1 for _ in altitude_examples],
+                  "example2": [example2 for _ in altitude_examples],
+                  "example3": [example3 for _ in altitude_examples],
+                  } for dep in DEPARTEMENT_TYPES
         }
         plot_model_name_to_dep_to_ordered_return_level_uncertainties(dep_to_model_name_toreturn_level_uncertainty,
+                                                                     altitudes=altitude_examples,
                                                                      show=self.DISPLAY)
 
 
diff --git a/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal.py b/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal.py
index 097b17b2..8e96aa05 100644
--- a/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal.py
+++ b/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal.py
@@ -4,8 +4,8 @@ import numpy as np
 import pandas as pd
 
 from extreme_fit.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator
-from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryStationModel, \
-    NonStationaryLocationStationModel
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
+    NonStationaryLocationTemporalModel
 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 \
@@ -36,7 +36,7 @@ class TestGevTemporal(unittest.TestCase):
 
     def test_gev_temporal_margin_fit_stationary(self):
         # Create estimator
-        margin_model = StationaryStationModel(self.coordinates)
+        margin_model = StationaryTemporalModel(self.coordinates)
         estimator = LinearMarginEstimator(self.dataset, margin_model)
         estimator.fit()
         ref = {'loc': 0.0219, 'scale': 1.0347, 'shape': 0.8295}
@@ -71,7 +71,7 @@ class TestGevTemporal(unittest.TestCase):
         self.assertNotEqual(mle_params_estimated_year5, mle_params_estimated_year3)
 
     def fit_non_stationary_estimator(self, starting_point):
-        margin_model = NonStationaryLocationStationModel(self.coordinates, starting_point=starting_point + self.start_year)
+        margin_model = NonStationaryLocationTemporalModel(self.coordinates, starting_point=starting_point + self.start_year)
         estimator = LinearMarginEstimator(self.dataset, margin_model)
         estimator.fit()
         return estimator
diff --git a/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal_bayesian.py b/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal_bayesian.py
index 9c85fdb3..ddde2c1a 100644
--- a/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal_bayesian.py
+++ b/test/test_extreme_estimator/test_margin_fits/test_gev/test_gev_temporal_bayesian.py
@@ -8,8 +8,8 @@ from extreme_fit.distribution.gev.gev_params import GevParams
 from extreme_fit.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator
 from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
     AbstractTemporalLinearMarginModel
-from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryStationModel, \
-    NonStationaryLocationStationModel, NonStationaryLocationAndScaleModel
+from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel, \
+    NonStationaryLocationTemporalModel, NonStationaryLocationAndScaleTemporalModel
 from extreme_fit.model.result_from_model_fit.result_from_extremes import ResultFromExtremes
 from extreme_fit.model.utils import r, set_seed_r
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
@@ -42,7 +42,7 @@ class TestGevTemporalBayesian(unittest.TestCase):
 
     def test_gev_temporal_margin_fit_stationary(self):
         # Create estimator
-        estimator_fitted = fitted_linear_margin_estimator(StationaryStationModel, self.coordinates, self.dataset,
+        estimator_fitted = fitted_linear_margin_estimator(StationaryTemporalModel, self.coordinates, self.dataset,
                                                           starting_year=0,
                                                           fit_method=AbstractTemporalLinearMarginModel.EXTREMES_FEVD_BAYESIAN_FIT_METHOD_STR)
         ref = {'loc': 0.30440183718071845, 'scale': 1.301639258861012, 'shape': 0.303652401064773}
@@ -53,7 +53,7 @@ class TestGevTemporalBayesian(unittest.TestCase):
 
     def test_gev_temporal_margin_fit_non_stationary_location(self):
         # Create estimator
-        estimator = fitted_linear_margin_estimator(NonStationaryLocationStationModel, self.coordinates, self.dataset,
+        estimator = fitted_linear_margin_estimator(NonStationaryLocationTemporalModel, self.coordinates, self.dataset,
                                                    starting_year=0,
                                                    fit_method=AbstractTemporalLinearMarginModel.EXTREMES_FEVD_BAYESIAN_FIT_METHOD_STR)
         mu1_values = estimator.result_from_model_fit.df_posterior_samples.iloc[:, 1]
@@ -65,7 +65,7 @@ class TestGevTemporalBayesian(unittest.TestCase):
 
     def test_gev_temporal_margin_fit_non_stationary_location_and_scale(self):
         # Create estimator
-        estimator = fitted_linear_margin_estimator(NonStationaryLocationAndScaleModel, self.coordinates, self.dataset,
+        estimator = fitted_linear_margin_estimator(NonStationaryLocationAndScaleTemporalModel, self.coordinates, self.dataset,
                                                    starting_year=0,
                                                    fit_method=AbstractTemporalLinearMarginModel.EXTREMES_FEVD_BAYESIAN_FIT_METHOD_STR)
         mu1_values = estimator.result_from_model_fit.df_posterior_samples.iloc[:, 1]
diff --git a/test/test_utils.py b/test/test_utils.py
index e9536f80..c9faaed7 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -9,7 +9,7 @@ from extreme_fit.estimator.max_stable_estimator.abstract_max_stable_estimator im
 from extreme_fit.model.margin_model.linear_margin_model.linear_margin_model import LinearAllParametersAllDimsMarginModel, \
     ConstantMarginModel
 from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import \
-    NonStationaryLocationStationModel, NonStationaryScaleStationModel, NonStationaryShapeStationModel
+    NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel, NonStationaryShapeTemporalModel
 from extreme_fit.model.max_stable_model.abstract_max_stable_model import \
     AbstractMaxStableModelWithCovarianceFunction, CovarianceFunction
 from extreme_fit.model.max_stable_model.max_stable_models import Smith, BrownResnick, Schlather, \
@@ -40,7 +40,7 @@ TEST_3D_SPATIAL_COORDINATES = [AlpsStation3DCoordinatesWithAnisotropy]
 TEST_TEMPORAL_COORDINATES = [ConsecutiveTemporalCoordinates]
 TEST_SPATIO_TEMPORAL_COORDINATES = [UniformSpatioTemporalCoordinates, LinSpaceSpatial2DSpatioTemporalCoordinates]
 TEST_MARGIN_TYPES = [ConstantMarginModel, LinearAllParametersAllDimsMarginModel][:]
-TEST_NON_STATIONARY_TEMPORAL_MARGIN_TYPES = [NonStationaryLocationStationModel, NonStationaryScaleStationModel, NonStationaryShapeStationModel]
+TEST_NON_STATIONARY_TEMPORAL_MARGIN_TYPES = [NonStationaryLocationTemporalModel, NonStationaryScaleTemporalModel, NonStationaryShapeTemporalModel]
 TEST_MAX_STABLE_ESTIMATOR = [MaxStableEstimator]
 TEST_FULL_ESTIMATORS = [SmoothMarginalsThenUnitaryMsp, FullEstimatorInASingleStepWithSmoothMargin][:]
 
-- 
GitLab