Skip to content

betula-cluster v0.1.3

Choose a tag to compare

@github-actions github-actions released this 04 Jul 08:43

Added

  • betula_cluster.tune — memory-aware hyperparameter search over the CF knobs, scored by an internal
    metric (Calinski-Harabasz / Davies-Bouldin) or ARI, with a multi-objective quality / memory /
    speed
    Pareto mode. NumPy-only by default; an optional Optuna backend (TPE / NSGA-II) via
    pip install 'betula-cluster[tune]'.
  • Property-based tests (proptest, dev-only) for the CF-tree invariants: the clustering feature is a
    commutative monoid (merge is associative/commutative and equals a sequential build), folding a
    tree's leaf features reconstructs the whole-dataset feature, the full-covariance upper-triangular
    index is a bijection (incl. dim ≥ 4), and the Frequent-Directions sketch is lossless on low-rank
    data and never overshoots the exact scatter.
  • Sparse-text benchmark (20 newsgroups, TF-IDF): the O(nnz) fit_predict_sparse path and the
    standard reduce-then-cluster pipeline (TruncatedSVD / NMF → k-means) vs scikit-learn, written up
    honestly in bench/RESULTS.md (raw high-d TF-IDF concentrates for every fast clusterer; on NMF
    topics betula matches sklearn).
  • MapperGraph.edge_overlap — a Bhattacharyya coefficient in (0, 1] per Mapper edge, from the pooled
    diagonal-Gaussian summaries of the two nodes' member microclusters. Surfaced on to_networkx() edges
    as overlap=…, so a bridge between well-separated regions reads as a lower-weight edge than one
    inside a dense blob.
  • Documentation site (MkDocs Material + mkdocstrings API autodoc, MathJax-rendered math) built from
    docs/, with a GitHub Pages deploy workflow; pip install 'betula-cluster[docs]' for the toolchain.

Changed

  • Coverage floor (cargo llvm-cov, ≥95 % lines) now also measures the persistence and cli feature
    sets, not just the default core.
  • Declared rust-version = "1.82" (MSRV) and lowered the real floor to it — the streaming heads had an
    implicit 1.87 dependency (u64::is_multiple_of), now rewritten. Added Documentation / Changelog
    project URLs.
  • Docs reconciled to the current suite: 167-case Python suite, 141 Rust tests (137 unit + 4
    integration), and five end-to-end use cases (README, DESIGN.md).
  • Repository hardening: macOS / Windows CI test legs, an sdist install smoke test, a nightly
    cargo audit cron, Dependabot, and SECURITY.md / CONTRIBUTING.md / issue templates.