Open-source causal discovery platform
Describing the relationship between the variables in a study domain and modelling the data generating mechanism is a fundamental problem in many empirical sciences. Probabilistic graphical models are one common approach to tackle the problem. Learning the graphical structure for such models, referred to as causal discovery and structure learning in general, is computationally challenging and a fervent area of current research with a plethora of algorithms being developed. To facilitate the access to the different methods we present Benchpress, a scalable and platform-independent Snakemake workflow to run, develop, and to create reproducible benchmarks of structure learning algorithms for probabilistic graphical models. Benchpress is interfaced via a simple JSON-file, which makes it accessible for all users, while the code is designed in a fully modular fashion to enable researchers to contribute additional methodologies. Benchpress provides an interface to a large number of state-of-the-art algorithms from libraries such as BDgraph, BiDAG, bnlearn, gCastle, GOBNILP, pcalg, scikit-learn, TETRAD, and trilearn as well as a variety of methods for data generating models and performance evaluation. Alongside user-defined models and randomly generated datasets, the workflow also includes a number of standard datasets and graphical models from the literature.
See also
The paper Rios et al.[1]
The GitHub repository
This Medium story
This video tutorial UAI 2023 Tutorial: Structure Learning Using Benchpress - YouTube
Note
For suggestions for improvements and to report bugs, raise an issue or start a discussion at GitHub.
News
2025-10-30: Benchpress published in the Journal of Statistical Software.
2025-09-10: Benchpress 2.13.0. This version supports Snakemake 9.
2024-12-26: Benchpress 2.12.0. This version introduces the PyAgrum (pyagrum) module, providing access to the pyAgrum library’s structure learning capabilities for discrete valued Bayesian networks.
2024-12-16: Benchpress 2.11.0. This version introduces the TPC (tpc) module, based on the temporal PC (tPC) and the micd package. It enables causal discovery through the PC algorithm allowing for Edge constraints, mixed data, and missing data handling. Thanks Leibniz-Institut für Präventionsforschung und Epidemiologie – (BIPS GmbH).
2024-11-30: Benchpress 2.10.0. This version includes algorithms from the missing value PC (MVPC) package for sampling data with missing values (mvpc_gen_data) and causal discovery (MVPC (MVPC)) in the presence of missing values.
2024-11-24: Benchpress 2.9.0. This version comes with three new major features.
The ability to incorporate background knowledge in terms of Edge constraints. Thanks to Gomathi Lakshmanan for this great feature.
The ability to specify multiple benchmark setups in the same config file (See JSON config).
Generating DAGs using the gCastle package (gcastle_dag). Thanks to Damian Machlanski.
To convert the config files (<2.9.0) to this new format run
chmod +x scripts/utils/reformat_conf_files.py workflow/scripts/utils/reformat_conf_files.py
2024-06-27: Benchpress 2.8.0. The new graph_estimation module enables graph estimation and plotting. It will replace the graph_plots module as it is faster an easier to use.
2024-03-20: Jack Kuipers gives a Zoom seminar on Benchpress today at 5 PM CET at The Swiss Reproducibility Network
2024-02-13: Updated Causal discovery examples with timings and the algorithms BOSS (BOSS (TETRAD)) and GRaSP (GRaSP (TETRAD)).
2024-01-03: Benchpress 2.7.0. New algorithm modules from the huge package for estimating Gaussian graphical models: GLasso (huge), M&B cov est (huge), and TIGER (huge). Thanks Mohamad Elmasri for the contribution.
2023-12-04: New version of the Benchpress paper .
2023-11-16: Benchpress 2.6.0 released. The new algorithm GrUES (GrUES (gues)) for estimating the unconditional dependence graph (UDG) for DAGs is now available. Thanks Alex Markham for the contribution.
2023-10-13: Benchpress 2.5.0 released. Added the feature to pass the graph estimate of one algorithm as input of another. Added the algorithm module Chordal graph samplers (A. Thomas) for MCMC estimating graphs of undirected decomposable graphical models.
2023-09-24: Benchpress 2.4.0 released. Added the Psi-learner algorithm for learning graphs of undirected Gaussian graphical models (Psi-learning (equSA)).
2023-09-19: Benchpress 2.3.0 released. Updated causal-cmd to version 1.10.0. Added the BOSS algorithm (BOSS (TETRAD)).
2023-09-08: Benchpress 2.2.0 released. Now supporting the ARM64 architecture used e.g. by the recent Apple computers.
2023-08-31: The Grasp algorithm is available through both GRaSP (causal-learn) and GRaSP (TETRAD).
2023-07-31: Benchpress tutorial at UAI 2023: Structure learning using Benchpress (
slides, YouTube).2023-06-20: Benchpress tutorial at KTH
2022-09-06: Algorithms for learning Bayesian networks (James Cussens). Interactive AI CDT Summer School (BIAS 22), University of Bristol
2022-05-24: Benchpress talk at the CATS seminar series at KTH
2022-04-04: Benchpress talk and tutorial at the Simons Institute, Berkley
2021-12-18: Benchpress talk at the 14th International Conference on Computational and Methodological Statistics (CMStatistics 2021), London