Commit e3401f02 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[projection swe] move projected swe to archive folder

parent b37ea204
No related merge requests found
Showing with 53 additions and 59 deletions
+53 -59
...@@ -4,11 +4,10 @@ from extreme_data.meteo_france_data.scm_models_data.safran.safran_max_snowf impo ...@@ -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_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 \ from extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \
AbstractExtractEurocodeReturnLevel AbstractExtractEurocodeReturnLevel
from projects.projected_swe.model_as_truth_visualizer.model_as_truth import ModelAsTruth from projects.archive.projected_swe.model_as_truth_visualizer import ModelAsTruth
from projects.projected_swe.weight_solver.default_weight_solver import EqualWeight from projects.archive.projected_swe.weight_solver.indicator import AnnualMaximaMeanIndicator
from projects.projected_swe.weight_solver.indicator import AnnualMaximaMeanIndicator, ReturnLevel30YearsIndicator from projects.archive.projected_swe.weight_solver import KnuttiWeightSolver
from projects.projected_swe.weight_solver.knutti_weight_solver import KnuttiWeightSolver from projects.archive.projected_swe.weight_solver.knutti_weight_solver_with_bootstrap import \
from projects.projected_swe.weight_solver.knutti_weight_solver_with_bootstrap import \
KnuttiWeightSolverWithBootstrapVersion1, KnuttiWeightSolverWithBootstrapVersion2 KnuttiWeightSolverWithBootstrapVersion1, KnuttiWeightSolverWithBootstrapVersion2
...@@ -44,33 +43,37 @@ def main(): ...@@ -44,33 +43,37 @@ def main():
sigma_list = [10] sigma_list = [10]
else: else:
altitudes = [900, 1800, 2700, 3600][:2] altitudes = [900, 1800, 2700, 3600][:]
year_couples = [(1982, 2011), (2012, 2041), (2042, 2071), (2070, 2099)][:-1] year_couples = [(1982, 2011), (2012, 2041), (2042, 2071), (2070, 2099)][:]
massif_names = None massif_names = None
AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10 AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10
knutti_weight_solver_classes = [KnuttiWeightSolver][:] knutti_weight_solver_classes = [KnuttiWeightSolver][:]
gcm_rcm_couples = gcm_rcm_couples[:] 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 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) 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, couple_to_historical_study = {c: AdamontSnowfall(altitude=altitude, scenario=scenario,
year_min=year_min_histo, year_max=year_max_histo, year_min=year_min_histo, year_max=year_max_histo,
gcm_rcm_couple=c) for c in gcm_rcm_couples} 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, indicator_class, knutti_weight_solver_classes, massif_names,
add_interdependence_weight=False) 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__': if __name__ == '__main__':
......
...@@ -2,18 +2,16 @@ import matplotlib.pyplot as plt ...@@ -2,18 +2,16 @@ import matplotlib.pyplot as plt
from typing import Dict, Tuple, List from typing import Dict, Tuple, List
from matplotlib.lines import Line2D from matplotlib.lines import Line2D
from scipy.special import softmax
import numpy as np import numpy as np
from extreme_data.meteo_france_data.adamont_data.adamont_scenario import scenario_to_str 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.abstract_study import AbstractStudy
from extreme_data.meteo_france_data.scm_models_data.visualization.study_visualizer import StudyVisualizer 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.archive.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver
from projects.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver from projects.archive.projected_swe.weight_solver.default_weight_solver import EqualWeight
from projects.projected_swe.weight_solver.default_weight_solver import EqualWeight from projects.archive.projected_swe.weight_solver.indicator import WeightComputationException
from projects.projected_swe.weight_solver.indicator import AbstractIndicator, WeightComputationException from projects.archive.projected_swe.weight_solver import KnuttiWeightSolver
from projects.projected_swe.weight_solver.knutti_weight_solver import KnuttiWeightSolver from projects.archive.projected_swe.weight_solver.knutti_weight_solver_with_bootstrap import \
from projects.projected_swe.weight_solver.knutti_weight_solver_with_bootstrap import \
KnuttiWeightSolverWithBootstrapVersion2, KnuttiWeightSolverWithBootstrapVersion1 KnuttiWeightSolverWithBootstrapVersion2, KnuttiWeightSolverWithBootstrapVersion1
from root_utils import get_display_name_from_object_type from root_utils import get_display_name_from_object_type
...@@ -21,7 +19,6 @@ 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): class ModelAsTruth(object):
def __init__(self, observation_study: AbstractStudy, def __init__(self, observation_study: AbstractStudy,
couple_to_study_projected: Dict[Tuple[str, str], AbstractStudy],
couple_to_study_historical: Dict[Tuple[str, str], AbstractStudy], couple_to_study_historical: Dict[Tuple[str, str], AbstractStudy],
indicator_class: type, indicator_class: type,
knutti_weight_solver_classes, knutti_weight_solver_classes,
...@@ -32,7 +29,6 @@ class ModelAsTruth(object): ...@@ -32,7 +29,6 @@ class ModelAsTruth(object):
self.add_interdependence_weight = add_interdependence_weight self.add_interdependence_weight = add_interdependence_weight
self.indicator_class = indicator_class self.indicator_class = indicator_class
self.couple_to_study_historical = couple_to_study_historical self.couple_to_study_historical = couple_to_study_historical
self.couple_to_study_projected = couple_to_study_projected
self.observation_study = observation_study self.observation_study = observation_study
# Parameters # Parameters
self.width = 2 self.width = 2
...@@ -44,7 +40,7 @@ class ModelAsTruth(object): ...@@ -44,7 +40,7 @@ class ModelAsTruth(object):
} }
# Update massif names # 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) self.massif_names = self.get_massif_names_subset_from_study_list(study_list)
print('Nb of massifs') print('Nb of massifs')
print(len(self.massif_names)) print(len(self.massif_names))
...@@ -52,9 +48,9 @@ class ModelAsTruth(object): ...@@ -52,9 +48,9 @@ class ModelAsTruth(object):
for study in study_list: for study in study_list:
study._massif_names_for_cache = self.massif_names 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() 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 = [] all_x = []
labels = [] labels = []
colors = [] colors = []
...@@ -75,14 +71,14 @@ class ModelAsTruth(object): ...@@ -75,14 +71,14 @@ class ModelAsTruth(object):
custom_lines = [Line2D([0], [0], color=color, lw=4) for color in colors] 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.legend(custom_lines, labels, prop={'size': 8}, loc='upper left')
ax.set_xlim(min(all_x) - self.width, max(all_x) + self.width) 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' \ title = 'crpss between a weighted forecast and an unweighted forecast \n' \
'at {} m for {} of snowfall for {}-{} (%)'.format(self.observation_study.altitude, 'at {} m for {} of snowfall for {}-{} (%)'.format(self.observation_study.altitude,
self.indicator_class.str_indicator(), self.indicator_class.str_indicator(),
study_projected.year_min, study_projected.year_min,
study_projected.year_max) study_projected.year_max)
ax2 = ax.twiny() 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_xlabel('sigma skill parameter')
ax.set_ylabel(title) ax.set_ylabel(title)
...@@ -102,19 +98,19 @@ class ModelAsTruth(object): ...@@ -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))] x_list = [((j + 1) * (self.width * 1.1)) + shift * i * self.width for i in range(len(sigma_list))]
return x_list return x_list
def get_solver_class_to_score_list(self, sigma_list): def get_solver_class_to_score_list(self, couple_to_study_projected, sigma_list):
return {solver_class: [self.compute_score(solver_class, sigma) for sigma in 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} 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] # return [sigma, sigma*2]
score_list = [] score_list = []
for gcm_rcm_couple in self.couple_to_study_historical.keys(): for gcm_rcm_couple in self.couple_to_study_historical.keys():
historical_observation_study = self.couple_to_study_historical[gcm_rcm_couple] 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 couple_to_study_historical = {c: s for c, s in self.couple_to_study_historical.items() if
c != gcm_rcm_couple} 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: try:
if issubclass(solver_class, KnuttiWeightSolver): if issubclass(solver_class, KnuttiWeightSolver):
......
import pandas as pd 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 from collections import OrderedDict
import numpy as np import numpy as np
......
import numpy as np import numpy as np
from projects.projected_swe.weight_computer.abstract_weight_computer import AbstractWeightComputer from projects.archive.projected_swe import AbstractWeightComputer
from projects.projected_swe.weight_computer.non_stationary_weight_computer import NllhWeightComputer from projects.archive.projected_swe import NllhWeightComputer
class KnuttiWeightComputer(AbstractWeightComputer): class KnuttiWeightComputer(AbstractWeightComputer):
......
...@@ -11,9 +11,9 @@ from extreme_fit.model.margin_model.polynomial_margin_model.models_based_on_pari ...@@ -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.independent_ensemble_fit.independent_ensemble_fit import IndependentEnsembleFit
from extreme_trend.ensemble_fit.visualizer_for_projection_ensemble import VisualizerForProjectionEnsemble from extreme_trend.ensemble_fit.visualizer_for_projection_ensemble import VisualizerForProjectionEnsemble
from extreme_trend.one_fold_fit.altitude_group import altitudes_for_groups 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.archive.projected_swe import AbstractWeightComputer
from projects.projected_swe.weight_computer.knutti_weight_computer import KnuttiWeightComputer from projects.archive.projected_swe import KnuttiWeightComputer
from projects.projected_swe.weight_computer.non_stationary_weight_computer import NllhWeightComputer from projects.archive.projected_swe import NllhWeightComputer
from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_covariate_for_fit import \ from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_covariate_for_fit import \
TimeTemporalCovariate TimeTemporalCovariate
......
import numpy as np import numpy as np
from extreme_fit.estimator.margin_estimator.abstract_margin_estimator import compute_nllh 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 \ from spatio_temporal_dataset.coordinates.temporal_coordinates.abstract_temporal_covariate_for_fit import \
TimeTemporalCovariate TimeTemporalCovariate
......
...@@ -5,7 +5,7 @@ from scipy.special import softmax ...@@ -5,7 +5,7 @@ from scipy.special import softmax
import numpy as np import numpy as np
from extreme_data.meteo_france_data.scm_models_data.abstract_study import AbstractStudy 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 ReturnLevel30YearsIndicator
......
from typing import Dict, Tuple from projects.archive.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver
from extreme_data.meteo_france_data.scm_models_data.abstract_study import AbstractStudy
from projects.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver
class EqualWeight(AbstractWeightSolver): class EqualWeight(AbstractWeightSolver):
......
import numpy as np import numpy as np
from scipy.stats import norm from scipy.stats import norm
from extreme_data.meteo_france_data.scm_models_data.utils_function import ReturnLevelBootstrap from projects.archive.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver
from projects.projected_swe.weight_solver.abtract_weight_solver import AbstractWeightSolver from projects.archive.projected_swe.weight_solver.indicator import AbstractIndicator, NllhComputationException, \
from projects.projected_swe.weight_solver.indicator import AbstractIndicator, NllhComputationException, \
WeightComputationException WeightComputationException
......
import numpy as np import numpy as np
from projects.projected_swe.weight_solver.indicator import AbstractIndicator from projects.archive.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.knutti_weight_solver import KnuttiWeightSolver
class KnuttiWeightSolverWithBootstrap(KnuttiWeightSolver): class KnuttiWeightSolverWithBootstrap(KnuttiWeightSolver):
......
...@@ -3,15 +3,14 @@ import numpy as np ...@@ -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.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.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.safran.safran_max_snowf import SafranSnowfall2020
from extreme_data.meteo_france_data.scm_models_data.utils_function import ReturnLevelBootstrap 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 \ from extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \
AbstractExtractEurocodeReturnLevel AbstractExtractEurocodeReturnLevel
from extreme_fit.model.utils import set_seed_for_test from extreme_fit.model.utils import set_seed_for_test
from projects.projected_swe.weight_solver.indicator import AnnualMaximaMeanIndicator, ReturnLevel30YearsIndicator from projects.archive.projected_swe.weight_solver.indicator import AnnualMaximaMeanIndicator, ReturnLevel30YearsIndicator
from projects.projected_swe.weight_solver.knutti_weight_solver import KnuttiWeightSolver from projects.archive.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.knutti_weight_solver_with_bootstrap import \
KnuttiWeightSolverWithBootstrapVersion1, KnuttiWeightSolverWithBootstrapVersion2 KnuttiWeightSolverWithBootstrapVersion1, KnuttiWeightSolverWithBootstrapVersion2
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment