diff --git a/projects/projected_swe/__init__.py b/projects/archive/projected_swe/__init__.py similarity index 100% rename from projects/projected_swe/__init__.py rename to projects/archive/projected_swe/__init__.py diff --git a/projects/projected_swe/model_as_truth_visualizer/__init__.py b/projects/archive/projected_swe/model_as_truth_visualizer/__init__.py similarity index 100% rename from projects/projected_swe/model_as_truth_visualizer/__init__.py rename to projects/archive/projected_swe/model_as_truth_visualizer/__init__.py diff --git a/projects/projected_swe/model_as_truth_visualizer/main_model_as_truth.py b/projects/archive/projected_swe/model_as_truth_visualizer/main_model_as_truth.py similarity index 70% rename from projects/projected_swe/model_as_truth_visualizer/main_model_as_truth.py rename to projects/archive/projected_swe/model_as_truth_visualizer/main_model_as_truth.py index b11d47a36df1f0101e767fece0657df7fd6692ab..8b934b8ae308b831497ab3d813bc0262f62c46cb 100644 --- a/projects/projected_swe/model_as_truth_visualizer/main_model_as_truth.py +++ b/projects/archive/projected_swe/model_as_truth_visualizer/main_model_as_truth.py @@ -4,11 +4,10 @@ from extreme_data.meteo_france_data.scm_models_data.safran.safran_max_snowf impo from extreme_data.meteo_france_data.scm_models_data.utils_function import ReturnLevelBootstrap from extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \ AbstractExtractEurocodeReturnLevel -from projects.projected_swe.model_as_truth_visualizer.model_as_truth import ModelAsTruth -from projects.projected_swe.weight_solver.default_weight_solver import EqualWeight -from projects.projected_swe.weight_solver.indicator import AnnualMaximaMeanIndicator, ReturnLevel30YearsIndicator -from projects.projected_swe.weight_solver.knutti_weight_solver import KnuttiWeightSolver -from projects.projected_swe.weight_solver.knutti_weight_solver_with_bootstrap import \ +from projects.archive.projected_swe.model_as_truth_visualizer import ModelAsTruth +from projects.archive.projected_swe.weight_solver.indicator import AnnualMaximaMeanIndicator +from projects.archive.projected_swe.weight_solver import KnuttiWeightSolver +from projects.archive.projected_swe.weight_solver.knutti_weight_solver_with_bootstrap import \ KnuttiWeightSolverWithBootstrapVersion1, KnuttiWeightSolverWithBootstrapVersion2 @@ -44,33 +43,37 @@ def main(): sigma_list = [10] else: - altitudes = [900, 1800, 2700, 3600][:2] - year_couples = [(1982, 2011), (2012, 2041), (2042, 2071), (2070, 2099)][:-1] + altitudes = [900, 1800, 2700, 3600][:] + year_couples = [(1982, 2011), (2012, 2041), (2042, 2071), (2070, 2099)][:] massif_names = None AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10 knutti_weight_solver_classes = [KnuttiWeightSolver][:] gcm_rcm_couples = gcm_rcm_couples[:] - sigma_list = [i + 1 for i in range(10)] + sigma_list = [i * 0.25 + 1 for i in range(13)] for altitude in altitudes: - for year_couple in year_couples: - year_min_projected, year_max_projected = year_couple observation_study = SafranSnowfall2020(altitude=altitude, year_min=year_min_histo, year_max=year_max_histo) couple_to_historical_study = {c: AdamontSnowfall(altitude=altitude, scenario=scenario, year_min=year_min_histo, year_max=year_max_histo, gcm_rcm_couple=c) for c in gcm_rcm_couples} - if (year_min_projected, year_max_projected) == (year_min_histo, year_max_histo): - couple_to_projected_study = couple_to_historical_study - else: - couple_to_projected_study = {c: AdamontSnowfall(altitude=altitude, scenario=scenario, - year_min=year_min_projected, year_max=year_max_projected, - gcm_rcm_couple=c) for c in gcm_rcm_couples - } - model_as_truth = ModelAsTruth(observation_study, couple_to_projected_study, couple_to_historical_study, + + model_as_truth = ModelAsTruth(observation_study, couple_to_historical_study, indicator_class, knutti_weight_solver_classes, massif_names, add_interdependence_weight=False) - model_as_truth.plot_against_sigma(sigma_list) + + for year_couple in year_couples: + year_min_projected, year_max_projected = year_couple + if (year_min_projected, year_max_projected) == (year_min_histo, year_max_histo): + couple_to_projected_study = couple_to_historical_study + else: + couple_to_projected_study = {c: AdamontSnowfall(altitude=altitude, scenario=scenario, + year_min=year_min_projected, + year_max=year_max_projected, + gcm_rcm_couple=c) for c in gcm_rcm_couples + } + + model_as_truth.plot_against_sigma(couple_to_projected_study, sigma_list) if __name__ == '__main__': diff --git a/projects/projected_swe/model_as_truth_visualizer/model_as_truth.py b/projects/archive/projected_swe/model_as_truth_visualizer/model_as_truth.py similarity index 82% rename from projects/projected_swe/model_as_truth_visualizer/model_as_truth.py rename to projects/archive/projected_swe/model_as_truth_visualizer/model_as_truth.py index 4acb56a622ed5945931dd36b3b14efec15ab6ce9..4afd6a8807df8ba42311c802224d82ef49aa45a9 100644 --- a/projects/projected_swe/model_as_truth_visualizer/model_as_truth.py +++ b/projects/archive/projected_swe/model_as_truth_visualizer/model_as_truth.py @@ -2,18 +2,16 @@ import matplotlib.pyplot as plt from typing import Dict, Tuple, List from matplotlib.lines import Line2D -from scipy.special import softmax import numpy as np from extreme_data.meteo_france_data.adamont_data.adamont_scenario import scenario_to_str from extreme_data.meteo_france_data.scm_models_data.abstract_study import AbstractStudy from extreme_data.meteo_france_data.scm_models_data.visualization.study_visualizer import StudyVisualizer -from projects.projected_swe.old_weight_computer.utils import save_to_filepath -from projects.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver -from projects.projected_swe.weight_solver.default_weight_solver import EqualWeight -from projects.projected_swe.weight_solver.indicator import AbstractIndicator, WeightComputationException -from projects.projected_swe.weight_solver.knutti_weight_solver import KnuttiWeightSolver -from projects.projected_swe.weight_solver.knutti_weight_solver_with_bootstrap import \ +from projects.archive.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver +from projects.archive.projected_swe.weight_solver.default_weight_solver import EqualWeight +from projects.archive.projected_swe.weight_solver.indicator import WeightComputationException +from projects.archive.projected_swe.weight_solver import KnuttiWeightSolver +from projects.archive.projected_swe.weight_solver.knutti_weight_solver_with_bootstrap import \ KnuttiWeightSolverWithBootstrapVersion2, KnuttiWeightSolverWithBootstrapVersion1 from root_utils import get_display_name_from_object_type @@ -21,7 +19,6 @@ from root_utils import get_display_name_from_object_type class ModelAsTruth(object): def __init__(self, observation_study: AbstractStudy, - couple_to_study_projected: Dict[Tuple[str, str], AbstractStudy], couple_to_study_historical: Dict[Tuple[str, str], AbstractStudy], indicator_class: type, knutti_weight_solver_classes, @@ -32,7 +29,6 @@ class ModelAsTruth(object): self.add_interdependence_weight = add_interdependence_weight self.indicator_class = indicator_class self.couple_to_study_historical = couple_to_study_historical - self.couple_to_study_projected = couple_to_study_projected self.observation_study = observation_study # Parameters self.width = 2 @@ -44,7 +40,7 @@ class ModelAsTruth(object): } # Update massif names - study_list = [observation_study] + list(couple_to_study_historical.values()) + list(couple_to_study_projected.values()) + study_list = [observation_study] + list(couple_to_study_historical.values()) self.massif_names = self.get_massif_names_subset_from_study_list(study_list) print('Nb of massifs') print(len(self.massif_names)) @@ -52,9 +48,9 @@ class ModelAsTruth(object): for study in study_list: study._massif_names_for_cache = self.massif_names - def plot_against_sigma(self, sigma_list): + def plot_against_sigma(self, couple_to_study_projected, sigma_list): ax = plt.gca() - solver_class_to_score_list = self.get_solver_class_to_score_list(sigma_list) + solver_class_to_score_list = self.get_solver_class_to_score_list(couple_to_study_projected, sigma_list) all_x = [] labels = [] colors = [] @@ -75,14 +71,14 @@ class ModelAsTruth(object): custom_lines = [Line2D([0], [0], color=color, lw=4) for color in colors] ax.legend(custom_lines, labels, prop={'size': 8}, loc='upper left') ax.set_xlim(min(all_x) - self.width, max(all_x) + self.width) - study_projected = list(self.couple_to_study_projected.values())[0] + study_projected = list(couple_to_study_projected.values())[0] title = 'crpss between a weighted forecast and an unweighted forecast \n' \ 'at {} m for {} of snowfall for {}-{} (%)'.format(self.observation_study.altitude, self.indicator_class.str_indicator(), study_projected.year_min, study_projected.year_max) ax2 = ax.twiny() - ax2.set_xlabel('{} for {} GCM/RCM couples'.format(scenario_to_str(study_projected.scenario), len(self.couple_to_study_projected))) + ax2.set_xlabel('{} for {} GCM/RCM couples'.format(scenario_to_str(study_projected.scenario), len(couple_to_study_projected))) ax.set_xlabel('sigma skill parameter') ax.set_ylabel(title) @@ -102,19 +98,19 @@ class ModelAsTruth(object): x_list = [((j + 1) * (self.width * 1.1)) + shift * i * self.width for i in range(len(sigma_list))] return x_list - def get_solver_class_to_score_list(self, sigma_list): - return {solver_class: [self.compute_score(solver_class, sigma) for sigma in sigma_list] + def get_solver_class_to_score_list(self, couple_to_study_projected, sigma_list): + return {solver_class: [self.compute_score(couple_to_study_projected, solver_class, sigma) for sigma in sigma_list] for solver_class in self.knutti_weight_solver_classes} - def compute_score(self, solver_class, sigma): + def compute_score(self, couple_to_study_projected, solver_class, sigma): # return [sigma, sigma*2] score_list = [] for gcm_rcm_couple in self.couple_to_study_historical.keys(): historical_observation_study = self.couple_to_study_historical[gcm_rcm_couple] - projected_observation_study = self.couple_to_study_projected[gcm_rcm_couple] + projected_observation_study = couple_to_study_projected[gcm_rcm_couple] couple_to_study_historical = {c: s for c, s in self.couple_to_study_historical.items() if c != gcm_rcm_couple} - couple_to_study_projected = {c: s for c, s in self.couple_to_study_projected.items() if c != gcm_rcm_couple} + couple_to_study_projected = {c: s for c, s in couple_to_study_projected.items() if c != gcm_rcm_couple} try: if issubclass(solver_class, KnuttiWeightSolver): diff --git a/projects/projected_swe/old_weight_computer/__init__.py b/projects/archive/projected_swe/old_weight_computer/__init__.py similarity index 100% rename from projects/projected_swe/old_weight_computer/__init__.py rename to projects/archive/projected_swe/old_weight_computer/__init__.py diff --git a/projects/projected_swe/old_weight_computer/abstract_weight_computer.py b/projects/archive/projected_swe/old_weight_computer/abstract_weight_computer.py similarity index 98% rename from projects/projected_swe/old_weight_computer/abstract_weight_computer.py rename to projects/archive/projected_swe/old_weight_computer/abstract_weight_computer.py index 455d992e881ac2863c5d5d8eb8e0ba63cbdd2a1a..0cc555bc4a42fab7337ec50821237d6d56c452dc 100644 --- a/projects/projected_swe/old_weight_computer/abstract_weight_computer.py +++ b/projects/archive/projected_swe/old_weight_computer/abstract_weight_computer.py @@ -1,6 +1,6 @@ import pandas as pd -from projects.projected_swe.weight_computer.utils import WEIGHT_COLUMN_NAME, save_to_filepath +from projects.archive.projected_swe import WEIGHT_COLUMN_NAME, save_to_filepath from collections import OrderedDict import numpy as np diff --git a/projects/projected_swe/old_weight_computer/knutti_weight_computer.py b/projects/archive/projected_swe/old_weight_computer/knutti_weight_computer.py similarity index 80% rename from projects/projected_swe/old_weight_computer/knutti_weight_computer.py rename to projects/archive/projected_swe/old_weight_computer/knutti_weight_computer.py index 17284b7a95d14b608cae39fc22dbcc7f7e436332..402e3d4466a036c24c22b6156dce4b4ffa80cead 100644 --- a/projects/projected_swe/old_weight_computer/knutti_weight_computer.py +++ b/projects/archive/projected_swe/old_weight_computer/knutti_weight_computer.py @@ -1,7 +1,7 @@ import numpy as np -from projects.projected_swe.weight_computer.abstract_weight_computer import AbstractWeightComputer -from projects.projected_swe.weight_computer.non_stationary_weight_computer import NllhWeightComputer +from projects.archive.projected_swe import AbstractWeightComputer +from projects.archive.projected_swe import NllhWeightComputer class KnuttiWeightComputer(AbstractWeightComputer): diff --git a/projects/projected_swe/old_weight_computer/main_weight_computation.py b/projects/archive/projected_swe/old_weight_computer/main_weight_computation.py similarity index 91% rename from projects/projected_swe/old_weight_computer/main_weight_computation.py rename to projects/archive/projected_swe/old_weight_computer/main_weight_computation.py index bfd4a62bad883a91c1749a53bde130f403d154fd..bc32485c56f6d4e8ebe2c25874f81a7ac6d93361 100644 --- a/projects/projected_swe/old_weight_computer/main_weight_computation.py +++ b/projects/archive/projected_swe/old_weight_computer/main_weight_computation.py @@ -11,9 +11,9 @@ from extreme_fit.model.margin_model.polynomial_margin_model.models_based_on_pari from extreme_trend.ensemble_fit.independent_ensemble_fit.independent_ensemble_fit import IndependentEnsembleFit from extreme_trend.ensemble_fit.visualizer_for_projection_ensemble import VisualizerForProjectionEnsemble from extreme_trend.one_fold_fit.altitude_group import altitudes_for_groups -from projects.projected_swe.weight_computer.abstract_weight_computer import AbstractWeightComputer -from projects.projected_swe.weight_computer.knutti_weight_computer import KnuttiWeightComputer -from projects.projected_swe.weight_computer.non_stationary_weight_computer import NllhWeightComputer +from projects.archive.projected_swe import AbstractWeightComputer +from projects.archive.projected_swe import KnuttiWeightComputer +from projects.archive.projected_swe import NllhWeightComputer from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_covariate_for_fit import \ TimeTemporalCovariate diff --git a/projects/projected_swe/old_weight_computer/non_stationary_weight_computer.py b/projects/archive/projected_swe/old_weight_computer/non_stationary_weight_computer.py similarity index 94% rename from projects/projected_swe/old_weight_computer/non_stationary_weight_computer.py rename to projects/archive/projected_swe/old_weight_computer/non_stationary_weight_computer.py index 75215187cebd37adac010174bd05886de1601b26..13844a737d2659eb139429c92d7e7a4ad2fe41b1 100644 --- a/projects/projected_swe/old_weight_computer/non_stationary_weight_computer.py +++ b/projects/archive/projected_swe/old_weight_computer/non_stationary_weight_computer.py @@ -1,7 +1,7 @@ import numpy as np from extreme_fit.estimator.margin_estimator.abstract_margin_estimator import compute_nllh -from projects.projected_swe.weight_computer.abstract_weight_computer import AbstractWeightComputer +from projects.archive.projected_swe import AbstractWeightComputer from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_covariate_for_fit import \ TimeTemporalCovariate diff --git a/projects/projected_swe/old_weight_computer/utils.py b/projects/archive/projected_swe/old_weight_computer/utils.py similarity index 100% rename from projects/projected_swe/old_weight_computer/utils.py rename to projects/archive/projected_swe/old_weight_computer/utils.py diff --git a/projects/projected_swe/weight_solver/__init__.py b/projects/archive/projected_swe/weight_solver/__init__.py similarity index 100% rename from projects/projected_swe/weight_solver/__init__.py rename to projects/archive/projected_swe/weight_solver/__init__.py diff --git a/projects/projected_swe/weight_solver/abtract_weight_solver.py b/projects/archive/projected_swe/weight_solver/abtract_weight_solver.py similarity index 97% rename from projects/projected_swe/weight_solver/abtract_weight_solver.py rename to projects/archive/projected_swe/weight_solver/abtract_weight_solver.py index 859092263234bab0b41114a308c2b0857660fda8..d0cc0149c086d3e777e36d0b66a60abaf6e63c89 100644 --- a/projects/projected_swe/weight_solver/abtract_weight_solver.py +++ b/projects/archive/projected_swe/weight_solver/abtract_weight_solver.py @@ -5,7 +5,7 @@ from scipy.special import softmax import numpy as np from extreme_data.meteo_france_data.scm_models_data.abstract_study import AbstractStudy -from projects.projected_swe.weight_solver.indicator import AbstractIndicator, ReturnLevelComputationException, \ +from projects.archive.projected_swe.weight_solver.indicator import AbstractIndicator, ReturnLevelComputationException, \ ReturnLevel30YearsIndicator diff --git a/projects/projected_swe/weight_solver/default_weight_solver.py b/projects/archive/projected_swe/weight_solver/default_weight_solver.py similarity index 59% rename from projects/projected_swe/weight_solver/default_weight_solver.py rename to projects/archive/projected_swe/weight_solver/default_weight_solver.py index d2cd76df5290abec7182e582d7e405355b93d35a..57843ed3275a2dc56c489f0f7882597658e9caf5 100644 --- a/projects/projected_swe/weight_solver/default_weight_solver.py +++ b/projects/archive/projected_swe/weight_solver/default_weight_solver.py @@ -1,7 +1,4 @@ -from typing import Dict, Tuple - -from extreme_data.meteo_france_data.scm_models_data.abstract_study import AbstractStudy -from projects.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver +from projects.archive.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver class EqualWeight(AbstractWeightSolver): diff --git a/projects/projected_swe/weight_solver/indicator.py b/projects/archive/projected_swe/weight_solver/indicator.py similarity index 100% rename from projects/projected_swe/weight_solver/indicator.py rename to projects/archive/projected_swe/weight_solver/indicator.py diff --git a/projects/projected_swe/weight_solver/knutti_weight_solver.py b/projects/archive/projected_swe/weight_solver/knutti_weight_solver.py similarity index 92% rename from projects/projected_swe/weight_solver/knutti_weight_solver.py rename to projects/archive/projected_swe/weight_solver/knutti_weight_solver.py index c15e7094970aa395fde889d8b6b623766cfe5272..49710c94d9a48a4193e136171efbf7ed313b4ec8 100644 --- a/projects/projected_swe/weight_solver/knutti_weight_solver.py +++ b/projects/archive/projected_swe/weight_solver/knutti_weight_solver.py @@ -1,9 +1,8 @@ import numpy as np from scipy.stats import norm -from extreme_data.meteo_france_data.scm_models_data.utils_function import ReturnLevelBootstrap -from projects.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver -from projects.projected_swe.weight_solver.indicator import AbstractIndicator, NllhComputationException, \ +from projects.archive.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver +from projects.archive.projected_swe.weight_solver.indicator import AbstractIndicator, NllhComputationException, \ WeightComputationException diff --git a/projects/projected_swe/weight_solver/knutti_weight_solver_with_bootstrap.py b/projects/archive/projected_swe/weight_solver/knutti_weight_solver_with_bootstrap.py similarity index 88% rename from projects/projected_swe/weight_solver/knutti_weight_solver_with_bootstrap.py rename to projects/archive/projected_swe/weight_solver/knutti_weight_solver_with_bootstrap.py index e6af3be6645fc684c6c1bc33dde3ec213748dc53..3758fb4b9a99eec1e92c0d2c837d9c4f8cbecca4 100644 --- a/projects/projected_swe/weight_solver/knutti_weight_solver_with_bootstrap.py +++ b/projects/archive/projected_swe/weight_solver/knutti_weight_solver_with_bootstrap.py @@ -1,7 +1,7 @@ import numpy as np -from projects.projected_swe.weight_solver.indicator import AbstractIndicator -from projects.projected_swe.weight_solver.knutti_weight_solver import KnuttiWeightSolver +from projects.archive.projected_swe.weight_solver.indicator import AbstractIndicator +from projects.archive.projected_swe.weight_solver.knutti_weight_solver import KnuttiWeightSolver class KnuttiWeightSolverWithBootstrap(KnuttiWeightSolver): diff --git a/projects/projected_swe/weight_solver/zhu_weight_solver.py b/projects/archive/projected_swe/weight_solver/zhu_weight_solver.py similarity index 100% rename from projects/projected_swe/weight_solver/zhu_weight_solver.py rename to projects/archive/projected_swe/weight_solver/zhu_weight_solver.py diff --git a/test/test_projects/test_projected_swe/test_model_as_truth.py b/test/test_projects/test_projected_swe/test_model_as_truth.py index c19e45c231836862fd14aee3a3dadf834a01f8aa..4e0ebd5671ca27a273e57c94266ff7cd58a28424 100644 --- a/test/test_projects/test_projected_swe/test_model_as_truth.py +++ b/test/test_projects/test_projected_swe/test_model_as_truth.py @@ -3,15 +3,14 @@ import numpy as np from extreme_data.meteo_france_data.adamont_data.adamont.adamont_safran import AdamontSnowfall from extreme_data.meteo_france_data.adamont_data.adamont_scenario import AdamontScenario, get_gcm_rcm_couples -from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall1Day from extreme_data.meteo_france_data.scm_models_data.safran.safran_max_snowf import SafranSnowfall2020 from extreme_data.meteo_france_data.scm_models_data.utils_function import ReturnLevelBootstrap from extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \ AbstractExtractEurocodeReturnLevel from extreme_fit.model.utils import set_seed_for_test -from projects.projected_swe.weight_solver.indicator import AnnualMaximaMeanIndicator, ReturnLevel30YearsIndicator -from projects.projected_swe.weight_solver.knutti_weight_solver import KnuttiWeightSolver -from projects.projected_swe.weight_solver.knutti_weight_solver_with_bootstrap import \ +from projects.archive.projected_swe.weight_solver.indicator import AnnualMaximaMeanIndicator, ReturnLevel30YearsIndicator +from projects.archive.projected_swe.weight_solver.knutti_weight_solver import KnuttiWeightSolver +from projects.archive.projected_swe.weight_solver.knutti_weight_solver_with_bootstrap import \ KnuttiWeightSolverWithBootstrapVersion1, KnuttiWeightSolverWithBootstrapVersion2