pysteps.nowcasts.sprog.forecast

pysteps.nowcasts.sprog.forecast

pysteps.nowcasts.sprog.forecast(R, V, timesteps, n_cascade_levels=6, R_thr=None, extrap_method='semilagrangian', decomp_method='fft', bandpass_filter_method='gaussian', ar_order=2, conditional=False, probmatching_method='cdf', num_workers=1, fft_method='numpy', domain='spatial', extrap_kwargs=None, filter_kwargs=None, measure_time=False)

Generate a nowcast by using the Spectral Prognosis (S-PROG) method.

Parameters
R: array-like

Array of shape (ar_order+1,m,n) containing the input precipitation fields ordered by timestamp from oldest to newest. The time steps between the inputs are assumed to be regular.

V: array-like

Array of shape (2,m,n) containing the x- and y-components of the advection field. The velocities are assumed to represent one time step between the inputs. All values are required to be finite.

timesteps: int or list of floats

Number of time steps to forecast or a list of time steps for which the forecasts are computed (relative to the input time step). The elements of the list are required to be in ascending order.

n_cascade_levels: int, optional

The number of cascade levels to use.

R_thr: float

The threshold value for minimum observable precipitation intensity.

extrap_method: str, optional

Name of the extrapolation method to use. See the documentation of pysteps.extrapolation.interface.

decomp_method: {‘fft’}, optional

Name of the cascade decomposition method to use. See the documentation of pysteps.cascade.interface.

bandpass_filter_method: {‘gaussian’, ‘uniform’}, optional

Name of the bandpass filter method to use with the cascade decomposition. See the documentation of pysteps.cascade.interface.

ar_order: int, optional

The order of the autoregressive model to use. Must be >= 1.

conditional: bool, optional

If set to True, compute the statistics of the precipitation field conditionally by excluding pixels where the values are below the threshold R_thr.

probmatching_method: {‘cdf’,’mean’,None}, optional

Method for matching the conditional statistics of the forecast field (areas with precipitation intensity above the threshold R_thr) with those of the most recently observed one. ‘cdf’=map the forecast CDF to the observed one, ‘mean’=adjust only the mean value, None=no matching applied.

num_workers: int, optional

The number of workers to use for parallel computation. Applicable if dask is enabled or pyFFTW is used for computing the FFT. When num_workers>1, it is advisable to disable OpenMP by setting the environment variable OMP_NUM_THREADS to 1. This avoids slowdown caused by too many simultaneous threads.

fft_method: str, optional

A string defining the FFT method to use (see utils.fft.get_method). Defaults to ‘numpy’ for compatibility reasons. If pyFFTW is installed, the recommended method is ‘pyfftw’.

domain: {“spatial”, “spectral”}

If “spatial”, all computations are done in the spatial domain (the classical S-PROG model). If “spectral”, the AR(2) models are applied directly in the spectral domain to reduce memory footprint and improve performance [PCH18a].

extrap_kwargs: dict, optional

Optional dictionary containing keyword arguments for the extrapolation method. See the documentation of pysteps.extrapolation.

filter_kwargs: dict, optional

Optional dictionary containing keyword arguments for the filter method. See the documentation of pysteps.cascade.bandpass_filters.py.

measure_time: bool

If set to True, measure, print and return the computation time.

Returns
out: ndarray

A three-dimensional array of shape (num_timesteps,m,n) containing a time series of forecast precipitation fields. The time series starts from t0+timestep, where timestep is taken from the input precipitation fields R. If measure_time is True, the return value is a three-element tuple containing the nowcast array, the initialization time of the nowcast generator and the time used in the main loop (seconds).

References

[See03], [PCH18a]