Commit 2df38d8b authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[Confidence Interval] add snow load accumulation in 5 and 7 days

parent 172ced69
No related merge requests found
Showing with 61 additions and 18 deletions
+61 -18
......@@ -5,8 +5,9 @@ import numpy as np
from experiment.meteo_france_data.scm_models_data.abstract_extended_study import AbstractExtendedStudy
from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy
from experiment.meteo_france_data.scm_models_data.crocus.crocus_variables import CrocusTotalSweVariable, \
CrocusDepthVariable, CrocusRecentSweVariable, TotalSnowLoadVariable, RecentSnowLoadVariable, \
CrocusSnowLoadEurocodeVariable, CrocusDensityVariable
CrocusDepthVariable, CrocusRecentSweVariableThreeDays, TotalSnowLoadVariable, RecentSnowLoadVariableThreeDays, \
CrocusSnowLoadEurocodeVariable, CrocusDensityVariable, RecentSnowLoadVariableFiveDays, \
RecentSnowLoadVariableSevenDays
class Crocus(AbstractStudy):
......@@ -15,9 +16,12 @@ class Crocus(AbstractStudy):
"""
def __init__(self, variable_class, *args, **kwargs):
assert variable_class in [CrocusTotalSweVariable, CrocusDepthVariable, CrocusRecentSweVariable,
RecentSnowLoadVariable, TotalSnowLoadVariable, CrocusSnowLoadEurocodeVariable,
CrocusDensityVariable]
assert variable_class in [CrocusTotalSweVariable, CrocusDepthVariable, CrocusRecentSweVariableThreeDays,
RecentSnowLoadVariableThreeDays, TotalSnowLoadVariable,
CrocusSnowLoadEurocodeVariable,
CrocusDensityVariable,
RecentSnowLoadVariableFiveDays,
RecentSnowLoadVariableSevenDays]
super().__init__(variable_class, *args, **kwargs)
self.model_name = 'Crocus'
......@@ -34,7 +38,7 @@ class Crocus(AbstractStudy):
class CrocusSwe3Days(Crocus):
def __init__(self, *args, **kwargs):
Crocus.__init__(self, CrocusRecentSweVariable, *args, **kwargs)
Crocus.__init__(self, CrocusRecentSweVariableThreeDays, *args, **kwargs)
def apply_annual_aggregation(self, time_serie):
return self.winter_annual_aggregation(time_serie)
......@@ -59,7 +63,17 @@ class CrocusSnowLoadTotal(Crocus):
class CrocusSnowLoad3Days(CrocusSweTotal):
def __init__(self, *args, **kwargs):
Crocus.__init__(self, RecentSnowLoadVariable, *args, **kwargs)
Crocus.__init__(self, RecentSnowLoadVariableThreeDays, *args, **kwargs)
class CrocusSnowLoad5Days(CrocusSweTotal):
def __init__(self, *args, **kwargs):
Crocus.__init__(self, RecentSnowLoadVariableFiveDays, *args, **kwargs)
class CrocusSnowLoad7Days(CrocusSweTotal):
def __init__(self, *args, **kwargs):
Crocus.__init__(self, RecentSnowLoadVariableSevenDays, *args, **kwargs)
class ExtendedCrocusSweTotal(AbstractExtendedStudy, CrocusSweTotal):
......
......@@ -20,7 +20,7 @@ class CrocusTotalSweVariable(CrocusVariable):
return 'WSN_T_ISBA'
class CrocusRecentSweVariable(CrocusTotalSweVariable):
class CrocusRecentSweVariableThreeDays(CrocusTotalSweVariable):
NAME = 'Snow Water Equivalent last 3 days'
@classmethod
......@@ -28,6 +28,22 @@ class CrocusRecentSweVariable(CrocusTotalSweVariable):
return 'SWE_3DY_ISBA'
class CrocusRecentSweVariableFiveDays(CrocusTotalSweVariable):
NAME = 'Snow Water Equivalent last 5 days'
@classmethod
def keyword(cls):
return 'SWE_5DY_ISBA'
class CrocusRecentSweVariableSevenDays(CrocusTotalSweVariable):
NAME = 'Snow Water Equivalent last 7 days'
@classmethod
def keyword(cls):
return 'SWE_7DY_ISBA'
class AbstractSnowLoadVariable(CrocusVariable):
UNIT = 'kN $m^{-2}$'
......@@ -37,10 +53,18 @@ class AbstractSnowLoadVariable(CrocusVariable):
return snow_pressure
class RecentSnowLoadVariable(AbstractSnowLoadVariable, CrocusRecentSweVariable):
class RecentSnowLoadVariableThreeDays(AbstractSnowLoadVariable, CrocusRecentSweVariableThreeDays):
NAME = 'Snow load last 3 days'
class RecentSnowLoadVariableFiveDays(AbstractSnowLoadVariable, CrocusRecentSweVariableFiveDays):
NAME = 'Snow load last 5 days'
class RecentSnowLoadVariableSevenDays(AbstractSnowLoadVariable, CrocusRecentSweVariableSevenDays):
NAME = 'Snow load last 7 days'
class TotalSnowLoadVariable(AbstractSnowLoadVariable, CrocusTotalSweVariable):
NAME = 'Snow load total'
......
......@@ -11,7 +11,7 @@ from experiment.trend_analysis.abstract_score import MannKendall
from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy
from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusDepth, CrocusSweTotal, ExtendedCrocusDepth, \
ExtendedCrocusSweTotal, CrocusDaysWithSnowOnGround, CrocusSwe3Days, CrocusSnowLoad3Days, CrocusSnowLoadTotal, \
CrocusSnowLoadEurocode
CrocusSnowLoadEurocode, CrocusSnowLoad5Days, CrocusSnowLoad7Days
from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, ExtendedSafranSnowfall, \
SafranRainfall, \
SafranTemperature, SafranTotalPrecip
......@@ -39,6 +39,8 @@ SCM_STUDY_CLASS_TO_ABBREVIATION = {
CrocusDepth: 'SD',
CrocusSnowLoadTotal: 'GSL',
CrocusSnowLoad3Days: 'GSL3',
CrocusSnowLoad5Days: 'GSL5',
CrocusSnowLoad7Days: 'GSL7',
CrocusSnowDensityAtMaxofSwe: '{} when the max of GSL \nis reached'.format(snow_density_str),
CrocusDifferenceSnowLoadRescaledAndEurocodeToSeeSynchronization: 'max GSL rescaled - GSL from max HS \nboth with {}'.format(eurocode_snow_density),
CrocusDifferenceSnowLoad: ('max GSL - GSL from max HS \n with {}'.format(eurocode_snow_density)),
......
......@@ -2,7 +2,8 @@ from multiprocessing.pool import Pool
import matplotlib as mpl
from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal, CrocusSnowLoadEurocode
from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal, CrocusSnowLoadEurocode, \
CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days
from experiment.paper_past_snow_loads.paper_main_utils import load_altitude_to_visualizer
from experiment.paper_past_snow_loads.paper_utils import paper_study_classes, paper_altitudes
from experiment.paper_past_snow_loads.result_trends_and_return_levels.plot_uncertainty_curves import \
......@@ -82,7 +83,9 @@ def major_result():
uncertainty_methods = [ConfidenceIntervalMethodFromExtremes.my_bayes,
ConfidenceIntervalMethodFromExtremes.ci_mle][1:]
massif_names = None
for study_class in paper_study_classes[:2]:
study_classes = paper_study_classes[:2]
study_classes = [CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days][::-1]
for study_class in study_classes:
if study_class == CrocusSnowLoadEurocode:
non_stationary_uncertainty = [False]
else:
......@@ -91,12 +94,12 @@ def major_result():
if __name__ == '__main__':
# major_result()
intermediate_result(altitudes=[900, 1200], massif_names=['Vercors'],
uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
ConfidenceIntervalMethodFromExtremes.ci_mle][1:],
non_stationary_uncertainty=[False, True][1:],
multiprocessing=True)
major_result()
# intermediate_result(altitudes=[900, 1200], massif_names=['Vercors'],
# uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
# ConfidenceIntervalMethodFromExtremes.ci_mle][1:],
# non_stationary_uncertainty=[False, True][1:],
# multiprocessing=True)
# intermediate_result(altitudes=[900, 1200], massif_names=['Maurienne'],
# uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
# ConfidenceIntervalMethodFromExtremes.ci_mle][1:],
......
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