diff --git a/extreme_data/meteo_france_data/scm_models_data/safran/safran.py b/extreme_data/meteo_france_data/scm_models_data/safran/safran.py index 1d1a9d4638adc38f2525d249b7fabf3569d506b5..8eecfc8172534379ade4b0e884596daabef6004d 100644 --- a/extreme_data/meteo_france_data/scm_models_data/safran/safran.py +++ b/extreme_data/meteo_france_data/scm_models_data/safran/safran.py @@ -22,33 +22,32 @@ class Safran(AbstractStudy): class SafranSnowfall(Safran, CumulatedStudy): - def __init__(self, *args, **kwargs): - CumulatedStudy.__init__(self, SafranSnowfallVariable, *args, **kwargs) - Safran.__init__(self, SafranSnowfallVariable, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(SafranSnowfallVariable, **kwargs) class SafranSnowfall1Day(SafranSnowfall): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=1, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=1, **kwargs) class SafranSnowfall3Days(SafranSnowfall): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=3, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=3, **kwargs) class SafranSnowfall5Days(SafranSnowfall): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=5, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=5, **kwargs) class SafranSnowfall7Days(SafranSnowfall): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=7, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=7, **kwargs) class ExtendedSafranSnowfall(AbstractExtendedStudy, SafranSnowfall): @@ -57,38 +56,38 @@ class ExtendedSafranSnowfall(AbstractExtendedStudy, SafranSnowfall): class SafranRainfall(CumulatedStudy, Safran): - def __init__(self, *args, **kwargs): - super().__init__(SafranRainfallVariable, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(SafranRainfallVariable, **kwargs) class SafranRainfall1Day(SafranRainfall): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=1, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=1, **kwargs) class SafranRainfall3Days(SafranRainfall): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=3, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=3, **kwargs) class SafranRainfall5Days(SafranRainfall): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=5, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=5, **kwargs) class SafranRainfall7Days(SafranRainfall): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=7, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=7, **kwargs) class SafranPrecipitation(CumulatedStudy, Safran): - def __init__(self, *args, **kwargs): - super().__init__(SafranTotalPrecipVariable, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(SafranTotalPrecipVariable, **kwargs) def load_variable_array(self, dataset): return [np.array(dataset.variables[k]) for k in self.load_keyword()] @@ -100,26 +99,26 @@ class SafranPrecipitation(CumulatedStudy, Safran): class SafranPrecipitation1Day(SafranPrecipitation): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=1, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=1, **kwargs) class SafranPrecipitation3Days(SafranPrecipitation): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=3, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=3, **kwargs) class SafranPrecipitation5Days(SafranPrecipitation): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=5, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=5, **kwargs) class SafranPrecipitation7Days(SafranPrecipitation): - def __init__(self, *args, **kwargs): - super().__init__(nb_consecutive_days=7, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(nb_consecutive_days=7, **kwargs) class ExtendedSafranPrecipitation(AbstractExtendedStudy, SafranPrecipitation): @@ -128,14 +127,20 @@ class ExtendedSafranPrecipitation(AbstractExtendedStudy, SafranPrecipitation): class SafranTemperature(Safran): - def __init__(self, *args, **kwargs): - super().__init__(SafranTemperatureVariable, *args, **kwargs) + def __init__(self, **kwargs): + super().__init__(SafranTemperatureVariable, **kwargs) def annual_aggregation_function(self, *args, **kwargs): return np.mean(*args, **kwargs) if __name__ == '__main__': - study = SafranRainfall1Day() + altitude = 900 + year_min = 1959 + year_max = 2000 + study = SafranRainfall1Day(altitude, year_min=year_min, year_max=year_max) + d = study.year_to_dataset_ordered_dict[1959] + print(d.keywords) + print(d.variables.keys()) print(study.year_to_annual_maxima[1959]) print(study.ordered_years) diff --git a/extreme_fit/estimator/margin_estimator/utils.py b/extreme_fit/estimator/margin_estimator/utils.py index 95dc74d0bcd01ea7b628a5cfa38b0e12cbb0fc24..df5805269b3bc3a175edd73f0fd8ab6c65bcaa30 100644 --- a/extreme_fit/estimator/margin_estimator/utils.py +++ b/extreme_fit/estimator/margin_estimator/utils.py @@ -2,6 +2,8 @@ import pandas as pd from extreme_fit.distribution.gev.gev_params import GevParams from extreme_fit.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator +from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \ + TemporalMarginFitMethod from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel from spatio_temporal_dataset.coordinates.temporal_coordinates.generated_temporal_coordinates import \ ConsecutiveTemporalCoordinates @@ -20,7 +22,7 @@ def fitted_linear_margin_estimator(model_class, coordinates, dataset, starting_y return estimator -def fitted_stationary_gev(x_gev, fit_method, model_class=StationaryTemporalModel, starting_year=None, +def fitted_stationary_gev(x_gev, fit_method=TemporalMarginFitMethod.is_mev_gev_fit, model_class=StationaryTemporalModel, starting_year=None, transformation_class=CenteredScaledNormalization) -> GevParams: coordinates = ConsecutiveTemporalCoordinates.from_nb_temporal_steps(nb_temporal_steps=len(x_gev), transformation_class=CenteredScaledNormalization) diff --git a/projects/exceeding_snow_loads/presentation/statistical_model.py b/projects/exceeding_snow_loads/presentation/statistical_model.py index 1a5e8dcdd3155682a3d97e9831c4ea32988b72cf..72bdf968d5942824120977331248daca57278cd4 100644 --- a/projects/exceeding_snow_loads/presentation/statistical_model.py +++ b/projects/exceeding_snow_loads/presentation/statistical_model.py @@ -25,6 +25,7 @@ def binomial_observation(): plt.yticks([0.0, 1.0], ['Heads', 'Tails']) ax.plot(time, data, color=color, label=label, linewidth=4) + def histogram_for_gev(): import matplotlib.pyplot as plt from extreme_data.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal @@ -53,9 +54,6 @@ def histogram_for_gev(): ax.set_ylim([0, 0.3]) - - - def histogram_for_normal(): ax = plt.gca() linewidth = 5 @@ -71,9 +69,8 @@ def histogram_for_normal(): ax.set_ylim([0, 0.6]) - if __name__ == '__main__': # binomial_observation() # histogram_for_gev() histogram_for_normal() - plt.show() \ No newline at end of file + plt.show() 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 9c829c99bde81cbb77d6ed1b3de59d9e11b4c47a..56ab48da17cc964629b2f00ecf44cd527191bf3e 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 @@ -4,9 +4,10 @@ from random import sample import pandas as pd +from extreme_data.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoad3Days from extreme_data.meteo_france_data.scm_models_data.safran.cumulated_study import NB_DAYS from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, SafranTemperature, \ - SafranPrecipitation + SafranPrecipitation, SafranSnowfall3Days, SafranRainfall3Days from extreme_data.meteo_france_data.scm_models_data.utils import SeasonForTheMaxima from extreme_data.meteo_france_data.scm_models_data.visualization.main_study_visualizer import \ study_iterator_global, SCM_STUDIES, ALL_ALTITUDES @@ -33,9 +34,10 @@ class TestSCMAllStudy(unittest.TestCase): self.assertEqual(len(days), len(daily_time_series)) def test_instantiate_studies(self): + study_classes = SCM_STUDIES nb_sample = 2 for nb_days in sample(set(NB_DAYS), k=nb_sample): - for study in study_iterator_global(study_classes=SCM_STUDIES, + for study in study_iterator_global(study_classes=study_classes, only_first_one=False, verbose=False, altitudes=sample(set(ALL_ALTITUDES), k=nb_sample), nb_days=nb_days): first_path_file = study.ordered_years_and_path_files[0][0] @@ -44,6 +46,14 @@ class TestSCMAllStudy(unittest.TestCase): msg='{} days for type {}'.format(nb_days, get_display_name_from_object_type( type(variable_object)))) + def test_instantiate_studies_with_number_of_days(self): + altitude = 900 + year_min = 1959 + year_max = 2000 + study_classes = [SafranSnowfall3Days, SafranRainfall3Days, CrocusSnowLoad3Days] + for study_class in study_classes: + study_class(altitude=altitude, year_min=year_min, year_max=year_max) + class TestSCMStudy(unittest.TestCase):