Skip to content

Inference checkers

Validation helpers used by filtering and related inference paths (e.g. batched plate alignment).

Validation helpers for inference modules.

_leading_dims(arr: Shaped[Array, ...] | None, n_dims: int) -> tuple[int, ...] | None

Return up to n_dims leading dimensions for diagnostics.

_summarize_dynamics_leading_dims(dynamics: DynamicalModel, n_dims: int, max_items: int = 6) -> str

Summarize leading dimensions from JAX-array leaves in a model pytree.

_validate_batched_plate_alignment(dynamics: DynamicalModel, plate_shapes: tuple[int, ...], *, obs_times: Real[Array, '*obs_time_plate obs_time'] | None, obs_values: Real[Array, '*obs_value_plate obs_time observation_dim'] | Real[Array, '*obs_value_plate obs_time'] | None, ctrl_times: Real[Array, '*ctrl_time_plate ctrl_time'] | None, ctrl_values: Real[Array, '*ctrl_value_plate ctrl_time control_dim'] | Real[Array, '*ctrl_value_plate ctrl_time'] | None) -> None

Raise early when plate_shapes do not align with any batched input source.

_validate_inference_supported_model_classes(dynamics: DynamicalModel) -> None

Reject model classes that are valid for simulation but not inference.

In particular, deterministic continuous-time dynamics paired with DiracIdentityObservation are allowed for forward simulation, but not for scoring or inference. In continuous time, exact identity observations turn the observation model into a degenerate path constraint rather than a regular likelihood term.

_validate_missing_observation_support(config: BaseFilterConfig | BaseSmootherConfig, *, obs_values: Real[Array, '*obs_value_shape'], mode: Literal['filter', 'smoother']) -> Real[Array, '*obs_value_shape']

Reject unsupported NaN-valued observations for filter/smoother backends.