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

[contrasting] change the name_str for the model on the map. add safran 2020 for the snowfall.

parent f575d8e7
No related merge requests found
Showing with 64 additions and 15 deletions
+64 -15
from collections import OrderedDict
import numpy as np
from cached_property import cached_property
from netCDF4._netCDF4 import Dataset
from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall1Day
class SnowfallSafran2020(SafranSnowfall1Day):
nc_filepath = """/home/erwan/Documents/projects/spatiotemporalextremes/local/spatio_temporal_datasets/SAFRAN_montagne_CROCUS_2020/max-1day-snowf_SAFRAN.nc"""
def __init__(self, **kwargs):
super().__init__(**kwargs)
@property
def ordered_years(self):
return list(range(1959, 2021))
@cached_property
def year_to_annual_maxima(self) -> OrderedDict:
year_to_annual_maxima = OrderedDict()
dataset = Dataset(SnowfallSafran2020.nc_filepath)
annual_maxima = np.array(dataset.variables['max-1day-snowf'])
assert annual_maxima.shape[1] == len(self.column_mask)
annual_maxima = annual_maxima[:, self.column_mask]
for year, a in zip(self.ordered_years, annual_maxima):
year_to_annual_maxima[year] = a
return year_to_annual_maxima
if __name__ == '__main__':
test_safran_2020_loader()
......@@ -35,8 +35,6 @@ class AbstractAltitudinalModel(AbstractSpatioTemporalPolynomialModel):
@property
def name_str(self):
l = []
if self.dim_to_str_number(GevParams.SHAPE, self.coordinates.idx_x_coordinates) == '1':
l += ['\\zeta_z']
if self.dim_to_str_number(GevParams.LOC, self.coordinates.idx_temporal_coordinates) in ['1', '2']:
s = '\\mu_t'
if self.dim_to_str_number(GevParams.LOC, self.coordinates.idx_temporal_coordinates) == '2':
......@@ -52,11 +50,14 @@ class AbstractAltitudinalModel(AbstractSpatioTemporalPolynomialModel):
if self.dim_to_str_number(GevParams.SHAPE, self.coordinates.idx_temporal_coordinates) == '2':
s += '^2'
l += [s]
if self.dim_to_str_number(GevParams.SHAPE, self.coordinates.idx_x_coordinates) == '1':
l += ['\\zeta_z']
if len(l) == 0:
s = '0'
else:
s = ','.join(l)
return '$ \\boldsymbol{ \\mathcal{M}_{%s} }$' % s
# return '$ \\boldsymbol{ \\mathcal{M}_{%s} }$' % s
return '$ \\boldsymbol{%s}$' % s
# @property
......
......@@ -3,6 +3,10 @@ import time
from typing import List
import matplotlib
from extreme_fit.model.result_from_model_fit.result_from_extremes.abstract_extract_eurocode_return_level import \
AbstractExtractEurocodeReturnLevel
matplotlib.use('Agg')
import matplotlib as mpl
......@@ -34,13 +38,14 @@ def main():
set_seed_for_test()
fast = False
fast = True
if fast is None:
massif_names = None
altitudes_list = altitudes_for_groups[2:3]
elif fast:
massif_names = ['Vanoise', 'Haute-Maurienne', 'Vercors'][:1]
altitudes_list = altitudes_for_groups[3:]
AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10
massif_names = ['Vanoise', 'Haute-Maurienne', 'Vercors'][2:]
altitudes_list = altitudes_for_groups[:1]
else:
massif_names = None
altitudes_list = altitudes_for_groups[:]
......@@ -68,13 +73,13 @@ def main_loop(altitudes_list, massif_names, seasons, study_classes):
def plot_visualizers(massif_names, visualizer_list):
plot_histogram_all_trends_against_altitudes(massif_names, visualizer_list)
plot_shoe_plot_ratio_interval_size_against_altitude(massif_names, visualizer_list)
for relative in [True, False]:
plot_shoe_plot_changes_against_altitude(massif_names, visualizer_list, relative=relative)
# plot_histogram_all_trends_against_altitudes(massif_names, visualizer_list)
# plot_shoe_plot_ratio_interval_size_against_altitude(massif_names, visualizer_list)
# for relative in [True, False]:
# plot_shoe_plot_changes_against_altitude(massif_names, visualizer_list, relative=relative)
# plot_coherence_curves(massif_names, visualizer_list)
plot_coherence_curves(['Vanoise'], visualizer_list)
# plot_coherence_curves(['Vanoise'], visualizer_list)
pass
def plot_visualizer(massif_names, visualizer):
# Plot time series
......
......@@ -15,7 +15,7 @@ from projects.exceeding_snow_loads.utils import dpi_paper1_figure
def plots(visualizer: AltitudesStudiesVisualizerForNonStationaryModels):
visualizer.plot_shape_map()
visualizer.plot_moments()
# visualizer.plot_moments()
visualizer.plot_qqplots()
# for std in [True, False]:
# visualizer.studies.plot_mean_maxima_against_altitude(std=std)
......
......@@ -10,6 +10,7 @@ from extreme_data.meteo_france_data.scm_models_data.crocus.crocus import CrocusS
from extreme_data.meteo_france_data.scm_models_data.safran.cumulated_study import NB_DAYS
from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall, SafranTemperature, \
SafranPrecipitation, SafranSnowfall3Days, SafranRainfall3Days, SafranNormalizedPreciptationRateOnWetDays
from extreme_data.meteo_france_data.scm_models_data.safran.safran_2020 import SnowfallSafran2020
from extreme_data.meteo_france_data.scm_models_data.utils import Season
from extreme_data.meteo_france_data.scm_models_data.visualization.main_study_visualizer import \
study_iterator_global, SCM_STUDIES, ALL_ALTITUDES, SCM_STUDY_CLASS_TO_ABBREVIATION
......@@ -84,8 +85,6 @@ class TestSCMAllStudy(unittest.TestCase):
self.assertTrue(True)
class TestSCMSafranNormalizedPrecipitationRateOnWetDays(unittest.TestCase):
def test_annual_maxima(self):
......@@ -164,5 +163,15 @@ class TestSafranTemperature(TestSCMStudy):
return round(float(f), 1)
class TestSafran2020(TestSCMStudy):
def test_safran_2020_loader(self):
study = SnowfallSafran2020(altitude=1800)
annual_maxima = study.year_to_annual_maxima[1959]
annual_maxima = study.year_to_annual_maxima[2020]
annual_maxima = study.massif_name_to_annual_maxima['Vercors']
self.assertTrue(True)
if __name__ == '__main__':
unittest.main()
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