diff --git a/experiment/meteo_france_data/scm_models_data/abstract_extended_study.py b/experiment/meteo_france_data/scm_models_data/abstract_extended_study.py index d95b87097c047484748e1641ad1a30d0da18b440..b832fe110e54aa817fbabdbf8b07149cb23ce3ec 100644 --- a/experiment/meteo_france_data/scm_models_data/abstract_extended_study.py +++ b/experiment/meteo_france_data/scm_models_data/abstract_extended_study.py @@ -9,11 +9,13 @@ from utils import classproperty class AbstractExtendedStudy(AbstractStudy): - - @classproperty def region_names(cls): - return ['Alps', 'Northern Alps', 'Central Alps', 'Southern Alps', 'Extreme South Alps'] + return ['Alps'] + cls.real_region_names + + @classproperty + def real_region_names(self): + return ['Northern Alps', 'Central Alps', 'Southern Alps', 'Extreme South Alps'] @property def nb_region_names(self): diff --git a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py index 0311cdb3dd9079dfa45c892cba42ffc0ff56f419..3eef090005d5a469d9630563cb943eb1308d76b3 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py @@ -10,6 +10,7 @@ import numpy as np import pandas as pd import seaborn as sns +from experiment.meteo_france_data.scm_models_data.abstract_extended_study import AbstractExtendedStudy from experiment.trend_analysis.abstract_score import MeanScore, AbstractTrendScore from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy from experiment.trend_analysis.univariate_test.abstract_gev_change_point_test import AbstractGevChangePointTest @@ -414,9 +415,17 @@ class StudyVisualizer(VisualizationParameters): @cached_property def _massif_name_to_gev_change_point_test_results(self): massif_name_to_gev_change_point_test_results = {} - massif_names = self.study.study_massif_names - if self.nb_massif_for_change_point_test is not None: - massif_names = sample(massif_names, self.nb_massif_for_change_point_test) + if self.nb_massif_for_change_point_test is None: + massif_names = self.study.study_massif_names + else: + # Get one massif from each region to ensure that the fast plot will not crash + assert self.nb_massif_for_change_point_test >= 4, 'we need at least one massif from each region' + massif_names = [AbstractExtendedStudy.region_name_to_massif_names[r][0] + for r in AbstractExtendedStudy.real_region_names] + massif_names_for_sampling = list(set(self.study.study_massif_names) - set(massif_names)) + nb_massif_for_sampling = self.nb_massif_for_change_point_test - len(AbstractExtendedStudy.real_region_names) + massif_names += sample(massif_names_for_sampling, k=nb_massif_for_sampling) + for massif_id, massif_name in enumerate(massif_names): years, smooth_maxima = self.smooth_maxima_x_y(massif_id) gev_change_point_test_results = compute_gev_change_point_test_results(self.multiprocessing, smooth_maxima,