diff --git a/extreme_fit/model/abstract_model.py b/extreme_fit/model/abstract_model.py index ff4c43c1ce25869cb7bac632e550c2ca1575a8ae..bfb98d73a76ed3f7c7d609b29a7c099b4fdff10c 100644 --- a/extreme_fit/model/abstract_model.py +++ b/extreme_fit/model/abstract_model.py @@ -1,8 +1,7 @@ class AbstractModel(object): - def __init__(self, use_start_value=False, params_start_fit=None, params_sample=None): + def __init__(self, params_start_fit=None, params_sample=None): self.default_params = None - self.use_start_value = use_start_value self.user_params_start_fit = params_start_fit self.user_params_sample = params_sample diff --git a/extreme_fit/model/margin_model/abstract_margin_model.py b/extreme_fit/model/margin_model/abstract_margin_model.py index 8b6df24d18621c814231fe241afad22eae881123..4d657ef5eee475dfc78fa45db2caa002d451f27c 100644 --- a/extreme_fit/model/margin_model/abstract_margin_model.py +++ b/extreme_fit/model/margin_model/abstract_margin_model.py @@ -19,10 +19,10 @@ class AbstractMarginModel(AbstractModel, ABC): -margin_function_start_fit for starting to fit """ - def __init__(self, coordinates: AbstractCoordinates, use_start_value=False, + def __init__(self, coordinates: AbstractCoordinates, params_start_fit=None, params_sample=None, params_class=GevParams): - super().__init__(use_start_value, params_start_fit, params_sample) + super().__init__(params_start_fit, params_sample) assert isinstance(coordinates, AbstractCoordinates), type(coordinates) self.coordinates = coordinates self.margin_function_sample = None # type: AbstractMarginFunction diff --git a/extreme_fit/model/margin_model/linear_margin_model/abstract_temporal_linear_margin_model.py b/extreme_fit/model/margin_model/linear_margin_model/abstract_temporal_linear_margin_model.py index f418032c9231b6b838db5d3f7218af4926a7a8bf..4f00dd918c04f7f91bb7fd35b531e3f633a128dc 100644 --- a/extreme_fit/model/margin_model/linear_margin_model/abstract_temporal_linear_margin_model.py +++ b/extreme_fit/model/margin_model/linear_margin_model/abstract_temporal_linear_margin_model.py @@ -19,14 +19,15 @@ from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoo class AbstractTemporalLinearMarginModel(LinearMarginModel): """Linearity only with respect to the temporal coordinates""" - def __init__(self, coordinates: AbstractCoordinates, use_start_value=False, params_start_fit=None, + def __init__(self, coordinates: AbstractCoordinates, + params_start_fit=None, params_sample=None, starting_point=None, fit_method=MarginFitMethod.is_mev_gev_fit, nb_iterations_for_bayesian_fit=5000, params_start_fit_bayesian=None, type_for_MLE="GEV", params_class=GevParams): - super().__init__(coordinates, use_start_value, params_start_fit, params_sample, starting_point, + super().__init__(coordinates, params_start_fit, params_sample, starting_point, params_class) self.type_for_mle = type_for_MLE self.params_start_fit_bayesian = params_start_fit_bayesian diff --git a/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py b/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py index 94c69423cf5d70714b0e1b6134df2b663c162a01..20a37d346879ba33a58a9d1f9819d49c6acddacb 100644 --- a/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py +++ b/extreme_fit/model/margin_model/linear_margin_model/temporal_linear_margin_models.py @@ -70,10 +70,10 @@ class NonStationaryLocationAndScaleTemporalModel(AbstractTemporalLinearMarginMod class GumbelTemporalModel(StationaryTemporalModel): - def __init__(self, coordinates: AbstractCoordinates, use_start_value=False, params_start_fit=None, + def __init__(self, coordinates: AbstractCoordinates, params_start_fit=None, params_sample=None, starting_point=None, fit_method=MarginFitMethod.is_mev_gev_fit, nb_iterations_for_bayesian_fit=5000, params_start_fit_bayesian=None): - super().__init__(coordinates, use_start_value, params_start_fit, params_sample, starting_point, fit_method, + super().__init__(coordinates, params_start_fit, params_sample, starting_point, fit_method, nb_iterations_for_bayesian_fit, params_start_fit_bayesian, type_for_MLE="Gumbel") diff --git a/extreme_fit/model/margin_model/parametric_margin_model.py b/extreme_fit/model/margin_model/parametric_margin_model.py index 2e33984c3adcae59f09b0f56157eae6054656650..973dcc807caf661234ee381db2d35e1079d03648 100644 --- a/extreme_fit/model/margin_model/parametric_margin_model.py +++ b/extreme_fit/model/margin_model/parametric_margin_model.py @@ -16,7 +16,7 @@ from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoo class ParametricMarginModel(AbstractMarginModel, ABC): - def __init__(self, coordinates: AbstractCoordinates, use_start_value=False, params_start_fit=None, + def __init__(self, coordinates: AbstractCoordinates, params_start_fit=None, params_sample=None, starting_point=None, params_class=GevParams, fit_method=MarginFitMethod.spatial_extremes_mle): """ @@ -27,7 +27,7 @@ class ParametricMarginModel(AbstractMarginModel, ABC): self.margin_function_sample = None # type: ParametricMarginFunction self.margin_function_start_fit = None # type: ParametricMarginFunction self.drop_duplicates = True - super().__init__(coordinates, use_start_value, params_start_fit, params_sample, params_class) + super().__init__(coordinates, params_start_fit, params_sample, params_class) def fitmargin_from_maxima_gev(self, data: np.ndarray, df_coordinates_spat: pd.DataFrame, df_coordinates_temp: pd.DataFrame) -> ResultFromSpatialExtreme: diff --git a/extreme_fit/model/margin_model/spline_margin_model.py b/extreme_fit/model/margin_model/spline_margin_model.py index fe2252d02bfaed89d30921901f0d82f076b010a7..ec509617a2e2bdf2b3cd0e75857aca64743938a2 100644 --- a/extreme_fit/model/margin_model/spline_margin_model.py +++ b/extreme_fit/model/margin_model/spline_margin_model.py @@ -11,9 +11,9 @@ from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoo class SplineMarginModel(ParametricMarginModel): - def __init__(self, coordinates: AbstractCoordinates, use_start_value=False, params_start_fit=None, + def __init__(self, coordinates: AbstractCoordinates, params_start_fit=None, params_sample=None): - super().__init__(coordinates, use_start_value, params_start_fit, params_sample) + super().__init__(coordinates, params_start_fit, params_sample) def load_margin_functions(self, param_name_to_dims: Dict[str, List[int]] = None, param_name_to_coef: Dict[str, AbstractCoef] = None, diff --git a/extreme_fit/model/max_stable_model/abstract_max_stable_model.py b/extreme_fit/model/max_stable_model/abstract_max_stable_model.py index 69f5e9cbda4639319a98d76b8dc9c065bfa0c95e..6776d8d086eecd3d797cf5fdc94a502ea07b3068 100644 --- a/extreme_fit/model/max_stable_model/abstract_max_stable_model.py +++ b/extreme_fit/model/max_stable_model/abstract_max_stable_model.py @@ -14,8 +14,8 @@ from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoo class AbstractMaxStableModel(AbstractModel): - def __init__(self, use_start_value=False, params_start_fit=None, params_sample=None): - super().__init__(use_start_value, params_start_fit, params_sample) + def __init__(self, params_start_fit=None, params_sample=None): + super().__init__(params_start_fit, params_sample) self.cov_mod = None @property @@ -105,9 +105,9 @@ class CovarianceFunction(Enum): class AbstractMaxStableModelWithCovarianceFunction(AbstractMaxStableModel): - def __init__(self, use_start_value=False, params_start_fit=None, params_sample=None, + def __init__(self, params_start_fit=None, params_sample=None, covariance_function: CovarianceFunction = None): - super().__init__(use_start_value, params_start_fit, params_sample) + super().__init__(params_start_fit, params_sample) assert covariance_function is not None self.covariance_function = covariance_function self.default_params = { diff --git a/extreme_fit/model/utils.py b/extreme_fit/model/utils.py index bec57774459a8352cb31cecba6351bc374686a78..03e653be46fef65316716b521861171f296fd4e8 100644 --- a/extreme_fit/model/utils.py +++ b/extreme_fit/model/utils.py @@ -80,12 +80,12 @@ class SafeRunException(Exception): def safe_run_r_estimator(function, data=None, start_dict=None, max_ratio_between_two_extremes_values=10, maxit=1000000, - **parameters) -> robjects.ListVector: + nb_tries_for_start_value=5, **parameters) -> robjects.ListVector: try: return _safe_run_r_estimator(function, data, max_ratio_between_two_extremes_values, maxit, **parameters) except SafeRunException as e: if start_dict is not None: - for _ in range(5): + for _ in range(nb_tries_for_start_value): parameters['start'] = r.list(**start_dict) try: return _safe_run_r_estimator(function, data, max_ratio_between_two_extremes_values, maxit, **parameters) diff --git a/test/test_extreme_fit/test_estimator/test_full_estimators.py b/test/test_extreme_fit/test_estimator/test_full_estimators.py index 2925c2736dc6ae9db259458e0224ede8b6f3f71d..9322f03459ba33915e3d0099492d256eb987e419 100644 --- a/test/test_extreme_fit/test_estimator/test_full_estimators.py +++ b/test/test_extreme_fit/test_estimator/test_full_estimators.py @@ -25,9 +25,6 @@ class TestFullEstimators(unittest.TestCase): coordinates=coordinates, max_stable_model=max_stable_model) - margin_model.use_start_value = True - # todo: understand why it is crashing without specifying that (when not using start value was passed by default this test started crashing) - for full_estimator in load_test_full_estimators(dataset, margin_model, max_stable_model): full_estimator.fit() if self.DISPLAY: diff --git a/test/test_unitary_r_packages/test_spatial_extreme/test_fitmaxstab/test_fitmaxstab_with_margin.py b/test/test_unitary_r_packages/test_spatial_extreme/test_fitmaxstab/test_fitmaxstab_with_margin.py index 5bde5dfa36f2fc8b662a32049a6c503d892d7e60..4969a5989f870935762cba594416cd6c2313eabe 100644 --- a/test/test_unitary_r_packages/test_spatial_extreme/test_fitmaxstab/test_fitmaxstab_with_margin.py +++ b/test/test_unitary_r_packages/test_spatial_extreme/test_fitmaxstab/test_fitmaxstab_with_margin.py @@ -27,7 +27,7 @@ class TestMaxStableFitWithConstantMargin(TestUnitaryAbstract): @property def python_output(self): dataset = TestRMaxStabWithMarginConstant.python_code() - max_stable_model = Schlather(covariance_function=CovarianceFunction.whitmat, use_start_value=False) + max_stable_model = Schlather(covariance_function=CovarianceFunction.whitmat) margin_model = ConstantMarginModel(dataset.coordinates) full_estimator = FullEstimatorInASingleStepWithSmoothMargin(dataset, margin_model, max_stable_model) @@ -54,7 +54,7 @@ class TestMaxStableFitWithLinearMargin(TestUnitaryAbstract): @property def python_output(self): dataset = TestRMaxStabWithMarginConstant.python_code() - max_stable_model = Schlather(covariance_function=CovarianceFunction.whitmat, use_start_value=False) + max_stable_model = Schlather(covariance_function=CovarianceFunction.whitmat) margin_model = LinearMarginModelExample(dataset.coordinates) full_estimator = FullEstimatorInASingleStepWithSmoothMargin(dataset, margin_model, max_stable_model) diff --git a/test/test_unitary_r_packages/test_spatial_extreme/test_fitmaxstab/test_fitmaxstab_without_margin.py b/test/test_unitary_r_packages/test_spatial_extreme/test_fitmaxstab/test_fitmaxstab_without_margin.py index b428d7a7242047ac53f749d670b487c4d0dfef63..e154fa04b121709cbd824657393ba58b00a6da4b 100644 --- a/test/test_unitary_r_packages/test_spatial_extreme/test_fitmaxstab/test_fitmaxstab_without_margin.py +++ b/test/test_unitary_r_packages/test_spatial_extreme/test_fitmaxstab/test_fitmaxstab_without_margin.py @@ -21,7 +21,7 @@ class TestMaxStableFitWithoutMargin(TestUnitaryAbstract): def python_output(self): coordinates, max_stable_model = TestRMaxStab.python_code() dataset = MaxStableDataset.from_sampling(nb_obs=40, max_stable_model=max_stable_model, coordinates=coordinates) - max_stable_model = Schlather(covariance_function=CovarianceFunction.whitmat, use_start_value=False) + max_stable_model = Schlather(covariance_function=CovarianceFunction.whitmat) max_stable_estimator = MaxStableEstimator(dataset, max_stable_model) max_stable_estimator.fit() return max_stable_estimator.max_stable_params_fitted