From 4ecac4e7f6ada30a912a8a57c3e6d53347423b81 Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Thu, 21 Mar 2019 18:12:11 +0100
Subject: [PATCH] [COORDINATES] add some attributes to coordinates and to
 abstract_study

---
 experiment/meteo_france_SCM_study/abstract_study.py       | 7 ++++++-
 .../study_visualization/main_study_visualizer.py          | 6 +++---
 .../coordinates/abstract_coordinates.py                   | 8 ++++++++
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/experiment/meteo_france_SCM_study/abstract_study.py b/experiment/meteo_france_SCM_study/abstract_study.py
index 29f943a2..89a3b59e 100644
--- a/experiment/meteo_france_SCM_study/abstract_study.py
+++ b/experiment/meteo_france_SCM_study/abstract_study.py
@@ -3,7 +3,7 @@ import numpy as np
 from PIL import Image, ImageDraw
 import os.path as op
 from collections import OrderedDict
-from typing import List, Dict
+from typing import List, Dict, Tuple
 
 import matplotlib.pyplot as plt
 import pandas as pd
@@ -71,6 +71,11 @@ class AbstractStudy(object):
                 year_to_dataset[year] = Dataset(op.join(self.safran_full_path, nc_file))
         return year_to_dataset
 
+    @property
+    def start_year_and_end_year(self) -> Tuple[int, int]:
+        ordered_years = list(self.year_to_dataset_ordered_dict.keys())
+        return ordered_years[0], ordered_years[-1]
+
     @cached_property
     def year_to_daily_time_serie_array(self) -> OrderedDict:
         return self._year_to_daily_time_serie_array
diff --git a/experiment/meteo_france_SCM_study/visualization/study_visualization/main_study_visualizer.py b/experiment/meteo_france_SCM_study/visualization/study_visualization/main_study_visualizer.py
index f6f208fc..026f1708 100644
--- a/experiment/meteo_france_SCM_study/visualization/study_visualization/main_study_visualizer.py
+++ b/experiment/meteo_france_SCM_study/visualization/study_visualization/main_study_visualizer.py
@@ -68,13 +68,13 @@ def max_stable_process_vizu_compare_gaume_study(altitude=1800, nb_days=1):
     study_visualizer.visualize_brown_resnick_fit()
 
 
-def normal_visualization():
+def normal_visualization(temporal_non_stationarity=False):
     save_to_file = False
     only_first_one = True
     # for study_class in SCM_STUDIES[:1]:
     for study_class in [SafranSnowfall, SafranRainfall, SafranTemperature][:1]:
         for study in study_iterator(study_class, only_first_one=only_first_one):
-            study_visualizer = StudyVisualizer(study, save_to_file=save_to_file)
+            study_visualizer = StudyVisualizer(study, save_to_file=save_to_file, temporal_non_stationarity=temporal_non_stationarity)
             # study_visualizer.visualize_independent_margin_fits(threshold=[None, 20, 40, 60][0])
             # study_visualizer.visualize_annual_mean_values()
             study_visualizer.visualize_linear_margin_fit(only_first_max_stable=None)
@@ -97,7 +97,7 @@ def complete_analysis(only_first_one=False):
 
 if __name__ == '__main__':
     # annual_mean_vizu_compare_durand_study(safran=True, take_mean_value=True, altitude=2400)
-    normal_visualization()
+    normal_visualization(temporal_non_stationarity=True)
     # max_stable_process_vizu_compare_gaume_study(altitude=1800, nb_days=1)
     # extended_visualization()
     # complete_analysis()
diff --git a/spatio_temporal_dataset/coordinates/abstract_coordinates.py b/spatio_temporal_dataset/coordinates/abstract_coordinates.py
index 4705d7d0..b6d2da35 100644
--- a/spatio_temporal_dataset/coordinates/abstract_coordinates.py
+++ b/spatio_temporal_dataset/coordinates/abstract_coordinates.py
@@ -162,6 +162,10 @@ class AbstractCoordinates(object):
     def nb_coordinates_spatial(self) -> int:
         return len(self.coordinates_spatial_names)
 
+    @property
+    def has_spatial_coordinates(self):
+        return self.nb_coordinates_spatial > 0
+
     def df_spatial_coordinates(self, split: Split = Split.all) -> pd.DataFrame:
         if self.nb_coordinates_spatial == 0:
             return pd.DataFrame()
@@ -185,6 +189,10 @@ class AbstractCoordinates(object):
     def has_temporal_coordinates(self):
         return self.nb_coordinates_temporal > 0
 
+    @property
+    def has_spatio_temporal_coordinates(self):
+        return self.has_spatial_coordinates and self.has_temporal_coordinates
+
     def df_temporal_coordinates(self, split: Split = Split.all) -> pd.DataFrame:
         if self.nb_coordinates_temporal == 0:
             return pd.DataFrame()
-- 
GitLab