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):
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
......
......@@ -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)
......@@ -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"
......@@ -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)
......@@ -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):
......
......@@ -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]
......
......@@ -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,
......
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