diff --git a/extreme_data/meteo_france_data/scm_models_data/utils_function.py b/extreme_data/meteo_france_data/scm_models_data/utils_function.py index 55440cde70d77ff77ca30c79005a939a1e39b8c2..707188f3ec3f873beaabf526e297d7026b86e11b 100644 --- a/extreme_data/meteo_france_data/scm_models_data/utils_function.py +++ b/extreme_data/meteo_france_data/scm_models_data/utils_function.py @@ -67,7 +67,6 @@ class ReturnLevelBootstrap(object): idxs = list(range(self.nb_bootstrap)) if multiprocess is None: - print('multiprocessing batch') with Pool(NB_CORES) as p: batchsize = math.ceil(AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP / NB_CORES) diff --git a/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py b/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py index 168d7a10e4fc0f2ca728cd7618e7ee4a5d626044..335aeb358e7a8b398a1e09853f6d720b924f772b 100644 --- a/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py +++ b/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py @@ -66,8 +66,8 @@ class LinearMarginEstimator(AbstractMarginEstimator): maxima_values = self.dataset.maxima_gev(split=split) coordinate_values = self.dataset.df_coordinates(split=split).values for maximum, coordinate in zip(maxima_values, coordinate_values): - assert len( - maximum) == 1, 'So far, only one observation for each coordinate, but code would be easy to change' + assert len(maximum) == 1, \ + 'So far, only one observation for each coordinate, but code would be easy to change' maximum = maximum[0] gev_params = self.function_from_fit.get_params(coordinate, is_transformed=True) p = gev_params.density(maximum) diff --git a/extreme_fit/estimator/margin_estimator/utils.py b/extreme_fit/estimator/margin_estimator/utils.py index 4742aa0cd9c471d26c60f8f0f3fd33024c9fa2ed..5a516f5f901f447931b12d950a344f4192d6673b 100644 --- a/extreme_fit/estimator/margin_estimator/utils.py +++ b/extreme_fit/estimator/margin_estimator/utils.py @@ -53,5 +53,6 @@ def _fitted_stationary_gev(fit_method, model_class, starting_year, x_gev): gev_param.param_name_to_confidence_interval = param_name_to_confidence_interval # Warning if not -0.5 < gev_param.shape < 0.5: - warnings.warn('fitted shape parameter is outside physical bounds {}'.format(gev_param.shape)) + pass + # warnings.warn('fitted shape parameter is outside physical bounds {}'.format(gev_param.shape)) return estimator, gev_param diff --git a/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py b/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py index cf17d088a852798791d07780702a0b0a50ff7658..e938e38649a685d5d6ed8607c520e160bd055707 100644 --- a/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py +++ b/projects/altitude_spatial_model/altitudes_fit/main_altitudes_studies.py @@ -52,7 +52,7 @@ def main(): elif fast: AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10 massif_names = ['Vanoise', 'Haute-Maurienne', 'Vercors'][:1] - altitudes_list = altitudes_for_groups[1:2] + altitudes_list = altitudes_for_groups[2:3] else: massif_names = None altitudes_list = altitudes_for_groups[:] @@ -81,13 +81,13 @@ def main_loop(altitudes_list, massif_names, seasons, study_classes, model_must_p def plot_visualizers(massif_names, visualizer_list): - # plot_histogram_all_models_against_altitudes(massif_names, visualizer_list) - plot_histogram_all_trends_against_altitudes(massif_names, visualizer_list) + plot_histogram_all_models_against_altitudes(massif_names, visualizer_list) + plot_histogram_all_trends_against_altitudes(massif_names, visualizer_list, with_significance=True) # 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(massif_names, visualizer_list) + plot_coherence_curves(['Vanoise'], visualizer_list) pass diff --git a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py index e3a4c4f2cb3a5e01e7e9618a2fcd8416337d01bb..f49d5ac33fa2a850d77aa0cde220ffd4abd3b101 100644 --- a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py +++ b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/altitudes_studies_visualizer_for_non_stationary_models.py @@ -220,8 +220,8 @@ class AltitudesStudiesVisualizerForNonStationaryModels(StudyVisualizer): @property def add_colorbar(self): - return True - # return isinstance(self.altitude_group, (VeyHighAltitudeGroup, MidAltitudeGroup)) + # return True + return isinstance(self.altitude_group, (VeyHighAltitudeGroup, MidAltitudeGroup)) def plot_against_years(self, method_name, order): ax = plt.gca() diff --git a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/one_fold_fit.py b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/one_fold_fit.py index 45c6572204982486f94a8d37dfa07171e4b44659..93ce1c0b6ae2f3c554d4b7427d563444de2c8708 100644 --- a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/one_fold_fit.py +++ b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/one_fold_fit.py @@ -142,6 +142,11 @@ class OneFoldFit(object): @cached_property def sorted_estimators(self): estimators = list(self.model_class_to_estimator.values()) + # print(self.massif_name) + # print(self.altitude_group) + # for estimator in estimators: + # print(estimator.margin_model) + # print(estimator.aic()) sorted_estimators = sorted([estimator for estimator in estimators], key=lambda e: e.aic()) return sorted_estimators @@ -154,27 +159,13 @@ class OneFoldFit(object): # and self.sensitivity_of_fit_test_last_years(e) ] else: - return self._sorted_estimators_without_stationary + assert len(self.sorted_estimators) == len(self.models_classes) + return self.sorted_estimators @property def has_at_least_one_valid_model(self): return len(self.sorted_estimators_with_stationary) > 0 - @cached_property - def _sorted_estimators_without_stationary(self): - return [e for e in self.sorted_estimators if not isinstance(e.margin_model, StationaryAltitudinal)] - - @cached_property - def sorted_estimators_without_stationary(self): - if self.only_models_that_pass_goodness_of_fit_test: - return [e for e in self._sorted_estimators_without_stationary if self.goodness_of_fit_test(e)] - else: - return self._sorted_estimators_without_stationary - - @property - def has_at_least_one_valid_non_stationary_model(self): - return len(self.sorted_estimators_without_stationary) > 0 - @property def model_class_to_estimator_with_finite_aic(self): return {type(estimator.margin_model): estimator for estimator in self.sorted_estimators} @@ -184,10 +175,6 @@ class OneFoldFit(object): if self.best_estimator_minimizes_total_aic and self.best_estimator_class_for_total_aic is not None: return self.model_class_to_estimator[self.best_estimator_class_for_total_aic] else: - # Without stationary - # if self.has_at_least_one_valid_non_stationary_model: - # best_estimator = self.sorted_estimators_without_stationary[0] - # return best_estimator # With stationary if self.has_at_least_one_valid_model: best_estimator = self.sorted_estimators_with_stationary[0] @@ -428,7 +415,6 @@ class OneFoldFit(object): idxs = list(range(AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP)) if multiprocess is None: - print('multiprocessing batch') start = time.time() with Pool(NB_CORES) as p: batchsize = math.ceil(AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP / NB_CORES) diff --git a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py index 6ebcbd94da8c0a415c5261e94278a751abba583d..2a50df32b9783491ae211e96f6930dfd589f572f 100644 --- a/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py +++ b/projects/altitude_spatial_model/altitudes_fit/one_fold_analysis/plot_total_aic.py @@ -14,9 +14,9 @@ from projects.exceeding_snow_loads.utils import dpi_paper1_figure def plots(visualizer: AltitudesStudiesVisualizerForNonStationaryModels): - # visualizer.plot_shape_map() + visualizer.plot_shape_map() visualizer.plot_moments() - # visualizer.plot_qqplots() + visualizer.plot_qqplots() # for std in [True, False]: # visualizer.studies.plot_mean_maxima_against_altitude(std=std) diff --git a/projects/altitude_spatial_model/altitudes_fit/plots/plot_histogram_altitude_studies.py b/projects/altitude_spatial_model/altitudes_fit/plots/plot_histogram_altitude_studies.py index ca2a3b01d69cf886a1335867a167b3205fd3ac20..0bc0683c249e60f9c2994b8e9d0a1405fab91d1e 100644 --- a/projects/altitude_spatial_model/altitudes_fit/plots/plot_histogram_altitude_studies.py +++ b/projects/altitude_spatial_model/altitudes_fit/plots/plot_histogram_altitude_studies.py @@ -115,7 +115,7 @@ def plot_histogram_all_trends_against_altitudes(massif_names, visualizer_list: L ax.tick_params(axis='both', which='major', labelsize=labelsize) ax.set_xticks(x) ax.yaxis.grid() - ax.set_ylim([0, 89]) + ax.set_ylim([0, 79]) ax.set_ylim(bottom=0) ax.set_xticklabels([v.altitude_group.formula_upper for v in visualizer_list])