From 81f75bc5f2fadf2b6377194dfa6bc73476be8aaa Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Thu, 26 Mar 2020 13:36:29 +0100 Subject: [PATCH] [contrasting project] change some plot parameters --- .../scm_models_data/abstract_study.py | 3 +- ...dy_visualizer_for_non_stationary_trends.py | 3 +- .../main_result.py | 4 +- .../plot_contrasting_trend_curves.py | 5 +- .../main_distribution_wps.py | 60 +++++++++---------- 5 files changed, 38 insertions(+), 37 deletions(-) diff --git a/extreme_data/meteo_france_data/scm_models_data/abstract_study.py b/extreme_data/meteo_france_data/scm_models_data/abstract_study.py index ffd7d542..bf0824c3 100644 --- a/extreme_data/meteo_france_data/scm_models_data/abstract_study.py +++ b/extreme_data/meteo_france_data/scm_models_data/abstract_study.py @@ -151,7 +151,8 @@ class AbstractStudy(object): df.drop(columns=drop_columns, inplace=True) df.rename(columns={'50%': 'median'}, inplace=True) df = df.astype(int) - df.index.name = 'Top {} maxima ({} -{})'.format(nb_top, self.year_min, self.year_max) + start_year, end_year = self.start_year_and_stop_year + df.index.name = 'Top {} maxima ({} -{})'.format(nb_top, start_year, end_year) if limit_for_the_percentage is not None: ind = df['%'] > limit_for_the_percentage df = df.loc[ind] diff --git a/extreme_trend/visualizers/study_visualizer_for_non_stationary_trends.py b/extreme_trend/visualizers/study_visualizer_for_non_stationary_trends.py index dc2561dc..05bcf688 100644 --- a/extreme_trend/visualizers/study_visualizer_for_non_stationary_trends.py +++ b/extreme_trend/visualizers/study_visualizer_for_non_stationary_trends.py @@ -459,14 +459,13 @@ class StudyVisualizerForNonStationaryTrends(StudyVisualizer): # mean_decreases.append(compute_mean_decrease(change_values)) return (self.altitude, percentage_decrease, percentage_decrease_significative, *mean_decreases) - def trend_summary_contrasting_values(self): + def trend_summary_contrasting_values(self, all_regions = False): # trend_tests = list(self.massif_name_to_trend_test_that_minimized_aic.values()) # decreasing_trend_tests = [t for t in trend_tests if t.time_derivative_of_return_level < 0] # percentage_decrease = 100 * len(decreasing_trend_tests) / len(trend_tests) # significative_decrease_trend_tests = [t for t in decreasing_trend_tests if t.is_significant] # percentage_decrease_significative = 100 * len(significative_decrease_trend_tests) / len(trend_tests) compute_mean_change = lambda l: np.mean(np.array(list(l))) if len(l) > 0 else 0 - all_regions = False massif_name_to_region_name = AbstractExtendedStudy.massif_name_to_region_name if all_regions: mean_changes = [compute_mean_change(self.massif_name_to_relative_change_value.values())] diff --git a/projects/contrasting_trends_in_snow_loads/main_result.py b/projects/contrasting_trends_in_snow_loads/main_result.py index 75b13547..a77384cb 100644 --- a/projects/contrasting_trends_in_snow_loads/main_result.py +++ b/projects/contrasting_trends_in_snow_loads/main_result.py @@ -57,7 +57,7 @@ def intermediate_result(altitudes, massif_names=None, _ = compute_minimized_aic(visualizer) # Plots - plot_contrasting_trend_curves(altitude_to_visualizer) + plot_contrasting_trend_curves(altitude_to_visualizer, all_regions=True) def major_result(): @@ -75,7 +75,7 @@ def major_result(): 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 [SafranPrecipitation3Days, CrocusSnowLoad3Days]: intermediate_result(altitudes, massif_names, model_subsets_for_uncertainty, uncertainty_methods, study_class, multiprocessing=True) diff --git a/projects/contrasting_trends_in_snow_loads/plot_contrasting_trend_curves.py b/projects/contrasting_trends_in_snow_loads/plot_contrasting_trend_curves.py index 47c732bd..a84ca2f9 100644 --- a/projects/contrasting_trends_in_snow_loads/plot_contrasting_trend_curves.py +++ b/projects/contrasting_trends_in_snow_loads/plot_contrasting_trend_curves.py @@ -8,7 +8,8 @@ from extreme_trend.visualizers.study_visualizer_for_non_stationary_trends import StudyVisualizerForNonStationaryTrends -def plot_contrasting_trend_curves(altitude_to_visualizer: Dict[int, StudyVisualizerForNonStationaryTrends]): +def plot_contrasting_trend_curves(altitude_to_visualizer: Dict[int, StudyVisualizerForNonStationaryTrends], + all_regions=False): """ Plot a single trend curves :return: @@ -20,7 +21,7 @@ def plot_contrasting_trend_curves(altitude_to_visualizer: Dict[int, StudyVisuali ax_twinx = ax ax_twiny = ax.twiny() - trend_summary_values = list(zip(*[v.trend_summary_contrasting_values() for v in altitude_to_visualizer.values()])) + trend_summary_values = list(zip(*[v.trend_summary_contrasting_values(all_regions=all_regions) for v in altitude_to_visualizer.values()])) altitudes, *mean_changes = trend_summary_values # parameters diff --git a/projects/contrasting_trends_in_snow_loads/weather_types_analysis/main_distribution_wps.py b/projects/contrasting_trends_in_snow_loads/weather_types_analysis/main_distribution_wps.py index 52946ba3..570785ed 100644 --- a/projects/contrasting_trends_in_snow_loads/weather_types_analysis/main_distribution_wps.py +++ b/projects/contrasting_trends_in_snow_loads/weather_types_analysis/main_distribution_wps.py @@ -8,7 +8,7 @@ from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranP from extreme_data.meteo_france_data.scm_models_data.utils import SeasonForTheMaxima -def main_spatial_distribution_wps(study_class, year_min=1954, year_max=2008, limit_for_the_percentage=None): +def main_spatial_distribution_wps(study_class, year_min=1959, year_max=2008, limit_for_the_percentage=None): study = study_class(altitude=1800, year_min=year_min, year_max=year_max, season=SeasonForTheMaxima.winter_extended) for region_name in AbstractExtendedStudy.region_names: massif_names = AbstractExtendedStudy.region_name_to_massif_names[region_name] @@ -47,56 +47,56 @@ Process finished with exit code 0 """ -def main_temporal_distribution_wps(study_class, year_min=1954, year_max=2008, limit_for_the_percentage=None): +def main_temporal_distribution_wps(study_class, year_min=1959, year_max=2008, limit_for_the_percentage=None): altitude = 1800 - study_before = study_class(altitude=altitude, year_min=year_min, year_max=1981, season=SeasonForTheMaxima.winter_extended) - study_after = study_class(altitude=altitude, year_min=1981, year_max=year_max, season=SeasonForTheMaxima.winter_extended) - # todo: same min and max year ? + intermediate_year = year_min + round(float(year_max - year_min) / 2) + study_before = study_class(altitude=altitude, year_min=year_min, year_max=intermediate_year, season=SeasonForTheMaxima.winter_extended) + study_after = study_class(altitude=altitude, year_min=intermediate_year+1, year_max=year_max, season=SeasonForTheMaxima.winter_extended) for region_name in AbstractExtendedStudy.region_names: massif_names = AbstractExtendedStudy.region_name_to_massif_names[region_name] print('\n \n', '{} ({} massifs)'.format(region_name, len(massif_names)), '\n') - for nb_top in [study_before.nb_years, 10][1:]: + for nb_top in [study_before.nb_years, 10, 1, 10][3:]: print(study_before.df_for_top_annual_maxima(nb_top=nb_top, massif_names=massif_names, limit_for_the_percentage=limit_for_the_percentage), '\n') print(study_after.df_for_top_annual_maxima(nb_top=nb_top, massif_names=massif_names, limit_for_the_percentage=limit_for_the_percentage), '\n') """ Northern Alps (7 massifs) % count mean min median max -Top 10 maxima (1954 -1981) -Steady Oceanic 94 66 130 102 127 202 +Top 10 maxima (1959 -1983) +Steady Oceanic 92 65 131 106 128 202 -Top 10 maxima (1981 -2008) -Steady Oceanic 82 58 151 104 134 282 +Top 10 maxima (1984 -2008) +Steady Oceanic 87 61 149 103 133 282 Central Alps (7 massifs) % count mean min median max -Top 10 maxima (1954 -1981) -Steady Oceanic 71 50 110 76 107 190 +Top 10 maxima (1959 -1983) +Steady Oceanic 68 48 111 76 109 190 -Top 10 maxima (1981 -2008) -Steady Oceanic 74 52 125 87 115 235 -South Circulation 14 10 123 100 120 161 +Top 10 maxima (1984 -2008) +Steady Oceanic 77 54 123 81 107 235 +South Circulation 14 10 122 93 120 161 Southern Alps (6 massifs) - % count mean min median max -Top 10 maxima (1954 -1981) -South Circulation 43 26 113 67 112 197 -Steady Oceanic 16 10 95 82 93 122 -Southwest Circulation 15 9 102 68 95 140 - -Top 10 maxima (1981 -2008) -South Circulation 63 38 134 73 127 235 -Steady Oceanic 21 13 110 80 105 187 - - + % count mean std min median max +Top 10 maxima (1959 -1983) +South Circulation 50 30 114 32 70 112 197 +Southwest Circulation 13 8 107 24 79 97 140 +Steady Oceanic 13 8 97 14 82 93 122 + +Top 10 maxima (1984 -2008) +South Circulation 58 35 135 73 125 235 +Steady Oceanic 23 14 107 69 104 187 + Extreme South Alps (3 massifs) % count mean min median max -Top 10 maxima (1954 -1981) -South Circulation 63 19 136 84 139 194 +Top 10 maxima (1959 -1983) +South Circulation 66 20 141 84 146 212 Southwest Circulation 13 4 122 95 123 146 -Top 10 maxima (1981 -2008) -South Circulation 76 23 165 78 159 306 +Top 10 maxima (1984 -2008) +South Circulation 76 23 158 74 138 306 + -- GitLab