From 69f5b00f4dea14adcb8830e3bba61925d802278e Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Sat, 18 Apr 2020 16:50:51 +0200 Subject: [PATCH] [refactor] remove default_param_start_fit and default_param_sample by a single default_param --- extreme_fit/model/abstract_model.py | 7 +++--- .../linear_margin_model.py | 3 +-- .../abstract_max_stable_model.py | 2 +- .../max_stable_model/max_stable_models.py | 22 +++++-------------- .../test_fitmaxstab_with_margin.py | 2 +- 5 files changed, 12 insertions(+), 24 deletions(-) diff --git a/extreme_fit/model/abstract_model.py b/extreme_fit/model/abstract_model.py index 28e19653..9aed76a7 100644 --- a/extreme_fit/model/abstract_model.py +++ b/extreme_fit/model/abstract_model.py @@ -1,19 +1,18 @@ class AbstractModel(object): def __init__(self, use_start_value=False, params_start_fit=None, params_sample=None): - self.default_params_start_fit = None - self.default_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 @property def params_start_fit(self) -> dict: - return self.merge_params(default_params=self.default_params_start_fit, input_params=self.user_params_start_fit) + return self.merge_params(default_params=self.default_params, input_params=self.user_params_start_fit) @property def params_sample(self) -> dict: - return self.merge_params(default_params=self.default_params_sample, input_params=self.user_params_sample) + return self.merge_params(default_params=self.default_params, input_params=self.user_params_sample) @staticmethod def merge_params(default_params, input_params): diff --git a/extreme_fit/model/margin_model/linear_margin_model/linear_margin_model.py b/extreme_fit/model/margin_model/linear_margin_model/linear_margin_model.py index 68166e99..bce0d46a 100644 --- a/extreme_fit/model/margin_model/linear_margin_model/linear_margin_model.py +++ b/extreme_fit/model/margin_model/linear_margin_model/linear_margin_model.py @@ -19,8 +19,7 @@ class LinearMarginModel(ParametricMarginModel): 'load_margin_functions needs to be implemented in child class' # Load default params (with a dictionary format to enable quick replacement) # IMPORTANT: Using a dictionary format enable using the default/user params methodology - self.default_params_sample = self.default_param_name_and_dim_to_coef - self.default_params_start_fit = self.default_param_name_and_dim_to_coef + self.default_params = self.default_param_name_and_dim_to_coef # Load sample coef coef_sample = self.param_name_to_linear_coef(param_name_and_dim_to_coef=self.params_sample) 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 3d6a4f61..d1942525 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 @@ -110,7 +110,7 @@ class AbstractMaxStableModelWithCovarianceFunction(AbstractMaxStableModel): super().__init__(use_start_value, params_start_fit, params_sample) assert covariance_function is not None self.covariance_function = covariance_function - self.default_params_sample = { + self.default_params = { 'range': 3, 'smooth': 0.5, 'nugget': 0.5 diff --git a/extreme_fit/model/max_stable_model/max_stable_models.py b/extreme_fit/model/max_stable_model/max_stable_models.py index 410f9d3f..e0a973cc 100644 --- a/extreme_fit/model/max_stable_model/max_stable_models.py +++ b/extreme_fit/model/max_stable_model/max_stable_models.py @@ -9,13 +9,12 @@ class Smith(AbstractMaxStableModel): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.cov_mod = 'gauss' - self.default_params_start_fit = { + self.default_params = { 'var': 1, 'cov11': 1, 'cov12': 0, 'cov22': 1 } - self.default_params_sample = self.default_params_start_fit.copy() def remove_unused_parameters(self, start_dict, fitmaxstab_with_one_dimensional_data): if fitmaxstab_with_one_dimensional_data: @@ -30,23 +29,17 @@ class BrownResnick(AbstractMaxStableModel): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.cov_mod = 'brown' - self.default_params_start_fit = { + self.default_params = { 'range': 3, 'smooth': 0.5, } - self.default_params_sample = { - 'range': 3, - 'smooth': 0.5, - } - class Schlather(AbstractMaxStableModelWithCovarianceFunction): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.cov_mod = self.covariance_function.name - self.default_params_sample.update({}) - self.default_params_start_fit = self.default_params_sample.copy() + self.default_params.update({}) class Geometric(AbstractMaxStableModelWithCovarianceFunction): @@ -54,8 +47,7 @@ class Geometric(AbstractMaxStableModelWithCovarianceFunction): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.cov_mod = 'g' + self.covariance_function.name - self.default_params_sample.update({'sigma2': 0.5}) - self.default_params_start_fit = self.default_params_sample.copy() + self.default_params.update({'sigma2': 0.5}) class ExtremalT(AbstractMaxStableModelWithCovarianceFunction): @@ -63,8 +55,7 @@ class ExtremalT(AbstractMaxStableModelWithCovarianceFunction): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.cov_mod = 't' + self.covariance_function.name - self.default_params_sample.update({'DoF': 2}) - self.default_params_start_fit = self.default_params_sample.copy() + self.default_params.update({'DoF': 2}) class ISchlather(AbstractMaxStableModelWithCovarianceFunction): @@ -72,5 +63,4 @@ class ISchlather(AbstractMaxStableModelWithCovarianceFunction): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.cov_mod = 'i' + self.covariance_function.name - self.default_params_sample.update({'alpha': 0.5}) - self.default_params_start_fit = self.default_params_sample.copy() + self.default_params.update({'alpha': 0.5}) 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 a435d09f..5bde5dfa 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 @@ -87,7 +87,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) -- GitLab