pyextremes 2.4.0__tar.gz → 2.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyextremes-2.4.0 → pyextremes-2.6.0}/PKG-INFO +2 -2
- {pyextremes-2.4.0 → pyextremes-2.6.0}/pyproject.toml +2 -2
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/__init__.py +1 -1
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/eva.py +8 -2
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/models/model_emcee.py +15 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/models/models.py +6 -1
- {pyextremes-2.4.0 → pyextremes-2.6.0}/LICENSE +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/README.md +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/extremes/__init__.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/extremes/block_maxima.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/extremes/extremes.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/extremes/peaks_over_threshold.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/extremes/return_periods.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/extremes/transformation.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/models/__init__.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/models/distribution.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/models/model_base.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/models/model_lmoments.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/models/model_mle.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/models/model_mom.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/models/model_scipy.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/multivariate/__init__.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/multivariate/meva.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/plotting/__init__.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/plotting/extremes.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/plotting/mcmc.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/plotting/probability_plots.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/plotting/return_values.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/plotting/style.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/py.typed +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/tests/__init__.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/tests/ks_test.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/tests/test_base.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/tuning/__init__.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/tuning/hyperparameters.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/tuning/model_comparison.py +0 -0
- {pyextremes-2.4.0 → pyextremes-2.6.0}/src/pyextremes/tuning/threshold_selection.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyextremes
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.6.0
|
|
4
4
|
Summary: Extreme Value Analysis (EVA) in Python
|
|
5
5
|
Keywords: statistics,extreme,extreme value analysis,eva,coastal,ocean,oceanography,marine,environmental,engineering
|
|
6
6
|
Author: George Bocharov
|
|
@@ -26,7 +26,7 @@ Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
|
26
26
|
Classifier: Typing :: Typed
|
|
27
27
|
Requires-Dist: numpy>=1.19.0,<3.0.0
|
|
28
28
|
Requires-Dist: scipy>=1.5.0,<2.0.0
|
|
29
|
-
Requires-Dist: pandas>=1.0.0,<
|
|
29
|
+
Requires-Dist: pandas>=1.0.0,<4.0.0
|
|
30
30
|
Requires-Dist: emcee>=3.0.3,<4.0.0
|
|
31
31
|
Requires-Dist: matplotlib>=3.3.0,!=3.9.1,<4.0.0
|
|
32
32
|
Requires-Dist: lmoments3>=1.0.8 ; extra == 'full'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pyextremes"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.6.0"
|
|
4
4
|
description = "Extreme Value Analysis (EVA) in Python"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.9"
|
|
@@ -42,7 +42,7 @@ urls = { "homepage" = "https://georgebv.github.io/pyextremes", "github" = "https
|
|
|
42
42
|
dependencies = [
|
|
43
43
|
"numpy>=1.19.0,<3.0.0",
|
|
44
44
|
"scipy>=1.5.0,<2.0.0",
|
|
45
|
-
"pandas>=1.0.0,<
|
|
45
|
+
"pandas>=1.0.0,<4.0.0",
|
|
46
46
|
"emcee>=3.0.3,<4.0.0",
|
|
47
47
|
"matplotlib>=3.3.0,!=3.9.1,<4.0.0", # avoid yanked 3.9.1 release
|
|
48
48
|
]
|
|
@@ -13,6 +13,7 @@ import scipy.stats
|
|
|
13
13
|
|
|
14
14
|
from pyextremes.extremes import ExtremesTransformer, get_extremes, get_return_periods
|
|
15
15
|
from pyextremes.models import MLE, Distribution, Emcee, get_model
|
|
16
|
+
from pyextremes.models.model_emcee import PoolType
|
|
16
17
|
from pyextremes.plotting import (
|
|
17
18
|
plot_corner,
|
|
18
19
|
plot_extremes,
|
|
@@ -84,7 +85,7 @@ class EVA:
|
|
|
84
85
|
data = data.copy(deep=True)
|
|
85
86
|
|
|
86
87
|
# Ensure that `data` has correct index and value dtypes
|
|
87
|
-
if not
|
|
88
|
+
if not pd.api.types.is_numeric_dtype(data):
|
|
88
89
|
try:
|
|
89
90
|
message = "`data` values are not numeric - converting to numeric"
|
|
90
91
|
logger.debug(message)
|
|
@@ -620,7 +621,7 @@ class EVA:
|
|
|
620
621
|
extremes = extremes.copy(deep=True)
|
|
621
622
|
if not isinstance(extremes.index, pd.DatetimeIndex):
|
|
622
623
|
raise TypeError("invalid index type for `extremes`, must be date-time")
|
|
623
|
-
if not
|
|
624
|
+
if not pd.api.types.is_numeric_dtype(extremes):
|
|
624
625
|
raise TypeError("`extremes` must have numeric values")
|
|
625
626
|
if extremes.name is None:
|
|
626
627
|
extremes.name = self.data.name
|
|
@@ -897,6 +898,7 @@ class EVA:
|
|
|
897
898
|
n_walkers: int = 100,
|
|
898
899
|
n_samples: int = 500,
|
|
899
900
|
progress: bool = False,
|
|
901
|
+
pool: typing.Optional[PoolType] = None,
|
|
900
902
|
) -> None: ...
|
|
901
903
|
|
|
902
904
|
def fit_model(
|
|
@@ -965,6 +967,10 @@ class EVA:
|
|
|
965
967
|
suitable for Jupyter notebooks.
|
|
966
968
|
If False (default), no progress bar will be shown.
|
|
967
969
|
This progress bar is a part of the `emcee` package.
|
|
970
|
+
pool : PoolType, optional
|
|
971
|
+
A pool object from the multiprocessing module or similar.
|
|
972
|
+
If provided, the sampler will use this pool to parallelize
|
|
973
|
+
computations.
|
|
968
974
|
|
|
969
975
|
"""
|
|
970
976
|
# Select default distribution
|
|
@@ -10,6 +10,17 @@ import scipy.stats
|
|
|
10
10
|
|
|
11
11
|
from pyextremes.models.model_base import AbstractModelBaseClass
|
|
12
12
|
|
|
13
|
+
|
|
14
|
+
@typing.runtime_checkable
|
|
15
|
+
class PoolType(typing.Protocol):
|
|
16
|
+
def map(
|
|
17
|
+
self,
|
|
18
|
+
func: typing.Callable[..., typing.Any],
|
|
19
|
+
iterable: typing.Iterable[typing.Any],
|
|
20
|
+
/,
|
|
21
|
+
) -> typing.Iterable[typing.Any]: ...
|
|
22
|
+
|
|
23
|
+
|
|
13
24
|
logger = logging.getLogger(__name__)
|
|
14
25
|
|
|
15
26
|
|
|
@@ -29,6 +40,7 @@ class Emcee(AbstractModelBaseClass):
|
|
|
29
40
|
n_walkers: int = 100,
|
|
30
41
|
n_samples: int = 500,
|
|
31
42
|
progress: bool = False,
|
|
43
|
+
pool: typing.Optional[PoolType] = None,
|
|
32
44
|
) -> None:
|
|
33
45
|
super().__init__(
|
|
34
46
|
extremes=extremes,
|
|
@@ -37,6 +49,7 @@ class Emcee(AbstractModelBaseClass):
|
|
|
37
49
|
n_walkers=n_walkers,
|
|
38
50
|
n_samples=n_samples,
|
|
39
51
|
progress=progress,
|
|
52
|
+
pool=pool,
|
|
40
53
|
)
|
|
41
54
|
self.n_walkers = n_walkers
|
|
42
55
|
self.n_samples = n_samples
|
|
@@ -50,6 +63,7 @@ class Emcee(AbstractModelBaseClass):
|
|
|
50
63
|
n_walkers: int = kwargs.pop("n_walkers")
|
|
51
64
|
n_samples: int = kwargs.pop("n_samples")
|
|
52
65
|
progress: bool = kwargs.pop("progress")
|
|
66
|
+
pool: typing.Optional[PoolType] = kwargs.pop("pool", None)
|
|
53
67
|
if len(kwargs) != 0:
|
|
54
68
|
raise TypeError(
|
|
55
69
|
f"unrecognized arguments passed in: {', '.join(kwargs.keys())}"
|
|
@@ -60,6 +74,7 @@ class Emcee(AbstractModelBaseClass):
|
|
|
60
74
|
nwalkers=n_walkers,
|
|
61
75
|
ndim=self.distribution.number_of_parameters,
|
|
62
76
|
log_prob_fn=self.distribution.log_probability,
|
|
77
|
+
pool=pool,
|
|
63
78
|
)
|
|
64
79
|
|
|
65
80
|
# Run the ensemble sampler
|
|
@@ -3,7 +3,7 @@ from typing import Literal, Optional, Union, overload
|
|
|
3
3
|
import pandas as pd
|
|
4
4
|
import scipy.stats
|
|
5
5
|
|
|
6
|
-
from pyextremes.models.model_emcee import Emcee
|
|
6
|
+
from pyextremes.models.model_emcee import Emcee, PoolType
|
|
7
7
|
from pyextremes.models.model_lmoments import Lmoments
|
|
8
8
|
from pyextremes.models.model_mle import MLE
|
|
9
9
|
from pyextremes.models.model_mom import MOM
|
|
@@ -46,6 +46,7 @@ def get_model(
|
|
|
46
46
|
n_walkers: int = 100,
|
|
47
47
|
n_samples: int = 500,
|
|
48
48
|
progress: bool = False,
|
|
49
|
+
pool: Optional[PoolType] = None,
|
|
49
50
|
) -> Emcee: ...
|
|
50
51
|
|
|
51
52
|
|
|
@@ -104,6 +105,10 @@ def get_model(
|
|
|
104
105
|
suitable for Jupyter notebooks.
|
|
105
106
|
If False (default), no progress bar will be shown.
|
|
106
107
|
This progress bar is a part of the `emcee` package.
|
|
108
|
+
pool : PoolType, optional
|
|
109
|
+
A pool object from the multiprocessing module or similar.
|
|
110
|
+
If provided, the sampler will use this pool to parallelize
|
|
111
|
+
computations.
|
|
107
112
|
|
|
108
113
|
Returns
|
|
109
114
|
-------
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|