Commit 84ec6e70 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[HYPERCUBE] add first and last year argument. add exact year argument. fix...

[HYPERCUBE] add first and last year argument. add exact year argument. fix ploting issues in altitude_hypercube visualizer. add quantity extended visualization.
parent aaffc3b4
No related merge requests found
Showing with 71 additions and 40 deletions
+71 -40
......@@ -21,21 +21,32 @@ class AbstractHypercubeVisualizer(object):
trend_test_class,
nb_data_reduced_for_speed=False,
save_to_file=False,
first_starting_year=None,
last_starting_year=None,
exact_starting_year=None,
verbose=True):
self.verbose = verbose
self.last_starting_year = last_starting_year
self.save_to_file = save_to_file
self.trend_test_class = trend_test_class
self.tuple_to_study_visualizer = tuple_to_study_visualizer # type: Dict[Tuple, StudyVisualizer]
if exact_starting_year is not None:
assert first_starting_year is None
assert last_starting_year is None
self.first_starting_year, self.first_starting_year = exact_starting_year, exact_starting_year
else:
default_first_starting_year, *_, default_last_starting_year = self.all_potential_starting_years
self.first_starting_year = first_starting_year if first_starting_year is not None else default_first_starting_year
self.last_starting_year = last_starting_year if last_starting_year is not None else default_last_starting_year
if isinstance(nb_data_reduced_for_speed, bool):
self.nb_data_for_fast_mode = 7 if nb_data_reduced_for_speed else None
else:
assert isinstance(nb_data_reduced_for_speed, int)
self.nb_data_for_fast_mode = nb_data_reduced_for_speed
self.save_to_file = save_to_file
self.trend_test_class = trend_test_class
self.tuple_to_study_visualizer = tuple_to_study_visualizer # type: Dict[Tuple, StudyVisualizer]
if self.verbose:
print('Hypercube with parameters:')
print('Starting year:', self.last_starting_year)
print('Starting years:', self.starting_years)
print('Trend test class:', get_display_name_from_object_type(self.trend_test_class))
# Main attributes defining the hypercube
......@@ -44,11 +55,13 @@ class AbstractHypercubeVisualizer(object):
def trend_test_name(self):
return get_display_name_from_object_type(self.trend_test_class)
@property
def all_potential_starting_years(self):
return self.study_visualizer.starting_years
@cached_property
def starting_years(self):
starting_years = self.study_visualizer.starting_years
if self.last_starting_year is not None:
starting_years = [year for year in starting_years if year <= self.last_starting_year]
starting_years = [year for year in self.all_potential_starting_years if self.first_starting_year <= year <= self.last_starting_year]
if self.nb_data_for_fast_mode is not None:
starting_years = starting_years[:self.nb_data_for_fast_mode]
return starting_years
......
......@@ -132,14 +132,17 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
ylabel_to_series = self.ylabel_to_series(reduction_function, isin_parameters)
assert len(axes_remaining) == len(ylabel_to_series), '{}, {}'.format(len(axes_remaining), len(ylabel_to_series))
for ax_idx, (ax, (ylabel, serie)) in enumerate(zip(axes_remaining, ylabel_to_series.items())):
assert isinstance(serie, pd.Series)
xlabel_values = list(serie.index)
values = list(serie.values)
argmax_idx = np.argmax(values)
best_year = xlabel_values[argmax_idx]
plot_title += '{}'.format(best_year)
if plot_title is not None:
argmax_idx = np.argmax(values)
best_year = xlabel_values[argmax_idx]
plot_title += '{}'.format(best_year)
ax.set_title(plot_title)
ax.plot(xlabel_values, values)
ax.set_ylabel(ylabel)
ax.set_title(plot_title)
specific_title = 'Evolution of {} trends (significative or not) wrt to the {} with {}'.format(subtitle, xlabel,
self.trend_test_name)
......
......@@ -5,6 +5,8 @@ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visual
AltitudeHypercubeVisualizer
from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerBis, AltitudeHypercubeVisualizerWithoutTrendType
from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.quantity_altitude_visualizer import \
QuantityAltitudeHypercubeVisualizer
class AltitudeHypercubeVisualizerExtended(AltitudeHypercubeVisualizer):
......@@ -127,3 +129,12 @@ class AltitudeHypercubeVisualizerWithoutTrendExtended(AltitudeHypercubeVisualize
class AltitudeYearHypercubeVisualizerExtended(AltitudeHypercubeVisualizerExtended, Altitude_Hypercube_Year_Visualizer):
pass
# Quantity hypercube
class QuantityHypercubeWithoutTrend(AltitudeHypercubeVisualizerWithoutTrendType, QuantityAltitudeHypercubeVisualizer):
pass
class QuantityHypercubeWithoutTrendExtended(AltitudeHypercubeVisualizerExtended, QuantityHypercubeWithoutTrend):
pass
......@@ -6,7 +6,8 @@ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visual
AltitudeHypercubeVisualizer
from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_hypercube_visualizer_extended import \
AltitudeYearHypercubeVisualizerExtended, AltitudeHypercubeVisualizerExtended, \
AltitudeHypercubeVisualizerBisExtended, AltitudeHypercubeVisualizerWithoutTrendExtended
AltitudeHypercubeVisualizerBisExtended, AltitudeHypercubeVisualizerWithoutTrendExtended, \
QuantityHypercubeWithoutTrend, QuantityHypercubeWithoutTrendExtended
from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.quantity_altitude_visualizer import \
......@@ -45,18 +46,20 @@ def full_quantity_altitude_hypercube():
add_detailed_plots = True
altitudes = ALL_ALTITUDES[3:-6]
study_classes = SCM_STUDIES
for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:]:
for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:1]:
visualizers = [StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
for study in study_iterator_global(study_classes=study_classes, only_first_one=only_first_one,
altitudes=altitudes)]
study_classes_str = [get_display_name_from_object_type(c) for c in study_classes]
quantity_altitude_tuples = list(product(study_classes_str, altitudes))
quantity_altitude_to_visualizer = OrderedDict(zip(quantity_altitude_tuples, visualizers))
visualizer = QuantityAltitudeHypercubeVisualizer(quantity_altitude_to_visualizer, save_to_file=save_to_file,
trend_test_class=trend_test_class, fast=fast)
visualizer.visualize_year_trend_test(add_detailed_plots=add_detailed_plots)
visualizer.visualize_massif_trend_test(add_detailed_plots=add_detailed_plots)
visualizer.visualize_altitude_trend_test(add_detailed_plots=add_detailed_plots)
visualizer = QuantityHypercubeWithoutTrendExtended(quantity_altitude_to_visualizer,
save_to_file=save_to_file,
trend_test_class=trend_test_class,
nb_data_reduced_for_speed=False,
last_starting_year=2007,
)
visualizer.vsualize_year_trend_by_regions_and_altitudes()
def fast_altitude_hypercube():
......@@ -112,19 +115,18 @@ def fast_altitude_without_trend_type_hypercube_extended():
for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
altitudes=altitudes)]
altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
visualizer = AltitudeHypercubeVisualizerWithoutTrendExtended(altitude_to_visualizer,
visualizer = QuantityHypercubeWithoutTrendExtended(altitude_to_visualizer,
save_to_file=save_to_file,
trend_test_class=trend_test_class,
nb_data_reduced_for_speed=nb_data_reduced_for_speed,
last_starting_year=last_starting_year)
visualizer.vsualize_year_trend_by_regions_and_altitudes()
# visualizer = AltitudeHypercubeVisualizerWithoutTrendType(altitude_to_visualizer,
# save_to_file=save_to_file,
# trend_test_class=trend_test_class,
# nb_data_reduced_for_speed=nb_data_reduced_for_speed,
# last_starting_year=last_starting_year)
# visualizer = QuantityHypercubeWithoutTrend(altitude_to_visualizer,
# save_to_file=save_to_file,
# trend_test_class=trend_test_class,
# nb_data_reduced_for_speed=nb_data_reduced_for_speed,
# last_starting_year=last_starting_year)
# visualizer.visualize_year_trend_test()
......@@ -134,7 +136,7 @@ def fast_altitude_year_hypercube_extended():
nb_data_reduced_for_speed = True
altitudes = [ALL_ALTITUDES[3], ALL_ALTITUDES[-7]]
for study_class in SCM_STUDIES[:2]:
for last_starting_year in [None, 1989, 1999][:2]:
for exact_starting_year in [1982]:
for trend_test_class in [GevLocationChangePointTest, GevScaleChangePointTest, GevShapeChangePointTest][:2]:
visualizers = [
StudyVisualizer(study, temporal_non_stationarity=True, verbose=False, multiprocessing=True)
......@@ -144,7 +146,7 @@ def fast_altitude_year_hypercube_extended():
visualizer = AltitudeHypercubeVisualizerExtended(altitude_to_visualizer, save_to_file=save_to_file,
trend_test_class=trend_test_class,
nb_data_reduced_for_speed=nb_data_reduced_for_speed,
last_starting_year=last_starting_year)
last_starting_year=exact_starting_year)
# visualizer.visualize_year_trend_test()
# visualizer.visualize_altitude_trend_test()
# visualizer.visualize_massif_trend_test_by_altitudes()
......@@ -225,13 +227,13 @@ def full_altitude_year_hypercube__without_trend_extended():
for study in study_iterator(study_class=study_class, only_first_one=only_first_one,
altitudes=altitudes, nb_consecutive_days=days)]
altitude_to_visualizer = OrderedDict(zip(altitudes, visualizers))
visualizer = AltitudeHypercubeVisualizerWithoutTrendExtended(altitude_to_visualizer,
save_to_file=save_to_file,
trend_test_class=trend_test_class,
nb_data_reduced_for_speed=nb_data_reduced_for_speed,
last_starting_year=last_starting_year,
)
visualizer.vsualize_year_trend_by_regions_and_altitudes()
# visualizer = QuantityHypercubeWithoutTrendExtended(altitude_to_visualizer,
# save_to_file=save_to_file,
# trend_test_class=trend_test_class,
# nb_data_reduced_for_speed=nb_data_reduced_for_speed,
# last_starting_year=last_starting_year,
# )
# visualizer.vsualize_year_trend_by_regions_and_altitudes()
def fast_quantity_altitude_hypercube():
......@@ -247,19 +249,21 @@ def fast_quantity_altitude_hypercube():
study_classes_str = [get_display_name_from_object_type(c) for c in study_classes]
quantity_altitude_tuples = list(product(study_classes_str, altitudes))
quantity_altitude_to_visualizer = OrderedDict(zip(quantity_altitude_tuples, visualizers))
visualizer = QuantityAltitudeHypercubeVisualizer(quantity_altitude_to_visualizer, save_to_file=save_to_file,
trend_test_class=trend_test_class, fast=fast)
visualizer = QuantityHypercubeWithoutTrend(quantity_altitude_to_visualizer, save_to_file=save_to_file,
trend_test_class=trend_test_class, nb_data_reduced_for_speed=True)
visualizer.visualize_year_trend_test()
visualizer.visualize_massif_trend_test()
visualizer.visualize_altitude_trend_test()
# visualizer.visualize_massif_trend_test()
# visualizer.visualize_altitude_trend_test()
def main_run():
# fast_altitude_hypercube()
# fast_altitude_year_hypercube()
# fast_quantity_altitude_hypercube()
# fast_altitude_without_trend_type_hypercube_extended()
full_altitude_year_hypercube__without_trend_extended()
# full_altitude_year_hypercube__without_trend_extended()
full_quantity_altitude_hypercube()
# fast_altitude_year_hypercube_extended()
# full_altitude_year_hypercube_extended()
......
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