Welcome to CausalNex’s API docs and tutorials!¶
CausalNex is no longer actively maintained. As of 24th June 2026, CausalNex has reached end of life and has been discontinued.
McKinsey will continue to make this repository accessible strictly as a historical archive, but please be advised that the codebase has been discontinued and is no longer supported. Consequently, the project will not receive any future updates, bug-fixes, or security and vulnerability patches. Outstanding issues and pull requests will no longer be monitored or reviewed.
Pursuant to the applicable open-source license, CausalNex is provided on an “AS IS” basis, without warranties or conditions of any kind, either express or implied. Any continued use, copying, modification, or distribution of this codebase is done entirely at the user’s own risk, and McKinsey disclaims all liability arising from such use.
Getting Started
Tutorial
User guide
Resources
- Frequently asked questions
- What is CausalNex?
- What are the benefits of using CausalNex?
- When should you consider using CausalNex?
- Why NOTEARS algorithm over other structure learning methods?
- What is the recommended type of dataset to be used in NOTEARS?
- What is the recommended number of samples for satisfactory performance?
- Why can my StructureModel be cyclic, but not my BayesianNetwork?
- Why a separate data pre-processing process for probability fitting than structure learning? / Why discretise data in probability fitting?
- Why call fit_node_states before fit_cpds?
- What is Do-intervention and when to use it?
- How can I make inference faster?
- How does CausalNex compare to other projects, e.g. CausalML, DoWhy?
- What version of Python does CausalNex use?
- How do I upgrade CausalNex?
- How can I find out more CausalNex?
- Where can I learn more about Bayesian Networks?