enif⚓︎
Graph-informed ensemble information-filter update (EnIF).
The ensemble information filter replaces the ensemble covariance of the
smoother updates with two sparse graph-informed estimates: a per-parameter
precision matrix fitted on a graph of the parameter connectivity, and a
boosted linear regression of the responses on the (standardised) state. The
estimators are ERT's, through the graphite-maps dependency -- which is
also why PET requires Python 3.12 through 3.14; PET supplies the MDA
lifecycle around them -- perturbed observations, inflation schedule,
forecasting, state limits and scoring.
The flavour is ES-MDA-specific, the way hybrid belongs to the multilevel
scheme and margis to GN-EnRML: it is wired into
ESMDA.COMPATIBLE_ANALYSES rather than the global analysis registry, and
selectable as analysis='enif'. The original single-update EnIF is the
one-step schedule, mda={tot_assim_steps: 1}.
enif_update
⚓︎
Bases: AnalysisBase
Graph-informed information-space update, as an ES-MDA analysis flavour.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
scheme
|
object
|
The ES-MDA scheme this analysis computes updates for. |
None
|
Notes
The enif block of the dataassim section accepts:
parameter_graphs: maps state names to NetworkX graphs, sparse adjacency arrays, or files written withscipy.sparse.save_npz. Without one, a group withnx/ny(nz) grid metadata in itsprior_block gets nearest-neighbour connectivity; a group without grid metadata is treated as independent.neighbourhood_expansion: precision fitting graph hops (default 2).neighbor_propagation_order: accepted for compatibility; MDA updates all retained state rows to preserve the accumulated information.
Covariance localization, local analysis, multilevel ensembles and
emp_cov cannot be combined with this flavour; spatial dependence is
specified by the parameter graphs.
Diagnostics of the last update -- the fitted regression H, the prior
and posterior precisions Prec_u/Prec_posterior, the observation
precision Prec_eps, the update_indices and the active rows
enif_active_rows -- are kept on the analysis object, not the scheme.
update(enX, enY, enE, **kwargs)
⚓︎
Compute the graph-informed update step.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
enX
|
ndarray
|
State ensemble matrix, shape |
required |
enY
|
ndarray
|
Predicted data ensemble matrix, shape |
required |
enE
|
ndarray
|
Perturbed observations with covariance
|
required |
Returns:
| Type | Description |
|---|---|
AnalysisResult
|
The additive state-space |
Notes
Each parameter group has its own precision block. Parameters containing non-finite values, and parameters with no ensemble spread, are held fixed. The regression is refitted at every MDA step; the posterior precision is carried forward in the new standardized state coordinates.