A GRaphical Universal Modeler (


aGrUM is a C++ library for graphical models. It is designed for easily building applications using graphical models such as Bayesian networks, influence diagrams, decision trees, GAI networks or Markov decision processes.

aGrUM is written to provide the basic building blocks to perform the following tasks :

designing graphical models,
learning graphical models,
elicitation of graphical models,
inference within graphical models,


pyAgrum is a Python wrapper for the C++ aGrUM library (using SWIG interface generator). It provides a high-level interface to the part of aGrUM allowing to create, model, learn, use, calculate with and embed Bayesian Networks and other graphical models. Some specific (python and C++) codes are added in order to simplify and extend the aGrUM API.

Installation : here

Tutorials (jupyter notebooks) : here


aGrUM/pyAgrum is released under the Gnu Lesser General Public License (LGPL v3.0), which means it can be freely copied and distributed, and costs nothing. Especially, aGrUM can be used and linked into both free software and proprietary software, provided that the code used under the LGPL is re-licensed under the LGPL (the other parts of the software are permitted have other licenses.).

Code samples

Tutorials and samples can be viewed as jupyter notebooks. The notebooks can be remotely executed without any installation using binder.