From 46e79f666b731251778640f07ff1ea6b28db9df2 Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Sun, 9 Jun 2019 10:30:28 +0200 Subject: [PATCH] [SCM MODEL] fix keywords for SWE and Snow depth --- .../scm_models_data/abstract_variable.py | 5 ++--- .../scm_models_data/crocus/crocus.py | 12 +++--------- .../scm_models_data/crocus/crocus_variables.py | 8 ++++---- .../scm_models_data/cumulated_study.py | 3 --- .../scm_models_data/safran/safran_variable.py | 10 +++++----- .../study_visualization/main_study_visualizer.py | 6 ++---- test/test_experiment/test_SCM_study.py | 1 - 7 files changed, 16 insertions(+), 29 deletions(-) diff --git a/experiment/meteo_france_data/scm_models_data/abstract_variable.py b/experiment/meteo_france_data/scm_models_data/abstract_variable.py index 62e9457c..2ed37e12 100644 --- a/experiment/meteo_france_data/scm_models_data/abstract_variable.py +++ b/experiment/meteo_france_data/scm_models_data/abstract_variable.py @@ -9,12 +9,11 @@ class AbstractVariable(object): NAME = '' UNIT = '' - def __init__(self, variable_array, nb_consecutive_days=3): + def __init__(self, variable_array): self.variable_array = variable_array - self.nb_consecutive_days = nb_consecutive_days @classmethod - def keyword(cls, nb_consecutive_days=3): + def keyword(cls): raise NotImplementedError @property diff --git a/experiment/meteo_france_data/scm_models_data/crocus/crocus.py b/experiment/meteo_france_data/scm_models_data/crocus/crocus.py index 11fe787e..c25c0af6 100644 --- a/experiment/meteo_france_data/scm_models_data/crocus/crocus.py +++ b/experiment/meteo_france_data/scm_models_data/crocus/crocus.py @@ -3,7 +3,6 @@ import numpy as np from experiment.meteo_france_data.scm_models_data.abstract_extended_study import AbstractExtendedStudy from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy from experiment.meteo_france_data.scm_models_data.crocus.crocus_variables import CrocusSweVariable, CrocusDepthVariable -from experiment.meteo_france_data.scm_models_data.cumulated_study import CumulatedStudy class Crocus(AbstractStudy): @@ -26,10 +25,9 @@ class Crocus(AbstractStudy): return super().apply_annual_aggregation(time_serie[91:-92, ...]) -class CrocusSwe(Crocus, CumulatedStudy): +class CrocusSwe(Crocus): def __init__(self, *args, **kwargs): - CumulatedStudy.__init__(self, CrocusSweVariable, *args, **kwargs) Crocus.__init__(self, CrocusSweVariable, *args, **kwargs) def apply_annual_aggregation(self, time_serie): @@ -40,10 +38,9 @@ class ExtendedCrocusSwe(AbstractExtendedStudy, CrocusSwe): pass -class CrocusDepth(Crocus, CumulatedStudy): +class CrocusDepth(Crocus): def __init__(self, *args, **kwargs): - CumulatedStudy.__init__(self, CrocusDepthVariable, *args, **kwargs) Crocus.__init__(self, CrocusDepthVariable, *args, **kwargs) def apply_annual_aggregation(self, time_serie): @@ -65,9 +62,6 @@ class CrocusDaysWithSnowOnGround(Crocus): if __name__ == '__main__': - for study in [CrocusSwe(altitude=900)]: - d = study.year_to_dataset_ordered_dict[1960] - print(study.df_massifs_longitude_and_latitude) - time_arr = np.array(d.variables['time']) + for study in [CrocusSwe(altitude=900), CrocusSwe(altitude=3000)]: a = study.year_to_daily_time_serie_array[1960] print(a.shape) diff --git a/experiment/meteo_france_data/scm_models_data/crocus/crocus_variables.py b/experiment/meteo_france_data/scm_models_data/crocus/crocus_variables.py index cb51b05f..065d641e 100644 --- a/experiment/meteo_france_data/scm_models_data/crocus/crocus_variables.py +++ b/experiment/meteo_france_data/scm_models_data/crocus/crocus_variables.py @@ -15,8 +15,8 @@ class CrocusSweVariable(CrocusVariable): UNIT = 'kg per m2 or mm' @classmethod - def keyword(cls, nb_consecutive_days=3): - return 'SWE_{}DY_ISBA'.format(nb_consecutive_days) + def keyword(cls): + return 'WSN_T_ISBA' class CrocusDepthVariable(CrocusVariable): @@ -24,5 +24,5 @@ class CrocusDepthVariable(CrocusVariable): UNIT = 'm' @classmethod - def keyword(cls, nb_consecutive_days=3): - return "SD_{}DY_ISBA".format(nb_consecutive_days) + def keyword(cls): + return "DSN_T_ISBA" diff --git a/experiment/meteo_france_data/scm_models_data/cumulated_study.py b/experiment/meteo_france_data/scm_models_data/cumulated_study.py index 15166779..0d089755 100644 --- a/experiment/meteo_france_data/scm_models_data/cumulated_study.py +++ b/experiment/meteo_france_data/scm_models_data/cumulated_study.py @@ -13,9 +13,6 @@ class CumulatedStudy(AbstractStudy): def instantiate_variable_object(self, variable_array) -> AbstractVariable: return self.variable_class(variable_array, self.nb_consecutive_days) - def load_keyword(self): - return self.variable_class.keyword(self.nb_consecutive_days) - @property def variable_name(self): return super().variable_name + ' cumulated over {} day(s)'.format(self.nb_consecutive_days) diff --git a/experiment/meteo_france_data/scm_models_data/safran/safran_variable.py b/experiment/meteo_france_data/scm_models_data/safran/safran_variable.py index ef9cf610..9484b1de 100644 --- a/experiment/meteo_france_data/scm_models_data/safran/safran_variable.py +++ b/experiment/meteo_france_data/scm_models_data/safran/safran_variable.py @@ -25,10 +25,10 @@ class SafranSnowfallVariable(AbstractVariable): UNIT = 'kg per m2 or mm' @classmethod - def keyword(cls, nb_consecutive_days=3): + def keyword(cls): return 'Snowf' - def __init__(self, variable_array, nb_consecutive_days): + def __init__(self, variable_array, nb_consecutive_days=3): super().__init__(variable_array) self.nb_consecutive_days_of_snowfall = nb_consecutive_days # Compute the daily snowfall in kg/m2 @@ -70,7 +70,7 @@ class SafranRainfallVariable(SafranSnowfallVariable): UNIT = 'kg per m2 or mm' @classmethod - def keyword(cls, nb_consecutive_days=3): + def keyword(cls): return 'Rainf' @@ -82,7 +82,7 @@ class SafranTotalPrecipVariable(AbstractVariable): self.rain_precipitation = SafranRainfallVariable(rain_variable_array, nb_consecutive_days) @classmethod - def keyword(cls, nb_consecutive_days=3): + def keyword(cls): return [SafranSnowfallVariable.keyword(), SafranRainfallVariable.keyword()] @property @@ -95,7 +95,7 @@ class SafranTemperatureVariable(AbstractVariable): UNIT = 'Celsius Degrees' @classmethod - def keyword(cls, nb_consecutive_days=3): + def keyword(cls): return 'Tair' def __init__(self, variable_array): 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 c709209f..8ef168bd 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 @@ -38,9 +38,8 @@ List[AbstractStudy]: break -def study_iterator(study_class, only_first_one=False, verbose=True, altitudes=None, nb_consecutive_days=None) -> List[AbstractStudy]: +def study_iterator(study_class, only_first_one=False, verbose=True, altitudes=None, nb_consecutive_days=3) -> List[AbstractStudy]: # Default argument - nb_consecutive_days = 1 if nb_consecutive_days is None else nb_consecutive_days altis = [1800] if altitudes is None else altitudes if verbose: @@ -49,8 +48,7 @@ def study_iterator(study_class, only_first_one=False, verbose=True, altitudes=No if verbose: print('alti: {}, nb_day: {} '.format(alti, nb_consecutive_days), end='') - study = study_class(altitude=alti, - nb_consecutive_days=nb_consecutive_days) + study = study_class(altitude=alti) if verbose: massifs = study.altitude_to_massif_names[alti] diff --git a/test/test_experiment/test_SCM_study.py b/test/test_experiment/test_SCM_study.py index 05c0e83d..0379f390 100644 --- a/test/test_experiment/test_SCM_study.py +++ b/test/test_experiment/test_SCM_study.py @@ -32,7 +32,6 @@ class TestSCMAllStudy(unittest.TestCase): for study in study_iterator_global(study_classes=SCM_STUDIES, only_first_one=False, verbose=False, altitudes=sample(set(ALL_ALTITUDES), k=nb_sample), nb_days=nb_days): - self.assertTrue('day' in study.variable_name) first_path_file = study.ordered_years_and_path_files[0][0] variable_object = study.load_variable_object(path_file=first_path_file) self.assertEqual((365, 263), variable_object.daily_time_serie_array.shape, -- GitLab