Commit cd3ddb91 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[SCM] add covariance function display when using max stable models

parent f8fdcd0c
No related merge requests found
Showing with 18 additions and 10 deletions
+18 -10
...@@ -19,7 +19,7 @@ def study_iterator(study_class, only_first_one=False, both_altitude=False, verbo ...@@ -19,7 +19,7 @@ def study_iterator(study_class, only_first_one=False, both_altitude=False, verbo
if verbose: if verbose:
print('Loading studies....') print('Loading studies....')
for nb_day in nb_days: for nb_day in nb_days:
for alti in AbstractStudy.ALTITUDES[::-1]: for alti in AbstractStudy.ALTITUDES[::1]:
if verbose: if verbose:
print('alti: {}, nb_day: {}'.format(alti, nb_day)) print('alti: {}, nb_day: {}'.format(alti, nb_day))
study = study_class(alti, nb_day) if is_safran_study else study_class(alti) study = study_class(alti, nb_day) if is_safran_study else study_class(alti)
...@@ -41,11 +41,12 @@ def extended_visualization(): ...@@ -41,11 +41,12 @@ def extended_visualization():
def normal_visualization(): def normal_visualization():
only_first_one = True
for study_class in SCM_STUDIES[1:2]: for study_class in SCM_STUDIES[1:2]:
for study in study_iterator(study_class, only_first_one=True): for study in study_iterator(study_class, only_first_one=only_first_one):
study_visualizer = StudyVisualizer(study) study_visualizer = StudyVisualizer(study)
# study_visualizer.visualize_independent_margin_fits(threshold=[None, 20, 40, 60][0]) # study_visualizer.visualize_independent_margin_fits(threshold=[None, 20, 40, 60][0])
study_visualizer.visualize_linear_margin_fit() study_visualizer.visualize_linear_margin_fit(only_first_max_stable=only_first_one)
def complete_analysis(only_first_one=False): def complete_analysis(only_first_one=False):
...@@ -63,6 +64,6 @@ def complete_analysis(only_first_one=False): ...@@ -63,6 +64,6 @@ def complete_analysis(only_first_one=False):
if __name__ == '__main__': if __name__ == '__main__':
normal_visualization() # normal_visualization()
# extended_visualization() # extended_visualization()
# complete_analysis() complete_analysis()
...@@ -11,6 +11,8 @@ from extreme_estimator.estimator.full_estimator.abstract_full_estimator import \ ...@@ -11,6 +11,8 @@ from extreme_estimator.estimator.full_estimator.abstract_full_estimator import \
FullEstimatorInASingleStepWithSmoothMargin FullEstimatorInASingleStepWithSmoothMargin
from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import SmoothMarginEstimator from extreme_estimator.estimator.margin_estimator.abstract_margin_estimator import SmoothMarginEstimator
from extreme_estimator.extreme_models.margin_model.smooth_margin_model import LinearAllParametersAllDimsMarginModel from extreme_estimator.extreme_models.margin_model.smooth_margin_model import LinearAllParametersAllDimsMarginModel
from extreme_estimator.extreme_models.max_stable_model.abstract_max_stable_model import CovarianceFunction, \
AbstractMaxStableModelWithCovarianceFunction
from extreme_estimator.extreme_models.max_stable_model.max_stable_models import Smith from extreme_estimator.extreme_models.max_stable_model.max_stable_models import Smith
from extreme_estimator.margin_fits.gev.gev_params import GevParams from extreme_estimator.margin_fits.gev.gev_params import GevParams
from extreme_estimator.margin_fits.gev.gevmle_fit import GevMleFit from extreme_estimator.margin_fits.gev.gevmle_fit import GevMleFit
...@@ -96,9 +98,12 @@ class StudyVisualizer(object): ...@@ -96,9 +98,12 @@ class StudyVisualizer(object):
assert len(x) == len(y) assert len(x) == len(y)
return x, y return x, y
def visualize_linear_margin_fit(self): def visualize_linear_margin_fit(self, only_first_max_stable=False):
plot_name = 'Full Likelihood with Linear marginals and max stable dependency structure' plot_name = 'Full Likelihood with Linear marginals and max stable dependency structure'
max_stable_models = load_test_max_stable_models(only_one_covariance_function=True)[:1] default_covariance_function = CovarianceFunction.cauchy
max_stable_models = load_test_max_stable_models(default_covariance_function=default_covariance_function)
if only_first_max_stable:
max_stable_models = max_stable_models[:1]
fig, axes = plt.subplots(len(max_stable_models) + 1, len(GevParams.SUMMARY_NAMES), figsize=self.figsize) fig, axes = plt.subplots(len(max_stable_models) + 1, len(GevParams.SUMMARY_NAMES), figsize=self.figsize)
fig.subplots_adjust(hspace=1.0, wspace=1.0) fig.subplots_adjust(hspace=1.0, wspace=1.0)
margin_class = LinearAllParametersAllDimsMarginModel margin_class = LinearAllParametersAllDimsMarginModel
...@@ -111,6 +116,8 @@ class StudyVisualizer(object): ...@@ -111,6 +116,8 @@ class StudyVisualizer(object):
margin_model = margin_class(coordinates=self.coordinates) margin_model = margin_class(coordinates=self.coordinates)
estimator = FullEstimatorInASingleStepWithSmoothMargin(self.dataset, margin_model, max_stable_model) estimator = FullEstimatorInASingleStepWithSmoothMargin(self.dataset, margin_model, max_stable_model)
title = get_display_name_from_object_type(type(max_stable_model)) title = get_display_name_from_object_type(type(max_stable_model))
if isinstance(max_stable_model, AbstractMaxStableModelWithCovarianceFunction):
title += ' ' + str(default_covariance_function).split('.')[-1]
self.fit_and_visualize_estimator(estimator, axes[i], title=title) self.fit_and_visualize_estimator(estimator, axes[i], title=title)
self.show_or_save_to_file(plot_name) self.show_or_save_to_file(plot_name)
......
...@@ -46,13 +46,13 @@ def load_smooth_margin_models(coordinates): ...@@ -46,13 +46,13 @@ def load_smooth_margin_models(coordinates):
return [margin_class(coordinates=coordinates) for margin_class in TEST_MARGIN_TYPES] return [margin_class(coordinates=coordinates) for margin_class in TEST_MARGIN_TYPES]
def load_test_max_stable_models(only_one_covariance_function=False): def load_test_max_stable_models(default_covariance_function=None):
default_covariance_function = CovarianceFunction.cauchy
# Load all max stable model # Load all max stable model
max_stable_models = [] max_stable_models = []
for max_stable_class in TEST_MAX_STABLE_MODEL: for max_stable_class in TEST_MAX_STABLE_MODEL:
if issubclass(max_stable_class, AbstractMaxStableModelWithCovarianceFunction): if issubclass(max_stable_class, AbstractMaxStableModelWithCovarianceFunction):
if only_one_covariance_function: if default_covariance_function is not None:
assert default_covariance_function in CovarianceFunction
max_stable_models.append(max_stable_class(covariance_function=default_covariance_function)) max_stable_models.append(max_stable_class(covariance_function=default_covariance_function))
else: else:
max_stable_models.extend([max_stable_class(covariance_function=covariance_function) max_stable_models.extend([max_stable_class(covariance_function=covariance_function)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment