diff --git a/extreme_data/meteo_france_data/scm_models_data/abstract_study.py b/extreme_data/meteo_france_data/scm_models_data/abstract_study.py index 234c12ddd8ae3abfaa905b64aba3018dc311128b..c418dda2579c25ffb6c70f8d0f15fe8be0b5f91e 100644 --- a/extreme_data/meteo_france_data/scm_models_data/abstract_study.py +++ b/extreme_data/meteo_france_data/scm_models_data/abstract_study.py @@ -60,22 +60,30 @@ class AbstractStudy(object): REANALYSIS_PYRENEES_FLAT_FOLDER = 'S2M_AERIS_AVRIL_2020/' REANALYSIS_ALPS_ALLSLOPES_FOLDER = 'SAFRAN_montagne-CROCUS_2019/alp_allslopes/reanalysis' + YEAR_MIN = 1959 + YEAR_MAX = 2019 + # REANALYSIS_FOLDER = 'SAFRAN_montagne-CROCUS_2019/postes/reanalysis' - def __init__(self, variable_class: type, altitude: int = 1800, year_min=1959, year_max=2019, + def __init__(self, variable_class: type, altitude: int = 1800, year_min=YEAR_MIN, year_max=YEAR_MAX, multiprocessing=True, orientation=None, slope=20.0, season=SeasonForTheMaxima.annual, - french_region=FrenchRegion.alps): + french_region=FrenchRegion.alps, + split_years=None): assert isinstance(altitude, int), type(altitude) assert altitude in ALTITUDES, altitude self.french_region = french_region self.altitude = altitude self.model_name = None self.variable_class = variable_class + assert self.YEAR_MIN <= year_min <= year_max <= self.YEAR_MAX self.year_min = year_min self.year_max = year_max self.multiprocessing = multiprocessing self.season = season + if split_years is None: + split_years = list(range(year_min, year_max+1)) + self.split_years = set(split_years) # Add some attributes, for the "allslopes" reanalysis assert orientation is None or orientation in ORIENTATIONS assert slope in SLOPES @@ -358,7 +366,8 @@ class AbstractStudy(object): nc_files = [(int(f.split('_')[-2][:4]) + 1, f) for f in os.listdir(self.study_full_path) if f.endswith('.nc')] ordered_years, path_files = zip(*[(year, op.join(self.study_full_path, nc_file)) for year, nc_file in sorted(nc_files, key=lambda t: t[0]) - if self.year_min <= year <= self.year_max]) + if (self.year_min <= year <= self.year_max) + and (year in self.split_years)]) return path_files, ordered_years """ Temporal properties """ diff --git a/test/test_extreme_data/test_meteo_france_data/test_SCM_study.py b/test/test_extreme_data/test_meteo_france_data/test_SCM_study.py index b9d999d3615cc7cfa0609d414cffeb02c8fa764e..71a468cf2b58899b1cb74c91203389dc8364624f 100644 --- a/test/test_extreme_data/test_meteo_france_data/test_SCM_study.py +++ b/test/test_extreme_data/test_meteo_france_data/test_SCM_study.py @@ -34,6 +34,11 @@ class TestSCMAllStudy(unittest.TestCase): daily_time_series = study.year_to_daily_time_serie_array[year] self.assertEqual(len(days), len(daily_time_series)) + def test_study_for_split(self): + split_years = [1959 + 10 * i for i in range(7)] + study = SafranSnowfall(altitude=900, split_years=split_years) + self.assertEqual(split_years, list(study.ordered_years)) + def test_instantiate_studies(self): study_classes = SCM_STUDIES nb_sample = 2 diff --git a/test/test_extreme_data/test_nasa_data/__init__.py b/test/test_extreme_data/test_nasa_data/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391