Supported models
TL;DR
This page answers: what is actually supported today? The matrix below is generated from MENoBiS' capability registry. If the code and another documentation page disagree, this table is authoritative for public support.
Version note: capabilities on this page are generated from the current source tree. Regenerate with
uv run python scripts/docs/generate_capabilities.py; the docs CI checks it with the--checkflag.
Supported model matrix
Registry source SHA: a0b1a12 · generated: 2026-08-31T17:51:54+00:00
| Ensemble | Family | Constraint | Fit | Sample | Filter | Exactness / semantics |
|---|---|---|---|---|---|---|
| grandcanonical | ME | strength | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | ME | strength_cost | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | ME | strength_edges | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | ME | strength_degree | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | ME | degree_events | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | ME | edges_events | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | B | strength | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | B | strength_cost | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | B | strength_edges | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | B | strength_degree | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | B | degree_events | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | B | edges_events | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | W | strength | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | W | strength_cost | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | W | strength_edges | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | W | strength_degree | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | W | degree_events | yes | yes | yes | exact independent; matched in expectation |
| grandcanonical | W | edges_events | yes | yes | yes | exact independent; matched in expectation |
| canonical | ME | strength | yes | yes | — | exact direct; T fixed, remaining structure soft |
| canonical | ME | strength_cost | yes | — | — | n/a |
| canonical | ME | strength_edges | yes | — | — | n/a |
| canonical | ME | strength_degree | yes | — | — | n/a |
| canonical | ME | degree_events | yes | — | — | n/a |
| canonical | ME | edges_events | yes | — | — | n/a |
| microcanonical | ME | strength | — | yes | — | exact stationary MCMC; strengths exact |
| microcanonical | ME | strength_cost | — | yes | — | exact stationary MCMC; hybrid (cost expected) |
| microcanonical | ME | strength_edges | — | yes | — | exact stationary MCMC; strengths, E exact |
| microcanonical | ME | strength_degree | — | yes | — | exact stationary MCMC; strengths, degrees exact |
| microcanonical | ME | degree_events | — | yes | — | exact stationary MCMC; k, T exact |
| microcanonical | ME | edges_events | — | yes | — | exact direct; E, T exact |
| microcanonical | B | strength | — | yes | — | exact stationary MCMC; strengths exact |
| microcanonical | B | strength_cost | — | yes | — | exact stationary MCMC; hybrid (cost expected) |
| microcanonical | B | strength_edges | — | yes | — | exact stationary MCMC; strengths, E exact |
| microcanonical | B | strength_degree | — | yes | — | exact stationary MCMC; strengths, degrees exact |
| microcanonical | B | degree_events | — | yes | — | exact stationary MCMC; k, T exact |
| microcanonical | B | edges_events | — | yes | — | exact direct; E, T exact |
| microcanonical | W | strength | — | yes | — | exact stationary MCMC; strengths exact |
| microcanonical | W | strength_cost | — | yes | — | exact stationary MCMC; hybrid (cost expected) |
| microcanonical | W | strength_edges | — | yes | — | exact stationary MCMC; strengths, E exact |
| microcanonical | W | strength_degree | — | yes | — | exact stationary MCMC; strengths, degrees exact |
| microcanonical | W | degree_events | — | yes | — | exact stationary MCMC; k, T exact |
| microcanonical | W | edges_events | — | yes | — | exact direct; E, T exact |
Reading the table
- Fit — a grand-canonical fit exists for the route (the canonical fit column follows the same registry).
- Sample — a sampler exists for the route.
- Filter — statistical filtering exists for the route.
- Exactness / semantics — how a sampled network is generated and which quantities are exact:
| Label | Meaning |
|---|---|
| exact independent | each pair drawn directly from its fitted law (grand canonical); constraints are matched in expectation and fluctuate across samples |
| exact direct | one draw from the target distribution, up to ordinary pseudorandom error |
| exact stationary MCMC | validated kernel with the target stationary distribution; finite runs still need burn-in/mixing |
| hybrid (cost expected) | the microcanonical strength+cost route: strengths exact, cost matched in expectation |
Per-route exactness categories are also reported at runtime on
sample_model_detailed(...).diagnostics.exactness.
Canonical support
Canonical fitting reuses the grand-canonical solver for ME. Canonical sampling is implemented for ME + STRENGTH only (fixed total occupation \(T\), multinomial kernel). See Ensembles.
Microcanonical routes
The dedicated route table below is also generated from the registry:
Microcanonical sampling routes
Registry source SHA: a0b1a12 · generated: 2026-08-31T17:51:54+00:00
| Constraint | Family | Exact / controlled | Backend | Required arguments | Exactness |
|---|---|---|---|---|---|
| strength | ME | strengths exact | microcanonical_fixed_strength |
strength_in, strength_out | exact stationary MCMC; strengths exact |
| strength_cost | ME | strengths exact; cost expected (gamma) | microcanonical_fixed_strength_cost |
coord_x, coord_y, strength_in, strength_out, target_cost | exact stationary MCMC; hybrid (cost expected) |
| strength_edges | ME | strengths, E exact | microcanonical_fixed_strength_edges |
strength_in, strength_out, target_edges | exact stationary MCMC; strengths, E exact |
| strength_degree | ME | strengths, degree sequences exact | microcanonical_fixed_strength_degree |
degree_in, degree_out, strength_in, strength_out | exact stationary MCMC; strengths, degrees exact |
| degree_events | ME | degree sequences, T exact | microcanonical_fixed_kt |
degree_in, degree_out, total_events | exact stationary MCMC; k, T exact |
| edges_events | ME | E, T exact | microcanonical_fixed_et |
node_count, target_edges, total_events | exact direct; E, T exact |
| strength | B | strengths exact | microcanonical_fixed_strength |
strength_in, strength_out | exact stationary MCMC; strengths exact |
| strength_cost | B | strengths exact; cost expected (gamma) | microcanonical_fixed_strength_cost |
coord_x, coord_y, strength_in, strength_out, target_cost | exact stationary MCMC; hybrid (cost expected) |
| strength_edges | B | strengths, E exact | microcanonical_fixed_strength_edges |
strength_in, strength_out, target_edges | exact stationary MCMC; strengths, E exact |
| strength_degree | B | strengths, degree sequences exact | microcanonical_fixed_strength_degree |
degree_in, degree_out, strength_in, strength_out | exact stationary MCMC; strengths, degrees exact |
| degree_events | B | degree sequences, T exact | microcanonical_fixed_kt |
degree_in, degree_out, layers, total_events | exact stationary MCMC; k, T exact |
| edges_events | B | E, T exact | microcanonical_fixed_et |
layers, node_count, target_edges, total_events | exact direct; E, T exact |
| strength | W | strengths exact | microcanonical_fixed_strength |
strength_in, strength_out | exact stationary MCMC; strengths exact |
| strength_cost | W | strengths exact; cost expected (gamma) | microcanonical_fixed_strength_cost |
coord_x, coord_y, strength_in, strength_out, target_cost | exact stationary MCMC; hybrid (cost expected) |
| strength_edges | W | strengths, E exact | microcanonical_fixed_strength_edges |
strength_in, strength_out, target_edges | exact stationary MCMC; strengths, E exact |
| strength_degree | W | strengths, degree sequences exact | microcanonical_fixed_strength_degree |
degree_in, degree_out, strength_in, strength_out | exact stationary MCMC; strengths, degrees exact |
| degree_events | W | degree sequences, T exact | microcanonical_fixed_kt |
degree_in, degree_out, layers, total_events | exact stationary MCMC; k, T exact |
| edges_events | W | E, T exact | microcanonical_fixed_et |
layers, node_count, target_edges, total_events | exact direct; E, T exact |
Every microcanonical route shares the two-stage philosophy documented in Microcanonical sampling: construct one feasible state, then sample the target measure on the constraint fiber.