Package comparison#
This table sets Andrey beside four other causal discovery packages: the data their methods read, what real data needs, how they use your hardware, and what an agent can drive. The release cards time and score each method against the same packages.
| Andrey | causal-learn | Tetrad | pcalg | bnlearn | |
|---|---|---|---|---|---|
| Coverage | |||||
| Distinct methods | 45 | 21 | 21 | 8 | 10 |
| Temporal data | Yes | Yes | Yes | No | No |
| Mixed data | Yes | Partly1 | Yes | No | Yes |
| Nonlinear data | Yes | Yes | Yes | No | No |
| Interventional data | Yes | Partly2 | Partly3 | Yes | Partly4 |
| Permutation invariance | Yes | No | Partly5 | No | No |
| Real data | |||||
| Missing values | Yes | Partly6 | Yes | No | Yes |
| Background knowledge | Yes | Partly7 | Yes | Partly8 | Yes |
| Edge confidence | Yes | Partly9 | Yes | No | Yes |
| Speed | |||||
| CPU parallelization | Yes | Partly10 | Partly11 | Partly12 | Partly13 |
| GPU acceleration | Yes | Partly14 | No | No | No |
| Open benchmarks | Yes | No | No | No | No |
| Agentic | |||||
| JSON command line | Yes | No | Partly15 | No | No |
| Schema for every method | Yes | No | Partly16 | No | No |
| Agent skill | Yes | No | Partly17 | 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.
Notes#
- Mixed data, causal-learn. No mixed-data test or score; only KCI and the generalized score take category codes, and neither is built for them.
- Interventional data, causal-learn. CD-NOD only, for data from several domains, with no targets.
- Interventional data, Tetrad. Intervention variables tagged in a metadata file join the first knowledge tier as ordinary variables; no method takes the targets.
- Interventional data, bnlearn. The mbde score only, for categorical data in its score-based searches.
- Permutation invariance, Tetrad. PC and FCI follow the variables' names; BOSS, GRaSP, and GIN changed with the column order.
- Missing values, causal-learn. PC and CD-NOD only, with the Fisher-z test.
- Background knowledge, causal-learn. PC, FCI, CD-NOD, the LiNGAM methods, and exact search; GES, BOSS, and GRaSP take none.
- Background knowledge, pcalg. Fixed adjacencies only, with no directions or tiers.
- Edge confidence, causal-learn. Bootstrap edge probabilities for the LiNGAM methods only.
- CPU parallelization, causal-learn. Several CPU cores for RLCD and the FastKCI test only.
- CPU parallelization, Tetrad. Several threads for FGES, BOSS, GFCI, and PC's adjacency search.
- CPU parallelization, pcalg. Several cores for the skeleton step of its stable.fast method only.
- CPU parallelization, bnlearn. A cluster for its constraint-based methods and DirectLiNGAM only.
- GPU acceleration, causal-learn. CALM only.
- JSON command line, Tetrad. causal-cmd writes the graph, and only the graph, to a JSON file.
- Schema for every method, Tetrad. Typed parameter defaults and bounds, in an HTML manual.
- Agent skill, Tetrad. py-tetrad's development branch has a skill and guides; no release has them.
How the table is read#
Distinct methods counts each published algorithm that returns a whole graph once. A variant chosen by an argument, a version for several datasets, another score or test in the same search, and a wrapper count with the method they extend; a search that only orients a given graph does not count. Andrey’s 49 supported methods count as 45:
gieswithges,multi_group_direct_lingamwithdirect_lingam,inter_iambwithiamb, andmmhcwithrsmax2. Experimental methods do not count.A feature counts when a released version has it. A hook for your own test or score is not an implementation, and a feature only on a development branch is not released.
A real-data feature is a yes when the package’s main learners have it, and partly when only some do. Interventional data is a yes when a method takes each row’s environment or the intervention targets.
Permutation invariance comes from the measurements in the 0.7.0 post, and open benchmarks from each package’s README, documentation, and release notes.