From a594c050bed7807285401ef2b8b27e6a4e376ac1 Mon Sep 17 00:00:00 2001 From: Le Roux Erwan <erwan.le-roux@irstea.fr> Date: Wed, 18 Mar 2020 15:43:35 +0100 Subject: [PATCH] [refactoring] abstract estimator return an abstract function --- .../study_visualization/study_visualizer.py | 2 +- .../regression_margin/regression_margin.py | 2 +- experiment/simulation/abstract_simulation.py | 2 +- .../trend_analysis/non_stationary_trends.py | 2 +- .../abstract_gev_trend_test.py | 22 ++++++------- extreme_fit/estimator/abstract_estimator.py | 3 +- .../full_estimator/abstract_full_estimator.py | 4 +-- .../abstract_margin_estimator.py | 2 +- .../abstract_quantile_estimator.py | 4 +-- .../abstract_quantile_function.py | 3 +- .../abstract_margin_function.py | 3 +- .../margin_model/abstract_margin_model.py | 1 + .../test_coordinate_sensitivity.py | 6 ++-- .../test_gev_temporal_extremes_bayesian.py | 10 +++--- .../test_gev_temporal_extremes_gumbel.py | 2 +- .../test_gev_temporal_extremes_mle.py | 10 +++--- .../test_gev/test_gev_temporal_is_mev.py | 20 ++++++------ .../test_estimator/test_margin_estimators.py | 2 +- .../test_estimator/test_quantile_estimator.py | 2 +- .../test_model/test_margin_temporal.py | 24 +++++++------- .../test_margin_temporal_transformed.py | 32 +++++++++---------- .../test_model/test_max_stable_temporal.py | 24 +++++++------- 22 files changed, 93 insertions(+), 89 deletions(-) rename extreme_fit/{estimator/quantile_estimator => function}/abstract_quantile_function.py (71%) diff --git a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py index 264c7566..9d34c7c1 100644 --- a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py +++ b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py @@ -768,7 +768,7 @@ class StudyVisualizer(VisualizationParameters): estimator.fit() # Set visualization attributes for margin_fct - margin_fct = estimator.margin_function_from_fit + margin_fct = estimator.function_from_fit margin_fct._visualization_x_limits = self.study.visualization_x_limits margin_fct._visualization_y_limits = self.study.visualization_y_limits margin_fct.mask_2D = self.study.mask_french_alps diff --git a/experiment/regression_margin/regression_margin.py b/experiment/regression_margin/regression_margin.py index 0dfcdccc..33b67924 100644 --- a/experiment/regression_margin/regression_margin.py +++ b/experiment/regression_margin/regression_margin.py @@ -57,7 +57,7 @@ for i in range(nb_estimator): margin_model_for_estimator = margin_model_for_estimator_class(coordinates) full_estimator = FullEstimatorInASingleStepWithSmoothMargin(dataset, margin_model_for_estimator, max_stable_model) full_estimator.fit() - full_estimator.margin_function_from_fit.visualize_function(axes=axes, show=False) + full_estimator.function_from_fit.visualize_function(axes=axes, show=False) plt.show() # Display all the margin on the same graph for comparison diff --git a/experiment/simulation/abstract_simulation.py b/experiment/simulation/abstract_simulation.py index 2a94a6bc..70f59120 100644 --- a/experiment/simulation/abstract_simulation.py +++ b/experiment/simulation/abstract_simulation.py @@ -59,7 +59,7 @@ class AbstractSimulation(object): estimator = estimator_class.from_dataset(dataset) # type: AbstractEstimator # Fit the estimator and get the margin_function estimator.fit() - margin_function_fitted_list.append(estimator.margin_function_from_fit) + margin_function_fitted_list.append(estimator.function_from_fit) # Individual error dict self.dump_fitted_margins_pickle(estimator_class, margin_function_fitted_list) diff --git a/experiment/trend_analysis/non_stationary_trends.py b/experiment/trend_analysis/non_stationary_trends.py index 2c63e957..cf1a8c8e 100644 --- a/experiment/trend_analysis/non_stationary_trends.py +++ b/experiment/trend_analysis/non_stationary_trends.py @@ -75,7 +75,7 @@ class AbstractNonStationaryTrendTest(object): def get_mu_coefs(self, starting_point): # for the non stationary model gives the mu1 parameters that was fitted estimator = self.get_estimator(starting_point) - margin_function = estimator.margin_function_from_fit # type: LinearMarginFunction + margin_function = estimator.function_from_fit # type: LinearMarginFunction assert isinstance(margin_function, LinearMarginFunction) mu_coefs = [margin_function.mu_intercept, margin_function.mu1_temporal_trend] if self.has_spatial_coordinates: diff --git a/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py b/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py index 2782f461..45470bae 100644 --- a/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py +++ b/experiment/trend_analysis/univariate_test/extreme_trend_test/abstract_gev_trend_test.py @@ -131,20 +131,20 @@ class AbstractGevTrendTest(AbstractUnivariateTest): return np.sign(self.time_derivative_of_return_level) def get_non_stationary_linear_coef(self, gev_param_name: str): - return self.unconstrained_estimator.margin_function_from_fit.get_coef(gev_param_name, - AbstractCoordinates.COORDINATE_T) + return self.unconstrained_estimator.function_from_fit.get_coef(gev_param_name, + AbstractCoordinates.COORDINATE_T) @cached_property def unconstrained_estimator_gev_params(self) -> GevParams: # Constant parameters correspond to the gev params in 1958 - return self.unconstrained_estimator.margin_function_from_fit.get_gev_params(coordinate=np.array([1958]), - is_transformed=False) + return self.unconstrained_estimator.function_from_fit.get_gev_params(coordinate=np.array([1958]), + is_transformed=False) @cached_property def constrained_estimator_gev_params(self) -> GevParams: # Constant parameters correspond to any gev params - return self.constrained_estimator.margin_function_from_fit.get_gev_params(coordinate=np.array([1958]), - is_transformed=False) + return self.constrained_estimator.function_from_fit.get_gev_params(coordinate=np.array([1958]), + is_transformed=False) def time_derivative_times_years(self, nb_years): # Compute the slope strength @@ -163,7 +163,7 @@ class AbstractGevTrendTest(AbstractUnivariateTest): def relative_change_in_return_level(self, initial_year, final_year): return_level_values = [] for year in [initial_year, final_year]: - gev_params = self.unconstrained_estimator.margin_function_from_fit.get_gev_params( + gev_params = self.unconstrained_estimator.function_from_fit.get_gev_params( coordinate=np.array([year]), is_transformed=False) return_level_values.append(gev_params.quantile(self.quantile_level)) @@ -289,7 +289,7 @@ class AbstractGevTrendTest(AbstractUnivariateTest): label = 'Y({})'.format(year) if year is not None else label if year is None: year = 2019 - gev_params_year = self.unconstrained_estimator.margin_function_from_fit.get_gev_params( + gev_params_year = self.unconstrained_estimator.function_from_fit.get_gev_params( coordinate=np.array([year]), is_transformed=False) extended_maxima = [gev_params_year.gumbel_inverse_standardization(q) for q in extended_quantiles] @@ -380,7 +380,7 @@ class AbstractGevTrendTest(AbstractUnivariateTest): def compute_empirical_quantiles(self, estimator): empirical_quantiles = [] for year, maximum in sorted(zip(self.years, self.maxima), key=lambda t: t[1]): - gev_param = estimator.margin_function_from_fit.get_gev_params( + gev_param = estimator.function_from_fit.get_gev_params( coordinate=np.array([year]), is_transformed=False) maximum_standardized = gev_param.gumbel_standardization(maximum) @@ -426,8 +426,8 @@ class AbstractGevTrendTest(AbstractUnivariateTest): plt.gca().set_ylim(bottom=0) def get_gev_params_with_big_shape_and_correct_shape(self): - gev_params = self.unconstrained_estimator.margin_function_from_fit.get_gev_params(coordinate=np.array([YEAR_OF_INTEREST_FOR_RETURN_LEVEL]), - is_transformed=False) # type: GevParams + gev_params = self.unconstrained_estimator.function_from_fit.get_gev_params(coordinate=np.array([YEAR_OF_INTEREST_FOR_RETURN_LEVEL]), + is_transformed=False) # type: GevParams gev_params_with_corrected_shape = GevParams(loc=gev_params.location, scale=gev_params.scale, shape=0.5) diff --git a/extreme_fit/estimator/abstract_estimator.py b/extreme_fit/estimator/abstract_estimator.py index d9be7274..c8e93cad 100644 --- a/extreme_fit/estimator/abstract_estimator.py +++ b/extreme_fit/estimator/abstract_estimator.py @@ -2,6 +2,7 @@ from typing import Union from cached_property import cached_property +from extreme_fit.function.abstract_function import AbstractFunction from extreme_fit.model.result_from_model_fit.abstract_result_from_model_fit import AbstractResultFromModelFit from extreme_fit.function.margin_function.abstract_margin_function import \ AbstractMarginFunction @@ -35,7 +36,7 @@ class AbstractEstimator(object): return self._result_from_fit @cached_property - def margin_function_from_fit(self) -> AbstractMarginFunction: + def function_from_fit(self) -> AbstractFunction: raise NotImplementedError # Short cut properties diff --git a/extreme_fit/estimator/full_estimator/abstract_full_estimator.py b/extreme_fit/estimator/full_estimator/abstract_full_estimator.py index 2657a881..b6ff59ce 100644 --- a/extreme_fit/estimator/full_estimator/abstract_full_estimator.py +++ b/extreme_fit/estimator/full_estimator/abstract_full_estimator.py @@ -34,7 +34,7 @@ class SmoothMarginalsThenUnitaryMsp(AbstractFullEstimator): maxima_frech = AbstractMarginModel.gev2frech(maxima_gev=maxima_gev_train, coordinates_values=self.dataset.coordinates_values( self.train_split), - margin_function=self.margin_estimator.margin_function_from_fit) + margin_function=self.margin_estimator.function_from_fit) # Update maxima frech field through the dataset object self.dataset.set_maxima_frech(maxima_frech, split=self.train_split) # Estimate the max stable parameters @@ -86,7 +86,7 @@ class FullEstimatorInASingleStepWithSmoothMargin(AbstractFullEstimator): ) @cached_property - def margin_function_from_fit(self) -> LinearMarginFunction: + def function_from_fit(self) -> LinearMarginFunction: return load_margin_function(self, self.linear_margin_model) diff --git a/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py b/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py index 0e6f6537..117594e3 100644 --- a/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py +++ b/extreme_fit/estimator/margin_estimator/abstract_margin_estimator.py @@ -47,5 +47,5 @@ class LinearMarginEstimator(AbstractMarginEstimator): return compute_nllh(self, self.maxima_gev_train, self.coordinate_temp, self.margin_model) @cached_property - def margin_function_from_fit(self) -> LinearMarginFunction: + def function_from_fit(self) -> LinearMarginFunction: return load_margin_function(self, self.margin_model) diff --git a/extreme_fit/estimator/quantile_estimator/abstract_quantile_estimator.py b/extreme_fit/estimator/quantile_estimator/abstract_quantile_estimator.py index 739c8929..d43aae92 100644 --- a/extreme_fit/estimator/quantile_estimator/abstract_quantile_estimator.py +++ b/extreme_fit/estimator/quantile_estimator/abstract_quantile_estimator.py @@ -2,7 +2,7 @@ from cached_property import cached_property from extreme_fit.estimator.abstract_estimator import AbstractEstimator from extreme_fit.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator -from extreme_fit.estimator.quantile_estimator.abstract_quantile_function import AbstractQuantileFunction +from extreme_fit.function.abstract_quantile_function import AbstractQuantileFunction from extreme_fit.model.margin_model.linear_margin_model.linear_margin_model import LinearMarginModel from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset @@ -26,5 +26,5 @@ class QuantileEstimatorFromMargin(AbstractQuantileEstimator, LinearMarginEstimat @cached_property def quantile_function_from_fit(self) -> AbstractQuantileFunction: - linear_margin_function = super().margin_function_from_fit + linear_margin_function = super().function_from_fit return AbstractQuantileFunction(linear_margin_function, self.quantile) diff --git a/extreme_fit/estimator/quantile_estimator/abstract_quantile_function.py b/extreme_fit/function/abstract_quantile_function.py similarity index 71% rename from extreme_fit/estimator/quantile_estimator/abstract_quantile_function.py rename to extreme_fit/function/abstract_quantile_function.py index ef9af2fa..4c06c95e 100644 --- a/extreme_fit/estimator/quantile_estimator/abstract_quantile_function.py +++ b/extreme_fit/function/abstract_quantile_function.py @@ -1,9 +1,10 @@ import numpy as np +from extreme_fit.function.abstract_function import AbstractFunction from extreme_fit.function.margin_function.abstract_margin_function import AbstractMarginFunction -class AbstractQuantileFunction(object): +class AbstractQuantileFunction(AbstractFunction): def __init__(self, margin_function: AbstractMarginFunction, quantile: float): self.margin_function = margin_function diff --git a/extreme_fit/function/margin_function/abstract_margin_function.py b/extreme_fit/function/margin_function/abstract_margin_function.py index fb10aa47..994e7ebc 100644 --- a/extreme_fit/function/margin_function/abstract_margin_function.py +++ b/extreme_fit/function/margin_function/abstract_margin_function.py @@ -7,12 +7,13 @@ import pandas as pd from experiment.meteo_france_data.scm_models_data.visualization.utils import create_adjusted_axes from extreme_fit.distribution.gev.gev_params import GevParams from experiment.meteo_france_data.plot.create_shifted_cmap import imshow_shifted +from extreme_fit.function.abstract_function import AbstractFunction from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates from spatio_temporal_dataset.slicer.split import Split from root_utils import cached_property -class AbstractMarginFunction(object): +class AbstractMarginFunction(AbstractFunction): """ AbstractMarginFunction maps points from a space S (could be 1D, 2D,...) to R^3 (the 3 parameters of the GEV) """ diff --git a/extreme_fit/model/margin_model/abstract_margin_model.py b/extreme_fit/model/margin_model/abstract_margin_model.py index 24593139..ef7ae1a7 100644 --- a/extreme_fit/model/margin_model/abstract_margin_model.py +++ b/extreme_fit/model/margin_model/abstract_margin_model.py @@ -32,6 +32,7 @@ class AbstractMarginModel(AbstractModel, ABC): raise NotImplementedError def default_load_margin_functions(self, margin_function_class): + # todo: check it i could remove these attributes self.margin_function_sample = margin_function_class(coordinates=self.coordinates, default_params=GevParams.from_dict(self.params_sample)) self.margin_function_start_fit = margin_function_class(coordinates=self.coordinates, diff --git a/test/test_experiment/test_coordinate_sensitivity.py b/test/test_experiment/test_coordinate_sensitivity.py index e709029a..f0eb3a4b 100644 --- a/test/test_experiment/test_coordinate_sensitivity.py +++ b/test/test_experiment/test_coordinate_sensitivity.py @@ -33,15 +33,15 @@ class TestCoordinateSensitivity(unittest.TestCase): if self.DISPLAY: print('Stationary') stationary_est = trend_test.get_estimator(starting_point=None) - print(stationary_est.margin_function_from_fit.coordinates.df_all_coordinates) + print(stationary_est.function_from_fit.coordinates.df_all_coordinates) print(stationary_est.result_from_model_fit.convergence) - print(stationary_est.margin_function_from_fit.coef_dict) + print(stationary_est.function_from_fit.coef_dict) print('Non Stationary') non_stationary_est = trend_test.get_estimator(starting_point=1960) print(non_stationary_est.result_from_model_fit.convergence) non_stationary_est = trend_test.get_estimator(starting_point=1990) print(non_stationary_est.result_from_model_fit.convergence) - print(non_stationary_est.margin_function_from_fit.coef_dict) + print(non_stationary_est.function_from_fit.coef_dict) print(get_display_name_from_object_type(transformation_class), 'mu1s: ', mu1s) print('\n') self.assertTrue(0.0 not in mu1s) diff --git a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py index ec0b6977..d3e3a9e4 100644 --- a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py +++ b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_bayesian.py @@ -43,7 +43,7 @@ class TestGevTemporalExtremesBayesian(unittest.TestCase): fit_method=self.fit_method) ref = {'loc': 0.34272436381693616, 'scale': 1.3222588712831973, 'shape': 0.30491484962825105} for year in range(1, 3): - mle_params_estimated = estimator.margin_function_from_fit.get_gev_params(np.array([year])).to_dict() + mle_params_estimated = estimator.function_from_fit.get_gev_params(np.array([year])).to_dict() for key in ref.keys(): self.assertAlmostEqual(ref[key], mle_params_estimated[key], places=3) @@ -55,8 +55,8 @@ class TestGevTemporalExtremesBayesian(unittest.TestCase): mu1_values = estimator.result_from_model_fit.df_posterior_samples.iloc[:, 1] self.assertTrue((mu1_values != 0).any()) # Checks that parameters returned are indeed different - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(np.array([1])).to_dict() - mle_params_estimated_year3 = estimator.margin_function_from_fit.get_gev_params(np.array([3])).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(np.array([1])).to_dict() + mle_params_estimated_year3 = estimator.function_from_fit.get_gev_params(np.array([3])).to_dict() self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) def test_gev_temporal_margin_fit_non_stationary_location_and_scale(self): @@ -67,8 +67,8 @@ class TestGevTemporalExtremesBayesian(unittest.TestCase): mu1_values = estimator.result_from_model_fit.df_posterior_samples.iloc[:, 1] self.assertTrue((mu1_values != 0).any()) # Checks that parameters returned are indeed different - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(np.array([1])).to_dict() - mle_params_estimated_year3 = estimator.margin_function_from_fit.get_gev_params(np.array([3])).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(np.array([1])).to_dict() + mle_params_estimated_year3 = estimator.function_from_fit.get_gev_params(np.array([3])).to_dict() self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) diff --git a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py index 8aee8f21..018aeebb 100644 --- a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py +++ b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_gumbel.py @@ -42,7 +42,7 @@ class TestGevTemporalExtremesGumbel(unittest.TestCase): fit_method=TemporalMarginFitMethod.extremes_fevd_mle) ref = {'loc': -0.0862185692806497, 'scale': 1.0818465357627252, 'shape': 0} for year in range(1, 3): - mle_params_estimated = estimator.margin_function_from_fit.get_gev_params(np.array([year])).to_dict() + mle_params_estimated = estimator.function_from_fit.get_gev_params(np.array([year])).to_dict() for key in ref.keys(): self.assertAlmostEqual(ref[key], mle_params_estimated[key], places=3) diff --git a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py index 94f98974..88677c67 100644 --- a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py +++ b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_extremes_mle.py @@ -43,7 +43,7 @@ class TestGevTemporalExtremesMle(unittest.TestCase): fit_method=self.fit_method) ref = {'loc': 0.02191974259369493, 'scale': 1.0347946062900268, 'shape': 0.829052520147379} for year in range(1, 3): - mle_params_estimated = estimator.margin_function_from_fit.get_gev_params(np.array([year])).to_dict() + mle_params_estimated = estimator.function_from_fit.get_gev_params(np.array([year])).to_dict() for key in ref.keys(): self.assertAlmostEqual(ref[key], mle_params_estimated[key], places=3) self.assertAlmostEqual(estimator.result_from_model_fit.nllh, estimator.nllh) @@ -54,8 +54,8 @@ class TestGevTemporalExtremesMle(unittest.TestCase): starting_year=0, fit_method=self.fit_method) # Checks that parameters returned are indeed different - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(np.array([1])).to_dict() - mle_params_estimated_year3 = estimator.margin_function_from_fit.get_gev_params(np.array([3])).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(np.array([1])).to_dict() + mle_params_estimated_year3 = estimator.function_from_fit.get_gev_params(np.array([3])).to_dict() self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) self.assertAlmostEqual(estimator.result_from_model_fit.nllh, estimator.nllh) @@ -66,8 +66,8 @@ class TestGevTemporalExtremesMle(unittest.TestCase): starting_year=0, fit_method=self.fit_method) # Checks that parameters returned are indeed different - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(np.array([1])).to_dict() - mle_params_estimated_year3 = estimator.margin_function_from_fit.get_gev_params(np.array([3])).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(np.array([1])).to_dict() + mle_params_estimated_year3 = estimator.function_from_fit.get_gev_params(np.array([3])).to_dict() self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) self.assertAlmostEqual(estimator.result_from_model_fit.nllh, estimator.nllh) diff --git a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_is_mev.py b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_is_mev.py index 2e52087c..333cfd19 100644 --- a/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_is_mev.py +++ b/test/test_extreme_fit/test_distribution/test_gev/test_gev_temporal_is_mev.py @@ -45,7 +45,7 @@ class TestGevTemporal(unittest.TestCase): fit_method=self.fit_method) ref = {'loc': 0.04309190816463247, 'scale': 2.0688696961628437, 'shape': 0.8291528207825063} for year in range(1, 3): - mle_params_estimated = estimator.margin_function_from_fit.get_gev_params(np.array([year])).to_dict() + mle_params_estimated = estimator.function_from_fit.get_gev_params(np.array([year])).to_dict() for key in ref.keys(): self.assertAlmostEqual(ref[key], mle_params_estimated[key], places=3) @@ -56,21 +56,21 @@ class TestGevTemporal(unittest.TestCase): estimator = LinearMarginEstimator(self.dataset, margin_model) estimator.fit() # Checks that parameters returned are indeed different - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(np.array([1])).to_dict() - mle_params_estimated_year3 = estimator.margin_function_from_fit.get_gev_params(np.array([3])).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(np.array([1])).to_dict() + mle_params_estimated_year3 = estimator.function_from_fit.get_gev_params(np.array([3])).to_dict() self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) def test_gev_temporal_margin_fit_nonstationary_with_start_point(self): # Create estimator estimator = self.fit_non_stationary_estimator(starting_point=3) - self.assertNotEqual(estimator.margin_function_from_fit.mu1_temporal_trend, 0.0) + self.assertNotEqual(estimator.function_from_fit.mu1_temporal_trend, 0.0) # Checks starting point parameter are well passed - self.assertEqual(3, estimator.margin_function_from_fit.starting_point) + self.assertEqual(3, estimator.function_from_fit.starting_point) # Checks that parameters returned are indeed different - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(np.array([1])).to_dict() - mle_params_estimated_year3 = estimator.margin_function_from_fit.get_gev_params(np.array([3])).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(np.array([1])).to_dict() + mle_params_estimated_year3 = estimator.function_from_fit.get_gev_params(np.array([3])).to_dict() self.assertEqual(mle_params_estimated_year1, mle_params_estimated_year3) - mle_params_estimated_year5 = estimator.margin_function_from_fit.get_gev_params(np.array([5])).to_dict() + mle_params_estimated_year5 = estimator.function_from_fit.get_gev_params(np.array([5])).to_dict() self.assertNotEqual(mle_params_estimated_year5, mle_params_estimated_year3) def fit_non_stationary_estimator(self, starting_point): @@ -84,8 +84,8 @@ class TestGevTemporal(unittest.TestCase): # Create two different estimators estimator1 = self.fit_non_stationary_estimator(starting_point=3) estimator2 = self.fit_non_stationary_estimator(starting_point=28) - mu1_estimator1 = estimator1.margin_function_from_fit.mu1_temporal_trend - mu1_estimator2 = estimator2.margin_function_from_fit.mu1_temporal_trend + mu1_estimator1 = estimator1.function_from_fit.mu1_temporal_trend + mu1_estimator2 = estimator2.function_from_fit.mu1_temporal_trend self.assertNotEqual(mu1_estimator1, mu1_estimator2) diff --git a/test/test_extreme_fit/test_estimator/test_margin_estimators.py b/test/test_extreme_fit/test_estimator/test_margin_estimators.py index 7f5eabb2..9a5a5c55 100644 --- a/test/test_extreme_fit/test_estimator/test_margin_estimators.py +++ b/test/test_extreme_fit/test_estimator/test_margin_estimators.py @@ -34,7 +34,7 @@ class TestSmoothMarginEstimator(unittest.TestCase): # Plot if self.DISPLAY: margin_model.margin_function_sample.visualize_function(show=True) - estimator.margin_function_from_fit.visualize_function(show=True) + estimator.function_from_fit.visualize_function(show=True) self.assertTrue(True) diff --git a/test/test_extreme_fit/test_estimator/test_quantile_estimator.py b/test/test_extreme_fit/test_estimator/test_quantile_estimator.py index 9bf1a3c1..bd517938 100644 --- a/test/test_extreme_fit/test_estimator/test_quantile_estimator.py +++ b/test/test_extreme_fit/test_estimator/test_quantile_estimator.py @@ -32,7 +32,7 @@ class TestSmoothMarginEstimator(unittest.TestCase): for quantile_estimator in quantile_estimators: quantile_estimator.fit() - print(quantile_estimator.margin_function_from_fit) + print(quantile_estimator.function_from_fit) # self.assertTrue(True) diff --git a/test/test_extreme_fit/test_model/test_margin_temporal.py b/test/test_extreme_fit/test_model/test_margin_temporal.py index fdf159f2..31b87e87 100644 --- a/test/test_extreme_fit/test_model/test_margin_temporal.py +++ b/test/test_extreme_fit/test_model/test_margin_temporal.py @@ -33,7 +33,7 @@ class TestMarginTemporal(unittest.TestCase): ref = {'loc': 1.3456595684773085, 'scale': 1.090369430386199, 'shape': 0.6845422250749476} for year in range(1, 3): coordinate = np.array([0.0, 0.0, year]) - mle_params_estimated = estimator.margin_function_from_fit.get_gev_params(coordinate).to_dict() + mle_params_estimated = estimator.function_from_fit.get_gev_params(coordinate).to_dict() for key in ref.keys(): self.assertAlmostEqual(ref[key], mle_params_estimated[key], places=3) @@ -42,32 +42,32 @@ class TestMarginTemporal(unittest.TestCase): margin_model = LinearNonStationaryLocationMarginModel(self.coordinates) estimator = LinearMarginEstimator(self.dataset, margin_model) estimator.fit() - self.assertNotEqual(estimator.margin_function_from_fit.mu1_temporal_trend, 0.0) + self.assertNotEqual(estimator.function_from_fit.mu1_temporal_trend, 0.0) # Checks that parameters returned are indeed different coordinate1 = np.array([0.0, 0.0, 1]) - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(coordinate1).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(coordinate1).to_dict() coordinate3 = np.array([0.0, 0.0, 3]) - mle_params_estimated_year3 = estimator.margin_function_from_fit.get_gev_params(coordinate3).to_dict() + mle_params_estimated_year3 = estimator.function_from_fit.get_gev_params(coordinate3).to_dict() self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) def test_margin_fit_nonstationary_with_start_point(self): # Create estimator estimator = self.fit_non_stationary_estimator(starting_point=2) # By default, estimator find the good margin - self.assertNotEqual(estimator.margin_function_from_fit.mu1_temporal_trend, 0.0) - self.assertAlmostEqual(estimator.margin_function_from_fit.mu1_temporal_trend, + self.assertNotEqual(estimator.function_from_fit.mu1_temporal_trend, 0.0) + self.assertAlmostEqual(estimator.function_from_fit.mu1_temporal_trend, self.smooth_margin_model.margin_function_sample.mu1_temporal_trend, places=3) # Checks starting point parameter are well passed - self.assertEqual(2, estimator.margin_function_from_fit.starting_point) + self.assertEqual(2, estimator.function_from_fit.starting_point) # Checks that parameters returned are indeed different coordinate1 = np.array([0.0, 0.0, 1]) - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(coordinate1).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(coordinate1).to_dict() coordinate2 = np.array([0.0, 0.0, 2]) - mle_params_estimated_year2 = estimator.margin_function_from_fit.get_gev_params(coordinate2).to_dict() + mle_params_estimated_year2 = estimator.function_from_fit.get_gev_params(coordinate2).to_dict() self.assertEqual(mle_params_estimated_year1, mle_params_estimated_year2) coordinate5 = np.array([0.0, 0.0, 5]) - mle_params_estimated_year5 = estimator.margin_function_from_fit.get_gev_params(coordinate5).to_dict() + mle_params_estimated_year5 = estimator.function_from_fit.get_gev_params(coordinate5).to_dict() self.assertNotEqual(mle_params_estimated_year5, mle_params_estimated_year2) def fit_non_stationary_estimator(self, starting_point): @@ -80,8 +80,8 @@ class TestMarginTemporal(unittest.TestCase): # Create two different estimators estimator1 = self.fit_non_stationary_estimator(starting_point=3) estimator2 = self.fit_non_stationary_estimator(starting_point=20) - mu1_estimator1 = estimator1.margin_function_from_fit.mu1_temporal_trend - mu1_estimator2 = estimator2.margin_function_from_fit.mu1_temporal_trend + mu1_estimator1 = estimator1.function_from_fit.mu1_temporal_trend + mu1_estimator2 = estimator2.function_from_fit.mu1_temporal_trend self.assertNotEqual(mu1_estimator1, mu1_estimator2) diff --git a/test/test_extreme_fit/test_model/test_margin_temporal_transformed.py b/test/test_extreme_fit/test_model/test_margin_temporal_transformed.py index f4a42a81..66392b46 100644 --- a/test/test_extreme_fit/test_model/test_margin_temporal_transformed.py +++ b/test/test_extreme_fit/test_model/test_margin_temporal_transformed.py @@ -41,8 +41,8 @@ class TestMarginTemporalTransformed(unittest.TestCase): 'shape': 0.7289248773961512} for year in range(1, 3): coordinate = np.array([0.0, 0.0, year]) - mle_params_estimated = estimator.margin_function_from_fit.get_gev_params(coordinate, - is_transformed=False).to_dict() + mle_params_estimated = estimator.function_from_fit.get_gev_params(coordinate, + is_transformed=False).to_dict() self.assertEqual(mle_params_estimated, ref) def test_margin_fit_nonstationary(self): @@ -50,32 +50,32 @@ class TestMarginTemporalTransformed(unittest.TestCase): margin_model = LinearNonStationaryLocationMarginModel(self.coordinates) estimator = LinearMarginEstimator(self.dataset, margin_model) estimator.fit() - self.assertNotEqual(estimator.margin_function_from_fit.mu1_temporal_trend, 0.0) + self.assertNotEqual(estimator.function_from_fit.mu1_temporal_trend, 0.0) # Checks that parameters returned are indeed different coordinate1 = np.array([0.0, 0.0, 1]) - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(coordinate1, - is_transformed=False).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(coordinate1, + is_transformed=False).to_dict() coordinate3 = np.array([0.0, 0.0, 3]) - mle_params_estimated_year3 = estimator.margin_function_from_fit.get_gev_params(coordinate3, - is_transformed=False).to_dict() + mle_params_estimated_year3 = estimator.function_from_fit.get_gev_params(coordinate3, + is_transformed=False).to_dict() self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) def test_margin_fit_nonstationary_with_start_point(self): # Create estimator estimator = self.fit_non_stationary_estimator(starting_point=2) # By default, estimator find the good margin - self.assertNotEqual(estimator.margin_function_from_fit.mu1_temporal_trend, 0.0) + self.assertNotEqual(estimator.function_from_fit.mu1_temporal_trend, 0.0) # Checks that parameters returned are indeed different coordinate1 = np.array([0.0, 0.0, 1]) - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(coordinate1, - is_transformed=False).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(coordinate1, + is_transformed=False).to_dict() coordinate2 = np.array([0.0, 0.0, 2]) - mle_params_estimated_year2 = estimator.margin_function_from_fit.get_gev_params(coordinate2, - is_transformed=False).to_dict() + mle_params_estimated_year2 = estimator.function_from_fit.get_gev_params(coordinate2, + is_transformed=False).to_dict() self.assertEqual(mle_params_estimated_year1, mle_params_estimated_year2) coordinate5 = np.array([0.0, 0.0, 5]) - mle_params_estimated_year5 = estimator.margin_function_from_fit.get_gev_params(coordinate5, - is_transformed=False).to_dict() + mle_params_estimated_year5 = estimator.function_from_fit.get_gev_params(coordinate5, + is_transformed=False).to_dict() self.assertNotEqual(mle_params_estimated_year5, mle_params_estimated_year2) def fit_non_stationary_estimator(self, starting_point): @@ -88,8 +88,8 @@ class TestMarginTemporalTransformed(unittest.TestCase): # Create two different estimators estimator1 = self.fit_non_stationary_estimator(starting_point=3) estimator2 = self.fit_non_stationary_estimator(starting_point=20) - mu1_estimator1 = estimator1.margin_function_from_fit.mu1_temporal_trend - mu1_estimator2 = estimator2.margin_function_from_fit.mu1_temporal_trend + mu1_estimator1 = estimator1.function_from_fit.mu1_temporal_trend + mu1_estimator2 = estimator2.function_from_fit.mu1_temporal_trend self.assertNotEqual(mu1_estimator1, mu1_estimator2) diff --git a/test/test_extreme_fit/test_model/test_max_stable_temporal.py b/test/test_extreme_fit/test_model/test_max_stable_temporal.py index 8a6a6b3b..cd111c34 100644 --- a/test/test_extreme_fit/test_model/test_max_stable_temporal.py +++ b/test/test_extreme_fit/test_model/test_max_stable_temporal.py @@ -37,7 +37,7 @@ class TestMaxStableTemporal(unittest.TestCase): ref = {'loc': 1.2091156634312243, 'scale': 1.1210085591373455, 'shape': 0.9831957705294134} for year in range(1, 3): coordinate = np.array([0.0, 0.0, year]) - mle_params_estimated = estimator.margin_function_from_fit.get_gev_params(coordinate).to_dict() + mle_params_estimated = estimator.function_from_fit.get_gev_params(coordinate).to_dict() for key in ref.keys(): self.assertAlmostEqual(ref[key], mle_params_estimated[key], places=3) @@ -47,32 +47,32 @@ class TestMaxStableTemporal(unittest.TestCase): estimator = FullEstimatorInASingleStepWithSmoothMargin(self.dataset, margin_model, self.max_stable_model) estimator.fit() - self.assertNotEqual(estimator.margin_function_from_fit.mu1_temporal_trend, 0.0) + self.assertNotEqual(estimator.function_from_fit.mu1_temporal_trend, 0.0) # Checks that parameters returned are indeed different coordinate1 = np.array([0.0, 0.0, 1]) - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(coordinate1).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(coordinate1).to_dict() coordinate3 = np.array([0.0, 0.0, 3]) - mle_params_estimated_year3 = estimator.margin_function_from_fit.get_gev_params(coordinate3).to_dict() + mle_params_estimated_year3 = estimator.function_from_fit.get_gev_params(coordinate3).to_dict() self.assertNotEqual(mle_params_estimated_year1, mle_params_estimated_year3) def test_margin_fit_nonstationary_with_start_point(self): # Create estimator estimator = self.fit_non_stationary_estimator(starting_point=2) # By default, estimator find the good margin - self.assertNotEqual(estimator.margin_function_from_fit.mu1_temporal_trend, 0.0) - self.assertAlmostEqual(estimator.margin_function_from_fit.mu1_temporal_trend, + self.assertNotEqual(estimator.function_from_fit.mu1_temporal_trend, 0.0) + self.assertAlmostEqual(estimator.function_from_fit.mu1_temporal_trend, self.smooth_margin_model.margin_function_sample.mu1_temporal_trend, places=2) # Checks starting point parameter are well passed - self.assertEqual(2, estimator.margin_function_from_fit.starting_point) + self.assertEqual(2, estimator.function_from_fit.starting_point) # Checks that parameters returned are indeed different coordinate1 = np.array([0.0, 0.0, 1]) - mle_params_estimated_year1 = estimator.margin_function_from_fit.get_gev_params(coordinate1).to_dict() + mle_params_estimated_year1 = estimator.function_from_fit.get_gev_params(coordinate1).to_dict() coordinate2 = np.array([0.0, 0.0, 2]) - mle_params_estimated_year2 = estimator.margin_function_from_fit.get_gev_params(coordinate2).to_dict() + mle_params_estimated_year2 = estimator.function_from_fit.get_gev_params(coordinate2).to_dict() self.assertEqual(mle_params_estimated_year1, mle_params_estimated_year2) coordinate5 = np.array([0.0, 0.0, 5]) - mle_params_estimated_year5 = estimator.margin_function_from_fit.get_gev_params(coordinate5).to_dict() + mle_params_estimated_year5 = estimator.function_from_fit.get_gev_params(coordinate5).to_dict() self.assertNotEqual(mle_params_estimated_year5, mle_params_estimated_year2) def fit_non_stationary_estimator(self, starting_point): @@ -86,8 +86,8 @@ class TestMaxStableTemporal(unittest.TestCase): # Create two different estimators estimator1 = self.fit_non_stationary_estimator(starting_point=3) estimator2 = self.fit_non_stationary_estimator(starting_point=20) - mu1_estimator1 = estimator1.margin_function_from_fit.mu1_temporal_trend - mu1_estimator2 = estimator2.margin_function_from_fit.mu1_temporal_trend + mu1_estimator1 = estimator1.function_from_fit.mu1_temporal_trend + mu1_estimator2 = estimator2.function_from_fit.mu1_temporal_trend self.assertNotEqual(mu1_estimator1, mu1_estimator2) -- GitLab