main_altitudes_studies.py 2.46 KiB
from extreme_data.meteo_france_data.scm_models_data.safran.safran import SafranSnowfall1Day, SafranSnowfall3Days, \
    SafranSnowfall5Days, SafranSnowfall7Days, SafranPrecipitation1Day, SafranPrecipitation3Days, \
    SafranPrecipitation5Days, SafranPrecipitation7Days
from extreme_data.meteo_france_data.scm_models_data.utils import Season
from extreme_fit.model.margin_model.polynomial_margin_model.utils import ALTITUDINAL_MODELS
from projects.altitude_spatial_model.altitudes_fit.altitudes_studies import AltitudesStudies
from projects.altitude_spatial_model.altitudes_fit.one_fold_analysis.altitudes_studies_visualizer_for_non_stationary_models import \
    AltitudesStudiesVisualizerForNonStationaryModels


def plot_altitudinal_fit(studies, massif_names=None):
    visualizer = AltitudesStudiesVisualizerForNonStationaryModels(studies=studies,
                                                                  model_classes=ALTITUDINAL_MODELS,
                                                                  massif_names=massif_names,
                                                                  show=False)
    visualizer.plot_mean()
    visualizer.plot_relative_change()
    visualizer.plot_shape_map()


def plot_time_series(studies, massif_names=None):
    studies.plot_maxima_time_series(massif_names=massif_names)


def plot_moments(studies, massif_names=None):
    for std in [True, False][:]:
        for change in [True, False, None]:
            studies.plot_mean_maxima_against_altitude(massif_names=massif_names, std=std, change=change)


def main():
    # altitudes = [900, 1200, 1500, 1800, 2100, 2400, 2700, 3000]
    altitudes = [900, 1200, 1500, 1800, 2100, 2400, 2700, 3000, 3300, 3600, 3900]
    study_classes = [SafranSnowfall1Day, SafranSnowfall3Days, SafranSnowfall5Days, SafranSnowfall7Days][:2]
    study_classes = [SafranPrecipitation1Day, SafranPrecipitation3Days, SafranPrecipitation5Days,
                     SafranPrecipitation7Days][:]
    study_classes = [SafranSnowfall1Day, SafranPrecipitation1Day, SafranSnowfall3Days, SafranPrecipitation3Days][:1]
    massif_names = None
    # massif_names = ['Aravis']
    # massif_names = ['Chartreuse', 'Belledonne']

    for study_class in study_classes:
        studies = AltitudesStudies(study_class, altitudes, season=Season.winter_extended)
        # plot_time_series(studies, massif_names)
        plot_moments(studies, massif_names)
        plot_altitudinal_fit(studies, massif_names)


if __name__ == '__main__':
    main()