mbi.MarginalOracle

class mbi.MarginalOracle(*args, **kwargs)[source]

Bases: Protocol

Callable signature for stateless marginal oracle functions.

A marginal oracle consumes log-space potentials of a graphical model and returns its marginals over the same set of cliques. Different oracles may have different time/space complexities and numerical stabilities.

Available oracles:

  • message_passing_implicit: Implicit-factor message passing (configurable).

  • message_passing_hugin: Classic HUGIN algorithm with belief subtraction.

  • message_passing_shafer_shenoy: Shafer-Shenoy algorithm with neighbor collection.

  • brute_force_marginals: Materializes the full joint distribution.

  • einsum_marginals: Direct einsum (not recommended for large models).

Methods

__init__

__call__(potentials: CliqueVector, total: Array | float = 1.0, *, constraints: Sequence[Constraint] = ()) → CliqueVector[source]

Compute marginals from potentials.

Parameters:
  • potentials – Potentials of a graphical model.

  • total – Normalization constant. Defaults to 1.0.

  • constraints – Structural constraints. Oracles that support constraints fold them into the potentials or handle them natively; unsupported oracles raise ValueError.

Returns:

Marginals as a CliqueVector.