Accelerated, accurate, agentic causal discovery.
Accelerated
More than 5,000x faster than other popular packages.
more than5,000xfaster
Andreycausal-learngCastleTetradbnlearnInvariantCausalPredictionpcalgMost attractive quadrant
Each line runs from a method's smallest graph to its largest. Down and left is better. Details in the release cards
more than900xfaster
Andreyxgesbnlearncausal-learnpcalgMost attractive quadrant
Each line runs from a method's smallest graph to its largest. Down and left is better. Details in the release cards
more than200xfaster
Andreycausal-learnTetradMost attractive quadrant
Each line runs from a method's smallest graph to its largest. Down and left is better. Details in the release cards
more than10xfaster
Andreycausal-learnlingamCAMauthors' R RESITMost attractive quadrant
Each line runs from a method's smallest graph to its largest. Down and left is better. Details in the release cards
more than100xfaster
Andreytigramitelingamcausal-learnMost attractive quadrant
Each line runs from a method's smallest graph to its largest. Down and left is better. Details in the release cards
more than100xfaster
AndreylingamTetradcausal-learnMost attractive quadrant
Each line runs from a method's smallest graph to its largest. Down and left is better. Details in the release cards
more than1,000xfaster
Andreycausal-learnMost attractive quadrant
Each line runs from a method's smallest graph to its largest. Down and left is better. Details in the release cards
Accurate
More than 80% fewer errors than other popular packages.
Fewer errors than the other package
Each family's largest cut, summed over every size both ran.
PNL89% fewer errors
RESIT70% fewer errors
PC on mixed data, degenerate Gaussian test69% fewer errors
BOSS50% fewer errors
CALM, paper schedule32% fewer errors
Tested against the true graphs
Every release is tested against the true graphs that generated the data. Its release card gives every method's errors beside the other package's.
Agentic
A command line that never prompts and answers in JSON, so an agent can run it alone.
All-in-one
44 supported methods for every kind of data, and five kinds of causal graph.
Compared with other packages
Scroll sideways for every package.
Andrey causal-learn Tetrad pcalg bnlearn Coverage Distinct methods 42 21 21 8 10 Temporal data Yes Yes Yes No No Mixed data Yes Partly: No mixed-data test or score; only KCI and the generalized score take category codes, and neither is built for them. Yes No Yes Nonlinear data Yes Yes Yes No No Interventional data Yes Partly: CD-NOD only, for data from several domains, with no targets. Partly: Intervention variables tagged in a metadata file join the first knowledge tier as ordinary variables; no method takes the targets. Yes Partly: The mbde score only, for categorical data in its score-based searches. Permutation invariance Yes No Partly: PC and FCI follow the variables' names; BOSS, GRaSP, and GIN changed with the column order. No No Real data Missing values Yes Partly: PC and CD-NOD only, with the Fisher-z test. Yes No Yes Background knowledge Yes Partly: PC, FCI, CD-NOD, the LiNGAM methods, and exact search; GES, BOSS, and GRaSP take none. Yes Partly: Fixed adjacencies only, with no directions or tiers. Yes Edge confidence Yes Partly: Bootstrap edge probabilities for the LiNGAM methods only. Yes No Yes Speed CPU parallelization Yes Partly: Several CPU cores for RLCD and the FastKCI test only. Partly: Several threads for FGES, BOSS, GFCI, and PC's adjacency search. Partly: Several cores for the skeleton step of its stable.fast method only. Partly: A cluster for its constraint-based methods and DirectLiNGAM only. GPU acceleration Yes Partly: CALM only. No No No Open benchmarks Yes No No No No Agentic JSON command line Yes No Partly: causal-cmd writes the graph, and only the graph, to a JSON file. No No Schema for every method Yes No Partly: Typed parameter defaults and bounds, in an HTML manual. No No Agent skill Yes No Partly: py-tetrad's development branch has a skill and guides; no release has them. No No Read from each package's released code: causal-learn 0.1.4.8, Tetrad 7.6.10, pcalg 2.7-12, and bnlearn 5.2.1. Five kinds of causal graph
DAGs, CPDAGs, PAGs, cyclic graphs, and graphs over time.
From data to graph
From a table of measurements to its causal graph, in a few lines of Python.
Sachs and colleagues measured 11 proteins and phospholipids in 853 human immune cells. PC finds 8 of the 17 links in the known signaling network, and none outside it.
andrey.viz.draw.import andrey
from andrey.data import load_dataset
df = load_dataset("sachs").data
out = andrey.pc(df)
print(out)pc cpdag | 11 nodes | 8 edges (6 undirected, 2 directed)
raf -- mek
plc -- pip3
pip2 -- pip3
erk -- akt
erk -- pka
akt -- pka
p38 -> pkc
jnk -> pkc
indep_test: fisherz
tie_break: rankDocumentation
Latest post · Multi-domain dataWhat multi-domain data are, why data from several environments help causal discovery, and the methods Andrey has for them: CD-NOD, FCI-JCI, and J-PCMCI+.
- Getting startedInstall, then recover your first graph.
- Graph typesWhat a DAG, CPDAG, PAG, or temporal graph claims.
- API referenceEvery method, structure, and command.
- Release cardsTimings, accuracy, limits, and how to rerun them.








