Skip to content

Releases: kent-tokyo/causasv

v0.8.9

Choose a tag to compare

@github-actions github-actions released this 03 Oct 01:33

What's Changed

  • deps(rust): bump serde_json from 1.0.150 to 1.0.151 by @dependabot[bot] in #44
  • deps(rust): bump rand from 0.10.2 to 0.10.3 by @dependabot[bot] in #57
  • deps(rust): bump indexmap from 2.14.0 to 2.14.2 by @dependabot[bot] in #54
  • deps(rust): bump pyo3 from 0.29.0 to 0.29.2 by @dependabot[bot] in #47
  • deps(rust): bump thiserror from 2.0.19 to 2.0.20 by @dependabot[bot] in #48
  • deps(python): bump ruff from 0.15.20 to 0.16.9 in /py by @dependabot[bot] in #59

Full Changelog: v0.8.8...v0.8.9

v0.8.8

Choose a tag to compare

@github-actions github-actions released this 27 Jul 09:26

What's Changed

  • feat: add Cpdag type — PDAG representation, validation, DAG extension by @kent-tokyo in #38
  • feat: land strong d-convex hull graph reduction on main (PR #39 follow-up) by @kent-tokyo in #41

Full Changelog: v0.8.7...v0.8.8

v0.8.7

Choose a tag to compare

@github-actions github-actions released this 27 Jul 06:34

Full Changelog: v0.8.6...v0.8.7

v0.8.6

Choose a tag to compare

@github-actions github-actions released this 27 Jul 02:48

What's Changed

  • fix: resolve cargo-audit and pip-audit security findings by @kent-tokyo in #34
  • feat: quietset label-instability → causasv ASV attribution workflow by @kent-tokyo in #33
  • fix: CausalDAG.from_json silently returns an empty graph on standard JSON (P0) by @kent-tokyo in #35
  • fix: exact_tree feasibility guard against combinatorial explosion (issue #36) by @kent-tokyo in #37
  • ci: bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #28
  • ci: bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #29
  • deps(rust): bump rand from 0.10.1 to 0.10.2 by @dependabot[bot] in #30
  • deps(rust): bump thiserror from 2.0.18 to 2.0.19 by @dependabot[bot] in #31
  • ci: bump actions/setup-python from 6 to 7 by @dependabot[bot] in #32

Full Changelog: v0.8.5...v0.8.6

v0.8.5

Choose a tag to compare

@github-actions github-actions released this 29 Jun 01:53

Full Changelog: v0.8.2...v0.8.5

v0.8.2

Choose a tag to compare

@github-actions github-actions released this 28 Jun 12:12

Full Changelog: v0.8.1...v0.8.2

v0.8.1

Choose a tag to compare

@kent-tokyo kent-tokyo released this 27 Jun 08:19

v0.8.1

Changed

  • approx serial path: log-weight normalization now applied consistently across all IS paths. The seeded single-threaded approximate_asv path now collects samples before processing and subtracts max(log_w) before exp(), matching the behavior of the batched, adaptive, and adaptive-batched paths. No change to ASV values (self-normalized IS is scale-invariant).

Docs

  • README badge count reduced from 11 to 7
  • README_ja and README_zh fully synced to v0.8.x feature set

Full Changelog: v0.8.0...v0.8.1

v0.8.0

Choose a tag to compare

@kent-tokyo kent-tokyo released this 27 Jun 07:54

v0.8.0

Accuracy

  • Kahan compensated summation across all IS paths (seeded parallel workers, adaptive_batched)
  • Per-batch log-weight normalization in adaptive paths prevents overflow on extreme frontier distributions
  • src/numerics.rs centralizes numerical helpers

Speed

  • AsvExplainer::new() caches parents_mask (eliminates repeated O(n²) setup) and is_rooted_tree (O(n) → O(1) for auto dispatch)
  • approx_adaptive ~5× faster than fixed-sample approx when estimates converge early

Diagnostics

  • explain_with_diagnostics() returns fallback_from, fallback_reason, and selected_method
  • auto() fallback from exact_dag_sparse to approx is always explicit

Testing

  • Property-based tests expanded from 7 to 10 axioms (additivity, relabeling invariance, sparse DP consistency)

API Cleanup

  • Dag::parents_raw narrowed to pub(crate); integration tests use stable Dag::parents() API
  • CHANGELOG.md added

Docs & Examples

  • docs/benchmarks.md: full benchmark tables
  • examples/benchmark_batched_value_fn.py: demonstrates value_fn_batch GIL-reduction benefit

What's Changed

  • feat: auto() falls back to approx when exact_dag_sparse hits memory/overflow limit by @kent-tokyo in #26
  • feat: Kahan summation + log-weight normalization for approximate ASV by @kent-tokyo in #27

Full Changelog: v0.7.0...v0.8.0

v0.7.0 — sparse exact DP, CI, parallel, batch, ensemble, inspect

Choose a tag to compare

@kent-tokyo kent-tokyo released this 27 Jun 04:38

What's new in v0.7.0

New exact computation method

  • exact_dag_sparse: BFS-based sparse order-ideal DP for general DAGs with n ≤ 28. Visits only valid order ideals instead of all 2^n masks — orders-of-magnitude fewer states for sparse DAGs (chains, trees, few branching points). Returns n_order_ideals, state_ratio, and memory_mb diagnostics.
  • auto() dispatch extended: 20 < n ≤ 28 → exact_dag_sparse

Approximate ASV improvements

  • seed + parallel=True: Deterministic parallel sampling via per-worker splitmix64 seed splitting. Same seed always produces the same result regardless of thread count.
  • value_fn_batch: Accept value_fn_batch(coalitions: list[list[str]]) -> list[float] to amortize Python GIL overhead — reduces call count from O(n_samples × n) to O(n_samples / batch_size).
  • ci=0.95 on explain_adaptive: Returns ci_low and ci_high per feature using normal approximation (z × stderr).

New Python helpers

  • ASVEnsembleExplainer: Compute ASV across multiple user-supplied DAGs and return mean, std, and rank stability (Kendall τ).
  • dag.inspect(): Structural summary of a DAG — n_nodes, n_edges, is_rooted_tree, max_depth, recommended_method, estimated_dense_states.
  • explain_stability(): Run explain() with multiple seeds and return mean/std/rank_stability to quantify approximation reliability.

Correctness & reliability

  • Overflow guard: CausasvError::Overflow when linear extension counts exceed u64::MAX — no more silent wrong results.
  • Property-based tests: 7 proptest axiom checks (efficiency, exact==exact_dag, exact_tree==exact, dummy axiom) on randomly generated DAGs.

Graph API

  • dag.to_json() / dag.from_json(): Round-trippable JSON serialization.
  • dag.ancestors(), dag.descendants(), dag.topological_layers(): Graph traversal helpers.

Breaking changes

None. All public API is backward-compatible.

What's Changed

  • feat: add TabularExplainer for sklearn-compatible models by @kent-tokyo in #11
  • fix: add version-sync CI job to prevent metadata drift by @kent-tokyo in #12
  • feat: add CausalDAG.to_json() and from_json() by @kent-tokyo in #13
  • feat: add CausalDAG.ancestors(), descendants(), topological_layers() by @kent-tokyo in #14
  • fix: normalize formatting and fix README Paper correspondence (v0.6.1) by @kent-tokyo in #15
  • feat: add value_fn_batch for batched coalition evaluation (v0.7.0) by @kent-tokyo in #16
  • feat: add deterministic parallel sampling (seed + parallel=True) (v0.8.0) by @kent-tokyo in #17
  • feat: add exact_dag_sparse — sparse order-ideal DP for n > 20 DAGs (v0.10.0) by @kent-tokyo in #18
  • feat: add ASVEnsembleExplainer for DAG uncertainty quantification (v0.11.0) by @kent-tokyo in #19
  • feat: add ci= parameter to explain_adaptive for confidence intervals (v0.9.0) by @kent-tokyo in #20
  • feat: add dag.inspect() for DAG structural summary and method recommendation (v0.12.0) by @kent-tokyo in #21
  • fix: sync README for v0.7.0 and bump version by @kent-tokyo in #22
  • feat: add explain_stability() for seed-stability diagnostics by @kent-tokyo in #23
  • feat: add overflow guard to exact DAG DP (CausasvError::Overflow) by @kent-tokyo in #24
  • feat: add proptest property-based tests for ASV axioms by @kent-tokyo in #25

New Contributors

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 26 Jun 23:56

What's Changed

  • deps(rust): Bump criterion from 0.5.1 to 0.8.2 by @dependabot[bot] in #9
  • deps(python): Update maturin requirement from <2,>=1 to >=1.14.1,<2 in /py by @dependabot[bot] in #8
  • ci: Bump actions/checkout from 4 to 7 by @dependabot[bot] in #1
  • deps(rust): Bump rand_chacha from 0.3.1 to 0.10.0 by @dependabot[bot] in #3
  • ci: Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #4
  • ci: Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #5
  • ci: Bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #6
  • deps(rust): bump pyo3 from 0.23.5 to 0.29.0 by @dependabot[bot] in #7
  • deps(rust): bump thiserror from 1.0.69 to 2.0.18 by @dependabot[bot] in #10

New Contributors

Full Changelog: v0.5.0...v0.6.0