Commit 377fcbf7 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[HYPERCUBE] implement vsualize_year_trend_by_regions_and_altitudes. run main...

[HYPERCUBE] implement vsualize_year_trend_by_regions_and_altitudes. run main hypercube for all settings
parent 51052c8f
No related merge requests found
Showing with 67 additions and 18 deletions
+67 -18
......@@ -97,6 +97,7 @@ class AbstractHypercubeVisualizer(object):
plt.savefig(filepath)
else:
plt.show()
plt.close()
@property
def study_visualizer(self) -> StudyVisualizer:
......
......@@ -147,6 +147,15 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
axes = [axes]
return axes
def load_trend_test_evolution_axes_with_columns(self, nb_rows, nb_columns):
fig, axes = plt.subplots(nb_rows, nb_columns, figsize=self.study_visualizer.figsize)
if not isinstance(axes, np.ndarray):
axes = [axes]
else:
axes = axes.reshape((nb_rows * nb_columns))
return axes
def visualize_trend_test_repartition(self, reduction_function, axes=None, subtitle='', isin_parameters=None,
show_or_save_to_file=True, plot_title=None):
if axes is None:
......@@ -205,12 +214,21 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
# Take the mean with respect to all the first axis indices
return df.mean(axis=0)
def visualize_year_trend_test(self, axes=None, marker='o', add_detailed_plots=False):
def visualize_year_trend_test(self, axes=None, marker='o', add_detailed_plots=False, plot_title=None,
isin_parameters=None,
show_or_save_to_file=True):
for subtitle, reduction_function in self.subtitle_to_reduction_function(self.year_reduction,
add_detailed_plot=add_detailed_plots).items():
self.visualize_trend_test_evolution(reduction_function=reduction_function, xlabel=STARTING_YEARS_XLABEL,
xlabel_values=self.starting_years, axes=axes, marker=marker,
subtitle=subtitle)
last_result = self.visualize_trend_test_evolution(reduction_function=reduction_function,
xlabel=STARTING_YEARS_XLABEL,
xlabel_values=self.starting_years, axes=axes,
marker=marker,
subtitle=subtitle,
isin_parameters=isin_parameters,
show_or_save_to_file=show_or_save_to_file,
plot_title=plot_title
)
return last_result
@staticmethod
def index_reduction(df, level):
......
......@@ -23,10 +23,18 @@ class AltitudeHypercubeVisualizerExtended(AltitudeHypercubeVisualizer):
df_bool = res.transpose() if transpose else res
return df_bool
def _visualize_meta(self, visualization_function, loading_function, name_to_isin_parameters=None):
def _visualize_meta(self, visualization_function, loading_function, name_to_isin_parameters=None,
multiplication_factor_column=None):
assert name_to_isin_parameters is not None, 'this method should not be called directly'
multiplication_factor = len(name_to_isin_parameters)
all_axes = loading_function(self.nb_rows * multiplication_factor)
if multiplication_factor_column is None:
multiplication_factor_row = len(name_to_isin_parameters)
all_axes = loading_function(self.nb_rows * multiplication_factor_row)
multiplication_factor = multiplication_factor_row
else:
multiplication_factor_row = len(name_to_isin_parameters) // multiplication_factor_column
multiplication_factor = multiplication_factor_row * multiplication_factor_column
all_axes = loading_function(self.nb_rows * multiplication_factor_row, multiplication_factor_column)
specific_title = ''
for j, (name, isin_parameters) in enumerate(name_to_isin_parameters.items()):
axes = all_axes[j::multiplication_factor]
......@@ -77,6 +85,24 @@ class AltitudeHypercubeVisualizerExtended(AltitudeHypercubeVisualizer):
return {altitude_band_name: [(False, values, self.altitude_index_level)]
for altitude_band_name, values in self.altitude_band_name_to_values.items()}
# Year trends
@property
def massif_name_and_altitude_band_name_to_isin_parameters(self):
d = {}
for massif_name, isin_parameters1 in self.region_name_to_isin_parameters.items():
for altitude_band_name, isin_parameters2 in self.altitude_band_name_to_isin_parameters.items():
name = massif_name + ' ' + altitude_band_name
isin_parameters = isin_parameters1 + isin_parameters2
d[name] = isin_parameters
return d
def vsualize_year_trend_by_regions_and_altitudes(self):
return self._visualize_meta(visualization_function=self.visualize_year_trend_test,
loading_function=self.load_trend_test_evolution_axes_with_columns,
name_to_isin_parameters=self.massif_name_and_altitude_band_name_to_isin_parameters,
multiplication_factor_column=len(self.altitude_band_name_to_isin_parameters))
......
......@@ -99,13 +99,13 @@ def fast_altitude_year_hypercube():
def fast_altitude_year_hypercube_extended():
save_to_file = False
save_to_file = True
only_first_one = False
nb_data_reduced_for_speed = True
altitudes = [ALL_ALTITUDES[3], ALL_ALTITUDES[-7]]
for study_class in SCM_STUDIES[:1]:
for last_starting_year in [None, 1989, 1999][:1]:
for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:1]:
for study_class in SCM_STUDIES[:2]:
for last_starting_year in [None, 1989, 1999][:2]:
for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:2]:
visualizers = [
StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
......@@ -116,10 +116,11 @@ def fast_altitude_year_hypercube_extended():
nb_data_reduced_for_speed=nb_data_reduced_for_speed,
last_starting_year=last_starting_year)
# visualizer.visualize_year_trend_test()
visualizer.vsualize_year_trend_by_regions_and_altitudes()
# visualizer.visualize_altitude_trend_test()
visualizer.visualize_massif_trend_test_by_altitudes()
# visualizer.visualize_massif_trend_test_by_altitudes()
# visualizer.visualize_altitute_trend_test_by_regions()
visualizer.visualize_massif_trend_test_by_altitudes()
visualizer.visualize_altitute_trend_test_by_regions()
# visualizer.visualize_massif_trend_test()
......@@ -153,12 +154,12 @@ def full_altitude_year_hypercube_extended():
only_first_one = False
nb_data_reduced_for_speed = False
altitudes = ALL_ALTITUDES[3:-6]
for study_class in SCM_STUDIES[:1]:
for study_class in SCM_STUDIES[:]:
for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest,
GevShapeChangePointTest][:1]:
years = [1967, 1977, 1987, 1997, 2007, None][-2:][::-1]
years = [1967, 1977, 1987, 1997, 2007, None][-4:][::-1]
for last_starting_year in years:
for days in [1, 3]:
for days in [1, 3][1:]:
visualizers = [
StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
......@@ -171,6 +172,8 @@ def full_altitude_year_hypercube_extended():
last_starting_year=last_starting_year,
)
visualizer.visualize_altitute_trend_test_by_regions()
visualizer.visualize_massif_trend_test_by_altitudes()
visualizer.vsualize_year_trend_by_regions_and_altitudes()
# visualizer.visualize_year_trend_test()
# visualizer.visualize_massif_trend_test()
# visualizer.visualize_altitude_trend_test()
......@@ -200,8 +203,9 @@ def main_run():
# fast_altitude_hypercube()
# fast_altitude_year_hypercube()
fast_altitude_year_hypercube_extended()
# full_altitude_year_hypercube_extended()
# fast_altitude_year_hypercube_extended()
full_altitude_year_hypercube_extended()
# full_altitude_year_hypercube()
# fast_quantity_altitude_hypercube()
# full_quantity_altitude_hypercube()
......
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