An error occurred while loading the file. Please try again.
-
Le Roux Erwan authored6c96e20c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from extreme_estimator.extreme_models.margin_model.abstract_margin_model import AbstractMarginModel
from extreme_estimator.extreme_models.max_stable_model.abstract_max_stable_model import AbstractMaxStableModel
from spatio_temporal_dataset.coordinates.abstract_coordinates import AbstractCoordinates
from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
from spatio_temporal_dataset.spatio_temporal_observations.abstract_spatio_temporal_observations import \
AbstractSpatioTemporalObservations
from spatio_temporal_dataset.spatio_temporal_observations.annual_maxima_observations import \
MaxStableAnnualMaxima, MarginAnnualMaxima, FullAnnualMaxima
class SimulatedDataset(AbstractDataset):
"""
Class SimulatedDataset gives access to:
-the max_stable_model AND/OR marginal_model that was used for sampling
"""
def __init__(self, observations: AbstractSpatioTemporalObservations,
coordinates: AbstractCoordinates,
max_stable_model: AbstractMaxStableModel = None,
margin_model: AbstractMarginModel = None):
super().__init__(observations, coordinates)
assert margin_model is not None or max_stable_model is not None
self.margin_model = margin_model # type: AbstractMarginModel
self.max_stable_model = max_stable_model # type: AbstractMaxStableModel
class MaxStableDataset(SimulatedDataset):
@classmethod
def from_sampling(cls, nb_obs: int, max_stable_model: AbstractMaxStableModel, coordinates: AbstractCoordinates):
observations = MaxStableAnnualMaxima.from_sampling(nb_obs, max_stable_model, coordinates)
return cls(observations=observations, coordinates=coordinates, max_stable_model=max_stable_model)
class MarginDataset(SimulatedDataset):
@classmethod
def from_sampling(cls, nb_obs: int, margin_model: AbstractMarginModel, coordinates: AbstractCoordinates):
observations = MarginAnnualMaxima.from_sampling(nb_obs, coordinates, margin_model)
return cls(observations=observations, coordinates=coordinates, margin_model=margin_model)
class FullSimulatedDataset(SimulatedDataset):
@classmethod
def from_double_sampling(cls, nb_obs: int, max_stable_model: AbstractMaxStableModel,
coordinates: AbstractCoordinates,
margin_model: AbstractMarginModel):
assert coordinates.nb_coordinates <= 2, 'rmaxstable available only for 2D coordinates'
observations = FullAnnualMaxima.from_double_sampling(nb_obs, max_stable_model,
coordinates, margin_model)
return cls(observations=observations, coordinates=coordinates,
max_stable_model=max_stable_model, margin_model=margin_model)