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
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__':
......
......@@ -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):
......
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
......
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):
......
......@@ -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
......
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
......
......@@ -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
......
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):
......
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
......
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):
......
......@@ -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
......
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