From e6c54f991c2e8114436dc79f8610ae48c374b4c0 Mon Sep 17 00:00:00 2001
From: Le Roux Erwan <erwan.le-roux@irstea.fr>
Date: Tue, 16 Jul 2019 12:08:54 +0200
Subject: [PATCH] [PAPER1] create a folder with all the analysis steps for the
 first paper

---
 .../1-main_good_stationary_gev_fit.py         | 22 +++++++++++++
 .../2-main_choice_starting_years.py}          |  0
 .../scm_models_data/paper1_steps/__init__.py  |  0
 .../study_visualization/study_visualizer.py   | 31 +++++++++++++------
 4 files changed, 43 insertions(+), 10 deletions(-)
 create mode 100644 experiment/meteo_france_data/scm_models_data/paper1_steps/1-main_good_stationary_gev_fit.py
 rename experiment/meteo_france_data/scm_models_data/{visualization/hypercube_visualization/main_files_after_conf/main_choice_starting_years.py => paper1_steps/2-main_choice_starting_years.py} (100%)
 create mode 100644 experiment/meteo_france_data/scm_models_data/paper1_steps/__init__.py

diff --git a/experiment/meteo_france_data/scm_models_data/paper1_steps/1-main_good_stationary_gev_fit.py b/experiment/meteo_france_data/scm_models_data/paper1_steps/1-main_good_stationary_gev_fit.py
new file mode 100644
index 00000000..4bcf26cb
--- /dev/null
+++ b/experiment/meteo_france_data/scm_models_data/paper1_steps/1-main_good_stationary_gev_fit.py
@@ -0,0 +1,22 @@
+from experiment.meteo_france_data.scm_models_data.crocus.crocus import CrocusRecentSwe
+from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.main_study_visualizer import \
+    study_iterator_global
+from experiment.meteo_france_data.scm_models_data.visualization.study_visualization.study_visualizer import \
+    StudyVisualizer
+
+
+def maxima_analysis():
+    save_to_file = True
+    only_first_one = False
+    durand_altitude = [900, 1500, 2100, 2700]
+    altitudes = durand_altitude
+    study_classes = [CrocusRecentSwe][:]
+    for study in study_iterator_global(study_classes, only_first_one=only_first_one, altitudes=altitudes):
+        study_visualizer = StudyVisualizer(study, save_to_file=save_to_file,
+                                           verbose=True,
+                                           multiprocessing=True)
+        study_visualizer.visualize_summary_of_annual_values_and_stationary_gev_fit()
+
+
+if __name__ == '__main__':
+    maxima_analysis()
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files_after_conf/main_choice_starting_years.py b/experiment/meteo_france_data/scm_models_data/paper1_steps/2-main_choice_starting_years.py
similarity index 100%
rename from experiment/meteo_france_data/scm_models_data/visualization/hypercube_visualization/main_files_after_conf/main_choice_starting_years.py
rename to experiment/meteo_france_data/scm_models_data/paper1_steps/2-main_choice_starting_years.py
diff --git a/experiment/meteo_france_data/scm_models_data/paper1_steps/__init__.py b/experiment/meteo_france_data/scm_models_data/paper1_steps/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py
index 059c6afc..74dbf0a1 100644
--- a/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py
+++ b/experiment/meteo_france_data/scm_models_data/visualization/study_visualization/study_visualizer.py
@@ -6,6 +6,7 @@ from random import sample
 from typing import Dict
 
 import math
+import matplotlib
 import matplotlib.pyplot as plt
 import numpy as np
 import pandas as pd
@@ -751,14 +752,7 @@ class StudyVisualizer(VisualizationParameters):
         else:
             *clean_axes, ax0 = axes
         for ax in clean_axes:
-            ax.tick_params(axis=u'both', which=u'both', length=0)
-            ax.spines['top'].set_visible(False)
-            ax.spines['right'].set_visible(False)
-            ax.spines['bottom'].set_visible(False)
-            ax.spines['left'].set_visible(False)
-            ax.get_xaxis().set_visible(False)
-            ax.get_yaxis().set_visible(False)
-            ax.set_aspect('equal')
+            StudyVisualizer.clean_ax(ax)
         ax0.get_yaxis().set_visible(True)
         sub_title = ax0.yaxis.get_label()
         full_title = title + '\n\n' + sub_title._text
@@ -766,6 +760,17 @@ class StudyVisualizer(VisualizationParameters):
         label_function(full_title)
         ax0.tick_params(axis=u'both', which=u'both', length=0)
 
+    @staticmethod
+    def clean_ax(ax):
+        ax.tick_params(axis=u'both', which=u'both', length=0)
+        ax.spines['top'].set_visible(False)
+        ax.spines['right'].set_visible(False)
+        ax.spines['bottom'].set_visible(False)
+        ax.spines['left'].set_visible(False)
+        ax.get_xaxis().set_visible(False)
+        ax.get_yaxis().set_visible(False)
+        ax.set_aspect('equal')
+
     def show_or_save_to_file(self, add_classic_title=True, no_title=False, tight_layout=False):
         if tight_layout:
             plt.tight_layout()
@@ -842,7 +847,9 @@ class StudyVisualizer(VisualizationParameters):
                                        show=False,
                                        replace_blue_by_white=gev_param_name != GevParams.SHAPE,
                                        label=gev_param_name)
-        # self.clean_axes_write_title_on_the_left(axes, title='Independent fits')
+        # todo: add qqplot drawn for each massif on the map in the last cell
+        # or just it could be some fitting score based on the qqplot... and we just display the value
+        # like the log likelihood, (or we could also display some uncertainty here)
 
         # 3) Third row, gev indicator
         axes_third_row = axes[2]
@@ -852,7 +859,11 @@ class StudyVisualizer(VisualizationParameters):
                                        show=False,
                                        label='gev ' + indicator_name)
 
-        plt.show()
+        # Clean all ax
+        for ax in axes.flatten():
+            StudyVisualizer.clean_ax(ax)
+        self.plot_name = 'Overview of empirical and stationary gev indicators'
+        self.show_or_save_to_file()
 
     def visualize_annual_mean_values(self, ax=None, take_mean_value=True):
         if ax is None:
-- 
GitLab