From f846e3f6bbb4e41bfbe202a72c73f5de434b3cdd Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Fri, 23 Nov 2018 17:18:43 +0100
Subject: [PATCH] [COORDINATES] add axis coordinates

---
 .../margin_model/abstract_margin_model.py     |  2 +-
 .../abstract_margin_function.py               |  2 +-
 .../independent_margin_function.py            |  2 +-
 .../extreme_models/max_stable_model/test.R    |  2 +-
 .../robustness_plot/msp_robustness.py         | 14 +++---
 .../__init__.py                               |  0
 .../abstract_coordinates.py}                  | 22 +++++++---
 .../axis_coordinates}/__init__.py             |  0
 .../axis_coordinates/axis_coordinates.py      | 21 +++++++++
 .../spatial_coordinates/__init__.py           |  0
 .../alps_station_2D_coordinates.py            |  6 +--
 .../alps_station_3D_coordinates.py            |  6 +--
 .../generated_coordinates.py                  |  2 +-
 .../transformed_coordinates/__init__.py       |  0
 .../abstract_transformation.py                |  0
 .../tranformation_3D.py                       |  2 +-
 .../transformation_2D.py                      |  2 +-
 .../transformed_coordinates.py                |  4 +-
 .../dataset/abstract_dataset.py               |  4 +-
 .../dataset/simulation_dataset.py             |  2 +-
 .../marginals/spatial_marginals.py            |  2 +-
 .../annual_maxima_observations.py             |  2 +-
 .../test_R_model/test_margin_function.py      |  2 +-
 .../test_estimator/test_full_estimators.py    |  2 +-
 .../test_estimator/test_margin_estimators.py  |  3 +-
 .../test_max_stable_estimators.py             |  2 +-
 .../test_coordinates.py                       | 44 +++++++++++++++++++
 .../test_spatial_coordinates.py               | 34 --------------
 28 files changed, 110 insertions(+), 74 deletions(-)
 rename spatio_temporal_dataset/{spatial_coordinates => coordinates}/__init__.py (100%)
 rename spatio_temporal_dataset/{spatial_coordinates/abstract_spatial_coordinates.py => coordinates/abstract_coordinates.py} (87%)
 rename spatio_temporal_dataset/{spatial_coordinates/transformations => coordinates/axis_coordinates}/__init__.py (100%)
 create mode 100644 spatio_temporal_dataset/coordinates/axis_coordinates/axis_coordinates.py
 create mode 100644 spatio_temporal_dataset/coordinates/spatial_coordinates/__init__.py
 rename spatio_temporal_dataset/{ => coordinates}/spatial_coordinates/alps_station_2D_coordinates.py (77%)
 rename spatio_temporal_dataset/{ => coordinates}/spatial_coordinates/alps_station_3D_coordinates.py (86%)
 rename spatio_temporal_dataset/{ => coordinates}/spatial_coordinates/generated_coordinates.py (90%)
 create mode 100644 spatio_temporal_dataset/coordinates/transformed_coordinates/__init__.py
 rename spatio_temporal_dataset/{spatial_coordinates/transformations => coordinates/transformed_coordinates}/abstract_transformation.py (100%)
 rename spatio_temporal_dataset/{spatial_coordinates/transformations => coordinates/transformed_coordinates}/tranformation_3D.py (96%)
 rename spatio_temporal_dataset/{spatial_coordinates/transformations => coordinates/transformed_coordinates}/transformation_2D.py (95%)
 rename spatio_temporal_dataset/{spatial_coordinates => coordinates/transformed_coordinates}/transformed_coordinates.py (76%)
 create mode 100644 test/test_spatio_temporal_dataset/test_coordinates.py
 delete mode 100644 test/test_spatio_temporal_dataset/test_spatial_coordinates.py

diff --git a/extreme_estimator/extreme_models/margin_model/abstract_margin_model.py b/extreme_estimator/extreme_models/margin_model/abstract_margin_model.py
index 4d4f6262..46d04cec 100644
--- a/extreme_estimator/extreme_models/margin_model/abstract_margin_model.py
+++ b/extreme_estimator/extreme_models/margin_model/abstract_margin_model.py
@@ -3,7 +3,7 @@ import numpy as np
 from extreme_estimator.extreme_models.abstract_model import AbstractModel
 from extreme_estimator.extreme_models.margin_model.margin_function.abstract_margin_function import AbstractMarginFunction
 from extreme_estimator.gev_params import GevParams
-from spatio_temporal_dataset.spatial_coordinates.abstract_spatial_coordinates import AbstractSpatialCoordinates
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
 
 
 class AbstractMarginModel(AbstractModel):
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 ef0928c8..865aee30 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
@@ -3,7 +3,7 @@ import matplotlib.pyplot as plt
 import numpy as np
 
 from extreme_estimator.gev_params import GevParams
-from spatio_temporal_dataset.spatial_coordinates.abstract_spatial_coordinates import AbstractSpatialCoordinates
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
 
 
 class AbstractMarginFunction(object):
diff --git a/extreme_estimator/extreme_models/margin_model/margin_function/independent_margin_function.py b/extreme_estimator/extreme_models/margin_model/margin_function/independent_margin_function.py
index 422a3584..dc7d27c5 100644
--- a/extreme_estimator/extreme_models/margin_model/margin_function/independent_margin_function.py
+++ b/extreme_estimator/extreme_models/margin_model/margin_function/independent_margin_function.py
@@ -7,7 +7,7 @@ from extreme_estimator.extreme_models.margin_model.margin_function.param_functio
 from extreme_estimator.gev_params import GevParams
 from extreme_estimator.extreme_models.margin_model.margin_function.abstract_margin_function import \
     AbstractMarginFunction
-from spatio_temporal_dataset.spatial_coordinates.abstract_spatial_coordinates import AbstractSpatialCoordinates
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
 
 
 class IndependentMarginFunction(AbstractMarginFunction):
diff --git a/extreme_estimator/extreme_models/max_stable_model/test.R b/extreme_estimator/extreme_models/max_stable_model/test.R
index 64f29ab8..35b31ee4 100644
--- a/extreme_estimator/extreme_models/max_stable_model/test.R
+++ b/extreme_estimator/extreme_models/max_stable_model/test.R
@@ -1,5 +1,5 @@
 library(SpatialExtremes)
-##Define the spatial_coordinates of each location
+##Define the coordinates of each location
 n.site <- 30
 locations <- matrix(runif(2*n.site, 0, 10), ncol = 2)
 colnames(locations) <- c("lon", "lat")
diff --git a/extreme_estimator/robustness_plot/msp_robustness.py b/extreme_estimator/robustness_plot/msp_robustness.py
index fa902d3d..dc03ce85 100644
--- a/extreme_estimator/robustness_plot/msp_robustness.py
+++ b/extreme_estimator/robustness_plot/msp_robustness.py
@@ -1,16 +1,14 @@
-from extreme_estimator.extreme_models.max_stable_model.abstract_max_stable_model import AbstractMaxStableModel, \
-    CovarianceFunction
-from extreme_estimator.extreme_models.max_stable_model.max_stable_models import Smith, BrownResnick, Schlather, \
-    ExtremalT
+from extreme_estimator.extreme_models.max_stable_model.abstract_max_stable_model import AbstractMaxStableModel
+from extreme_estimator.extreme_models.max_stable_model.max_stable_models import Smith, BrownResnick
 from extreme_estimator.estimator.abstract_estimator import AbstractEstimator
 from extreme_estimator.estimator.max_stable_estimator import MaxStableEstimator
 from extreme_estimator.robustness_plot.multiple_plot import MultiplePlot
 from extreme_estimator.robustness_plot.single_plot import SinglePlot
-from spatio_temporal_dataset.dataset.simulation_dataset import SimulatedDataset, MaxStableDataset
-from spatio_temporal_dataset.spatial_coordinates.abstract_spatial_coordinates import AbstractSpatialCoordinates
-from spatio_temporal_dataset.spatial_coordinates.alps_station_2D_coordinates import \
+from spatio_temporal_dataset.dataset.simulation_dataset import MaxStableDataset
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
+from spatio_temporal_dataset.coordinates.spatial_coordinates.alps_station_2D_coordinates import \
     AlpsStation2DCoordinatesBetweenZeroAndOne, AlpsStationCoordinatesBetweenZeroAndTwo
-from spatio_temporal_dataset.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1, \
+from spatio_temporal_dataset.coordinates.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1, \
     CircleCoordinatesRadius2
 from extreme_estimator.robustness_plot.display_item import DisplayItem
 
diff --git a/spatio_temporal_dataset/spatial_coordinates/__init__.py b/spatio_temporal_dataset/coordinates/__init__.py
similarity index 100%
rename from spatio_temporal_dataset/spatial_coordinates/__init__.py
rename to spatio_temporal_dataset/coordinates/__init__.py
diff --git a/spatio_temporal_dataset/spatial_coordinates/abstract_spatial_coordinates.py b/spatio_temporal_dataset/coordinates/abstract_coordinates.py
similarity index 87%
rename from spatio_temporal_dataset/spatial_coordinates/abstract_spatial_coordinates.py
rename to spatio_temporal_dataset/coordinates/abstract_coordinates.py
index 05e55f27..3b6d31be 100644
--- a/spatio_temporal_dataset/spatial_coordinates/abstract_spatial_coordinates.py
+++ b/spatio_temporal_dataset/coordinates/abstract_coordinates.py
@@ -24,8 +24,8 @@ class AbstractSpatialCoordinates(object):
 
     @classmethod
     def from_df(cls, df: pd.DataFrame):
-        #  X and Y coordinates must be defined
-        assert cls.COORDINATE_X in df.columns and cls.COORDINATE_Y in df.columns
+        #  X and coordinates must be defined
+        assert cls.COORDINATE_X in df.columns
         df_coordinates = df.loc[:, cls.coordinates_columns(df)]
         # Potentially, a split column can be specified
         s_split = df[cls.COORD_SPLIT] if cls.COORD_SPLIT in df.columns else None
@@ -33,10 +33,10 @@ class AbstractSpatialCoordinates(object):
 
     @classmethod
     def coordinates_columns(cls, df_coord: pd.DataFrame) -> List[str]:
-        # If a Z coordinate is in the DataFrame, then
-        coord_columns = [cls.COORDINATE_X, cls.COORDINATE_Y]
-        if cls.COORDINATE_Z in df_coord.columns:
-            coord_columns.append(cls.COORDINATE_Z)
+        coord_columns = [cls.COORDINATE_X]
+        for additional_coord in [cls.COORDINATE_Y, cls.COORDINATE_Z]:
+            if additional_coord in df_coord.columns:
+                coord_columns.append(additional_coord)
         return coord_columns
 
     @property
@@ -101,16 +101,24 @@ class AbstractSpatialCoordinates(object):
 
     #  Visualization
 
+    def visualization_1D(self):
+        assert len(self.coordinates_columns(self.df_coordinates)) >= 1
+        x = self.coordinates[:]
+        y = np.zeros(len(x))
+        plt.scatter(x, y)
+        plt.show()
+
     def visualization_2D(self):
+        assert len(self.coordinates_columns(self.df_coordinates)) >= 2
         x, y = self.coordinates[:, 0], self.coordinates[:, 1]
         plt.scatter(x, y)
         plt.show()
 
     def visualization_3D(self):
         assert len(self.coordinates_columns(self.df_coordinates)) == 3
+        x, y, z = self.coordinates[:, 0], self.coordinates[:, 1], self.coordinates[:, 2]
         fig = plt.figure()
         ax = fig.add_subplot(111, projection='3d')  # type: Axes3D
-        x, y, z = self.coordinates[:, 0], self.coordinates[:, 1], self.coordinates[:, 2]
         ax.scatter(x, y, z, marker='^')
         plt.show()
 
diff --git a/spatio_temporal_dataset/spatial_coordinates/transformations/__init__.py b/spatio_temporal_dataset/coordinates/axis_coordinates/__init__.py
similarity index 100%
rename from spatio_temporal_dataset/spatial_coordinates/transformations/__init__.py
rename to spatio_temporal_dataset/coordinates/axis_coordinates/__init__.py
diff --git a/spatio_temporal_dataset/coordinates/axis_coordinates/axis_coordinates.py b/spatio_temporal_dataset/coordinates/axis_coordinates/axis_coordinates.py
new file mode 100644
index 00000000..21153b1e
--- /dev/null
+++ b/spatio_temporal_dataset/coordinates/axis_coordinates/axis_coordinates.py
@@ -0,0 +1,21 @@
+import pandas as pd
+
+import numpy as np
+
+from extreme_estimator.extreme_models.utils import get_loaded_r
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
+
+
+class AxisCoordinates(AbstractSpatialCoordinates):
+    pass
+
+
+class UniformAxisCoordinates(AxisCoordinates):
+
+    @classmethod
+    def from_nb_points(cls, nb_points, start=0.0, end=1.0):
+        # Sample uniformly inside the circle
+        r = get_loaded_r()
+        axis_coordinates = np.array(r.runif(nb_points, min=start, max=end))
+        df = pd.DataFrame.from_dict({cls.COORDINATE_X: axis_coordinates})
+        return cls.from_df(df)
diff --git a/spatio_temporal_dataset/coordinates/spatial_coordinates/__init__.py b/spatio_temporal_dataset/coordinates/spatial_coordinates/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/spatio_temporal_dataset/spatial_coordinates/alps_station_2D_coordinates.py b/spatio_temporal_dataset/coordinates/spatial_coordinates/alps_station_2D_coordinates.py
similarity index 77%
rename from spatio_temporal_dataset/spatial_coordinates/alps_station_2D_coordinates.py
rename to spatio_temporal_dataset/coordinates/spatial_coordinates/alps_station_2D_coordinates.py
index ae2586ea..db3d3156 100644
--- a/spatio_temporal_dataset/spatial_coordinates/alps_station_2D_coordinates.py
+++ b/spatio_temporal_dataset/coordinates/spatial_coordinates/alps_station_2D_coordinates.py
@@ -1,7 +1,7 @@
-from spatio_temporal_dataset.spatial_coordinates.alps_station_3D_coordinates import AlpsStation3DCoordinates
-from spatio_temporal_dataset.spatial_coordinates.transformations.transformation_2D import \
+from spatio_temporal_dataset.coordinates.spatial_coordinates.alps_station_3D_coordinates import AlpsStation3DCoordinates
+from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation_2D import \
     BetweenZeroAndOne2DNormalization
-from spatio_temporal_dataset.spatial_coordinates.transformed_coordinates import TransformedCoordinates
+from spatio_temporal_dataset.coordinates.transformed_coordinates.transformed_coordinates import TransformedCoordinates
 
 
 class AlpsStation2DCoordinates(AlpsStation3DCoordinates):
diff --git a/spatio_temporal_dataset/spatial_coordinates/alps_station_3D_coordinates.py b/spatio_temporal_dataset/coordinates/spatial_coordinates/alps_station_3D_coordinates.py
similarity index 86%
rename from spatio_temporal_dataset/spatial_coordinates/alps_station_3D_coordinates.py
rename to spatio_temporal_dataset/coordinates/spatial_coordinates/alps_station_3D_coordinates.py
index 67b4b7ff..02a8062c 100644
--- a/spatio_temporal_dataset/spatial_coordinates/alps_station_3D_coordinates.py
+++ b/spatio_temporal_dataset/coordinates/spatial_coordinates/alps_station_3D_coordinates.py
@@ -2,9 +2,9 @@ import os.path as op
 
 import pandas as pd
 
-from spatio_temporal_dataset.spatial_coordinates.abstract_spatial_coordinates import AbstractSpatialCoordinates
-from spatio_temporal_dataset.spatial_coordinates.transformations.tranformation_3D import AnisotropyTransformation
-from spatio_temporal_dataset.spatial_coordinates.transformed_coordinates import TransformedCoordinates
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
+from spatio_temporal_dataset.coordinates.transformed_coordinates.tranformation_3D import AnisotropyTransformation
+from spatio_temporal_dataset.coordinates.transformed_coordinates.transformed_coordinates import TransformedCoordinates
 from utils import get_full_path
 
 
diff --git a/spatio_temporal_dataset/spatial_coordinates/generated_coordinates.py b/spatio_temporal_dataset/coordinates/spatial_coordinates/generated_coordinates.py
similarity index 90%
rename from spatio_temporal_dataset/spatial_coordinates/generated_coordinates.py
rename to spatio_temporal_dataset/coordinates/spatial_coordinates/generated_coordinates.py
index 8f884427..88350456 100644
--- a/spatio_temporal_dataset/spatial_coordinates/generated_coordinates.py
+++ b/spatio_temporal_dataset/coordinates/spatial_coordinates/generated_coordinates.py
@@ -3,7 +3,7 @@ import numpy as np
 import pandas as pd
 
 from extreme_estimator.extreme_models.utils import get_loaded_r
-from spatio_temporal_dataset.spatial_coordinates.abstract_spatial_coordinates import AbstractSpatialCoordinates
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
 import matplotlib.pyplot as plt
 
 
diff --git a/spatio_temporal_dataset/coordinates/transformed_coordinates/__init__.py b/spatio_temporal_dataset/coordinates/transformed_coordinates/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/spatio_temporal_dataset/spatial_coordinates/transformations/abstract_transformation.py b/spatio_temporal_dataset/coordinates/transformed_coordinates/abstract_transformation.py
similarity index 100%
rename from spatio_temporal_dataset/spatial_coordinates/transformations/abstract_transformation.py
rename to spatio_temporal_dataset/coordinates/transformed_coordinates/abstract_transformation.py
diff --git a/spatio_temporal_dataset/spatial_coordinates/transformations/tranformation_3D.py b/spatio_temporal_dataset/coordinates/transformed_coordinates/tranformation_3D.py
similarity index 96%
rename from spatio_temporal_dataset/spatial_coordinates/transformations/tranformation_3D.py
rename to spatio_temporal_dataset/coordinates/transformed_coordinates/tranformation_3D.py
index 42659ee2..6754cb1c 100644
--- a/spatio_temporal_dataset/spatial_coordinates/transformations/tranformation_3D.py
+++ b/spatio_temporal_dataset/coordinates/transformed_coordinates/tranformation_3D.py
@@ -1,6 +1,6 @@
 import pandas as pd
 import numpy as np
-from spatio_temporal_dataset.spatial_coordinates.transformations.abstract_transformation import AbstractTransformation
+from spatio_temporal_dataset.coordinates.transformed_coordinates.abstract_transformation import AbstractTransformation
 import math
 
 
diff --git a/spatio_temporal_dataset/spatial_coordinates/transformations/transformation_2D.py b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation_2D.py
similarity index 95%
rename from spatio_temporal_dataset/spatial_coordinates/transformations/transformation_2D.py
rename to spatio_temporal_dataset/coordinates/transformed_coordinates/transformation_2D.py
index 2b55ae53..3c56441c 100644
--- a/spatio_temporal_dataset/spatial_coordinates/transformations/transformation_2D.py
+++ b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformation_2D.py
@@ -1,4 +1,4 @@
-from spatio_temporal_dataset.spatial_coordinates.transformations.abstract_transformation import AbstractTransformation
+from spatio_temporal_dataset.coordinates.transformed_coordinates.abstract_transformation import AbstractTransformation
 import pandas as pd
 
 
diff --git a/spatio_temporal_dataset/spatial_coordinates/transformed_coordinates.py b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformed_coordinates.py
similarity index 76%
rename from spatio_temporal_dataset/spatial_coordinates/transformed_coordinates.py
rename to spatio_temporal_dataset/coordinates/transformed_coordinates/transformed_coordinates.py
index c2f99ac7..b1e4c7a6 100644
--- a/spatio_temporal_dataset/spatial_coordinates/transformed_coordinates.py
+++ b/spatio_temporal_dataset/coordinates/transformed_coordinates/transformed_coordinates.py
@@ -1,5 +1,5 @@
-from spatio_temporal_dataset.spatial_coordinates.abstract_spatial_coordinates import AbstractSpatialCoordinates
-from spatio_temporal_dataset.spatial_coordinates.transformations.abstract_transformation import AbstractTransformation
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
+from spatio_temporal_dataset.coordinates.transformed_coordinates.abstract_transformation import AbstractTransformation
 
 
 class TransformedCoordinates(AbstractSpatialCoordinates):
diff --git a/spatio_temporal_dataset/dataset/abstract_dataset.py b/spatio_temporal_dataset/dataset/abstract_dataset.py
index a63ed182..aa46eb82 100644
--- a/spatio_temporal_dataset/dataset/abstract_dataset.py
+++ b/spatio_temporal_dataset/dataset/abstract_dataset.py
@@ -3,13 +3,13 @@ import numpy as np
 import os.path as op
 import pandas as pd
 from spatio_temporal_dataset.temporal_observations.abstract_temporal_observations import AbstractTemporalObservations
-from spatio_temporal_dataset.spatial_coordinates.abstract_spatial_coordinates import AbstractSpatialCoordinates
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
 
 
 class AbstractDataset(object):
 
     def __init__(self, temporal_observations: AbstractTemporalObservations, spatial_coordinates: AbstractSpatialCoordinates):
-        # is_same_index = temporal_observations.index == spatial_coordinates.index  # type: pd.Series
+        # is_same_index = temporal_observations.index == coordinates.index  # type: pd.Series
         # assert is_same_index.all()
         self.temporal_observations = temporal_observations
         self.spatial_coordinates = spatial_coordinates
diff --git a/spatio_temporal_dataset/dataset/simulation_dataset.py b/spatio_temporal_dataset/dataset/simulation_dataset.py
index 492bbeca..e40d77b1 100644
--- a/spatio_temporal_dataset/dataset/simulation_dataset.py
+++ b/spatio_temporal_dataset/dataset/simulation_dataset.py
@@ -1,7 +1,7 @@
 from extreme_estimator.extreme_models.margin_model.abstract_margin_model import AbstractMarginModel
 from extreme_estimator.extreme_models.max_stable_model.abstract_max_stable_model import AbstractMaxStableModel
 from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
-from spatio_temporal_dataset.spatial_coordinates.abstract_spatial_coordinates import AbstractSpatialCoordinates
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
 from spatio_temporal_dataset.temporal_observations.abstract_temporal_observations import AbstractTemporalObservations
 from spatio_temporal_dataset.temporal_observations.annual_maxima_observations import \
     MaxStableAnnualMaxima, AnnualMaxima, MarginAnnualMaxima, FullAnnualMaxima
diff --git a/spatio_temporal_dataset/marginals/spatial_marginals.py b/spatio_temporal_dataset/marginals/spatial_marginals.py
index 91b2bcf0..6530e0cd 100644
--- a/spatio_temporal_dataset/marginals/spatial_marginals.py
+++ b/spatio_temporal_dataset/marginals/spatial_marginals.py
@@ -1,6 +1,6 @@
 from spatio_temporal_dataset.marginals.abstract_marginals import AbstractMarginals
 
-from spatio_temporal_dataset.spatial_coordinates.abstract_spatial_coordinates import AbstractSpatialCoordinates
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
 
 
 class SpatialMarginal(AbstractMarginals):
diff --git a/spatio_temporal_dataset/temporal_observations/annual_maxima_observations.py b/spatio_temporal_dataset/temporal_observations/annual_maxima_observations.py
index bc461d07..5ee31b26 100644
--- a/spatio_temporal_dataset/temporal_observations/annual_maxima_observations.py
+++ b/spatio_temporal_dataset/temporal_observations/annual_maxima_observations.py
@@ -2,7 +2,7 @@ import pandas as pd
 
 from extreme_estimator.extreme_models.margin_model.abstract_margin_model import AbstractMarginModel
 from extreme_estimator.extreme_models.max_stable_model.abstract_max_stable_model import AbstractMaxStableModel
-from spatio_temporal_dataset.spatial_coordinates.abstract_spatial_coordinates import AbstractSpatialCoordinates
+from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractSpatialCoordinates
 from spatio_temporal_dataset.temporal_observations.abstract_temporal_observations import AbstractTemporalObservations
 
 
diff --git a/test/test_extreme_estimator/test_R_model/test_margin_function.py b/test/test_extreme_estimator/test_R_model/test_margin_function.py
index 2981adb2..12b099e3 100644
--- a/test/test_extreme_estimator/test_R_model/test_margin_function.py
+++ b/test/test_extreme_estimator/test_R_model/test_margin_function.py
@@ -2,7 +2,7 @@ import unittest
 
 from extreme_estimator.gev_params import GevParams
 from extreme_estimator.extreme_models.margin_model.smooth_margin_model import LinearShapeAxis0MarginModel
-from spatio_temporal_dataset.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1
+from spatio_temporal_dataset.coordinates.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1
 
 
 class TestLinearMarginModel(unittest.TestCase):
diff --git a/test/test_extreme_estimator/test_estimator/test_full_estimators.py b/test/test_extreme_estimator/test_estimator/test_full_estimators.py
index 938462e1..d112bb61 100644
--- a/test/test_extreme_estimator/test_estimator/test_full_estimators.py
+++ b/test/test_extreme_estimator/test_estimator/test_full_estimators.py
@@ -4,7 +4,7 @@ from itertools import product
 from extreme_estimator.estimator.full_estimator import SmoothMarginalsThenUnitaryMsp, \
     FullEstimatorInASingleStepWithSmoothMargin
 from spatio_temporal_dataset.dataset.simulation_dataset import FullSimulatedDataset
-from spatio_temporal_dataset.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1
+from spatio_temporal_dataset.coordinates.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1
 from test.test_extreme_estimator.test_estimator.test_margin_estimators import TestSmoothMarginEstimator
 from test.test_extreme_estimator.test_estimator.test_max_stable_estimators import TestMaxStableEstimators
 
diff --git a/test/test_extreme_estimator/test_estimator/test_margin_estimators.py b/test/test_extreme_estimator/test_estimator/test_margin_estimators.py
index 8729ef3f..c3a9b543 100644
--- a/test/test_extreme_estimator/test_estimator/test_margin_estimators.py
+++ b/test/test_extreme_estimator/test_estimator/test_margin_estimators.py
@@ -1,13 +1,12 @@
 import unittest
 
-from extreme_estimator.extreme_models.margin_model.abstract_margin_model import AbstractMarginModel
 from extreme_estimator.extreme_models.margin_model.smooth_margin_model import ConstantMarginModel, \
     LinearShapeAxis0MarginModel, LinearShapeAxis0and1MarginModel, LinearAllParametersAxis0MarginModel, \
     LinearAllParametersAxis0And1MarginModel
 from extreme_estimator.estimator.margin_estimator import SmoothMarginEstimator
 from extreme_estimator.return_level_plot.spatial_2D_plot import Spatial2DPlot
 from spatio_temporal_dataset.dataset.simulation_dataset import MarginDataset
-from spatio_temporal_dataset.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1
+from spatio_temporal_dataset.coordinates.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1
 
 
 class TestSmoothMarginEstimator(unittest.TestCase):
diff --git a/test/test_extreme_estimator/test_estimator/test_max_stable_estimators.py b/test/test_extreme_estimator/test_estimator/test_max_stable_estimators.py
index a523f027..050256d6 100644
--- a/test/test_extreme_estimator/test_estimator/test_max_stable_estimators.py
+++ b/test/test_extreme_estimator/test_estimator/test_max_stable_estimators.py
@@ -6,7 +6,7 @@ from extreme_estimator.extreme_models.max_stable_model.max_stable_models import
     Geometric, ExtremalT, ISchlather
 from extreme_estimator.estimator.max_stable_estimator import MaxStableEstimator
 from spatio_temporal_dataset.dataset.simulation_dataset import MaxStableDataset
-from spatio_temporal_dataset.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1
+from spatio_temporal_dataset.coordinates.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1
 
 
 class TestMaxStableEstimators(unittest.TestCase):
diff --git a/test/test_spatio_temporal_dataset/test_coordinates.py b/test/test_spatio_temporal_dataset/test_coordinates.py
new file mode 100644
index 00000000..b4890ee2
--- /dev/null
+++ b/test/test_spatio_temporal_dataset/test_coordinates.py
@@ -0,0 +1,44 @@
+import unittest
+
+from spatio_temporal_dataset.coordinates.axis_coordinates.axis_coordinates import UniformAxisCoordinates
+from spatio_temporal_dataset.coordinates.spatial_coordinates.alps_station_2D_coordinates import \
+    AlpsStation2DCoordinatesBetweenZeroAndOne
+from spatio_temporal_dataset.coordinates.spatial_coordinates.alps_station_3D_coordinates import \
+    AlpsStation3DCoordinatesWithAnisotropy
+from spatio_temporal_dataset.coordinates.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1
+
+
+class TestSpatialCoordinates(unittest.TestCase):
+    DISPLAY = False
+
+    def test_circle(self):
+        coord = CircleCoordinatesRadius1.from_nb_points(nb_points=500)
+        if self.DISPLAY:
+            coord.visualization_2D()
+        self.assertTrue(True)
+
+    def test_anisotropy(self):
+        coord = AlpsStation3DCoordinatesWithAnisotropy.from_csv()
+        if self.DISPLAY:
+            coord.visualization_3D()
+        self.assertTrue(True)
+
+    def test_normalization(self):
+        coord = AlpsStation2DCoordinatesBetweenZeroAndOne.from_csv()
+        if self.DISPLAY:
+            coord.visualization_2D()
+        self.assertTrue(True)
+
+
+class TestAxisCoordinates(unittest.TestCase):
+    DISPLAY = False
+
+    def test_unif(self):
+        coord = UniformAxisCoordinates.from_nb_points(nb_points=10)
+        if self.DISPLAY:
+            coord.visualization_1D()
+        self.assertTrue(True)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/test/test_spatio_temporal_dataset/test_spatial_coordinates.py b/test/test_spatio_temporal_dataset/test_spatial_coordinates.py
deleted file mode 100644
index cf657c21..00000000
--- a/test/test_spatio_temporal_dataset/test_spatial_coordinates.py
+++ /dev/null
@@ -1,34 +0,0 @@
-import unittest
-
-from spatio_temporal_dataset.spatial_coordinates.alps_station_2D_coordinates import \
-    AlpsStation2DCoordinatesBetweenZeroAndOne
-from spatio_temporal_dataset.spatial_coordinates.alps_station_3D_coordinates import \
-    AlpsStation3DCoordinatesWithAnisotropy
-from spatio_temporal_dataset.spatial_coordinates.generated_coordinates import CircleCoordinatesRadius1
-
-
-class TestSpatialCoordinates(unittest.TestCase):
-
-    DISPLAY = False
-
-    def test_circle(self):
-        coord_2D = CircleCoordinatesRadius1.from_nb_points(nb_points=500)
-        if self.DISPLAY:
-            coord_2D.visualization_2D()
-        self.assertTrue(True)
-
-    def test_anisotropy(self):
-        coord_3D = AlpsStation3DCoordinatesWithAnisotropy.from_csv()
-        if self.DISPLAY:
-            coord_3D.visualization_3D()
-        self.assertTrue(True)
-
-    def test_normalization(self):
-        coord_2D = AlpsStation2DCoordinatesBetweenZeroAndOne.from_csv()
-        if self.DISPLAY:
-            coord_2D.visualization_2D()
-        self.assertTrue(True)
-
-
-if __name__ == '__main__':
-    unittest.main()
-- 
GitLab