Skip to main content

Whydra

Быстрая библиотека для поиска причинно-следственных связей (causal discovery): реализации PC-stable, семейства FCI (FCI-stable, CFCI, RFCI, GFCI, FCI+) и RAI с поддержкой параллельных вычислений и фоновых знаний (background knowledge).

Установка

pip install whydra

Требуется Python 3.10+.

Для сохранения изображений графов (whydra.evaluation.graph_utils.draw_graph) в системе должен быть установлен Graphviz:

  • Linux: sudo apt-get install graphviz
  • Windows: Скачайте инсталлятор с сайта Graphviz, установите и добавьте путь к bin в PATH.

Быстрый старт

import numpy as np
from whydra import StandalonePCStable

rng = np.random.default_rng(0)
x1, x2 = rng.normal(size=(2, 1000))
x3 = x1 + x2 + rng.normal(scale=0.5, size=1000)
data = np.column_stack([x1, x2, x3])  # (n_samples, n_features)

graph = StandalonePCStable(alpha=0.05, indep_test="fisherz", n_jobs=4).run(data)
print([str(edge) for edge in graph.get_graph_edges()])  # ['X1 --> X3', 'X2 --> X3']

Доступные алгоритмы: StandalonePCStable, ParallelPCStable, StandaloneFCIStable (и варианты с кэшем CI-тестов StandaloneFCIStableCached, StandaloneFCIStableParallelCached), StandaloneCFCIStable, StandaloneRFCIStable, StandaloneGFCIStable, StandaloneFCIPlusStable, StandaloneRAIStable, StandaloneRAIOptimized. Алгоритм можно создать и по имени: whydra.create_standalone_algorithm("rfci_stable", alpha=0.01). Тесты независимости: fisherz (непрерывные данные) и chisq (дискретные).

Лицензия

Whydra распространяется по лицензии Apache License 2.0.

Бенчмарки

Для запуска бенчмарков склонируйте репозиторий и установите пакет вместе с зависимостями для бенчмарков (Hydra и др.):

git clone https://github.com/sb-ai-lab/Whydra.git
cd Whydra
pip install -e ".[bench]"

Точные версии библиотек, на которых проводились замеры, зафиксированы в requirements.txt (pip install -r requirements.txt).

Как запускать

  1. Прописываем в configs/config.yaml
defaults:
  - _self_
  # выбираем нужный алгоритм 
  - algorithm: rai_stable
  # выбираем нужные датасет
  - benchmark: feedback

# Общие настройки
output_dir: "results"
output_filename: "results.csv"
output_filename_for_bootstrap: "results_by_bootstraps.csv"

# Сохранить промежуточные файлы и графы
keep_intermediate_files: False
# Продолжить расчет с уже посчитанными графами в algo_results/{benchmark_name}
resume: False

# включаем бутстрап 
bootstrap: True
# количество итераций бутстрапа
n_bootstraps: 1
# сид для бутстрапинга
seed: 42

# Настройки визуализации
save_plots: true
plots_dir: "plots"
  1. После этого запускаем
python main.py

После выполнения скрипта в папке output_filename появятся метрики в файле output_filename. А сами изображения графов появятся в plots_dir

В поле algorithm можно выбрать алгоритм:

pc_stable, pc_stable_par, pc_stable_seq, pc_stable_4/8/16
fci_stable, fci_stable_16, fci_stable_cash, fci_stable_paralel_cash
cfci_stable, cfci_stable_paralel_cash
rfci_stable
gfci_stable
fci_plus_stable, fci_plus_stable_paralel_cash
rai_stable, rai_optimized

Для запуска параллельной версии алгоритмов необходимо заполнить количество параллельных потоков в соответствующем файле алгоритма. При отсутствии переменной или при значении 1 расчет запускается в последовательном режиме.

n_jobs: 6

В поле benchmark можно выбрать следующие бенчмарки:

tetrad_discrete
tetrad_linear
# оба содержат в себе по 10 бенчмарков
# в configs/benchmark/tetrad_discrete.yaml
# и в configs/benchmark/tetrad_linear.yaml

bnlearn
# дискретные сети bnlearn: alarm, andes, asia, barley, cancer, child, earthquake,
# hailfinder, hepar2, insurance, sachs, survey, water, win95pts

также есть два дополнительных бенчмарка меньшего размера:

feedback  
lucas

они использовались как вспомогательные во время разработки.

Данные к бенчмаркам

Датасеты в репозиторий не входят. main.py прогоняет алгоритм на всех кейсах, которые найдёт в папке whydra_benchmarks/cases (относительно папки запуска). Каждый кейс раскладывается так:

whydra_benchmarks/cases/<benchmark>/<case>/input/<case>.txt               # данные
whydra_benchmarks/cases/<benchmark>/<case>/ground.truth/<case>.graph.txt  # эталонный граф

Например, whydra_benchmarks/cases/bnlearn/child/input/child.txt.

Архивы с данными:

Запуск:

python main.py algorithm=pc_stable benchmark=bnlearn
python main.py algorithm=rfci_stable benchmark=bnlearn

Из конфига бенчмарка main.py берёт тест независимости (indep_test: chisq для дискретных данных, fisherz для непрерывных).

run_bootstrap_consensus.py строит устойчивый граф по бутстрэп-выборкам одного кейса; он читает данные через loader из конфига бенчмарка (пути в configs/benchmark/*.yaml).

Metadata

Release files for whydra 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for whydra 0.1.1
File Size Uploaded Provenance Actions
whydra-0.1.1.tar.gz 137.8 kB With provenance Details for whydra-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for whydra 0.1.1
File Interpreter ABI Platform Actions
whydra-0.1.1-py3-none-any.whl Python 3 none any Details for whydra-0.1.1-py3-none-any.whl

Total release size: 313.4 kB

Release files / whydra-0.1.1.tar.gz

Download URL whydra-0.1.1.tar.gz
Size 137.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ce7923602d901547573aa4206f0541ce6a4e35a3501fc0156e90f05a823a5b8c
BLAKE2b-256 checksum
How to use checksums
ef6481ce34d2c1b01b1df00131ac744f8ff2541a522b67672b7eb03be0e1630a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / whydra-0.1.1-py3-none-any.whl

Download URL whydra-0.1.1-py3-none-any.whl
Size 175.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6c2526758389a70b65187b2abd208fedca1d67fb79359fe51ef85e93285cd18f
BLAKE2b-256 checksum
How to use checksums
b82e9e80c4c2ee41e3562c33994872161cb930e6a68976b8c2be85eb74c9480b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Security for whydra 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for whydra-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page