Commit 9d787939 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[paper 2] rename safran precipitation total to safran precipitation. add...

[paper 2] rename safran precipitation total to safran precipitation. add snowfall, precipitation, and rainfall study classes for 1, 3, 5 and 7 days
parent 8157ba48
No related merge requests found
Showing with 123 additions and 37 deletions
+123 -37
...@@ -27,6 +27,30 @@ class SafranSnowfall(Safran, CumulatedStudy): ...@@ -27,6 +27,30 @@ class SafranSnowfall(Safran, CumulatedStudy):
Safran.__init__(self, SafranSnowfallVariable, *args, **kwargs) Safran.__init__(self, SafranSnowfallVariable, *args, **kwargs)
class SafranSnowfall1Day(SafranSnowfall):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=1, *args, **kwargs)
class SafranSnowfall3Days(SafranSnowfall):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=3, *args, **kwargs)
class SafranSnowfall5Days(SafranSnowfall):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=5, *args, **kwargs)
class SafranSnowfall7Days(SafranSnowfall):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=7, *args, **kwargs)
class ExtendedSafranSnowfall(AbstractExtendedStudy, SafranSnowfall): class ExtendedSafranSnowfall(AbstractExtendedStudy, SafranSnowfall):
pass pass
...@@ -37,7 +61,31 @@ class SafranRainfall(CumulatedStudy, Safran): ...@@ -37,7 +61,31 @@ class SafranRainfall(CumulatedStudy, Safran):
super().__init__(SafranRainfallVariable, *args, **kwargs) super().__init__(SafranRainfallVariable, *args, **kwargs)
class SafranTotalPrecip(CumulatedStudy, Safran): class SafranRainfall1Day(SafranRainfall):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=1, *args, **kwargs)
class SafranRainfall3Days(SafranRainfall):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=3, *args, **kwargs)
class SafranRainfall5Days(SafranRainfall):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=5, *args, **kwargs)
class SafranRainfall7Days(SafranRainfall):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=7, *args, **kwargs)
class SafranPrecipitation(CumulatedStudy, Safran):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(SafranTotalPrecipVariable, *args, **kwargs) super().__init__(SafranTotalPrecipVariable, *args, **kwargs)
...@@ -50,7 +98,31 @@ class SafranTotalPrecip(CumulatedStudy, Safran): ...@@ -50,7 +98,31 @@ class SafranTotalPrecip(CumulatedStudy, Safran):
return self.variable_class(variable_array_snowfall, variable_array_rainfall, self.nb_consecutive_days) return self.variable_class(variable_array_snowfall, variable_array_rainfall, self.nb_consecutive_days)
class ExtendedSafranTotalPrecip(AbstractExtendedStudy, SafranTotalPrecip): class SafranPrecipitation1Day(SafranPrecipitation):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=1, *args, **kwargs)
class SafranPrecipitation3Days(SafranPrecipitation):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=3, *args, **kwargs)
class SafranPrecipitation5Days(SafranPrecipitation):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=5, *args, **kwargs)
class SafranPrecipitation7Days(SafranPrecipitation):
def __init__(self, *args, **kwargs):
super().__init__(nb_consecutive_days=7, *args, **kwargs)
class ExtendedSafranPrecipitation(AbstractExtendedStudy, SafranPrecipitation):
pass pass
...@@ -64,23 +136,24 @@ class SafranTemperature(Safran): ...@@ -64,23 +136,24 @@ class SafranTemperature(Safran):
if __name__ == '__main__': if __name__ == '__main__':
study = SafranSnowfall() study = SafranRainfall1Day()
print(study.year_to_annual_maxima[1958])
# d = study.year_to_dataset_ordered_dict[1958] # d = study.year_to_dataset_ordered_dict[1958]
# print(d.variables) # print(d.variables)
print(study.study_massif_names) # print(study.study_massif_names)
d = { # d = {
name: '' for name in study.study_massif_names # name: '' for name in study.study_massif_names
} # }
print(d) # print(d)
for i in range(1958, 1959): # for i in range(1958, 1959):
d = study.year_to_dataset_ordered_dict[i] # d = study.year_to_dataset_ordered_dict[i]
# variable = 'station' # # variable = 'station'
# print(np.array(d.variables[variable])) # # print(np.array(d.variables[variable]))
variable = 'Tair' # variable = 'Tair'
a = np.mean(np.array(d.variables[variable]), axis=1) # a = np.mean(np.array(d.variables[variable]), axis=1)
d = study.year_to_dataset_ordered_dict[i + 1] # d = study.year_to_dataset_ordered_dict[i + 1]
b = np.mean(np.array(d.variables[variable]), axis=1) # b = np.mean(np.array(d.variables[variable]), axis=1)
# print(a[-1] - b[0]) # print(a[-1] - b[0])
# print(d.variables['time']) # print(d.variables['time'])
# print(study.all_massif_names) # print(study.all_massif_names)
# print(study.massif_name_to_altitudes) # print(study.massif_name_to_altitudes)
......
...@@ -3,7 +3,7 @@ from experiment.trend_analysis.abstract_score import MannKendall, WeigthedScore, ...@@ -3,7 +3,7 @@ from experiment.trend_analysis.abstract_score import MannKendall, WeigthedScore,
from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import GevLocationChangePointTest, \ from experiment.trend_analysis.univariate_test.extreme_trend_test.abstract_gev_trend_test import GevLocationChangePointTest, \
GevScaleChangePointTest, GevShapeChangePointTest GevScaleChangePointTest, GevShapeChangePointTest
from experiment.trend_analysis.univariate_test.abstract_univariate_test import MannKendallTrendTest from experiment.trend_analysis.univariate_test.abstract_univariate_test import MannKendallTrendTest
from experiment.meteo_france_data.scm_models_data.safran.safran import ExtendedSafranTotalPrecip from experiment.meteo_france_data.scm_models_data.safran.safran import ExtendedSafranPrecipitation
from experiment.meteo_france_data.scm_models_data.visualization import Studies from experiment.meteo_france_data.scm_models_data.visualization import Studies
from experiment.meteo_france_data.scm_models_data.visualization import StudiesVisualizer, \ from experiment.meteo_france_data.scm_models_data.visualization import StudiesVisualizer, \
AltitudeVisualizer AltitudeVisualizer
...@@ -15,7 +15,7 @@ from collections import OrderedDict ...@@ -15,7 +15,7 @@ from collections import OrderedDict
def normal_visualization(): def normal_visualization():
for study_type in [ExtendedSafranTotalPrecip]: for study_type in [ExtendedSafranPrecipitation]:
extended_studies = Studies(study_type) extended_studies = Studies(study_type)
studies_visualizer = StudiesVisualizer(extended_studies) studies_visualizer = StudiesVisualizer(extended_studies)
studies_visualizer.mean_as_a_function_of_altitude(region_only=True) studies_visualizer.mean_as_a_function_of_altitude(region_only=True)
......
...@@ -14,7 +14,7 @@ from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusDep ...@@ -14,7 +14,7 @@ from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusDep
CrocusSnowLoadEurocode, CrocusSnowLoad5Days, CrocusSnowLoad7Days CrocusSnowLoadEurocode, CrocusSnowLoad5Days, CrocusSnowLoad7Days
from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, ExtendedSafranSnowfall, \ from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, ExtendedSafranSnowfall, \
SafranRainfall, \ SafranRainfall, \
SafranTemperature, SafranTotalPrecip SafranTemperature, SafranPrecipitation
from collections import OrderedDict from collections import OrderedDict
...@@ -142,7 +142,7 @@ def extended_visualization(): ...@@ -142,7 +142,7 @@ def extended_visualization():
def annual_mean_vizu_compare_durand_study(safran=True, take_mean_value=True, altitude=1800): def annual_mean_vizu_compare_durand_study(safran=True, take_mean_value=True, altitude=1800):
if safran: if safran:
for study_class in [SafranTotalPrecip, SafranRainfall, SafranSnowfall, SafranTemperature][-1:]: for study_class in [SafranPrecipitation, SafranRainfall, SafranSnowfall, SafranTemperature][-1:]:
study = study_class(altitude=altitude, year_min=1958, year_max=2002) study = study_class(altitude=altitude, year_min=1958, year_max=2002)
study_visualizer = StudyVisualizer(study) study_visualizer = StudyVisualizer(study)
study_visualizer.visualize_annual_mean_values(take_mean_value=True) study_visualizer.visualize_annual_mean_values(take_mean_value=True)
......
...@@ -5,6 +5,12 @@ mpl.use('Agg') ...@@ -5,6 +5,12 @@ mpl.use('Agg')
mpl.rcParams['text.usetex'] = True mpl.rcParams['text.usetex'] = True
mpl.rcParams['text.latex.preamble'] = [r'\usepackage{amsmath}'] mpl.rcParams['text.latex.preamble'] = [r'\usepackage{amsmath}']
from experiment.meteo_france_data.scm_models_data.abstract_study import AbstractStudy
from experiment.meteo_france_data.scm_models_data.safran.safran import SafranPrecipitation3Days, \
SafranPrecipitation1Day, SafranPrecipitation5Days, SafranPrecipitation7Days, SafranSnowfall1Day, \
SafranSnowfall5Days, SafranSnowfall3Days, SafranSnowfall7Days, SafranRainfall1Day, SafranRainfall3Days, \
SafranRainfall5Days, SafranRainfall7Days
from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal, CrocusSnowLoad3Days, \ from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusSnowLoadTotal, CrocusSnowLoad3Days, \
CrocusSnowLoad5Days, CrocusSnowLoad7Days, CrocusSnowLoad1Day CrocusSnowLoad5Days, CrocusSnowLoad7Days, CrocusSnowLoad1Day
from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \ from extreme_fit.model.result_from_model_fit.result_from_extremes.confidence_interval_method import \
...@@ -23,11 +29,9 @@ from papers.exceeding_snow_loads.result_trends_and_return_levels.plot_uncertaint ...@@ -23,11 +29,9 @@ from papers.exceeding_snow_loads.result_trends_and_return_levels.plot_uncertaint
from root_utils import NB_CORES from root_utils import NB_CORES
def intermediate_result(altitudes, massif_names=None, def intermediate_result(altitudes, massif_names=None,
model_subsets_for_uncertainty=None, uncertainty_methods=None, model_subsets_for_uncertainty=None, uncertainty_methods=None,
study_class=CrocusSnowLoad3Days, study_class=AbstractStudy,
multiprocessing=False, multiprocessing=False,
save_to_file=True): save_to_file=True):
""" """
...@@ -64,9 +68,16 @@ def major_result(): ...@@ -64,9 +68,16 @@ def major_result():
ConfidenceIntervalMethodFromExtremes.ci_mle][1:] ConfidenceIntervalMethodFromExtremes.ci_mle][1:]
massif_names = None massif_names = None
model_subsets_for_uncertainty = None model_subsets_for_uncertainty = None
altitudes = paper_altitudes # altitudes = paper_altitudes
# altitudes = [600, 900, 1200, 1500, 1800, 2100, 2400, 2700, 3000, 3300] # altitudes = paper_altitudes
study_classes = [CrocusSnowLoad1Day, CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days][:] altitudes = [900, 1200, 1500, 1800, 2100, 2400, 2700, 3000][:4]
snow_load_classes = [CrocusSnowLoad1Day, CrocusSnowLoad3Days, CrocusSnowLoad5Days, CrocusSnowLoad7Days][:]
precipitation_classes = [SafranPrecipitation1Day, SafranPrecipitation3Days, SafranPrecipitation5Days,
SafranPrecipitation7Days][:]
snowfall_classes = [SafranSnowfall1Day, SafranSnowfall3Days, SafranSnowfall5Days, SafranSnowfall7Days]
rainfall_classes = [SafranRainfall1Day, SafranRainfall3Days, SafranRainfall5Days, SafranRainfall7Days]
study_classes = precipitation_classes + snow_load_classes
study_classes = snowfall_classes + rainfall_classes
for study_class in study_classes: for study_class in study_classes:
intermediate_result(altitudes, massif_names, model_subsets_for_uncertainty, intermediate_result(altitudes, massif_names, model_subsets_for_uncertainty,
uncertainty_methods, study_class) uncertainty_methods, study_class)
...@@ -78,4 +89,4 @@ if __name__ == '__main__': ...@@ -78,4 +89,4 @@ if __name__ == '__main__':
# uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes, # uncertainty_methods=[ConfidenceIntervalMethodFromExtremes.my_bayes,
# ConfidenceIntervalMethodFromExtremes.ci_mle][1:], # ConfidenceIntervalMethodFromExtremes.ci_mle][1:],
# multiprocessing=True, # multiprocessing=True,
# save_to_file=False) # save_to_file=False)
\ No newline at end of file
from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusDepth, CrocusSnowLoad3Days, \ from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusDepth, CrocusSnowLoad3Days, \
CrocusSnowLoadTotal CrocusSnowLoadTotal
from experiment.meteo_france_data.scm_models_data.crocus.crocus_variables import CrocusDepthVariable from experiment.meteo_france_data.scm_models_data.crocus.crocus_variables import CrocusDepthVariable
from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, SafranRainfall, SafranTotalPrecip from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, SafranRainfall, SafranPrecipitation
from experiment.meteo_france_data.scm_models_data.safran.safran_variable import SafranTotalPrecipVariable from experiment.meteo_france_data.scm_models_data.safran.safran_variable import SafranTotalPrecipVariable
from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \ from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
study_iterator_global, SCM_STUDY_CLASS_TO_ABBREVIATION, snow_density_str, ALL_ALTITUDES_WITHOUT_NAN study_iterator_global, SCM_STUDY_CLASS_TO_ABBREVIATION, snow_density_str, ALL_ALTITUDES_WITHOUT_NAN
...@@ -25,7 +25,7 @@ def test(): ...@@ -25,7 +25,7 @@ def test():
def density_wrt_altitude(): def density_wrt_altitude():
save_to_file = True save_to_file = True
study_class = [SafranTotalPrecip, SafranRainfall, SafranSnowfall, CrocusSnowLoad3Days, CrocusSnowLoadTotal][-2] study_class = [SafranPrecipitation, SafranRainfall, SafranSnowfall, CrocusSnowLoad3Days, CrocusSnowLoadTotal][-2]
altitudes = [900, 1200, 1500, 1800, 2100, 2400, 2700, 3000][::-1] altitudes = [900, 1200, 1500, 1800, 2100, 2400, 2700, 3000][::-1]
for altitude in altitudes: for altitude in altitudes:
......
...@@ -74,7 +74,9 @@ def plot_contrasting_trend_curves(altitude_to_visualizer: Dict[int, StudyVisuali ...@@ -74,7 +74,9 @@ def plot_contrasting_trend_curves(altitude_to_visualizer: Dict[int, StudyVisuali
ax_twinx.plot(altitudes, mean_change, label=label, linewidth=linewidth, marker='o') ax_twinx.plot(altitudes, mean_change, label=label, linewidth=linewidth, marker='o')
ax_twinx.legend(loc='upper right', prop={'size': size}) ax_twinx.legend(loc='upper right', prop={'size': size})
ax.axhline(y=0, color='k')
# Save plot # Save plot
visualizer.plot_name = 'Trend curves for' + visualizer.study.variable_name.split('(')[0] visualizer.plot_name = 'Trend curves for' + visualizer.study.variable_name
visualizer.show_or_save_to_file(no_title=True, dpi=dpi_paper1_figure, folder_for_variable=False) visualizer.show_or_save_to_file(no_title=True, dpi=dpi_paper1_figure, folder_for_variable=False)
plt.close() plt.close()
...@@ -92,9 +92,9 @@ def plot_exceedance_psnow(altitude_to_visualizer: Dict[int, StudyVisualizerForNo ...@@ -92,9 +92,9 @@ def plot_exceedance_psnow(altitude_to_visualizer: Dict[int, StudyVisualizerForNo
ax.set_xlabel('Altitude (m)') ax.set_xlabel('Altitude (m)')
ax.set_ylabel('Mean ratio, i.e. French standards divided by return levels (%)') ax.set_ylabel('Mean ratio, i.e. French standards divided by return levels (%)')
size = 10 size = 10
ax.legend(loc='upper left', prop={'size': size}) ax.legend(loc='upper right', prop={'size': size})
ax.grid() ax.grid()
ax2.legend(loc='upper right', prop={'size': size}) ax2.legend(loc='upper left', prop={'size': size})
plt.show() plt.show()
......
...@@ -7,7 +7,7 @@ import pandas as pd ...@@ -7,7 +7,7 @@ import pandas as pd
from experiment.meteo_france_data.scm_models_data.cumulated_study import NB_DAYS from experiment.meteo_france_data.scm_models_data.cumulated_study import NB_DAYS
from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, ExtendedSafranSnowfall, \ from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, ExtendedSafranSnowfall, \
SafranTemperature, \ SafranTemperature, \
SafranTotalPrecip SafranPrecipitation
from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \ from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
study_iterator, study_iterator_global, SCM_STUDIES, ALL_ALTITUDES study_iterator, study_iterator_global, SCM_STUDIES, ALL_ALTITUDES
from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \ from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
...@@ -72,7 +72,7 @@ class TestSCMPrecipitation(TestSCMStudy): ...@@ -72,7 +72,7 @@ class TestSCMPrecipitation(TestSCMStudy):
def setUp(self) -> None: def setUp(self) -> None:
super().setUp() super().setUp()
self.study = SafranTotalPrecip(altitude=1800, year_min=1958, year_max=2002, nb_consecutive_days=1) self.study = SafranPrecipitation(altitude=1800, year_min=1958, year_max=2002, nb_consecutive_days=1)
def test_durand(self): def test_durand(self):
# Test based on Durand paper # Test based on Durand paper
......
...@@ -15,7 +15,7 @@ from extreme_fit.model.max_stable_model.abstract_max_stable_model import \ ...@@ -15,7 +15,7 @@ from extreme_fit.model.max_stable_model.abstract_max_stable_model import \
from extreme_fit.model.max_stable_model.max_stable_models import Smith, BrownResnick, Schlather, \ from extreme_fit.model.max_stable_model.max_stable_models import Smith, BrownResnick, Schlather, \
Geometric, ExtremalT, ISchlather Geometric, ExtremalT, ISchlather
from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, Safran, SafranRainfall, \ from experiment.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, Safran, SafranRainfall, \
SafranTemperature, SafranTotalPrecip SafranTemperature, SafranPrecipitation
from spatio_temporal_dataset.coordinates.spatial_coordinates.abstract_spatial_coordinates import \ from spatio_temporal_dataset.coordinates.spatial_coordinates.abstract_spatial_coordinates import \
AbstractSpatialCoordinates AbstractSpatialCoordinates
from spatio_temporal_dataset.coordinates.spatial_coordinates.alps_station_3D_coordinates import \ from spatio_temporal_dataset.coordinates.spatial_coordinates.alps_station_3D_coordinates import \
...@@ -113,7 +113,7 @@ def load_safran_studies(altitudes) -> List[Safran]: ...@@ -113,7 +113,7 @@ def load_safran_studies(altitudes) -> List[Safran]:
nb_days_list = [1] nb_days_list = [1]
safran_studies = [safran_class(altitude=safran_altitude, nb_consecutive_days=nb_days) safran_studies = [safran_class(altitude=safran_altitude, nb_consecutive_days=nb_days)
for safran_altitude in altitudes for nb_days in nb_days_list for safran_altitude in altitudes for nb_days in nb_days_list
for safran_class in [SafranSnowfall, SafranRainfall, SafranTotalPrecip]] for safran_class in [SafranSnowfall, SafranRainfall, SafranPrecipitation]]
safran_studies += [SafranTemperature(altitude) for altitude in altitudes] safran_studies += [SafranTemperature(altitude) for altitude in altitudes]
return safran_studies return safran_studies
......
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