Ensemble Kalman Filter
cuthbert.enkf.ensemble_kalman_filter
Implements the high-level Ensemble Kalman Filter (EnKF).
See Algorithm 10.2, Sanz-Alonso et al., Inverse Problems and Data Assimilation. Based in part on the CD-Dynamax implementation.
EnKFState
Bases: NamedTuple
Ensemble Kalman filter state.
key
instance-attribute
ensemble
instance-attribute
model_inputs
instance-attribute
log_normalizing_constant
instance-attribute
n_particles
property
Number of particles.
mean
property
Ensemble mean.
chol_cov
property
Generalised Cholesky factor of the ensemble sample covariance.
build_filter(init_sample, get_dynamics, get_observations, n_particles, inflation=0.0, perturbed_obs=True)
Builds an Ensemble Kalman Filter object.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
init_sample
|
InitSample
|
Function to sample from the initial distribution from key and model inputs. |
required |
get_dynamics
|
GetEnKFDynamics
|
Function to get dynamics function (x_t, key) -> x_{t+1} ~ p(x_{t+1} | x_t) from model inputs. |
required |
get_observations
|
GetEnKFObservations
|
Function to get observation function, chol_R, and y from model inputs. |
required |
n_particles
|
int
|
Number of particles. |
required |
inflation
|
float
|
Multiplicative inflation factor for ensemble deviations. |
0.0
|
perturbed_obs
|
bool
|
If True, use perturbed observations (stochastic EnKF). |
True
|
Returns:
| Type | Description |
|---|---|
Filter
|
Filter object for the EnKF. |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |