From f9573477c5d0e214b628e8e491173d833cf92cdb Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Fri, 8 Mar 2019 09:20:14 +0100
Subject: [PATCH] [SCM] fix issue of aggregation for temperatures. improve
 test.

---
 .../meteo_france_SCM_study/safran/safran_variable.py   |  3 +--
 .../study_visualization/main_study_visualizer.py       |  6 ++++--
 .../test_meteo_france_SCM_study/test_SCM_study.py      |  1 +
 test/test_utils.py                                     | 10 +++++++---
 4 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/experiment/meteo_france_SCM_study/safran/safran_variable.py b/experiment/meteo_france_SCM_study/safran/safran_variable.py
index 41a24eb3..e0efb29c 100644
--- a/experiment/meteo_france_SCM_study/safran/safran_variable.py
+++ b/experiment/meteo_france_SCM_study/safran/safran_variable.py
@@ -57,9 +57,8 @@ class SafranTemperatureVariable(AbstractVariable):
         super().__init__(dataset, altitude)
         # Temperature are in K, I transform them as celsius
         self.hourly_temperature = np.array(dataset.variables[keyword]) - 273.15
-        print(self.hourly_temperature.shape)
         nb_days = len(self.hourly_temperature) // 24
-        self.daily_temperature = [np.mean(self.hourly_temperature[24 * i:24 * (i + 1)]) for i in range(nb_days)]
+        self.daily_temperature = [np.mean(self.hourly_temperature[24 * i:24 * (i + 1)], axis=0) for i in range(nb_days)]
 
 
     @property
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 c317b9d3..1d5f0a3c 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
@@ -37,7 +37,8 @@ def extended_visualization():
     only_first_one = True
     for study_class in SCM_EXTENDED_STUDIES[-1:]:
         for study in study_iterator(study_class, only_first_one=only_first_one):
-            study_visualizer = StudyVisualizer(study, save_to_file=save_to_file, only_one_graph=True, plot_block_maxima_quantiles=False)
+            study_visualizer = StudyVisualizer(study, save_to_file=save_to_file, only_one_graph=True,
+                                               plot_block_maxima_quantiles=False)
             # study_visualizer.visualize_all_mean_and_max_graphs()
             study_visualizer.visualize_all_experimental_law()
     # for study_class in SCM_EXTENDED_STUDIES[:]:
@@ -48,11 +49,12 @@ def extended_visualization():
 
 
 def annual_mean_vizu_compare_durand_study():
-    for study_class in [SafranPrecipitation, SafranSnowfall, SafranTemperature][1:]:
+    for study_class in [SafranPrecipitation, SafranSnowfall, SafranTemperature][2:]:
         study = study_class(altitude=1800, year_min=1958, year_max=2002)
         study_visualizer = StudyVisualizer(study)
         study_visualizer.visualize_annual_mean_values()
 
+
 def normal_visualization():
     save_to_file = False
     only_first_one = True
diff --git a/test/test_experiment/test_meteo_france_SCM_study/test_SCM_study.py b/test/test_experiment/test_meteo_france_SCM_study/test_SCM_study.py
index 71bf3433..96d46e9c 100644
--- a/test/test_experiment/test_meteo_france_SCM_study/test_SCM_study.py
+++ b/test/test_experiment/test_meteo_france_SCM_study/test_SCM_study.py
@@ -32,6 +32,7 @@ class TestSCMStudy(unittest.TestCase):
         for study in load_scm_studies():
             time_serie = study.year_to_daily_time_serie_array[1958]
             self.assertTrue(time_serie.ndim == 2, msg='for {} ndim={}'.format(study.__repr__(), time_serie.ndim))
+            self.assertTrue(time_serie.shape[1] in [21, 23])
             self.assertTrue(len(time_serie) in [365, 366],
                             msg="current time serie length for {} is {}".format(study.__repr__(), len(time_serie)))
 
diff --git a/test/test_utils.py b/test/test_utils.py
index 3fb317c8..f6f865be 100644
--- a/test/test_utils.py
+++ b/test/test_utils.py
@@ -13,7 +13,8 @@ from extreme_estimator.extreme_models.max_stable_model.abstract_max_stable_model
     AbstractMaxStableModelWithCovarianceFunction, CovarianceFunction
 from extreme_estimator.extreme_models.max_stable_model.max_stable_models import Smith, BrownResnick, Schlather, \
     Geometric, ExtremalT, ISchlather
-from experiment.meteo_france_SCM_study.safran.safran import SafranSnowfall, Safran
+from experiment.meteo_france_SCM_study.safran.safran import SafranSnowfall, Safran, SafranPrecipitation, \
+    SafranTemperature
 from spatio_temporal_dataset.coordinates.spatial_coordinates.alps_station_3D_coordinates import \
     AlpsStation3DCoordinatesWithAnisotropy
 from spatio_temporal_dataset.coordinates.spatial_coordinates.generated_spatial_coordinates import \
@@ -96,8 +97,11 @@ def load_test_spatiotemporal_coordinates(nb_points, nb_steps, train_split_ratio=
 
 def load_safran_studies(altitudes) -> List[Safran]:
     nb_days_list = [1]
-    return [SafranSnowfall(altitude=safran_altitude, nb_consecutive_days=nb_days)
-            for safran_altitude in altitudes for nb_days in nb_days_list]
+    safran_studies = [safran_class(altitude=safran_altitude, nb_consecutive_days=nb_days)
+            for safran_altitude in altitudes for nb_days in nb_days_list
+            for safran_class in [SafranSnowfall, SafranPrecipitation]]
+    safran_studies += [SafranTemperature(altitude) for altitude in altitudes]
+    return safran_studies
 
 
 def load_crocus_studies(altitudes) -> List[Crocus]:
-- 
GitLab