From 055d496083491a4cd416b572fb4631137152ffec Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Tue, 11 Jun 2019 13:50:59 +0200 Subject: [PATCH] [CHANGE POINT TEST] improve management of crash mode, to avoid crashing all the run (issues with test with scale parameter) --- .../main_hypercube_visualization.py | 4 ++-- .../abstract_gev_change_point_test.py | 12 +++++++++--- extreme_estimator/extreme_models/utils.py | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py index 64f0800f..6b6b6f90 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_hypercube_visualization.py @@ -207,9 +207,9 @@ def full_altitude_year_hypercube__without_trend_extended(): only_first_one = False nb_data_reduced_for_speed = False altitudes = ALL_ALTITUDES[3:-6] - for study_class in SCM_STUDIES[1:]: + for study_class in SCM_STUDIES[:1]: for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, - GevShapeChangePointTest][:1]: + GevShapeChangePointTest][2:]: years = [None][:] for last_starting_year in years: for days in [1, 3][1:]: diff --git a/experiment/trend_analysis/univariate_test/abstract_gev_change_point_test.py b/experiment/trend_analysis/univariate_test/abstract_gev_change_point_test.py index 2524d32c..93a49a12 100644 --- a/experiment/trend_analysis/univariate_test/abstract_gev_change_point_test.py +++ b/experiment/trend_analysis/univariate_test/abstract_gev_change_point_test.py @@ -62,17 +62,23 @@ class AbstractGevChangePointTest(AbstractUnivariateTest): @property def non_stationary_nllh(self): if self.crashed: - return -np.inf + return np.nan else: return self.non_stationary_estimator.result_from_fit.nllh @property def stationary_deviance(self): - return self.stationary_estimator.result_from_fit.deviance + if self.crashed: + return np.nan + else: + return self.stationary_estimator.result_from_fit.deviance @property def non_stationary_deviance(self): - return self.non_stationary_estimator.result_from_fit.deviance + if self.crashed: + return np.nan + else: + return self.non_stationary_estimator.result_from_fit.deviance @property def is_significant(self) -> bool: diff --git a/extreme_estimator/extreme_models/utils.py b/extreme_estimator/extreme_models/utils.py index 0ba41b4a..c2fe6ea0 100644 --- a/extreme_estimator/extreme_models/utils.py +++ b/extreme_estimator/extreme_models/utils.py @@ -87,6 +87,7 @@ def safe_run_r_estimator(function, data=None, use_start=False, threshold_max_abs run_successful = False res = None f = io.StringIO() + # Warning print will not work in this part with redirect_stdout(f): while not run_successful: current_parameter = parameters.copy() -- GitLab