Commit d862d32f authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[STUDY] refactor study and extended study, so that reigon_name_to_massif becomes a class property

parent 05bc5a5e
No related merge requests found
Showing with 21 additions and 16 deletions
+21 -16
......@@ -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
......
......@@ -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]:
"""
......
......@@ -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():
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment