From d862d32f8e7ab879401fa290dd790f905277e409 Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Sun, 9 Jun 2019 11:23:48 +0200 Subject: [PATCH] [STUDY] refactor study and extended study, so that reigon_name_to_massif becomes a class property --- .../abstract_extended_study.py | 26 ++++++++++++------- .../scm_models_data/abstract_study.py | 7 +++-- .../main_hypercube_visualization.py | 4 +-- 3 files changed, 21 insertions(+), 16 deletions(-) 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 93e98334..d95b8709 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 @@ -4,14 +4,15 @@ from collections import OrderedDict from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy from spatio_temporal_dataset.coordinates.spatial_coordinates.abstract_spatial_coordinates import \ AbstractSpatialCoordinates +from utils import classproperty class AbstractExtendedStudy(AbstractStudy): - @property - def region_names(self): + @classproperty + def region_names(cls): return ['Alps', 'Northern Alps', 'Central Alps', 'Southern Alps', 'Extreme South Alps'] @property @@ -22,22 +23,27 @@ class AbstractExtendedStudy(AbstractStudy): def study_massif_names(self): return self.region_names + super().study_massif_names - @property - def massif_name_to_region_name(self): - df_centroid = self.load_df_centroid() + @classproperty + def massif_name_to_region_name(cls): + df_centroid = cls.load_df_centroid() return OrderedDict(zip(df_centroid.index, df_centroid['REGION'])) - @property - def region_name_to_massif_ids(self): + @classproperty + def region_name_to_massif_names(cls): + return {k: [cls.original_safran_massif_id_to_massif_name[i] for i in v] + for k, v in cls.region_name_to_massif_ids.items()} + + @classproperty + def region_name_to_massif_ids(cls): region_name_to_massifs_ids = {} - for region_name_loop in self.region_names: + for region_name_loop in cls.region_names: # We use "is in" so that the "Alps" will automatically regroup all the massif data massif_names_belong_to_the_group = [massif_name - for massif_name, region_name in self.massif_name_to_region_name.items() + for massif_name, region_name in cls.massif_name_to_region_name.items() if region_name_loop in region_name] massif_ids_belong_to_the_group = [massif_id for massif_id, massif_name in - self.original_safran_massif_id_to_massif_name.items() + cls.original_safran_massif_id_to_massif_name.items() if massif_name in massif_names_belong_to_the_group] region_name_to_massifs_ids[region_name_loop] = massif_ids_belong_to_the_group return region_name_to_massifs_ids diff --git a/experiment/meteo_france_data/scm_models_data/abstract_study.py b/experiment/meteo_france_data/scm_models_data/abstract_study.py index 6fe1e078..7eebbec1 100644 --- a/experiment/meteo_france_data/scm_models_data/abstract_study.py +++ b/experiment/meteo_france_data/scm_models_data/abstract_study.py @@ -327,11 +327,10 @@ class AbstractStudy(object): """ Spatial properties """ - @property - def original_safran_massif_id_to_massif_name(self) -> Dict[int, str]: - return {massif_id: massif_name for massif_id, massif_name in enumerate(self.all_massif_names)} + @classproperty + def original_safran_massif_id_to_massif_name(cls) -> Dict[int, str]: + return {massif_id: massif_name for massif_id, massif_name in enumerate(cls.all_massif_names)} - # @cached_property @classproperty def all_massif_names(cls) -> List[str]: """ diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py index c577d90e..71e060ec 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py @@ -90,9 +90,9 @@ def fast_altitude_year_hypercube(): trend_test_class=trend_test_class, nb_data_reduced_for_speed=nb_data_reduced_for_speed, last_starting_year=last_starting_year) - visualizer.visualize_year_trend_test() + # visualizer.visualize_year_trend_test() visualizer.visualize_altitude_trend_test() - visualizer.visualize_massif_trend_test() + # visualizer.visualize_massif_trend_test() def full_altitude_year_hypercube(): -- GitLab