utils.py 13.33 KiB
from extreme_fit.model.margin_model.polynomial_margin_model.gev_altitudinal_models import StationaryAltitudinal, \
    NonStationaryAltitudinalLocationLinear, NonStationaryAltitudinalLocationQuadratic, \
    NonStationaryAltitudinalLocationLinearScaleLinear, NonStationaryAltitudinalLocationQuadraticScaleLinear, \
    NonStationaryCrossTermForLocation, NonStationaryAltitudinalLocationLinearCrossTermForLocation, \
    NonStationaryAltitudinalLocationQuadraticCrossTermForLocation, \
    NonStationaryAltitudinalLocationLinearScaleLinearCrossTermForLocation, \
    NonStationaryAltitudinalScaleLinear, \
    NonStationaryAltitudinalLocationCubicCrossTermForLocation, \
    NonStationaryAltitudinalLocationCubic
from extreme_fit.model.margin_model.polynomial_margin_model.gev_altitudinal_models_only_altitude_and_scale import \
    StationaryAltitudinalOnlyScale, NonStationaryAltitudinalOnlyScaleLocationLinear, \
    NonStationaryAltitudinalOnlyScaleLocationQuadratic, NonStationaryAltitudinalOnlyScaleLocationCubic, \
    NonStationaryAltitudinalOnlyScaleLocationOrder4, NonStationaryOnlyScaleCrossTermForLocation, \
    NonStationaryAltitudinalOnlyScaleLocationLinearCrossTermForLocation, \
    NonStationaryAltitudinalOnlyScaleLocationQuadraticCrossTermForLocation, \
    NonStationaryAltitudinalOnlyScaleLocationCubicCrossTermForLocation, \
    NonStationaryAltitudinalOnlyScaleLocationOrder4CrossTermForLocation
from extreme_fit.model.margin_model.polynomial_margin_model.gev_altitudinal_models_with_scale_2 import \
    NonStationaryAltitudinalScaleLinearCrossTermForLocation, \
    NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForLocation, \
    NonStationaryAltitudinalLocationCubicScaleLinearCrossTermForLocation, \
    NonStationaryAltitudinalLocationCubicScaleLinear
from extreme_fit.model.margin_model.polynomial_margin_model.gumbel_altitudinal_models import \
    StationaryGumbelAltitudinal, NonStationaryGumbelAltitudinalScaleLinear, \
    NonStationaryGumbelAltitudinalLocationLinear, NonStationaryGumbelAltitudinalLocationQuadratic, \
    NonStationaryGumbelAltitudinalLocationLinearScaleLinear, NonStationaryGumbelAltitudinalLocationQuadraticScaleLinear, \
    NonStationaryGumbelAltitudinalLocationLinearCrossTermForLocation, \
    NonStationaryGumbelAltitudinalLocationQuadraticCrossTermForLocation, \
    NonStationaryGumbelAltitudinalLocationLinearScaleLinearCrossTermForLocation, \
    NonStationaryGumbelAltitudinalLocationQuadraticScaleLinearCrossTermForLocation, \
    NonStationaryGumbelAltitudinalScaleLinearCrossTermForLocation, NonStationaryGumbelCrossTermForLocation
from extreme_fit.model.margin_model.polynomial_margin_model.models_based_on_pariwise_analysis.gev_quadratic_location_and_scale_with_constant_shape import \
    AltitudinalShapeConstantTimeLocationQuadratic, AltitudinalShapeConstantTimeLocationQuadraticScaleLinear, \
    AltitudinalShapeConstantTimeLocationQuadraticScaleQuadratic, \
    AltitudinalShapeConstantTimeLocationLinearScaleQuadratic, AltitudinalShapeConstantTimeScaleQuadratic
from extreme_fit.model.margin_model.polynomial_margin_model.models_based_on_pariwise_analysis.gev_quadratic_location_and_scale_with_linear_shape import \
    AltitudinalShapeLinearTimeLocationQuadratic, AltitudinalShapeLinearTimeLocationQuadraticScaleLinear, \
    AltitudinalShapeLinearTimeLocationQuadraticScaleQuadratic, AltitudinalShapeLinearTimeLocationLinearScaleQuadratic, \
    AltitudinalShapeLinearTimeScaleQuadratic
from extreme_fit.model.margin_model.polynomial_margin_model.models_based_on_pariwise_analysis.gev_with_constant_shape_wrt_altitude import \
    AltitudinalShapeConstantTimeLocShapeLinear, \
    AltitudinalShapeConstantTimeLocScaleLinear, AltitudinalShapeConstantTimeScaleShapeLinear, \
    AltitudinalShapeConstantTimeLocScaleShapeLinear, AltitudinalShapeConstantTimeLocationLinear, \
    AltitudinalShapeConstantTimeScaleLinear, AltitudinalShapeConstantTimeShapeLinear
from extreme_fit.model.margin_model.polynomial_margin_model.models_based_on_pariwise_analysis.gev_with_linear_shape_wrt_altitude import \
    AltitudinalShapeLinearTimeStationary, AltitudinalShapeLinearTimeLocScaleShapeLinear, \
    AltitudinalShapeLinearTimeLocationLinear, AltitudinalShapeLinearTimeScaleLinear, \
    AltitudinalShapeLinearTimeShapeLinear, AltitudinalShapeLinearTimeLocShapeLinear, \
    AltitudinalShapeLinearTimeLocScaleLinear, AltitudinalShapeLinearTimeScaleShapeLinear
from extreme_fit.model.margin_model.polynomial_margin_model.spatio_temporal_polynomial_model import \
    NonStationaryLocationSpatioTemporalLinearityModel1, NonStationaryLocationSpatioTemporalLinearityModel2, \
    NonStationaryLocationSpatioTemporalLinearityModel3, NonStationaryLocationSpatioTemporalLinearityModel4, \
    NonStationaryLocationSpatioTemporalLinearityModel5, NonStationaryLocationSpatioTemporalLinearityModelAssertError1, \
    NonStationaryLocationSpatioTemporalLinearityModelAssertError2, \
    NonStationaryLocationSpatioTemporalLinearityModelAssertError3, NonStationaryLocationSpatioTemporalLinearityModel6

ALTITUDINAL_GEV_MODELS_LOCATION = [
    StationaryAltitudinal,
    # NonStationaryAltitudinalLocationLinear,
    # NonStationaryAltitudinalLocationQuadratic,
    # NonStationaryAltitudinalLocationCubic,
    # NonStationaryAltitudinalLocationOrder4,
    # # First order cross term
    # NonStationaryCrossTermForLocation,

    # NonStationaryAltitudinalLocationLinearCrossTermForLocation,
    NonStationaryAltitudinalLocationQuadraticCrossTermForLocation,
    NonStationaryAltitudinalLocationCubicCrossTermForLocation,
    # NonStationaryAltitudinalLocationOrder4CrossTermForLocation,
    # NonStationaryAltitudinalScaleLinearCrossTermForLocation,
    # NonStationaryAltitudinalScaleLinearLocationLinearCrossTermForLocation,

    # NonStationaryAltitudinalScaleQuadraticCrossTermForLocation,
    # NonStationaryAltitudinalScaleQuadraticLocationLinearCrossTermForLocation,

    # NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForLocation,
    # NonStationaryAltitudinalLocationCubicScaleLinearCrossTermForLocation,
    # NonStationaryAltitudinalLocationQuadraticScaleQuadraticCrossTermForLocation,
    # NonStationaryAltitudinalLocationCubicScaleQuadraticCrossTermForLocation,

]
ALTITUDINAL_GEV_MODELS_LOCATION_QUADRATIC_MINIMUM = [
    StationaryAltitudinal,
    # NonStationaryAltitudinalLocationLinear,
    NonStationaryAltitudinalLocationQuadratic,
    NonStationaryAltitudinalLocationCubic,
    # NonStationaryAltitudinalLocationOrder4,
    # # First order cross term
    # NonStationaryCrossTermForLocation,
    # NonStationaryAltitudinalLocationLinearCrossTermForLocation,
    NonStationaryAltitudinalLocationQuadraticCrossTermForLocation,
    NonStationaryAltitudinalLocationCubicCrossTermForLocation,
    # NonStationaryAltitudinalLocationOrder4CrossTermForLocation,

    NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForLocation,
    NonStationaryAltitudinalLocationQuadraticScaleLinear,
    NonStationaryAltitudinalLocationCubicScaleLinear,
    NonStationaryAltitudinalLocationCubicScaleLinearCrossTermForLocation,

]

ALTITUDINAL_GEV_MODELS_BASED_ON_POINTWISE_ANALYSIS = [

    # With a constant shape for the altitude (8 models)
    StationaryAltitudinal,
    AltitudinalShapeConstantTimeLocationLinear,
    AltitudinalShapeConstantTimeScaleLinear,

    AltitudinalShapeConstantTimeLocScaleLinear,

    # With a linear shape for the altitude (8 models)
    AltitudinalShapeLinearTimeStationary,
    AltitudinalShapeLinearTimeLocationLinear,
    AltitudinalShapeLinearTimeScaleLinear,

    AltitudinalShapeLinearTimeLocScaleLinear,

    # AltitudinalShapeConstantTimeShapeLinear,
    # AltitudinalShapeConstantTimeLocShapeLinear,
    # AltitudinalShapeConstantTimeScaleShapeLinear,
    # AltitudinalShapeConstantTimeLocScaleShapeLinear,
    # AltitudinalShapeLinearTimeShapeLinear,
    # AltitudinalShapeLinearTimeLocShapeLinear,
    # AltitudinalShapeLinearTimeScaleShapeLinear,
    # AltitudinalShapeLinearTimeLocScaleShapeLinear,

    # With a quadratic term

    # AltitudinalShapeConstantTimeLocationQuadratic,
    # AltitudinalShapeConstantTimeLocationQuadraticScaleLinear,
    # AltitudinalShapeConstantTimeLocationQuadraticScaleQuadratic,
    # AltitudinalShapeConstantTimeLocationLinearScaleQuadratic,
    # AltitudinalShapeConstantTimeScaleQuadratic,
    #
    # AltitudinalShapeLinearTimeLocationQuadratic,
    # AltitudinalShapeLinearTimeLocationQuadraticScaleLinear,
    # AltitudinalShapeLinearTimeLocationQuadraticScaleQuadratic,
    # AltitudinalShapeLinearTimeLocationLinearScaleQuadratic,
    # AltitudinalShapeLinearTimeScaleQuadratic,

]

ALTITUDINAL_GEV_MODELS_LOCATION_ONLY_SCALE_ALTITUDES = [
    StationaryAltitudinalOnlyScale,
    NonStationaryAltitudinalOnlyScaleLocationLinear,
    NonStationaryAltitudinalOnlyScaleLocationQuadratic,
    NonStationaryAltitudinalOnlyScaleLocationCubic,
    NonStationaryAltitudinalOnlyScaleLocationOrder4,
    # Cross terms
    NonStationaryOnlyScaleCrossTermForLocation,
    NonStationaryAltitudinalOnlyScaleLocationLinearCrossTermForLocation,
    NonStationaryAltitudinalOnlyScaleLocationQuadraticCrossTermForLocation,
    NonStationaryAltitudinalOnlyScaleLocationCubicCrossTermForLocation,
    NonStationaryAltitudinalOnlyScaleLocationOrder4CrossTermForLocation,
]

ALTITUDINAL_GEV_MODELS = [
                             StationaryAltitudinal,
                             NonStationaryAltitudinalScaleLinear,
                             NonStationaryAltitudinalLocationLinear,
                             NonStationaryAltitudinalLocationQuadratic,
                             NonStationaryAltitudinalLocationLinearScaleLinear,
                             NonStationaryAltitudinalLocationQuadraticScaleLinear,

                             NonStationaryCrossTermForLocation,
                             NonStationaryAltitudinalScaleLinearCrossTermForLocation,
                             NonStationaryAltitudinalLocationLinearCrossTermForLocation,
                             NonStationaryAltitudinalLocationQuadraticCrossTermForLocation,
                             NonStationaryAltitudinalLocationLinearScaleLinearCrossTermForLocation,
                             NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForLocation,

                             # Quadratic in the scale
                             # NonStationaryAltitudinalScaleQuadratic,
                             # NonStationaryAltitudinalLocationLinearScaleQuadratic,
                             # NonStationaryAltitudinalLocationQuadraticScaleQuadratic,
                             # NonStationaryAltitudinalScaleQuadraticCrossTermForLocation,
                             # NonStationaryAltitudinalLocationLinearScaleQuadraticCrossTermForLocation,
                             # NonStationaryAltitudinalLocationQuadraticScaleQuadraticCrossTermForLocation,
                             #
                             # # Cross term for the scale
                             # NonStationaryAltitudinalScaleLinearCrossTermForScale,
                             # NonStationaryAltitudinalLocationLinearScaleLinearCrossTermForScale,
                             # NonStationaryAltitudinalLocationQuadraticScaleLinearCrossTermForScale,
                             # NonStationaryAltitudinalScaleQuadraticCrossTermForScale,
                             # NonStationaryAltitudinalLocationLinearScaleQuadraticCrossTermForScale,
                             # NonStationaryAltitudinalLocationQuadraticScaleQuadraticCrossTermForScale,

                         ][:]

ALTITUDINAL_GUMBEL_MODELS = [
                                StationaryGumbelAltitudinal,
                                NonStationaryGumbelAltitudinalScaleLinear,
                                NonStationaryGumbelAltitudinalLocationLinear,
                                NonStationaryGumbelAltitudinalLocationQuadratic,
                                NonStationaryGumbelAltitudinalLocationLinearScaleLinear,
                                NonStationaryGumbelAltitudinalLocationQuadraticScaleLinear,

                                NonStationaryGumbelCrossTermForLocation,
                                NonStationaryGumbelAltitudinalLocationLinearCrossTermForLocation,
                                NonStationaryGumbelAltitudinalLocationQuadraticCrossTermForLocation,
                                NonStationaryGumbelAltitudinalLocationLinearScaleLinearCrossTermForLocation,
                                NonStationaryGumbelAltitudinalLocationQuadraticScaleLinearCrossTermForLocation,
                                NonStationaryGumbelAltitudinalScaleLinearCrossTermForLocation,
                            ][:]

MODELS_THAT_SHOULD_RAISE_AN_ASSERTION_ERROR = [NonStationaryLocationSpatioTemporalLinearityModelAssertError1,
                                               NonStationaryLocationSpatioTemporalLinearityModelAssertError2,
                                               NonStationaryLocationSpatioTemporalLinearityModelAssertError3]

VARIOUS_SPATIO_TEMPORAL_MODELS = [NonStationaryLocationSpatioTemporalLinearityModel1,
                                  NonStationaryLocationSpatioTemporalLinearityModel2,
                                  NonStationaryLocationSpatioTemporalLinearityModel3,
                                  NonStationaryLocationSpatioTemporalLinearityModel4,
                                  NonStationaryLocationSpatioTemporalLinearityModel5,
                                  NonStationaryLocationSpatioTemporalLinearityModel6,
                                  ]