From 69ca6728042c951d32e9f317948b7dcaa7ea37a9 Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Sun, 9 Jun 2019 11:35:45 +0200 Subject: [PATCH] [HYPERCUBE] factorize/simplify hypercube code by creating a df_bool method --- .../altitude_hypercube_visualizer.py | 10 ++++++---- .../altitude_year_hypercube_visualizer.py | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) 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 fea1fe75..f90fcb94 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 @@ -35,13 +35,12 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer): # Map each trend type to its serie with percentages # Define here all the trend type we might need in the results/displays trend_types_to_process = list(self.display_trend_types) + [AbstractUnivariateTest.SIGNIFICATIVE_ALL_TREND] - return {trend_type: self.trend_type_reduction(reduction_function, trend_type)[0] + return {trend_type: self.trend_type_reduction(reduction_function, trend_type) for trend_type in trend_types_to_process} def trend_type_reduction(self, reduction_function, display_trend_type): # Reduce df_bool df to a serie s_trend_type_percentage - df_bool = self.df_hypercube_trend_type.isin(AbstractUnivariateTest.get_real_trend_types(display_trend_type)) - s_trend_type_percentage = reduction_function(df_bool) + s_trend_type_percentage = reduction_function(self.df_bool(display_trend_type)) assert isinstance(s_trend_type_percentage, pd.Series) assert not isinstance(s_trend_type_percentage.index, pd.MultiIndex) s_trend_type_percentage *= 100 @@ -51,7 +50,10 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer): # s_trend_strength = reduction_function(df_strength) # # Group result # series = [s_trend_type_percentage, s_trend_strength] - return series, df_bool + return series + + def df_bool(self, display_trend_type): + return self.df_hypercube_trend_type.isin(AbstractUnivariateTest.get_real_trend_types(display_trend_type)) def subtitle_to_reduction_function(self, reduction_function, level=None, add_detailed_plot=False, subtitle=None): def reduction_function_with_level(df_bool, **kwargs): diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_year_hypercube_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_year_hypercube_visualizer.py index e0ab124f..fb0be5f2 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_year_hypercube_visualizer.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/altitude_year_hypercube_visualizer.py @@ -27,11 +27,12 @@ class Altitude_Hypercube_Year_Visualizer(AltitudeHypercubeVisualizer): return df.mean(level=level) def trend_type_reduction(self, reduction_function, display_trend_type): - series, df_bool = super().trend_type_reduction(reduction_function, display_trend_type) + series = super().trend_type_reduction(reduction_function, display_trend_type) # Create df argmax + df_bool = self.df_bool(display_trend_type) df = df_bool.copy() df = (df * df.columns)[df_bool] # Reduce and append serie = reduction_function(df, year_visualization=True) series.append(serie) - return series, df_bool + return series -- GitLab