diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py index a7cb1b9800f8527d6eae597d70f377a1fe63c01f..58f19cbab74fdf81bae4062bf389dc1ec0e53daa 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/abstract_hypercube_visualizer.py @@ -30,6 +30,12 @@ class AbstractHypercubeVisualizer(object): self.trend_test_class = trend_test_class self.tuple_to_study_visualizer = tuple_to_study_visualizer # type: Dict[Tuple, StudyVisualizer] + if isinstance(nb_data_reduced_for_speed, bool): + self.nb_data_for_fast_mode = 7 if nb_data_reduced_for_speed else None + else: + assert isinstance(nb_data_reduced_for_speed, int) + self.nb_data_for_fast_mode = nb_data_reduced_for_speed + if exact_starting_year is not None: assert first_starting_year is None assert last_starting_year is None @@ -38,15 +44,17 @@ class AbstractHypercubeVisualizer(object): default_first_starting_year, *_, default_last_starting_year = self.all_potential_starting_years self.first_starting_year = first_starting_year if first_starting_year is not None else default_first_starting_year self.last_starting_year = last_starting_year if last_starting_year is not None else default_last_starting_year - if isinstance(nb_data_reduced_for_speed, bool): - self.nb_data_for_fast_mode = 7 if nb_data_reduced_for_speed else None - else: - assert isinstance(nb_data_reduced_for_speed, int) - self.nb_data_for_fast_mode = nb_data_reduced_for_speed + # Load starting year + self.starting_years = [year for year in self.all_potential_starting_years + if self.first_starting_year <= year <= self.last_starting_year] + if self.nb_data_for_fast_mode is not None: + self.starting_years = self.starting_years[:self.nb_data_for_fast_mode] + self.last_starting_year = self.starting_years[-1] if self.verbose: print('Hypercube with parameters:') - print('First starting year: {}, Last starting year: {}'.format(self.first_starting_year, self.last_starting_year)) + print('First starting year: {}, Last starting year: {}'.format(self.first_starting_year, + self.last_starting_year)) print('Starting years:', self.starting_years) print('Trend test class:', get_display_name_from_object_type(self.trend_test_class)) @@ -60,14 +68,6 @@ class AbstractHypercubeVisualizer(object): def all_potential_starting_years(self): return self.study_visualizer.starting_years - @cached_property - def starting_years(self): - starting_years = [year for year in self.all_potential_starting_years - if self.first_starting_year <= year <= self.last_starting_year] - if self.nb_data_for_fast_mode is not None: - starting_years = starting_years[:self.nb_data_for_fast_mode] - return starting_years - def tuple_values(self, idx): return sorted(set([t[idx] if isinstance(t, tuple) else t for t in self.tuple_to_study_visualizer.keys()])) @@ -81,11 +81,11 @@ class AbstractHypercubeVisualizer(object): df_spatio_temporal_trend_strength = [e[idx] for e in self.df_trends_spatio_temporal] return pd.concat(df_spatio_temporal_trend_strength, keys=list(self.tuple_to_study_visualizer.keys()), axis=0) - @cached_property def df_hypercube_trend_type(self) -> pd.DataFrame: return self._df_hypercube_trend_meta(idx=0 ) + @cached_property def df_hypercube_trend_strength(self) -> pd.DataFrame: return self._df_hypercube_trend_meta(idx=1) diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py index fcd7d4eb414f44d93c0f878a00f63b9bb83be4ee..91f579f567ac0153d396203f04dbfb9f0c398bcf 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_hypercube_visualizer.py @@ -143,7 +143,7 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer): if plot_title is not None: argmax_idx = np.argmax(values) best_year = xlabel_values[argmax_idx] - plot_title += '{} {}'.format(subtitle, best_year) + plot_title += ' (max reached in {})'.format(best_year) if subtitle in SCM_STUDY_NAME_TO_COLOR: ax, color, ylabel = ax.twinx(), SCM_STUDY_NAME_TO_COLOR[subtitle], subtitle 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 e221aa8bb7de0409d2790494f42459b947f35559..e37f169dd14068eec27b43f79187c6f34e0e872c 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 @@ -15,8 +15,11 @@ from collections import OrderedDict from experiment.trend_analysis.univariate_test.abstract_gev_change_point_test import GevLocationChangePointTest from spatio_temporal_dataset.coordinates.transformed_coordinates.transformation.uniform_normalization import \ BetweenZeroAndOneNormalization, BetweenMinusOneAndOneNormalization +from utils import get_display_name_from_object_type SCM_STUDIES = [SafranSnowfall, CrocusSwe, CrocusDepth] +SCM_STUDY_NAME_TO_COLOR = {get_display_name_from_object_type(s): color + for s, color in zip(SCM_STUDIES, ['r', 'b', 'g'])} SCM_EXTENDED_STUDIES = [ExtendedSafranSnowfall, ExtendedCrocusSwe, ExtendedCrocusDepth] SCM_STUDY_TO_EXTENDED_STUDY = OrderedDict(zip(SCM_STUDIES, SCM_EXTENDED_STUDIES))