Skip to content

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 leaves it unbound; the configuration is validated when it is bound, so an incompatible dataassim/ensemble combination or a bad enif block fails at construction rather than mid-run.

None
Notes

The enif block of the dataassim section accepts:

  • parameter_graphs: maps state names to NetworkX graphs, sparse adjacency arrays, or files written with scipy.sparse.save_npz. Without one, a group with nx/ny (nz) grid metadata in its prior_ 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 (nx, ne).

required
enY ndarray

Predicted data ensemble matrix, shape (nd, ne).

required
enE ndarray

Perturbed observations with covariance alpha * cov_data and the same shape as enY. Additional noise is drawn when the fitted response has unexplained variance.

required

Returns:

Type Description
AnalysisResult

The additive state-space step.

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.