A GRaphical Universal Modeler (


aGrUM is a C++ library for graphical models.


pyAgrum is a Python wrapper for the C++ aGrUM library.

aGrUM is a C++ (17) library and contains :

  • dedicated fundamental data structures,
  • light directed and undirected graphs,
  • efficient and extensible multidimensional matrix,
  • classical state-of-the-art algorithms but also original ones,
  • no GUI,
  • tools for researcher (random generation of objets, introspection, etc.),
  • tools for integrators (listener, multiple format for bayes nets file, etc.).

aGrUM is (L)GPL, cross-platform (linux, windows, mac) and on gitlab (

List of functionalities

Bayesian Network Input/Output bif/bifxml/dsl/net/uai formats (read/write)
O3PRM (read)
Exact Inference Variable Elimination, Shafer-Shenoy Inference, Lazy Propagation
Marginal targets , joint targets
Optimized Relevance Reasoning
Incremental inference
Approximated Inference Gibbs Sampling
Loopy Belief Propagation
Parameter Learning Pure max-Likelihood, Laplace, Dirichlet
Multiple score
Structural Learning Graphical constraints (forced arcs, forbidden arcs, initial structures, partial order)
Greedy Hill-Climbing, local search with tabu-list, K2
Algorithms Exact and approximated distance/divergence between BNs (KL, Bhattacharya, Hellinger)
Mutual information, entropy
Simulation (generation of csv files)
Markov Blanket, essential graph
Influence Diagram Input/Output bifxml
Inference Junction Trees
Probabilistic Relational Model Input/output O3PRM language parser
Exact inference Structured Variable Elimination (SVE)
Credal Networks Approximated inference GL2U, MC Sampling
FMDP Input
Planning SVI, SPUDD
Multi-Valued Decision Diagram SPUnDD

Legend: specific features in aGrUM.


Documentation & supports

Contributors, Projects and Applications