CLI Commands
make_storm_ensemble
usage: make_storm_ensemble [-h] --number-of-perturbations
NUMBER_OF_PERTURBATIONS --storm-code STORM_CODE
[--start-date START_DATE] [--end-date END_DATE]
[--advisories [ADVISORIES ...]]
[--file-deck FILE_DECK]
[directory]
positional arguments:
directory output directory
options:
-h, --help show this help message and exit
--number-of-perturbations NUMBER_OF_PERTURBATIONS
number of perturbations
--storm-code STORM_CODE
storm name/code
--start-date START_DATE
start date
--end-date END_DATE end date
--advisories [ADVISORIES ...]
record type (i.e. `BEST`, `OFCL`)
--file-deck FILE_DECK
letter of file deck, one of `a`, `b`, or `f`
- ensembleperturbation.perturbation.atcf.perturb_tracks(perturbations: int | ~typing.List[float] | ~typing.List[~typing.Dict[str, float]], directory: ~os.PathLike | None = None, storm: str | ~os.PathLike | None = None, variables: ~typing.List[~ensembleperturbation.perturbation.atcf.VortexPerturbedVariable] | None = None, sample_from_distribution: bool = False, sample_rule: str = 'random', quadrature: bool = False, quadrature_order: int = 3, quadrature_rule: str = 'Gaussian', sparse_quadrature: bool = False, start_date: ~datetime.datetime | None = None, end_date: ~datetime.datetime | None = None, file_deck: ~stormevents.nhc.atcf.ATCF_FileDeck | None = None, advisories: ~typing.List[str] | None = None, overwrite: bool = False, parallel: bool = True, features: ~ensembleperturbation.perturbation.atcf.PerturberFeatures | None = <PerturberFeatures.ISOTACH_ADJUSTMENT: 1>)
write a set of perturbed storm tracks
- Parameters:
perturbations – either the number of perturbations to create, or a list of floats meant to represent points on either the standard Gaussian distribution or a bounded uniform distribution
directory – directory to which to write
storm – ATCF storm ID, or file path to an existing fort.22 / ATCF file, from which to perturb
variables – vortex variables to perturb
sample_from_distribution – override given perturbations with random samples from the joint distribution
sample_rule – rule to use for the distribution sampling. Please choose from:
random[default],sobol,halton,``hammersley``,korobov,additive_recursion, orlatin_hypercubequadrature – add perturbations along quadrature
quadrature_order – order of the quadrature
quadrature_rule – rule of the quadrature for generating abscissas and weights
sparse_quadrature – use Smolyak’s sparse grid instead of normal tensor product grid
start_date – model start time of ensemble
end_date – model end time of ensemble
file_deck – letter of file deck, one of a, b
advisories – record types (i.e. BEST, OFCL)
overwrite – overwrite existing files
parallel – generate perturbations concurrently
- Returns:
mapping of track names to perturbation JSONs
perturb_tracks
perturb_tracks is an extension of initialize_adcirc from CoupledModelDriver
[2026-01-14 17:29:47,941] /home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/coupledmodeldriver/_depend.py WARNING : can't find the 'adcircpy' module
Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/bin/perturb_tracks", line 3, in <module>
from ensembleperturbation.client.perturb_tracks import main
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/ensembleperturbation/client/perturb_tracks.py", line 4, in <module>
from coupledmodeldriver.client.initialize_adcirc import (
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/coupledmodeldriver/client/initialize_adcirc.py", line 9, in <module>
from adcircpy import TidalSource
ModuleNotFoundError: No module named 'adcircpy'
The extension adds several new arguments: --perturbations, --variables, --quadrature, and --serial
perturb_tracks \
--platform HERA \
--mesh-directory /scratch2/COASTAL/coastal/save/shared/models/meshes/hsofs/250m/v1.0_fixed \
--modeled-start-time "2018-09-11 06:00:00" \
--modeled-duration "07:00:00:00" \
--modeled-timestep "00:00:02" \
--nems-interval "01:00:00" \
--forcings tidal,besttrack \
--tidal-spinup-duration "07:00:00:00" \
--tidal-source TPXO \
--tidal-path /scratch2/COASTAL/coastal/save/shared/models/forcings/tides/h_tpxo9.v1.nc \
--besttrack-nws 8 \
--besttrack-storm-id florence2018 \
--adcirc-executable /scratch2/COASTAL/coastal/save/shared/repositories/CoastalApp_PaHM/ALLBIN_INSTALL/NEMS.x \
--adcprep-executable /scratch2/COASTAL/coastal/save/shared/repositories/CoastalApp_PaHM/ALLBIN_INSTALL/adcprep \
--perturbations 256 \
--quadrature \
--serial
combine_results
Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/bin/combine_results", line 3, in <module>
from ensembleperturbation.client.combine_results import main
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/ensembleperturbation/client/combine_results.py", line 11, in <module>
from ensembleperturbation.parsing.schism import combine_outputs as combine_outputs_schism
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/ensembleperturbation/parsing/schism.py", line 19, in <module>
from pyschism.mesh import Hgrid
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/pyschism/__init__.py", line 4, in <module>
from pyschism.stations import Stations
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/pyschism/stations.py", line 12, in <module>
from pyschism.enums import (
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/pyschism/enums.py", line 707, in <module>
class Sflux1Types(Enum):
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/pyschism/enums.py", line 709, in Sflux1Types
from pyschism.forcing import nws
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/pyschism/forcing/__init__.py", line 3, in <module>
from pyschism.forcing.nws.nws2.gfs import GlobalForecastSystem
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/pyschism/forcing/nws/__init__.py", line 1, in <module>
from pyschism.forcing.nws.nws2 import NWS2
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/pyschism/forcing/nws/nws2/__init__.py", line 1, in <module>
from pyschism.forcing.nws.nws2.nws2 import NWS2
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/pyschism/forcing/nws/nws2/nws2.py", line 9, in <module>
from pyschism.forcing.nws.nws2.sflux import SfluxDataset
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/pyschism/forcing/nws/nws2/sflux.py", line 9, in <module>
import cf
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/cf/__init__.py", line 235, in <module>
from .constructs import Constructs
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/cf/constructs.py", line 6, in <module>
from .query import Query
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/cf/query.py", line 9, in <module>
from .data import Data
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/cf/data/__init__.py", line 1, in <module>
from .data import Data
File "/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/cf/data/data.py", line 18, in <module>
from dask.base import collections_to_dsk, is_dask_collection, tokenize
ImportError: cannot import name 'collections_to_dsk' from 'dask.base' (/home/docs/checkouts/readthedocs.org/user_builds/ensembleperturbation/envs/stable/lib/python3.10/site-packages/dask/base.py)
plot_results
Matplotlib is building the font cache; this may take a moment.
usage: plot_results [-h] filename
positional arguments:
filename filename (`*.h5`) generated by `combine_results`
options:
-h, --help show this help message and exit