Commit 46e79f66 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[SCM MODEL] fix keywords for SWE and Snow depth

parent 958c21b3
No related merge requests found
Showing with 16 additions and 29 deletions
+16 -29
...@@ -9,12 +9,11 @@ class AbstractVariable(object): ...@@ -9,12 +9,11 @@ class AbstractVariable(object):
NAME = '' NAME = ''
UNIT = '' UNIT = ''
def __init__(self, variable_array, nb_consecutive_days=3): def __init__(self, variable_array):
self.variable_array = variable_array self.variable_array = variable_array
self.nb_consecutive_days = nb_consecutive_days
@classmethod @classmethod
def keyword(cls, nb_consecutive_days=3): def keyword(cls):
raise NotImplementedError raise NotImplementedError
@property @property
......
...@@ -3,7 +3,6 @@ import numpy as np ...@@ -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_extended_study import AbstractExtendedStudy
from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy 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.crocus.crocus_variables import CrocusSweVariable, CrocusDepthVariable
from experiment.meteo_france_data.scm_models_data.cumulated_study import CumulatedStudy
class Crocus(AbstractStudy): class Crocus(AbstractStudy):
...@@ -26,10 +25,9 @@ class Crocus(AbstractStudy): ...@@ -26,10 +25,9 @@ class Crocus(AbstractStudy):
return super().apply_annual_aggregation(time_serie[91:-92, ...]) return super().apply_annual_aggregation(time_serie[91:-92, ...])
class CrocusSwe(Crocus, CumulatedStudy): class CrocusSwe(Crocus):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
CumulatedStudy.__init__(self, CrocusSweVariable, *args, **kwargs)
Crocus.__init__(self, CrocusSweVariable, *args, **kwargs) Crocus.__init__(self, CrocusSweVariable, *args, **kwargs)
def apply_annual_aggregation(self, time_serie): def apply_annual_aggregation(self, time_serie):
...@@ -40,10 +38,9 @@ class ExtendedCrocusSwe(AbstractExtendedStudy, CrocusSwe): ...@@ -40,10 +38,9 @@ class ExtendedCrocusSwe(AbstractExtendedStudy, CrocusSwe):
pass pass
class CrocusDepth(Crocus, CumulatedStudy): class CrocusDepth(Crocus):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
CumulatedStudy.__init__(self, CrocusDepthVariable, *args, **kwargs)
Crocus.__init__(self, CrocusDepthVariable, *args, **kwargs) Crocus.__init__(self, CrocusDepthVariable, *args, **kwargs)
def apply_annual_aggregation(self, time_serie): def apply_annual_aggregation(self, time_serie):
...@@ -65,9 +62,6 @@ class CrocusDaysWithSnowOnGround(Crocus): ...@@ -65,9 +62,6 @@ class CrocusDaysWithSnowOnGround(Crocus):
if __name__ == '__main__': if __name__ == '__main__':
for study in [CrocusSwe(altitude=900)]: for study in [CrocusSwe(altitude=900), CrocusSwe(altitude=3000)]:
d = study.year_to_dataset_ordered_dict[1960]
print(study.df_massifs_longitude_and_latitude)
time_arr = np.array(d.variables['time'])
a = study.year_to_daily_time_serie_array[1960] a = study.year_to_daily_time_serie_array[1960]
print(a.shape) print(a.shape)
...@@ -15,8 +15,8 @@ class CrocusSweVariable(CrocusVariable): ...@@ -15,8 +15,8 @@ class CrocusSweVariable(CrocusVariable):
UNIT = 'kg per m2 or mm' UNIT = 'kg per m2 or mm'
@classmethod @classmethod
def keyword(cls, nb_consecutive_days=3): def keyword(cls):
return 'SWE_{}DY_ISBA'.format(nb_consecutive_days) return 'WSN_T_ISBA'
class CrocusDepthVariable(CrocusVariable): class CrocusDepthVariable(CrocusVariable):
...@@ -24,5 +24,5 @@ class CrocusDepthVariable(CrocusVariable): ...@@ -24,5 +24,5 @@ class CrocusDepthVariable(CrocusVariable):
UNIT = 'm' UNIT = 'm'
@classmethod @classmethod
def keyword(cls, nb_consecutive_days=3): def keyword(cls):
return "SD_{}DY_ISBA".format(nb_consecutive_days) return "DSN_T_ISBA"
...@@ -13,9 +13,6 @@ class CumulatedStudy(AbstractStudy): ...@@ -13,9 +13,6 @@ class CumulatedStudy(AbstractStudy):
def instantiate_variable_object(self, variable_array) -> AbstractVariable: def instantiate_variable_object(self, variable_array) -> AbstractVariable:
return self.variable_class(variable_array, self.nb_consecutive_days) return self.variable_class(variable_array, self.nb_consecutive_days)
def load_keyword(self):
return self.variable_class.keyword(self.nb_consecutive_days)
@property @property
def variable_name(self): def variable_name(self):
return super().variable_name + ' cumulated over {} day(s)'.format(self.nb_consecutive_days) return super().variable_name + ' cumulated over {} day(s)'.format(self.nb_consecutive_days)
...@@ -25,10 +25,10 @@ class SafranSnowfallVariable(AbstractVariable): ...@@ -25,10 +25,10 @@ class SafranSnowfallVariable(AbstractVariable):
UNIT = 'kg per m2 or mm' UNIT = 'kg per m2 or mm'
@classmethod @classmethod
def keyword(cls, nb_consecutive_days=3): def keyword(cls):
return 'Snowf' return 'Snowf'
def __init__(self, variable_array, nb_consecutive_days): def __init__(self, variable_array, nb_consecutive_days=3):
super().__init__(variable_array) super().__init__(variable_array)
self.nb_consecutive_days_of_snowfall = nb_consecutive_days self.nb_consecutive_days_of_snowfall = nb_consecutive_days
# Compute the daily snowfall in kg/m2 # Compute the daily snowfall in kg/m2
...@@ -70,7 +70,7 @@ class SafranRainfallVariable(SafranSnowfallVariable): ...@@ -70,7 +70,7 @@ class SafranRainfallVariable(SafranSnowfallVariable):
UNIT = 'kg per m2 or mm' UNIT = 'kg per m2 or mm'
@classmethod @classmethod
def keyword(cls, nb_consecutive_days=3): def keyword(cls):
return 'Rainf' return 'Rainf'
...@@ -82,7 +82,7 @@ class SafranTotalPrecipVariable(AbstractVariable): ...@@ -82,7 +82,7 @@ class SafranTotalPrecipVariable(AbstractVariable):
self.rain_precipitation = SafranRainfallVariable(rain_variable_array, nb_consecutive_days) self.rain_precipitation = SafranRainfallVariable(rain_variable_array, nb_consecutive_days)
@classmethod @classmethod
def keyword(cls, nb_consecutive_days=3): def keyword(cls):
return [SafranSnowfallVariable.keyword(), SafranRainfallVariable.keyword()] return [SafranSnowfallVariable.keyword(), SafranRainfallVariable.keyword()]
@property @property
...@@ -95,7 +95,7 @@ class SafranTemperatureVariable(AbstractVariable): ...@@ -95,7 +95,7 @@ class SafranTemperatureVariable(AbstractVariable):
UNIT = 'Celsius Degrees' UNIT = 'Celsius Degrees'
@classmethod @classmethod
def keyword(cls, nb_consecutive_days=3): def keyword(cls):
return 'Tair' return 'Tair'
def __init__(self, variable_array): def __init__(self, variable_array):
......
...@@ -38,9 +38,8 @@ List[AbstractStudy]: ...@@ -38,9 +38,8 @@ List[AbstractStudy]:
break 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 # Default argument
nb_consecutive_days = 1 if nb_consecutive_days is None else nb_consecutive_days
altis = [1800] if altitudes is None else altitudes altis = [1800] if altitudes is None else altitudes
if verbose: if verbose:
...@@ -49,8 +48,7 @@ def study_iterator(study_class, only_first_one=False, verbose=True, altitudes=No ...@@ -49,8 +48,7 @@ def study_iterator(study_class, only_first_one=False, verbose=True, altitudes=No
if verbose: if verbose:
print('alti: {}, nb_day: {} '.format(alti, nb_consecutive_days), end='') print('alti: {}, nb_day: {} '.format(alti, nb_consecutive_days), end='')
study = study_class(altitude=alti, study = study_class(altitude=alti)
nb_consecutive_days=nb_consecutive_days)
if verbose: if verbose:
massifs = study.altitude_to_massif_names[alti] massifs = study.altitude_to_massif_names[alti]
......
...@@ -32,7 +32,6 @@ class TestSCMAllStudy(unittest.TestCase): ...@@ -32,7 +32,6 @@ class TestSCMAllStudy(unittest.TestCase):
for study in study_iterator_global(study_classes=SCM_STUDIES, for study in study_iterator_global(study_classes=SCM_STUDIES,
only_first_one=False, verbose=False, only_first_one=False, verbose=False,
altitudes=sample(set(ALL_ALTITUDES), k=nb_sample), nb_days=nb_days): 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] first_path_file = study.ordered_years_and_path_files[0][0]
variable_object = study.load_variable_object(path_file=first_path_file) variable_object = study.load_variable_object(path_file=first_path_file)
self.assertEqual((365, 263), variable_object.daily_time_serie_array.shape, self.assertEqual((365, 263), variable_object.daily_time_serie_array.shape,
......
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