mbi.MarginalOracle
- class mbi.MarginalOracle(*args, **kwargs)[source]
Bases:
ProtocolCallable 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.