From 00bd8a558b6aab58ede78d4293141665d77f9755 Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Tue, 11 Jun 2019 18:34:58 +0200
Subject: [PATCH] [HYPERCUBE] refactor main scripts. add two main. add
 utils_hypercube.

---
 .../main_fast_hypercube.py                    |  66 ++++
 .../main_full_hypercube.py                    |  69 ++++
 .../main_hypercube_visualization.py           | 307 ------------------
 .../utils_hypercube.py                        |  47 +++
 4 files changed, 182 insertions(+), 307 deletions(-)
 create mode 100644 experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_fast_hypercube.py
 create mode 100644 experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_full_hypercube.py
 delete mode 100644 experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py
 create mode 100644 experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/utils_hypercube.py

diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_fast_hypercube.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_fast_hypercube.py
new file mode 100644
index 00000000..b91c497c
--- /dev/null
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_fast_hypercube.py
@@ -0,0 +1,66 @@
+import time
+
+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
+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_parameters():
+    save_to_file = False
+    only_first_one = False
+    nb_data_reduced_for_speed = 4
+    altitudes = [ALL_ALTITUDES[3], ALL_ALTITUDES[-7]]
+    last_starting_year = None
+    trend_test_class = GevLocationChangePointTest
+    return altitudes, last_starting_year, nb_data_reduced_for_speed, only_first_one, save_to_file, trend_test_class
+
+
+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 = SCM_STUDIES[:1]
+    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 get_fast_quantity_visualizer(quantity_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 = SCM_STUDIES[:2]
+    visualizer = load_quantity_visualizer(quantity_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_mean_log_likelihood():
+    get_fast_quantity_visualizer(QuantityHypercubeWithoutTrendExtended).vsualize_year_trend_by_regions_and_altitudes(
+        add_detailed_plot=True)
+    # get_fast_altitude_visualizer(AltitudeHypercubeVisualizerWithoutTrendExtended).vsualize_year_trend_by_regions_and_altitudes()
+
+
+def main_percentage_trend():
+    visualizer = get_fast_altitude_visualizer(AltitudeHypercubeVisualizerBisExtended)
+    visualizer.vsualize_year_trend_by_regions_and_altitudes()
+    visualizer.visualize_massif_trend_test_by_altitudes()
+    visualizer.visualize_altitute_trend_test_by_regions()
+
+
+def main_run():
+    main_mean_log_likelihood()
+    # main_percentage_trend()
+
+
+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/main_full_hypercube.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_full_hypercube.py
new file mode 100644
index 00000000..00684f7f
--- /dev/null
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_full_hypercube.py
@@ -0,0 +1,69 @@
+import time
+
+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
+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_full_parameters():
+    save_to_file = True
+    only_first_one = False
+    nb_data_reduced_for_speed = False
+    altitudes = ALL_ALTITUDES[3:-6]
+    last_starting_year = 2007
+    trend_test_class = GevLocationChangePointTest
+    return altitudes, 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, exact_starting_year=None):
+    altitudes, last_starting_year, nb_data_reduced_for_speed, only_first_one, save_to_file, trend_test_class = get_full_parameters()
+    study_classes = SCM_STUDIES[:1]
+    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)
+    return visualizer
+
+
+def get_full_quantity_visualizer(quantity_hypercube_class):
+    altitudes, last_starting_year, nb_data_reduced_for_speed, only_first_one, save_to_file, trend_test_class = get_full_parameters()
+    study_classes = SCM_STUDIES[:3]
+    visualizer = load_quantity_visualizer(quantity_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_mean_log_likelihood():
+    get_full_quantity_visualizer(QuantityHypercubeWithoutTrendExtended).vsualize_year_trend_by_regions_and_altitudes(
+        add_detailed_plot=True)
+    # get_full_altitude_visualizer(AltitudeHypercubeVisualizerWithoutTrendExtended).vsualize_year_trend_by_regions_and_altitudes()
+
+
+def main_percentage_trend():
+    visualizer = get_full_altitude_visualizer(AltitudeHypercubeVisualizerBisExtended, exact_starting_year=1981)
+    visualizer.vsualize_year_trend_by_regions_and_altitudes()
+    visualizer.visualize_massif_trend_test_by_altitudes()
+    visualizer.visualize_altitute_trend_test_by_regions()
+
+
+def main_run():
+    # main_mean_log_likelihood()
+    main_percentage_trend()
+
+
+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/main_hypercube_visualization.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py
deleted file mode 100644
index 38badb9b..00000000
--- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py
+++ /dev/null
@@ -1,307 +0,0 @@
-import time
-from collections import OrderedDict
-from itertools import product
-
-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 \
-    AltitudeYearHypercubeVisualizerExtended, AltitudeHypercubeVisualizerExtended, \
-    AltitudeHypercubeVisualizerBisExtended, AltitudeHypercubeVisualizerWithoutTrendExtended, \
-    QuantityHypercubeWithoutTrend, QuantityHypercubeWithoutTrendExtended
-from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
-    Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
-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.study_visualization.main_study_visualizer import \
-    ALL_ALTITUDES, SCM_STUDIES, study_iterator, study_iterator_global
-from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
-    StudyVisualizer
-from experiment.trend_analysis.univariate_test.abstract_gev_change_point_test import GevLocationChangePointTest, \
-    GevScaleChangePointTest, GevShapeChangePointTest
-from utils import get_display_name_from_object_type
-
-
-def full_trends_with_altitude_hypercube():
-    save_to_file = True
-    only_first_one = False
-    fast = False
-    altitudes = ALL_ALTITUDES[3:-6]
-    for study_class in SCM_STUDIES[:1]:
-        for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:1]:
-            visualizers = [StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
-                           for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
-                                                       altitudes=altitudes)]
-            altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
-            visualizer = AltitudeHypercubeVisualizer(altitude_to_visualizer, save_to_file=save_to_file,
-                                                     trend_test_class=trend_test_class, nb_data_reduced_for_speed=False)
-            visualizer.visualize_massif_trend_test()
-            visualizer.visualize_year_trend_test()
-            visualizer.visualize_altitude_trend_test()
-
-
-def full_quantity_altitude_hypercube():
-    save_to_file = True
-    only_first_one = False
-    fast = False
-    add_detailed_plots = True
-    altitudes = ALL_ALTITUDES[3:-6]
-    study_classes = SCM_STUDIES
-    for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:1]:
-        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)]
-        study_classes_str = [get_display_name_from_object_type(c) for c in study_classes]
-        quantity_altitude_tuples = list(product(study_classes_str, altitudes))
-        quantity_altitude_to_visualizer = OrderedDict(zip(quantity_altitude_tuples, visualizers))
-        visualizer = QuantityHypercubeWithoutTrendExtended(quantity_altitude_to_visualizer,
-                                                           save_to_file=save_to_file,
-                                                           trend_test_class=trend_test_class,
-                                                           nb_data_reduced_for_speed=False,
-                                                           last_starting_year=2007,
-                                                           )
-        visualizer.vsualize_year_trend_by_regions_and_altitudes()
-
-
-def fast_altitude_hypercube():
-    save_to_file = False
-    only_first_one = False
-    fast = True
-    altitudes = [ALL_ALTITUDES[3], ALL_ALTITUDES[-7]]
-    for study_class in SCM_STUDIES[:1]:
-        for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:1]:
-            visualizers = [StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
-                           for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
-                                                       altitudes=altitudes)]
-            altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
-            visualizer = AltitudeHypercubeVisualizer(altitude_to_visualizer, save_to_file=save_to_file,
-                                                     trend_test_class=trend_test_class, nb_data_reduced_for_speed=fast)
-            # visualizer.visualize_year_trend_test()
-            # visualizer.visualize_massif_trend_test()
-            visualizer.visualize_altitude_trend_test()
-
-
-def fast_altitude_year_hypercube():
-    save_to_file = False
-    only_first_one = False
-    nb_data_reduced_for_speed = True
-    altitudes = [ALL_ALTITUDES[3], ALL_ALTITUDES[-7]]
-    for study_class in SCM_STUDIES[:1]:
-        for last_starting_year in [None, 1989, 1999][:1]:
-            for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:1]:
-                visualizers = [
-                    StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
-                    for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
-                                                altitudes=altitudes)]
-                altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
-                visualizer = Altitude_Hypercube_Year_Visualizer(altitude_to_visualizer, save_to_file=save_to_file,
-                                                                trend_test_class=trend_test_class,
-                                                                nb_data_reduced_for_speed=nb_data_reduced_for_speed,
-                                                                last_starting_year=last_starting_year)
-                # visualizer.visualize_year_trend_test()
-                visualizer.visualize_altitude_trend_test()
-                # visualizer.visualize_massif_trend_test()
-
-
-def fast_altitude_without_trend_type_hypercube_extended():
-    save_to_file = False
-    only_first_one = False
-    nb_data_reduced_for_speed = True
-    altitudes = [ALL_ALTITUDES[3], ALL_ALTITUDES[-7]]
-    for study_class in SCM_STUDIES[:1]:
-        for last_starting_year in [None, 1989, 1999][:1]:
-            for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:1]:
-                visualizers = [
-                    StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
-                    for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
-                                                altitudes=altitudes)]
-                altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
-                visualizer = QuantityHypercubeWithoutTrendExtended(altitude_to_visualizer,
-                                                                   save_to_file=save_to_file,
-                                                                   trend_test_class=trend_test_class,
-                                                                   nb_data_reduced_for_speed=nb_data_reduced_for_speed,
-                                                                   last_starting_year=last_starting_year)
-                visualizer.vsualize_year_trend_by_regions_and_altitudes()
-
-                # visualizer = QuantityHypercubeWithoutTrend(altitude_to_visualizer,
-                #                                            save_to_file=save_to_file,
-                #                                            trend_test_class=trend_test_class,
-                #                                            nb_data_reduced_for_speed=nb_data_reduced_for_speed,
-                #                                            last_starting_year=last_starting_year)
-                # visualizer.visualize_year_trend_test()
-
-
-def fast_altitude_year_hypercube_extended():
-    save_to_file = True
-    only_first_one = False
-    nb_data_reduced_for_speed = True
-    altitudes = [ALL_ALTITUDES[3], ALL_ALTITUDES[-7]]
-    for study_class in SCM_STUDIES[:1]:
-        for exact_starting_year in [1980, 1981]:
-            for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:1]:
-                visualizers = [
-                    StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
-                    for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
-                                                altitudes=altitudes)]
-                altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
-                visualizer = AltitudeHypercubeVisualizerExtended(altitude_to_visualizer, save_to_file=save_to_file,
-                                                                 trend_test_class=trend_test_class,
-                                                                 nb_data_reduced_for_speed=nb_data_reduced_for_speed,
-                                                                 exact_starting_year=exact_starting_year)
-                # visualizer.visualize_year_trend_test()
-                # visualizer.visualize_altitude_trend_test()
-                # visualizer.visualize_massif_trend_test_by_altitudes()
-                visualizer.vsualize_year_trend_by_regions_and_altitudes()
-                visualizer.visualize_massif_trend_test_by_altitudes()
-                visualizer.visualize_altitute_trend_test_by_regions()
-                # visualizer.visualize_massif_trend_test()
-
-
-def full_altitude_year_hypercube():
-    save_to_file = True
-    only_first_one = False
-    nb_data_reduced_for_speed = False
-    altitudes = ALL_ALTITUDES[3:-6]
-    for study_class in SCM_STUDIES[:1]:
-        for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest,
-                                 GevShapeChangePointTest][:1]:
-            years = [1967, 1977, 1987, 1997, 2007, None][-2:-1][::-1]
-            for last_starting_year in years:
-                visualizers = [
-                    StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
-                    for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
-                                                altitudes=altitudes)]
-                altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
-                visualizer = Altitude_Hypercube_Year_Visualizer(altitude_to_visualizer,
-                                                                save_to_file=save_to_file,
-                                                                trend_test_class=trend_test_class,
-                                                                nb_data_reduced_for_speed=nb_data_reduced_for_speed,
-                                                                last_starting_year=last_starting_year)
-                visualizer.visualize_year_trend_test()
-                visualizer.visualize_massif_trend_test()
-                visualizer.visualize_altitude_trend_test()
-
-
-def full_exact_altitude_year_hypercube():
-    save_to_file = True
-    only_first_one = False
-    nb_data_reduced_for_speed = False
-    altitudes = ALL_ALTITUDES[3:-6]
-    for study_class in SCM_STUDIES[:]:
-        for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest,
-                                 GevShapeChangePointTest][:1]:
-            years = [1980, 1981, 1982][:]
-            for exact_starting_year in years:
-                visualizers = [
-                    StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
-                    for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
-                                                altitudes=altitudes)]
-                altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
-                visualizer = Altitude_Hypercube_Year_Visualizer(altitude_to_visualizer,
-                                                                save_to_file=save_to_file,
-                                                                trend_test_class=trend_test_class,
-                                                                nb_data_reduced_for_speed=nb_data_reduced_for_speed,
-                                                                exact_starting_year=exact_starting_year)
-                visualizer.visualize_year_trend_test()
-                visualizer.visualize_massif_trend_test()
-                visualizer.visualize_altitude_trend_test()
-
-
-def full_altitude_year_hypercube_extended():
-    save_to_file = True
-    only_first_one = False
-    nb_data_reduced_for_speed = False
-    altitudes = ALL_ALTITUDES[3:-6]
-    for study_class in SCM_STUDIES[1:]:
-        for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest,
-                                 GevShapeChangePointTest][:1]:
-            years = [1967, 1977, 1987, 1997, 2007, None][-4:]
-            for last_starting_year in years:
-                for days in [1, 3][1:]:
-                    visualizers = [
-                        StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
-                        for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
-                                                    altitudes=altitudes, nb_consecutive_days=days)]
-                    altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
-                    visualizer = AltitudeHypercubeVisualizerBisExtended(altitude_to_visualizer,
-                                                                        save_to_file=save_to_file,
-                                                                        trend_test_class=trend_test_class,
-                                                                        nb_data_reduced_for_speed=nb_data_reduced_for_speed,
-                                                                        last_starting_year=last_starting_year,
-                                                                        )
-                    visualizer.vsualize_year_trend_by_regions_and_altitudes()
-                    visualizer.visualize_altitute_trend_test_by_regions()
-                    visualizer.visualize_massif_trend_test_by_altitudes()
-                    # visualizer.visualize_year_trend_test()
-                    # visualizer.visualize_massif_trend_test()
-                    # visualizer.visualize_altitude_trend_test()
-
-
-def full_altitude_year_hypercube__without_trend_extended():
-    save_to_file = True
-    only_first_one = False
-    nb_data_reduced_for_speed = False
-    altitudes = ALL_ALTITUDES[3:-6]
-    for study_class in SCM_STUDIES[:]:
-        for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest,
-                                 GevShapeChangePointTest][:1]:
-            years = [2007, None][:]
-            for last_starting_year in years:
-                for days in [1, 3][1:]:
-                    visualizers = [
-                        StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
-                        for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
-                                                    altitudes=altitudes, nb_consecutive_days=days)]
-                    altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
-                    # visualizer = QuantityHypercubeWithoutTrendExtended(altitude_to_visualizer,
-                    #                                                              save_to_file=save_to_file,
-                    #                                                              trend_test_class=trend_test_class,
-                    #                                                              nb_data_reduced_for_speed=nb_data_reduced_for_speed,
-                    #                                                              last_starting_year=last_starting_year,
-                    #                                                              )
-                    # visualizer.vsualize_year_trend_by_regions_and_altitudes()
-
-
-def fast_quantity_altitude_hypercube():
-    save_to_file = False
-    only_first_one = False
-    fast = True
-    altitudes = ALL_ALTITUDES[2:4]
-    study_classes = SCM_STUDIES[:2]
-    for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:1]:
-        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)]
-        study_classes_str = [get_display_name_from_object_type(c) for c in study_classes]
-        quantity_altitude_tuples = list(product(study_classes_str, altitudes))
-        quantity_altitude_to_visualizer = OrderedDict(zip(quantity_altitude_tuples, visualizers))
-        visualizer = QuantityHypercubeWithoutTrend(quantity_altitude_to_visualizer, save_to_file=save_to_file,
-                                                   trend_test_class=trend_test_class, nb_data_reduced_for_speed=True)
-        visualizer.visualize_year_trend_test()
-        # visualizer.visualize_massif_trend_test()
-        # visualizer.visualize_altitude_trend_test()
-
-
-def main_run():
-    # fast_altitude_hypercube()
-    # fast_altitude_year_hypercube()
-
-    # fast_quantity_altitude_hypercube()
-    # fast_altitude_year_hypercube_extended()
-    full_exact_altitude_year_hypercube()
-    # full_altitude_year_hypercube__without_trend_extended()
-    # fast_altitude_without_trend_type_hypercube_extended()
-    # full_quantity_altitude_hypercube()
-
-    # fast_altitude_year_hypercube_extended()
-    # full_altitude_year_hypercube_extended()
-
-    # full_altitude_year_hypercube()
-    # fast_quantity_altitude_hypercube()
-    # full_quantity_altitude_hypercube()
-
-
-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
new file mode 100644
index 00000000..f0eac21a
--- /dev/null
+++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/utils_hypercube.py
@@ -0,0 +1,47 @@
+from collections import OrderedDict
+from itertools import product
+
+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.quantity_altitude_visualizer import \
+    QuantityAltitudeHypercubeVisualizer
+from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
+    study_iterator_global
+from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
+    StudyVisualizer
+from utils import get_display_name_from_object_type
+
+
+def load_quantity_visualizer(quantity_hypercube_class, altitudes, last_starting_year, nb_data_reduced_for_speed, only_first_one,
+                             save_to_file, study_classes, trend_test_class):
+    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)]
+    study_classes_str = [get_display_name_from_object_type(c) for c in study_classes]
+    quantity_altitude_tuples = list(product(study_classes_str, altitudes))
+    quantity_altitude_to_visualizer = OrderedDict(zip(quantity_altitude_tuples, visualizers))
+    visualizer = quantity_hypercube_class(quantity_altitude_to_visualizer,
+                                          save_to_file=save_to_file,
+                                          trend_test_class=trend_test_class,
+                                          nb_data_reduced_for_speed=nb_data_reduced_for_speed,
+                                          last_starting_year=last_starting_year)
+    assert isinstance(visualizer, QuantityAltitudeHypercubeVisualizer)
+    return visualizer
+
+
+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):
+    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)]
+    altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
+    visualizer = altitude_hypercube_class(altitude_to_visualizer,
+                                          save_to_file=save_to_file,
+                                          trend_test_class=trend_test_class,
+                                          nb_data_reduced_for_speed=nb_data_reduced_for_speed,
+                                          last_starting_year=last_starting_year,
+                                          exact_starting_year=exact_starting_year,
+                                          )
+    assert isinstance(visualizer, AltitudeHypercubeVisualizer)
+    return visualizer
-- 
GitLab