| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-04-24 | 1.6 kB | |
| v2.0.0 source code.tar.gz | 2026-04-24 | 93.7 MB | |
| v2.0.0 source code.zip | 2026-04-24 | 93.7 MB | |
| Totals: 3 Items | 187.3 MB | 0 | |
Complete rewrite with C++ backend (Armadillo + nanobind), matching the R harmony2 package step-by-step.
Highlights
- ~10x faster than v0.1.0: 858k cells in ~36s on Apple M1 Ultra (vs ~340s previously)
- Matches R harmony2: correlation ≥0.998 across all PCs
- Minimal dependencies: only
numpyat runtime - Pre-built wheels for Linux (x86_64, aarch64) and macOS (x86_64, arm64), Python 3.9–3.13
New
- C++ backend with BLAS-accelerated dense matrix ops (Accelerate on macOS, OpenBLAS on Linux)
- Custom scatter/gather kernels replace all sparse matrix operations
- K-means initialization matches R exactly (Gumbel-max cosine-distance sampling)
ncoresparameter to control BLAS thread countbatch_prop_cutoffparameter for underrepresented batch handling- Arrowhead matrix inverse for fast single-covariate correction
- Accepts pandas DataFrame, dict of arrays, or NumPy array for
meta_data - C++ progress messages routed through Python
loggingfor proper integration with downstream packages (thanks @yakirr)
Breaking changes
lambdefaults to automatic estimation (was fixed1). Passlamb=1for old behavior.- Default parameters changed to match R harmony2:
max_iter_kmeans20→4,epsilon_cluster1e-5→1e-3,epsilon_harmony1e-4→1e-2 - Only
numpyrequired at runtime (previously pandas, scipy, scikit-learn)
See CHANGELOG.md (github.com) for full details.