From 49e03e7fa95b303e10713438cab4063302cd776a Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Mon, 15 Jul 2019 11:44:26 +0200
Subject: [PATCH] [HYPERCUBE VISUALIZATION] modify first starting year for the
 full parameters. add main starting years to study cluster of starting year
 for a single altitude for a recent SWE (RSWE). add colormap for display

---
 .../main_files/main_full_hypercube.py         | 11 ++--
 .../main_starting_years.py                    | 59 +++++++++++++++++++
 .../utils_hypercube.py                        |  3 +-
 .../main_study_visualizer.py                  |  5 +-
 .../abstract_univariate_test.py               |  4 +-
 5 files changed, 73 insertions(+), 9 deletions(-)
 create mode 100644 experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files_after_conf/main_starting_years.py

diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py
index 22ae39ca..d8fff38a 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files/main_full_hypercube.py
@@ -22,23 +22,24 @@ def get_full_parameters(altitude=None):
         altitudes = [altitude]
     else:
         altitudes = ALL_ALTITUDES[3:-6]
-    last_starting_year = 2007
+    first_starting_year = 1958 + 10
+    last_starting_year = 2017 - 10
     trend_test_class = GevLocationChangePointTest
-    return altitudes, last_starting_year, nb_data_reduced_for_speed, only_first_one, save_to_file, trend_test_class
+    return altitudes, first_starting_year, last_starting_year, nb_data_reduced_for_speed, only_first_one, save_to_file, trend_test_class
 
 
 def get_full_altitude_visualizer(altitude_hypercube_class, study_classes, exact_starting_year=None, altitude=None):
-    altitudes, last_starting_year, nb_data_reduced_for_speed, only_first_one, save_to_file, trend_test_class = get_full_parameters(altitude=altitude)
+    altitudes, first_starting_year, last_starting_year, nb_data_reduced_for_speed, only_first_one, save_to_file, trend_test_class = get_full_parameters(altitude=altitude)
     if exact_starting_year is not None:
         last_starting_year = None
     visualizer = load_altitude_visualizer(altitude_hypercube_class, altitudes, last_starting_year,
                                           nb_data_reduced_for_speed, only_first_one, save_to_file, study_classes,
-                                          trend_test_class, exact_starting_year=exact_starting_year)
+                                          trend_test_class, exact_starting_year=exact_starting_year, first_starting_year=first_starting_year)
     return visualizer
 
 
 def get_full_quantity_visualizer(quantity_hypercube_class, altitude=None, study_classes=None):
-    altitudes, last_starting_year, nb_data_reduced_for_speed, only_first_one, save_to_file, trend_test_class = get_full_parameters(altitude=altitude)
+    altitudes, first_starting_year, last_starting_year, nb_data_reduced_for_speed, only_first_one, save_to_file, trend_test_class = get_full_parameters(altitude=altitude)
     if study_classes is None:
         study_classes = SCM_STUDIES[:3]
     visualizer = load_quantity_visualizer(quantity_hypercube_class, altitudes, last_starting_year,
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files_after_conf/main_starting_years.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files_after_conf/main_starting_years.py
new file mode 100644
index 00000000..9a1a7811
--- /dev/null
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files_after_conf/main_starting_years.py
@@ -0,0 +1,59 @@
+import time
+
+from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusRecentSwe
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer import \
+    AltitudeHypercubeVisualizer
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer_extended import \
+    AltitudeHypercubeVisualizerBisExtended, QuantityHypercubeWithoutTrendExtended, \
+    AltitudeHypercubeVisualizerWithoutTrendExtended, QuantityHypercubeWithoutTrend
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
+    Altitude_Hypercube_Year_Visualizer
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.main_files.main_fast_hypercube_one_altitudes import \
+    get_fast_parameters
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.main_files.main_full_hypercube import \
+    get_full_parameters
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.quantity_altitude_visualizer import \
+    QuantityAltitudeHypercubeVisualizer
+from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.utils_hypercube import \
+    load_altitude_visualizer, load_quantity_visualizer
+from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
+    ALL_ALTITUDES, SCM_STUDIES
+from experiment.trend_analysis.univariate_test.abstract_gev_change_point_test import GevLocationChangePointTest
+
+
+def get_fast_altitude_visualizer(altitude_hypercube_class):
+    altitudes, last_starting_year, nb_data_reduced_for_speed, only_first_one, save_to_file, trend_test_class = get_fast_parameters()
+    study_classes = [CrocusRecentSwe]
+    visualizer = load_altitude_visualizer(altitude_hypercube_class, altitudes, last_starting_year,
+                                          nb_data_reduced_for_speed, only_first_one, save_to_file, study_classes,
+                                          trend_test_class)
+    return visualizer
+
+
+def main_fast_spatial_repartition():
+    # Simply the main graph
+    get_fast_altitude_visualizer(Altitude_Hypercube_Year_Visualizer).visualize_massif_trend_test()
+
+
+def get_full_altitude_visualizer(altitude_hypercube_class):
+    altitudes, first_starting_year, last_starting_year, nb_data_reduced_for_speed, only_first_one, save_to_file, trend_test_class = get_full_parameters(altitude=900)
+    study_classes = [CrocusRecentSwe]
+    visualizer = load_altitude_visualizer(altitude_hypercube_class, altitudes, last_starting_year,
+                                          nb_data_reduced_for_speed, only_first_one, save_to_file, study_classes,
+                                          trend_test_class, first_starting_year=first_starting_year)
+    return visualizer
+
+
+def main_full_spatial_repartition():
+    get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer).visualize_massif_trend_test()
+
+
+def main_run():
+    main_full_spatial_repartition()
+
+
+if __name__ == '__main__':
+    start = time.time()
+    main_run()
+    duration = time.time() - start
+    print('Full run took {}s'.format(round(duration, 1)))
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/utils_hypercube.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/utils_hypercube.py
index f0eac21a..910fde99 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/utils_hypercube.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/utils_hypercube.py
@@ -31,7 +31,7 @@ def load_quantity_visualizer(quantity_hypercube_class, altitudes, last_starting_
 
 def load_altitude_visualizer(altitude_hypercube_class, altitudes, last_starting_year, nb_data_reduced_for_speed,
                              only_first_one, save_to_file, study_classes, trend_test_class
-                             , exact_starting_year=None):
+                             , exact_starting_year=None, first_starting_year=1958):
     visualizers = [StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
                    for study in study_iterator_global(study_classes=study_classes, only_first_one=only_first_one,
                                                       altitudes=altitudes)]
@@ -41,6 +41,7 @@ def load_altitude_visualizer(altitude_hypercube_class, altitudes, last_starting_
                                           trend_test_class=trend_test_class,
                                           nb_data_reduced_for_speed=nb_data_reduced_for_speed,
                                           last_starting_year=last_starting_year,
+                                          first_starting_year=first_starting_year,
                                           exact_starting_year=exact_starting_year,
                                           )
     assert isinstance(visualizer, AltitudeHypercubeVisualizer)
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py
index fd6f2f38..7d22db85 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/main_study_visualizer.py
@@ -6,7 +6,7 @@ from experiment.meteo_france_data.scm_models_data.visualization.study_visualizat
 from experiment.trend_analysis.abstract_score import MannKendall
 from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy
 from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusDepth, CrocusTotalSwe, ExtendedCrocusDepth, \
-    ExtendedCrocusTotalSwe, CrocusDaysWithSnowOnGround
+    ExtendedCrocusTotalSwe, CrocusDaysWithSnowOnGround, CrocusRecentSwe
 from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, ExtendedSafranSnowfall, \
     SafranRainfall, \
     SafranTemperature, SafranTotalPrecip
@@ -23,7 +23,8 @@ SCM_STUDIES_NAMES = [get_display_name_from_object_type(k) for k in SCM_STUDIES]
 SCM_STUDY_NAME_TO_SCM_STUDY = dict(zip(SCM_STUDIES_NAMES, SCM_STUDIES))
 SCM_STUDY_CLASS_TO_ABBREVIATION = {
     SafranSnowfall: 'SF3',
-    CrocusTotalSwe: 'SWE',
+    CrocusTotalSwe: 'TSWE',
+    CrocusRecentSwe: 'RSWE',
     CrocusDepth: 'SD',
 }
 
diff --git a/experiment/trend_analysis/univariate_test/abstract_univariate_test.py b/experiment/trend_analysis/univariate_test/abstract_univariate_test.py
index 25227064..e0b1e3ec 100644
--- a/experiment/trend_analysis/univariate_test/abstract_univariate_test.py
+++ b/experiment/trend_analysis/univariate_test/abstract_univariate_test.py
@@ -58,7 +58,7 @@ class AbstractUnivariateTest(object):
         d = OrderedDict()
         # d[cls.POSITIVE_TREND] = 'g--'
         # d[cls.NEGATIVE_TREND] = 'r--'
-        # d[cls.ALL_TREND] = 'k-'
+        d[cls.ALL_TREND] = 'k-'
         d[cls.NON_SIGNIFICATIVE_TREND] = 'b-'
         # d[cls.SIGNIFICATIVE_ALL_TREND] = 'k-'
         d[cls.SIGNIFICATIVE_POSITIVE_TREND] = 'g-'
@@ -94,6 +94,8 @@ class AbstractUnivariateTest(object):
             return plt.cm.Greens
         elif 'negative' in trend_type:
             return plt.cm.Reds
+        elif 'non' in trend_type:
+            return plt.cm.Blues
         else:
             return plt.cm.binary
 
-- 
GitLab