Commit 7cece50a authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[contrasting] second submission

parent 7174f204
No related merge requests found
Showing with 21 additions and 35 deletions
+21 -35
......@@ -67,7 +67,6 @@ class ReturnLevelBootstrap(object):
idxs = list(range(self.nb_bootstrap))
if multiprocess is None:
print('multiprocessing batch')
with Pool(NB_CORES) as p:
batchsize = math.ceil(AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP / NB_CORES)
......
......@@ -66,8 +66,8 @@ class LinearMarginEstimator(AbstractMarginEstimator):
maxima_values = self.dataset.maxima_gev(split=split)
coordinate_values = self.dataset.df_coordinates(split=split).values
for maximum, coordinate in zip(maxima_values, coordinate_values):
assert len(
maximum) == 1, 'So far, only one observation for each coordinate, but code would be easy to change'
assert len(maximum) == 1, \
'So far, only one observation for each coordinate, but code would be easy to change'
maximum = maximum[0]
gev_params = self.function_from_fit.get_params(coordinate, is_transformed=True)
p = gev_params.density(maximum)
......
......@@ -53,5 +53,6 @@ def _fitted_stationary_gev(fit_method, model_class, starting_year, x_gev):
gev_param.param_name_to_confidence_interval = param_name_to_confidence_interval
# Warning
if not -0.5 < gev_param.shape < 0.5:
warnings.warn('fitted shape parameter is outside physical bounds {}'.format(gev_param.shape))
pass
# warnings.warn('fitted shape parameter is outside physical bounds {}'.format(gev_param.shape))
return estimator, gev_param
......@@ -52,7 +52,7 @@ def main():
elif fast:
AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP = 10
massif_names = ['Vanoise', 'Haute-Maurienne', 'Vercors'][:1]
altitudes_list = altitudes_for_groups[1:2]
altitudes_list = altitudes_for_groups[2:3]
else:
massif_names = None
altitudes_list = altitudes_for_groups[:]
......@@ -81,13 +81,13 @@ def main_loop(altitudes_list, massif_names, seasons, study_classes, model_must_p
def plot_visualizers(massif_names, visualizer_list):
# plot_histogram_all_models_against_altitudes(massif_names, visualizer_list)
plot_histogram_all_trends_against_altitudes(massif_names, visualizer_list)
plot_histogram_all_models_against_altitudes(massif_names, visualizer_list)
plot_histogram_all_trends_against_altitudes(massif_names, visualizer_list, with_significance=True)
# plot_shoe_plot_ratio_interval_size_against_altitude(massif_names, visualizer_list)
for relative in [True, False]:
plot_shoe_plot_changes_against_altitude(massif_names, visualizer_list, relative=relative)
plot_coherence_curves(massif_names, visualizer_list)
# plot_coherence_curves(['Vanoise'], visualizer_list)
# plot_coherence_curves(massif_names, visualizer_list)
plot_coherence_curves(['Vanoise'], visualizer_list)
pass
......
......@@ -220,8 +220,8 @@ class AltitudesStudiesVisualizerForNonStationaryModels(StudyVisualizer):
@property
def add_colorbar(self):
return True
# return isinstance(self.altitude_group, (VeyHighAltitudeGroup, MidAltitudeGroup))
# return True
return isinstance(self.altitude_group, (VeyHighAltitudeGroup, MidAltitudeGroup))
def plot_against_years(self, method_name, order):
ax = plt.gca()
......
......@@ -142,6 +142,11 @@ class OneFoldFit(object):
@cached_property
def sorted_estimators(self):
estimators = list(self.model_class_to_estimator.values())
# print(self.massif_name)
# print(self.altitude_group)
# for estimator in estimators:
# print(estimator.margin_model)
# print(estimator.aic())
sorted_estimators = sorted([estimator for estimator in estimators], key=lambda e: e.aic())
return sorted_estimators
......@@ -154,27 +159,13 @@ class OneFoldFit(object):
# and self.sensitivity_of_fit_test_last_years(e)
]
else:
return self._sorted_estimators_without_stationary
assert len(self.sorted_estimators) == len(self.models_classes)
return self.sorted_estimators
@property
def has_at_least_one_valid_model(self):
return len(self.sorted_estimators_with_stationary) > 0
@cached_property
def _sorted_estimators_without_stationary(self):
return [e for e in self.sorted_estimators if not isinstance(e.margin_model, StationaryAltitudinal)]
@cached_property
def sorted_estimators_without_stationary(self):
if self.only_models_that_pass_goodness_of_fit_test:
return [e for e in self._sorted_estimators_without_stationary if self.goodness_of_fit_test(e)]
else:
return self._sorted_estimators_without_stationary
@property
def has_at_least_one_valid_non_stationary_model(self):
return len(self.sorted_estimators_without_stationary) > 0
@property
def model_class_to_estimator_with_finite_aic(self):
return {type(estimator.margin_model): estimator for estimator in self.sorted_estimators}
......@@ -184,10 +175,6 @@ class OneFoldFit(object):
if self.best_estimator_minimizes_total_aic and self.best_estimator_class_for_total_aic is not None:
return self.model_class_to_estimator[self.best_estimator_class_for_total_aic]
else:
# Without stationary
# if self.has_at_least_one_valid_non_stationary_model:
# best_estimator = self.sorted_estimators_without_stationary[0]
# return best_estimator
# With stationary
if self.has_at_least_one_valid_model:
best_estimator = self.sorted_estimators_with_stationary[0]
......@@ -428,7 +415,6 @@ class OneFoldFit(object):
idxs = list(range(AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP))
if multiprocess is None:
print('multiprocessing batch')
start = time.time()
with Pool(NB_CORES) as p:
batchsize = math.ceil(AbstractExtractEurocodeReturnLevel.NB_BOOTSTRAP / NB_CORES)
......
......@@ -14,9 +14,9 @@ from projects.exceeding_snow_loads.utils import dpi_paper1_figure
def plots(visualizer: AltitudesStudiesVisualizerForNonStationaryModels):
# visualizer.plot_shape_map()
visualizer.plot_shape_map()
visualizer.plot_moments()
# visualizer.plot_qqplots()
visualizer.plot_qqplots()
# for std in [True, False]:
# visualizer.studies.plot_mean_maxima_against_altitude(std=std)
......
......@@ -115,7 +115,7 @@ def plot_histogram_all_trends_against_altitudes(massif_names, visualizer_list: L
ax.tick_params(axis='both', which='major', labelsize=labelsize)
ax.set_xticks(x)
ax.yaxis.grid()
ax.set_ylim([0, 89])
ax.set_ylim([0, 79])
ax.set_ylim(bottom=0)
ax.set_xticklabels([v.altitude_group.formula_upper for v in visualizer_list])
......
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