Commit 8b581b73 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[PAPER1][STARTING YEAR] write main for location & scale with common starting...

[PAPER1][STARTING YEAR] write main for location & scale with common starting year spatially & altitude
parent 3208f8fc
No related merge requests found
Showing with 76 additions and 6 deletions
+76 -6
...@@ -25,7 +25,10 @@ class AbstractHypercubeVisualizer(object): ...@@ -25,7 +25,10 @@ class AbstractHypercubeVisualizer(object):
first_starting_year=None, first_starting_year=None,
last_starting_year=None, last_starting_year=None,
exact_starting_year=None, exact_starting_year=None,
verbose=True): verbose=True,
sigma_for_best_year=0.0):
assert sigma_for_best_year >= 0.0
self.sigma_for_best_year = sigma_for_best_year
self.reduce_strength_array = reduce_strength_array self.reduce_strength_array = reduce_strength_array
self.verbose = verbose self.verbose = verbose
self.save_to_file = save_to_file self.save_to_file = save_to_file
......
...@@ -2,6 +2,7 @@ import numpy as np ...@@ -2,6 +2,7 @@ import numpy as np
import pandas as pd import pandas as pd
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from matplotlib.ticker import FormatStrFormatter, ScalarFormatter from matplotlib.ticker import FormatStrFormatter, ScalarFormatter
from scipy.ndimage import gaussian_filter
from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.abstract_hypercube_visualizer import \ from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.abstract_hypercube_visualizer import \
AbstractHypercubeVisualizer AbstractHypercubeVisualizer
...@@ -157,7 +158,8 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer): ...@@ -157,7 +158,8 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
assert isinstance(serie, pd.Series) assert isinstance(serie, pd.Series)
xlabel_values = list(serie.index) xlabel_values = list(serie.index)
values = list(serie.values) values = list(serie.values)
argmax_idx = np.argmax(values) smooth_values = gaussian_filter(values, self.sigma_for_best_year)
argmax_idx = np.argmax(smooth_values)
best_year = xlabel_values[argmax_idx] best_year = xlabel_values[argmax_idx]
if plot_title is not None: if plot_title is not None:
plot_title += ' (max reached in {})'.format(best_year) plot_title += ' (max reached in {})'.format(best_year)
...@@ -168,6 +170,9 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer): ...@@ -168,6 +170,9 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
ax.plot([], [], label=ylabel, color=color) ax.plot([], [], label=ylabel, color=color)
linewidth = 10 if poster_plot else None linewidth = 10 if poster_plot else None
ax_reversed.plot(xlabel_values, values, label=ylabel, color=color, linewidth=linewidth) ax_reversed.plot(xlabel_values, values, label=ylabel, color=color, linewidth=linewidth)
if self.sigma_for_best_year > 0:
ax_reversed.plot(xlabel_values, smooth_values, label=ylabel + ' smooth', color=color, linestyle=':',
linewidth=linewidth)
fontsize = 30 if poster_plot else None fontsize = 30 if poster_plot else None
ax_reversed.set_ylabel(ylabel, color=color, fontsize=fontsize, labelpad=-20) ax_reversed.set_ylabel(ylabel, color=color, fontsize=fontsize, labelpad=-20)
ax_reversed.axvline(x=best_year, color=color, linestyle='--', linewidth=linewidth) ax_reversed.axvline(x=best_year, color=color, linestyle='--', linewidth=linewidth)
...@@ -344,6 +349,8 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer): ...@@ -344,6 +349,8 @@ class AltitudeHypercubeVisualizer(AbstractHypercubeVisualizer):
if self.reduce_strength_array: if self.reduce_strength_array:
title += '\nEvolution of the quantile {} every {} years'.format(AbstractGevTrendTest.quantile_for_strength, title += '\nEvolution of the quantile {} every {} years'.format(AbstractGevTrendTest.quantile_for_strength,
AbstractGevTrendTest.nb_years_for_quantile_evolution) AbstractGevTrendTest.nb_years_for_quantile_evolution)
else:
title += '\nStarting years'
if set: if set:
plt.suptitle(title) plt.suptitle(title)
return title return title
......
import time
from experiment.meteo_france_data.scm_models_data.visualization.hypercube_visualization.altitude_year_hypercube_visualizer import \
Altitude_Hypercube_Year_Visualizer, AltitudeHypercubeVisualizerWithoutTrendType
from experiment.trend_analysis.univariate_test.gev_trend_test_one_parameter import GevScaleTrendTest, \
GevLocationTrendTest
from experiment.trend_analysis.univariate_test.gev_trend_test_two_parameters import GevLocationAndScaleTrendTest
"""
Visualize the 0.99 quantile initial value and its evolution
"""
from experiment.paper1_steps.utils import get_full_altitude_visualizer, FULL_ALTITUDES
def main_fast_spatial_risk_evolution():
vizualiser = get_full_altitude_visualizer(AltitudeHypercubeVisualizerWithoutTrendType, altitude=None,
reduce_strength_array=True,
trend_test_class=GevLocationAndScaleTrendTest,
offset_starting_year=28)
vizualiser.save_to_file = False
vizualiser.sigma_for_best_year = 1.0
res = vizualiser.visualize_year_trend_test(subtitle_specified='CrocusSwe3Days')
print(res)
def main_full_spatial_risk_evolution():
for trend_test_class in [GevLocationAndScaleTrendTest]:
# Compare the risk with and without taking into account the starting year
vizualiser = get_full_altitude_visualizer(AltitudeHypercubeVisualizerWithoutTrendType, altitude=None,
reduce_strength_array=True,
trend_test_class=trend_test_class,
offset_starting_year=20)
vizualiser.sigma_for_best_year = 1.0
res = vizualiser.visualize_year_trend_test(subtitle_specified='CrocusSwe3Days')
best_year = res[0][1]
for altitude in FULL_ALTITUDES[:]:
# Starting Year=1958
vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude,
exact_starting_year=1958, reduce_strength_array=True,
trend_test_class=trend_test_class)
vizualiser.visualize_massif_trend_test_one_altitude()
# Optimal common starting year
vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude,
exact_starting_year=best_year, reduce_strength_array=True,
trend_test_class=trend_test_class)
vizualiser.visualize_massif_trend_test_one_altitude()
def main_run():
main_full_spatial_risk_evolution()
# main_fast_spatial_risk_evolution()
if __name__ == '__main__':
start = time.time()
main_run()
duration = time.time() - start
print('Full run took {}s'.format(round(duration, 1)))
...@@ -29,7 +29,7 @@ def main_fast_spatial_risk_evolution(): ...@@ -29,7 +29,7 @@ def main_fast_spatial_risk_evolution():
def main_full_spatial_risk_evolution(): def main_full_spatial_risk_evolution():
# Compare the risk with and without taking into account the starting year # Compare the risk with and without taking into account the starting year
for altitude in FULL_ALTITUDES[:]: for altitude in FULL_ALTITUDES[:]:
for trend_test_class in [GevLocationAndScaleTrendTest]: for trend_test_class in [GevScaleTrendTest]:
# Starting Year=1958 # Starting Year=1958
vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude, vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude,
exact_starting_year=1958, reduce_strength_array=True, exact_starting_year=1958, reduce_strength_array=True,
......
...@@ -16,7 +16,8 @@ def main_fast_spatial_risk_evolution(): ...@@ -16,7 +16,8 @@ def main_fast_spatial_risk_evolution():
for altitude in [1800]: for altitude in [1800]:
vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude, vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude,
reduce_strength_array=False, reduce_strength_array=False,
trend_test_class=GevLocationAndScaleTrendTest) trend_test_class=GevLocationAndScaleTrendTest,
offset_starting_year=20)
vizualiser.save_to_file = False vizualiser.save_to_file = False
vizualiser.visualize_massif_trend_test_one_altitude() vizualiser.visualize_massif_trend_test_one_altitude()
vizualiser.reduce_strength_array = True vizualiser.reduce_strength_array = True
...@@ -25,7 +26,7 @@ def main_fast_spatial_risk_evolution(): ...@@ -25,7 +26,7 @@ def main_fast_spatial_risk_evolution():
def main_full_spatial_risk_evolution(): def main_full_spatial_risk_evolution():
# Compare the risk with and without taking into account the starting year # Compare the risk with and without taking into account the starting year
for altitude in FULL_ALTITUDES[:]: for altitude in FULL_ALTITUDES[-2:]:
for trend_test_class in [GevLocationAndScaleTrendTest]: for trend_test_class in [GevLocationAndScaleTrendTest]:
vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude, vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude,
exact_starting_year=1958, reduce_strength_array=True, exact_starting_year=1958, reduce_strength_array=True,
...@@ -33,7 +34,8 @@ def main_full_spatial_risk_evolution(): ...@@ -33,7 +34,8 @@ def main_full_spatial_risk_evolution():
vizualiser.visualize_massif_trend_test_one_altitude() vizualiser.visualize_massif_trend_test_one_altitude()
vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude, vizualiser = get_full_altitude_visualizer(Altitude_Hypercube_Year_Visualizer, altitude=altitude,
reduce_strength_array=True, reduce_strength_array=True,
trend_test_class=trend_test_class) trend_test_class=trend_test_class,
offset_starting_year=20)
vizualiser.visualize_massif_trend_test_one_altitude() vizualiser.visualize_massif_trend_test_one_altitude()
vizualiser.reduce_strength_array = False vizualiser.reduce_strength_array = False
vizualiser.visualize_massif_trend_test_one_altitude() vizualiser.visualize_massif_trend_test_one_altitude()
......
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