EvoX Genesis
EvoX Genesis turns a high-level software objective into a persistent recursive software world: finite-lived agents recursively develop software, while only accepted consequences persist across develop
翻譯準備中
Accelerated, accurate, agentic causal discovery
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Interventional data: rows from experiments, where a variable was changed from outside. Where observation leaves the direction of an edge open, an experiment on either end can settle it. IGSP learns graphs from experiments with known targets, GnIES and UT-IGSP from experiments whose targets they are not told, and ICP finds the causes of one variable, all as accurately as their authors' code. CAM-UV and DYNOTEARS are supported too.
Read the post · See the release card
Andrey is a causal discovery package for Python.
uv add andrey-core
pip install andrey-core
You install andrey-core and then import andrey.
andrey-core[torch] for GPUs, andrey-core[viz] for charts and graph
layoutsuv add "andrey-core @ git+https://github.com/Abel-ai-lab/andrey@main"| Family | Methods | Returns |
|---|---|---|
| Constraint-based | pc, fci, gfci, cdnod, icp, iamb, inter_iamb, mmpc | CPDAG, PAG, DAG, UNDIRECTED |
| Score-based | ges, gies, gnies, xges, hc, tabu, exact_search, , *, *, , |
* Experimental: no published benchmark yet, and the API may change.
Learn the protein-signaling network of Sachs et al. (2005) from 853 cells, and score it against the known network:
import andrey
from andrey.data import load_dataset
from andrey.metrics import score
sachs = load_dataset("sachs") # 853 cells, 11 proteins, and the known network
out = andrey.pc(sachs.data) # learn a graph
print(out)
scores = score(out.structure, sachs.graph)
print({k: round(scores[k], 2) for k in ("shd", "skeleton_precision", "skeleton_recall")})
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: rank
{'shd': 11, 'skeleton_precision': 1.0, 'skeleton_recall': 0.47}
PC finds 8 edges, all among the known network's 17. The structural Hamming distance (SHD) counts the edges to add, remove, or reorient to reach the known network: 11 here (9 edges are missing, and 2 are oriented that the known network leaves undirected), and 17 for a graph with no edges.
For your own data, pass a pandas DataFrame or a NumPy array: one row per sample, one column per variable. From a shell or an agent:
andrey run pc --data your_data.csv # JSON when piped, a summary in a terminal
To give your coding agent Andrey's skill, paste this prompt into it:
Install Andrey's agent skill: make sure the andrey-core package is installed, run
`andrey --skill`, and save its output as andrey/SKILL.md in your skills folder.
Andrey is in alpha: the API may change between releases, so pin the version you use. Linux is fully tested; macOS and Windows install and run on the CPU, but the full test suite and the GPU speedups (CUDA / MPS) are not tested there yet.
If you use Andrey in your work, please cite it, or use the citation file:
@software{andrey,
author = {{Abel AI Lab}},
title = {Andrey: Accelerated, accurate, agentic causal discovery},
year = {2026},
version = {0.14.0},
url = {https://andrey.abel.ai},
}
Andrey is released under the Apache License 2.0. Bug reports and pull requests are welcome in the issue tracker; the contributing guide explains how to set up a development environment.
Andrey is inspired by causal-learn, pgmpy, Tetrad, and many other causal discovery packages.
calm| CPDAG, DAG |
| Permutation-based | boss, grasp, igsp, ut_igsp | CPDAG |
| Functional causal models | direct_lingam, ica_lingam, multi_group_direct_lingam, cam, resit | DAG |
| Temporal causal discovery | varma_lingam, longitudinal_lingam, pcmci, pcmciplus, lpcmci, granger, dynotears | Temporal graph |
| Latent variables | gin, rcd, bottom_up_parce_lingam, camuv | DAG, PAG |
| Pairwise direction | anm, pnl | Two-node DAG |