From d5264f49ed3a95b272f3eaa7441ecf5955e4b456 Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Mon, 20 May 2019 15:31:52 +0200
Subject: [PATCH] [SCM][TREND TEST] add abstract gev trend test. add
 centeredscaled normalization

---
 .../main_studies_visualizer.py                |  7 ++-
 .../studies_visualizer.py                     |  2 +-
 .../study_visualization/study_visualizer.py   | 14 ++---
 .../trend_analysis/non_stationary_trends.py   |  4 +-
 .../univariate_trend_test/__init__.py         |  0
 .../abstract_gev_trend_test.py                | 58 +++++++++++++++++++
 .../abstract_trend_test.py                    |  4 --
 .../temporal_linear_margin_model.py           |  3 +-
 .../extreme_models/result_from_fit.py         |  3 +-
 .../margin_fits/gev/ismev_gev_fit.py          |  1 +
 .../margin_fits/margin_fits_utils.py          | 12 +++-
 .../transformation/abstract_transformation.py | 14 +++++
 .../test_margin_temporal.py                   | 16 +----
 .../test_margin_temporal_transformed.py       | 16 +----
 .../test_max_stable_temporal.py               | 19 +-----
 .../test_gev/test_gev_temporal.py             |  8 +--
 16 files changed, 111 insertions(+), 70 deletions(-)
 create mode 100644 experiment/trend_analysis/univariate_trend_test/__init__.py
 create mode 100644 experiment/trend_analysis/univariate_trend_test/abstract_gev_trend_test.py
 rename experiment/trend_analysis/{ => univariate_trend_test}/abstract_trend_test.py (97%)

diff --git a/experiment/meteo_france_SCM_study/visualization/studies_visualization/main_studies_visualizer.py b/experiment/meteo_france_SCM_study/visualization/studies_visualization/main_studies_visualizer.py
index 86e9ec11..19d45bc5 100644
--- a/experiment/meteo_france_SCM_study/visualization/studies_visualization/main_studies_visualizer.py
+++ b/experiment/meteo_france_SCM_study/visualization/studies_visualization/main_studies_visualizer.py
@@ -1,5 +1,6 @@
 from experiment.trend_analysis.abstract_score import MannKendall, WeigthedScore, MeanScore, MedianScore
-from experiment.trend_analysis.abstract_trend_test import MannKendallTrendTest
+from experiment.trend_analysis.univariate_trend_test.abstract_gev_trend_test import GevLocationTrendTest
+from experiment.trend_analysis.univariate_trend_test.abstract_trend_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, \
@@ -42,9 +43,9 @@ def altitude_trends_significant():
     # altitudes that have 20 massifs at least
     altitudes = ALL_ALTITUDES[3:-6]
     # altitudes = ALL_ALTITUDES[3:5]
-    # altitudes = ALL_ALTITUDES[:2]
+    # altitudes = ALL_ALTITUDES[2:4]
     for study_class in SCM_STUDIES[:1]:
-        trend_test_classes = [MannKendallTrendTest][:]
+        trend_test_classes = [MannKendallTrendTest, GevLocationTrendTest][1:]
         visualizers = [StudyVisualizer(study, temporal_non_stationarity=True, verbose=False)
                        for study in study_iterator_global(study_classes=[study_class], only_first_one=only_first_one,
                                                           altitudes=altitudes)]
diff --git a/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies_visualizer.py b/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies_visualizer.py
index 27a54572..8ca0156c 100644
--- a/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies_visualizer.py
+++ b/experiment/meteo_france_SCM_study/visualization/studies_visualization/studies_visualizer.py
@@ -10,7 +10,7 @@ import matplotlib.pyplot as plt
 from matplotlib.lines import Line2D
 
 from experiment.meteo_france_SCM_study.abstract_extended_study import AbstractExtendedStudy
-from experiment.trend_analysis.abstract_trend_test import AbstractTrendTest
+from experiment.trend_analysis.univariate_trend_test.abstract_trend_test import AbstractTrendTest
 from experiment.meteo_france_SCM_study.visualization.studies_visualization.studies import \
     Studies
 from experiment.meteo_france_SCM_study.visualization.study_visualization.study_visualizer import StudyVisualizer
diff --git a/experiment/meteo_france_SCM_study/visualization/study_visualization/study_visualizer.py b/experiment/meteo_france_SCM_study/visualization/study_visualization/study_visualizer.py
index 402e28f0..4c2ef180 100644
--- a/experiment/meteo_france_SCM_study/visualization/study_visualization/study_visualizer.py
+++ b/experiment/meteo_france_SCM_study/visualization/study_visualization/study_visualizer.py
@@ -10,7 +10,7 @@ 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.trend_analysis.abstract_trend_test import AbstractTrendTest
+from experiment.trend_analysis.univariate_trend_test.abstract_trend_test import AbstractTrendTest
 from experiment.trend_analysis.non_stationary_trends import \
     ConditionalIndedendenceLocationTrendTest, MaxStableLocationTrendTest, IndependenceLocationTrendTest
 from experiment.meteo_france_SCM_study.visualization.utils import create_adjusted_axes
@@ -382,14 +382,14 @@ class StudyVisualizer(object):
         massif_name_to_trend_test_count = self.massif_name_to_trend_test_count(trend_test_class, starting_year_to_weight)
         df = pd.concat(list(massif_name_to_trend_test_count.values()), axis=1, sort=False)
         df.fillna(0.0, inplace=True)
-        df = df.mean(axis=1)
+        s = df.mean(axis=1)
         assert np.allclose(df.sum(), 100)
         # Add the significant trend into the count of normal trend
-        if AbstractTrendTest.SIGNIFICATIVE_POSITIVE_TREND in df.columns:
-            df[AbstractTrendTest.POSITIVE_TREND] += df[AbstractTrendTest.SIGNIFICATIVE_POSITIVE_TREND]
-        if AbstractTrendTest.SIGNIFICATIVE_NEGATIVE_TREND in df.columns:
-            df[AbstractTrendTest.NEGATIVE_TREND] += df[AbstractTrendTest.SIGNIFICATIVE_NEGATIVE_TREND]
-        return df
+        if AbstractTrendTest.SIGNIFICATIVE_POSITIVE_TREND in s.index:
+            s[AbstractTrendTest.POSITIVE_TREND] += s[AbstractTrendTest.SIGNIFICATIVE_POSITIVE_TREND]
+        if AbstractTrendTest.SIGNIFICATIVE_NEGATIVE_TREND in s.index:
+            s[AbstractTrendTest.NEGATIVE_TREND] += s[AbstractTrendTest.SIGNIFICATIVE_NEGATIVE_TREND]
+        return s
 
     @cached_property
     def massif_name_to_scores(self):
diff --git a/experiment/trend_analysis/non_stationary_trends.py b/experiment/trend_analysis/non_stationary_trends.py
index ae8de281..66913e07 100644
--- a/experiment/trend_analysis/non_stationary_trends.py
+++ b/experiment/trend_analysis/non_stationary_trends.py
@@ -16,7 +16,7 @@ from extreme_estimator.extreme_models.margin_model.linear_margin_model import \
     LinearStationaryMarginModel, LinearNonStationaryLocationMarginModel
 from extreme_estimator.extreme_models.margin_model.margin_function.linear_margin_function import LinearMarginFunction
 from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \
-    NonStationaryStationModel
+    NonStationaryLocationStationModel
 from extreme_estimator.extreme_models.utils import OptimizationConstants
 from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
 from utils import get_display_name_from_object_type
@@ -183,7 +183,7 @@ class IndependenceLocationTrendTest(AbstractNonStationaryTrendTest):
         super().__init__(*args, **kwargs,
                          estimator_class=LinearMarginEstimator,
                          stationary_margin_model_class=StationaryStationModel,
-                         non_stationary_margin_model_class=NonStationaryStationModel)
+                         non_stationary_margin_model_class=NonStationaryLocationStationModel)
         self.station_name = station_name
 
     @property
diff --git a/experiment/trend_analysis/univariate_trend_test/__init__.py b/experiment/trend_analysis/univariate_trend_test/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/experiment/trend_analysis/univariate_trend_test/abstract_gev_trend_test.py b/experiment/trend_analysis/univariate_trend_test/abstract_gev_trend_test.py
new file mode 100644
index 00000000..77248e32
--- /dev/null
+++ b/experiment/trend_analysis/univariate_trend_test/abstract_gev_trend_test.py
@@ -0,0 +1,58 @@
+import pandas as pd
+from scipy.stats import chi2
+import numpy as np
+from sklearn.preprocessing import normalize
+from experiment.trend_analysis.univariate_trend_test.abstract_trend_test import AbstractTrendTest
+from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator
+from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \
+    NonStationaryLocationStationModel
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
+from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \
+    AbstractTemporalCoordinates
+from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.abstract_transformation import \
+    CenteredScaledNormalization
+from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.uniform_normalization import \
+    BetweenZeroAndOneNormalization
+from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
+from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \
+    AbstractSpatioTemporalObservations
+
+
+class AbstractGevTrendTest(AbstractTrendTest):
+
+    def __init__(self, years_after_change_point, maxima_after_change_point, non_stationary_model_class):
+        super().__init__(years_after_change_point, maxima_after_change_point)
+        df = pd.DataFrame({AbstractCoordinates.COORDINATE_T: years_after_change_point})
+        df_maxima_gev = pd.DataFrame(maxima_after_change_point, index=df.index)
+        observations = AbstractSpatioTemporalObservations(df_maxima_gev=df_maxima_gev)
+        self.coordinates = AbstractTemporalCoordinates.from_df(df, transformation_class=BetweenZeroAndOneNormalization)
+        # self.coordinates = AbstractTemporalCoordinates.from_df(df, transformation_class=CenteredScaledNormalization)
+        self.dataset = AbstractDataset(observations=observations, coordinates=self.coordinates)
+
+        # Fit stationary model
+        self.stationary_estimator = LinearMarginEstimator(self.dataset, StationaryStationModel(self.coordinates))
+        self.stationary_estimator.fit()
+
+        # Fit non stationary model
+        self.non_stationary_estimator = LinearMarginEstimator(self.dataset,
+                                                              non_stationary_model_class(self.coordinates))
+        self.non_stationary_estimator.fit()
+
+    @property
+    def likelihood_ratio(self):
+        return 2 * (self.non_stationary_estimator.result_from_fit.deviance -
+                    self.stationary_estimator.result_from_fit.deviance)
+
+    @property
+    def is_significant(self) -> bool:
+        return self.likelihood_ratio > chi2.ppf(q=1 - self.SIGNIFICANCE_LEVEL, df=1)
+
+
+class GevLocationTrendTest(AbstractGevTrendTest):
+
+    def __init__(self, years_after_change_point, maxima_after_change_point):
+        super().__init__(years_after_change_point, maxima_after_change_point, NonStationaryLocationStationModel)
+
+    @property
+    def test_sign(self) -> int:
+        return np.sign(self.non_stationary_estimator.margin_function_fitted.mu1_temporal_trend)
diff --git a/experiment/trend_analysis/abstract_trend_test.py b/experiment/trend_analysis/univariate_trend_test/abstract_trend_test.py
similarity index 97%
rename from experiment/trend_analysis/abstract_trend_test.py
rename to experiment/trend_analysis/univariate_trend_test/abstract_trend_test.py
index 7a43a7da..a87598b3 100644
--- a/experiment/trend_analysis/abstract_trend_test.py
+++ b/experiment/trend_analysis/univariate_trend_test/abstract_trend_test.py
@@ -99,7 +99,3 @@ class MannKendallTrendTest(AbstractTrendTest):
 
 class SpearmanRhoTrendTest(AbstractTrendTest):
     pass
-
-
-class AbstractNonStationaryGevTrendTest(AbstractTrendTest):
-    pass
diff --git a/extreme_estimator/extreme_models/margin_model/temporal_linear_margin_model.py b/extreme_estimator/extreme_models/margin_model/temporal_linear_margin_model.py
index 42574333..aee5481c 100644
--- a/extreme_estimator/extreme_models/margin_model/temporal_linear_margin_model.py
+++ b/extreme_estimator/extreme_models/margin_model/temporal_linear_margin_model.py
@@ -21,6 +21,7 @@ class TemporalLinearMarginModel(LinearMarginModel):
         # Modify df_coordinates_temp
         df_coordinates_temp = self.add_starting_temporal_point(df_coordinates_temp)
         # Gev Fit
+        assert data.shape[1] == len(df_coordinates_temp.values)
         res = safe_run_r_estimator(function=r('gev.fit'), use_start=self.use_start_value,
                                    xdat=ro.FloatVector(data[0]), y=df_coordinates_temp.values, mul=self.mul)
         return ResultFromIsmev(res, self.margin_function_start_fit.gev_param_name_to_dims)
@@ -40,7 +41,7 @@ class StationaryStationModel(TemporalLinearMarginModel):
         return get_null()
 
 
-class NonStationaryStationModel(TemporalLinearMarginModel):
+class NonStationaryLocationStationModel(TemporalLinearMarginModel):
 
     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/extreme_estimator/extreme_models/result_from_fit.py b/extreme_estimator/extreme_models/result_from_fit.py
index d20187c1..afd325d2 100644
--- a/extreme_estimator/extreme_models/result_from_fit.py
+++ b/extreme_estimator/extreme_models/result_from_fit.py
@@ -46,12 +46,13 @@ class ResultFromFit(object):
 
 class ResultFromIsmev(ResultFromFit):
 
-    def __init__(self, result_from_fit: robjects.ListVector, gev_param_name_to_dim) -> None:
+    def __init__(self, result_from_fit: robjects.ListVector, gev_param_name_to_dim=None) -> None:
         super().__init__(result_from_fit)
         self.gev_param_name_to_dim = gev_param_name_to_dim
 
     @property
     def margin_coef_dict(self):
+        assert self.gev_param_name_to_dim is not None
         # Build the Coeff dict from gev_param_name_to_dim
         coef_dict = {}
         i = 0
diff --git a/extreme_estimator/margin_fits/gev/ismev_gev_fit.py b/extreme_estimator/margin_fits/gev/ismev_gev_fit.py
index 42eba04a..778fc1bb 100644
--- a/extreme_estimator/margin_fits/gev/ismev_gev_fit.py
+++ b/extreme_estimator/margin_fits/gev/ismev_gev_fit.py
@@ -7,6 +7,7 @@ from extreme_estimator.margin_fits.margin_fits_utils import spatial_extreme_gevm
 
 class IsmevGevFit(GevFit):
     # todo: this could be modeled with a margin_function depending only on time
+    # todo: I should remove the call to this object, in order to centralize all the calls
 
     def __init__(self, x_gev: np.ndarray, y=None, mul=None):
         super().__init__(x_gev)
diff --git a/extreme_estimator/margin_fits/margin_fits_utils.py b/extreme_estimator/margin_fits/margin_fits_utils.py
index c22a9ca3..31de2d17 100644
--- a/extreme_estimator/margin_fits/margin_fits_utils.py
+++ b/extreme_estimator/margin_fits/margin_fits_utils.py
@@ -1,7 +1,8 @@
 import numpy as np
 import rpy2.robjects as ro
 
-from extreme_estimator.extreme_models.utils import r, get_null
+from extreme_estimator.extreme_models.result_from_fit import ResultFromIsmev
+from extreme_estimator.extreme_models.utils import r, get_null, safe_run_r_estimator
 
 """
 These two functions are “extremely light” functions to fit the GEV/GPD. These functions are mainlyuseful 
@@ -29,6 +30,13 @@ IsMev fit functions
 
 
 def ismev_gev_fit(x_gev, y, mul):
+    """
+    For non-stationary fitting it is recommended that the covariates within the generalized linear models are
+    (at least approximately) centered and scaled (i.e.the columns of ydat should be approximately centered and scaled).
+    """
+    # print('Mean x={}, variance x={}'.format(np.mean(x_gev), np.var(x_gev)))
+    # print('Mean y={}, variance y={}'.format(np.mean(y), np.var(y)))
+
     xdat = ro.FloatVector(x_gev)
     gev_fit = r('gev.fit')
     y = y if y is not None else get_null()
@@ -45,4 +53,4 @@ def ismev_gev_fit(x_gev, y, mul):
 #     a = np.array([2, 2])
 #     v = ro.vectors.FloatVector((1, 2, 3, 4, 5))
 #     ro.globalenv['a'] = a
-#     print(r('class(a)'))
\ No newline at end of file
+#     print(r('class(a)'))
diff --git a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py
index e4092e0f..aaa82a54 100644
--- a/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py
+++ b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation/abstract_transformation.py
@@ -1,5 +1,6 @@
 import pandas as pd
 import numpy as np
+from sklearn.preprocessing import Normalizer
 
 
 class AbstractTransformation(object):
@@ -29,3 +30,16 @@ class IdentityTransformation(AbstractTransformation):
     def transform_array(self, coordinate: np.ndarray):
         super().transform_array(coordinate)
         return coordinate
+
+
+class CenteredScaledNormalization(AbstractTransformation):
+
+    def __init__(self, df_coordinates):
+        super().__init__(df_coordinates)
+        assert self.nb_dimensions == 1
+        self.transformer = Normalizer().fit(df_coordinates.transpose().values.reshape(-1, 1))
+
+    def transform_array(self, coordinate: np.ndarray):
+        return self.transformer.transform(np.array([coordinate]))[0]
+
+
diff --git a/test/test_extreme_estimator/test_extreme_models/test_margin_temporal.py b/test/test_extreme_estimator/test_extreme_models/test_margin_temporal.py
index 2388fcb3..6ba798ee 100644
--- a/test/test_extreme_estimator/test_extreme_models/test_margin_temporal.py
+++ b/test/test_extreme_estimator/test_extreme_models/test_margin_temporal.py
@@ -1,25 +1,13 @@
-import random
 import unittest
 
 import numpy as np
-import pandas as pd
 
 from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator
 from extreme_estimator.extreme_models.margin_model.linear_margin_model import LinearNonStationaryLocationMarginModel, \
     LinearStationaryMarginModel
-from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \
-    NonStationaryStationModel
-from extreme_estimator.extreme_models.utils import r, set_seed_r, set_seed_for_test
-from extreme_estimator.margin_fits.gev.gevmle_fit import GevMleFit
-from extreme_estimator.margin_fits.gev.ismev_gev_fit import IsmevGevFit
-from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
-from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \
-    AbstractTemporalCoordinates
-from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
+from extreme_estimator.extreme_models.utils import set_seed_for_test
 from spatio_temporal_dataset.dataset.simulation_dataset import MarginDataset
-from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \
-    AbstractSpatioTemporalObservations
-from test.test_utils import load_test_spatiotemporal_coordinates, load_smooth_margin_models
+from test.test_utils import load_test_spatiotemporal_coordinates
 
 
 class TestMarginTemporal(unittest.TestCase):
diff --git a/test/test_extreme_estimator/test_extreme_models/test_margin_temporal_transformed.py b/test/test_extreme_estimator/test_extreme_models/test_margin_temporal_transformed.py
index 8f4f688f..bb6f2662 100644
--- a/test/test_extreme_estimator/test_extreme_models/test_margin_temporal_transformed.py
+++ b/test/test_extreme_estimator/test_extreme_models/test_margin_temporal_transformed.py
@@ -1,29 +1,17 @@
-import random
 import unittest
 
 import numpy as np
-import pandas as pd
 
 from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator
 from extreme_estimator.extreme_models.margin_model.linear_margin_model import LinearNonStationaryLocationMarginModel, \
     LinearStationaryMarginModel
-from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \
-    NonStationaryStationModel
-from extreme_estimator.extreme_models.utils import r, set_seed_r, set_seed_for_test
-from extreme_estimator.margin_fits.gev.gevmle_fit import GevMleFit
-from extreme_estimator.margin_fits.gev.ismev_gev_fit import IsmevGevFit
-from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
+from extreme_estimator.extreme_models.utils import set_seed_for_test
 from spatio_temporal_dataset.coordinates.spatio_temporal_coordinates.abstract_spatio_temporal_coordinates import \
     AbstractSpatioTemporalCoordinates
-from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \
-    AbstractTemporalCoordinates
 from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.uniform_normalization import \
     BetweenZeroAndOneNormalization
-from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
 from spatio_temporal_dataset.dataset.simulation_dataset import MarginDataset
-from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \
-    AbstractSpatioTemporalObservations
-from test.test_utils import load_test_spatiotemporal_coordinates, load_smooth_margin_models
+from test.test_utils import load_test_spatiotemporal_coordinates
 
 
 class TestMarginTemporal(unittest.TestCase):
diff --git a/test/test_extreme_estimator/test_extreme_models/test_max_stable_temporal.py b/test/test_extreme_estimator/test_extreme_models/test_max_stable_temporal.py
index 035c21c2..6a359c9f 100644
--- a/test/test_extreme_estimator/test_extreme_models/test_max_stable_temporal.py
+++ b/test/test_extreme_estimator/test_extreme_models/test_max_stable_temporal.py
@@ -1,27 +1,14 @@
-import random
 import unittest
 
 import numpy as np
-import pandas as pd
 
 from extreme_estimator.estimator.full_estimator.abstract_full_estimator import \
     FullEstimatorInASingleStepWithSmoothMargin
-from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator
 from extreme_estimator.extreme_models.margin_model.linear_margin_model import LinearNonStationaryLocationMarginModel, \
     LinearStationaryMarginModel
-from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \
-    NonStationaryStationModel
-from extreme_estimator.extreme_models.utils import r, set_seed_r, set_seed_for_test
-from extreme_estimator.margin_fits.gev.gevmle_fit import GevMleFit
-from extreme_estimator.margin_fits.gev.ismev_gev_fit import IsmevGevFit
-from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
-from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \
-    AbstractTemporalCoordinates
-from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
-from spatio_temporal_dataset.dataset.simulation_dataset import MarginDataset, FullSimulatedDataset
-from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \
-    AbstractSpatioTemporalObservations
-from test.test_utils import load_test_spatiotemporal_coordinates, load_smooth_margin_models, load_test_max_stable_models
+from extreme_estimator.extreme_models.utils import set_seed_for_test
+from spatio_temporal_dataset.dataset.simulation_dataset import FullSimulatedDataset
+from test.test_utils import load_test_spatiotemporal_coordinates, load_test_max_stable_models
 
 
 class TestMaxStableTemporal(unittest.TestCase):
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 249b5167..38636360 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
@@ -5,10 +5,8 @@ import pandas as pd
 
 from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator
 from extreme_estimator.extreme_models.margin_model.temporal_linear_margin_model import StationaryStationModel, \
-    NonStationaryStationModel
+    NonStationaryLocationStationModel
 from extreme_estimator.extreme_models.utils import r, set_seed_r
-from extreme_estimator.margin_fits.gev.gevmle_fit import GevMleFit
-from extreme_estimator.margin_fits.gev.ismev_gev_fit import IsmevGevFit
 from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
 from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_coordinates import \
     AbstractTemporalCoordinates
@@ -48,7 +46,7 @@ class TestGevTemporal(unittest.TestCase):
 
     def test_gev_temporal_margin_fit_nonstationary(self):
         # Create estimator
-        margin_model = NonStationaryStationModel(self.coordinates)
+        margin_model = NonStationaryLocationStationModel(self.coordinates)
         estimator = LinearMarginEstimator(self.dataset, margin_model)
         estimator.fit()
         self.assertNotEqual(estimator.margin_function_fitted.mu1_temporal_trend, 0.0)
@@ -71,7 +69,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 = NonStationaryStationModel(self.coordinates, starting_point=starting_point + self.start_year)
+        margin_model = NonStationaryLocationStationModel(self.coordinates, starting_point=starting_point + self.start_year)
         estimator = LinearMarginEstimator(self.dataset, margin_model)
         estimator.fit()
         return estimator
-- 
GitLab