diff --git a/projects/projected_snowfall/elevation_temporal_model_for_projections/ensemble_fit/clustered_ensemble.py b/projects/projected_snowfall/elevation_temporal_model_for_projections/ensemble_fit/clustered_ensemble.py new file mode 100644 index 0000000000000000000000000000000000000000..755905142c4fe40cdacc3326aca84b597cf51b68 --- /dev/null +++ b/projects/projected_snowfall/elevation_temporal_model_for_projections/ensemble_fit/clustered_ensemble.py @@ -0,0 +1,19 @@ + +"""Instead of creating one big group, with all the ensemble together, +and assuming a common temporal trend to all the group. + +We could create smaller groups, with an importance proportional to the number of GCM/RCM couples considered +in the group. +For instance, we could group them by GCM, or group them by RCM. +Or we could try to find a metric to group them together. + +This is the idea of finding of sweet spot between: +-only independent fits with few assumptions +-one common fit with too much assumption + + +it links with the idea of "climate model subset". + +Generally people try to find one model subset, +the idea here, would be to find group of model subsets +""" \ No newline at end of file diff --git a/test/test_projects/test_altitude_spatial/test_one_fold_fit.py b/test/test_projects/test_altitude_spatial/test_one_fold_fit.py new file mode 100644 index 0000000000000000000000000000000000000000..fa4c9161f066741dd0e668ba43785243cfd12dda --- /dev/null +++ b/test/test_projects/test_altitude_spatial/test_one_fold_fit.py @@ -0,0 +1,52 @@ +import unittest + +from extreme_data.meteo_france_data.adamont_data.adamont.adamont_snowfall import AdamontSnowfall +from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall1Day +from extreme_fit.model.margin_model.polynomial_margin_model.gev_altitudinal_models import StationaryAltitudinal +from extreme_fit.model.margin_model.polynomial_margin_model.models_based_on_pariwise_analysis.gev_with_constant_shape_wrt_altitude import \ + AltitudinalShapeConstantTimeLocationLinear, AltitudinalShapeConstantTimeScaleLinear, \ + AltitudinalShapeConstantTimeLocScaleLinear +from projects.altitude_spatial_model.altitudes_fit.altitudes_studies import AltitudesStudies +from projects.altitude_spatial_model.altitudes_fit.one_fold_analysis.one_fold_fit import OneFoldFit +from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_covariate_for_fit import \ + TimeTemporalCovariate + + +class TestOneFoldFit(unittest.TestCase): + pass + + def setUp(self) -> None: + super().setUp() + self.altitudes = [1200, 1500, 1800] + self.massif_name = "Vanoise" + self.model_classes = [StationaryAltitudinal, + AltitudinalShapeConstantTimeLocationLinear, + AltitudinalShapeConstantTimeScaleLinear, + AltitudinalShapeConstantTimeLocScaleLinear + ][:] + + def load_dataset(self, study_class): + self.studies = AltitudesStudies(study_class, self.altitudes) + dataset = self.studies.spatio_temporal_dataset(massif_name=self.massif_name) + return dataset + + def test_without_temporal_covariate(self): + for study_class in [SafranSnowfall1Day, AdamontSnowfall][:]: + dataset = self.load_dataset(study_class) + one_fold_fit = OneFoldFit(self.massif_name, dataset, + models_classes=self.model_classes, temporal_covariate_for_fit=None) + print(type(one_fold_fit.best_estimator.margin_model)) + self.assertTrue(True) + + def test_with_temporal_covariate_for_time(self): + for study_class in [SafranSnowfall1Day, AdamontSnowfall][:]: + dataset = self.load_dataset(study_class) + one_fold_fit = OneFoldFit(self.massif_name, dataset, + models_classes=self.model_classes, + temporal_covariate_for_fit=TimeTemporalCovariate) + print(type(one_fold_fit.best_estimator.margin_model)) + self.assertTrue(True) + + +if __name__ == '__main__': + unittest.main()