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