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