An error occurred while loading the file. Please try again.
-
Le Roux Erwan authored03b044e2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import numpy as np
from experiment.meteo_france_SCM_study.abstract_extended_study import AbstractExtendedStudy
from experiment.meteo_france_SCM_study.abstract_study import AbstractStudy
from experiment.meteo_france_SCM_study.abstract_variable import AbstractVariable
from experiment.meteo_france_SCM_study.safran.safran_variable import SafranSnowfallVariable, \
SafranRainfallVariable, SafranTemperatureVariable, SafranTotalPrecipVariable
class Safran(AbstractStudy):
def __init__(self, variable_class: type, *args, **kwargs):
assert variable_class in [SafranSnowfallVariable, SafranRainfallVariable, SafranTemperatureVariable,
SafranTotalPrecipVariable]
super().__init__(variable_class, *args, **kwargs)
self.model_name = 'Safran'
class SafranFrequency(Safran):
def __init__(self, variable_class: type, nb_consecutive_days=1, *args, **kwargs):
assert nb_consecutive_days <= 7
super().__init__(variable_class, *args, **kwargs)
self.nb_consecutive_days = nb_consecutive_days
def instantiate_variable_object(self, dataset) -> AbstractVariable:
return self.variable_class(dataset, self.nb_consecutive_days)
@property
def variable_name(self):
return super().variable_name + ' cumulated over {} days'.format(self.nb_consecutive_days)
def annual_aggregation_function(self, *args, **kwargs):
return np.sum(*args, **kwargs)
class SafranSnowfall(SafranFrequency):
def __init__(self, *args, **kwargs):
super().__init__(SafranSnowfallVariable, *args, **kwargs)
class ExtendedSafranSnowfall(AbstractExtendedStudy, SafranSnowfall):
pass
class SafranRainfall(SafranFrequency):
def __init__(self, *args, **kwargs):
super().__init__(SafranRainfallVariable, *args, **kwargs)
class SafranTotalPrecip(SafranFrequency):
def __init__(self, *args, **kwargs):
super().__init__(SafranTotalPrecipVariable, *args, **kwargs)
class ExtendedSafranTotalPrecip(AbstractExtendedStudy, SafranTotalPrecip):
pass
class SafranTemperature(Safran):
def __init__(self, *args, **kwargs):
super().__init__(SafranTemperatureVariable, *args, **kwargs)
def annual_aggregation_function(self, *args, **kwargs):
return np.mean(*args, **kwargs)
if __name__ == '__main__':
study = SafranSnowfall(altitude=2400)
for year, dataset in study.year_to_dataset_ordered_dict.items():
print('{}: {}'.format(year, dataset.massifsList))
d = study.year_to_dataset_ordered_dict[1958]
print(d.variables['time'])
# print(study.year_to_daily_time_serie[1958].shape)
# print(len(d.variables['time']))
# print(study.year_to_annual_total)
# print(study.df_annual_total.columns)