How ryan112358/mbi works
MBI is a Python library for marginal-based graphical-model estimation and inference, with differential-privacy mechanisms and synthetic-data extensions. The main workflow is to define a discrete domain, provide marginal measurements, fit a model, then query its marginals or generate synthetic records. The graph also includes the documented alternative estimators and privacy mechanisms. Some mechanism implementations and core modules are represented from README and tree evidence only; their internal wiring is omitted where source excerpts do not establish it.
Main entry points: estimation.py Estimators · dataset.py Dataset · markov_random_field.py Graphical model · marginal_oracles.py Marginal oracles
Components 22
Data and measurements
- Domain
src/mbi/domain.py - Dataset
src/mbi/dataset.py - Marginal measurements
src/mbi/marginal_loss.py - Marginal loss
src/mbi/marginal_loss.py
Estimation and inference
- Estimators
src/mbi/estimation.py - Factors and cliques
src/mbi/factor.py - Marginal oracles
src/mbi/marginal_oracles.py - Junction tree
src/mbi/junction_tree.py
Model outputs
- Graphical model
src/mbi/markov_random_field.py - Synthetic generation
src/mbi/extensions/synthetic_data.py
Private mechanisms
- AIM
mechanisms/aim.py - JAM
mechanisms/jam.py - MWEM + PGM
mechanisms/mwem+pgm.py - Adaptive grid
mechanisms/adaptive_grid.py - MST mechanism
mechanisms/mst.py - Other mechanisms
mechanisms/cdp2adp.py
Extensions
- Alternative estimators
src/mbi/extensions/mixture_of_products.py - Reweighted estimator
src/mbi/extensions/reweighted_dataset.py - Message passing
src/mbi/extensions/message_passing.py - Progress callbacks
src/mbi/callbacks.py - Precompute marginals
src/mbi/extensions/precompute_marginals.py
Other components
- Analyst
Connections 36
- Analyst → Domain: defines domain
- Analyst → Marginal measurements: provides measurements
- Analyst → Estimators: selects estimator
- Domain → Estimators: bounds fitting
- Marginal measurements → Marginal loss: construct loss
- Estimators → Marginal loss: builds objective
- Estimators → Marginal oracles: requests marginals
- Marginal oracles → Junction tree: uses schedules
- Marginal oracles → Factors and cliques: computes factors
- Estimators → Graphical model: returns fitted model
- Graphical model → Analyst: enables projection
- Analyst → Alternative estimators: chooses estimator
- Analyst → Reweighted estimator: chooses estimator
- Alternative estimators → Graphical model: returns representation
- Reweighted estimator → Dataset: produces weighted data
- Graphical model → Synthetic generation: generates records
- Synthetic generation → Dataset: returns synthetic data
- Dataset → Precompute marginals: supplies records
- Precompute marginals → Factors and cliques: computes marginals
- Analyst → Progress callbacks: configures progress
- Progress callbacks → Estimators: observes progress
- Analyst → AIM: runs mechanism
- Analyst → JAM: runs mechanism
- Analyst → MWEM + PGM: runs mechanism
- Analyst → Adaptive grid: runs mechanism
- Analyst → MST mechanism: runs mechanism
- Analyst → Other mechanisms: runs mechanism
- Dataset → AIM: provides private data
- Dataset → JAM: provides private data
- Dataset → MWEM + PGM: provides private data
- Dataset → Adaptive grid: provides private data
- AIM → Estimators: fits model
- JAM → Estimators: fits model
- MWEM + PGM → Estimators: fits model
- Adaptive grid → Estimators: fits model
- Message passing → Factors and cliques: computes messages