Download Latest Version v2.0.2 source code.zip (93.6 MB) Google Add to Preferred Sources
Home / v2.0.2
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-09-16 2.0 kB
v2.0.2 source code.tar.gz 2026-09-16 93.6 MB
v2.0.2 source code.zip 2026-09-16 93.6 MB
Totals: 3 Items   187.2 MB 0

Fixed

  • Fixed the ridge correction when correcting for more than one covariate (e.g. lab and processing day). The per-batch shortcut introduced in the C++ rewrite assumed each cell belongs to a single batch, which double-counted cells in the intercept term and dropped the overlap between covariate groups, overcorrecting: a two-cell lab/day example was reversed from [1, 2] to [1.67, 1.33]. The correction now follows the R Harmony ridge calculation and gives [1.4, 1.6], matching R harmony 2.0.4 to within 1.2e-7. Single-covariate results are unchanged. Thanks to @jkhales for finding and fixing this (#54).
  • Harmony no longer reports convergence when the objective increases between iterations; a non-negative relative decrease below epsilon_harmony is now required, so affected runs continue optimizing instead of stopping early. Mirrors R Harmony PR immunogenomics/harmony#293. Results are unchanged for runs whose objective decreases monotonically. Thanks to @fderop (#55).
  • Cluster assignments are computed in log space (a shifted softmax), so very small sigma or very large theta no longer underflow or overflow into NaN assignments. Results are unchanged for ordinary parameters. (#55)
  • If the optimizer state becomes non-finite, run_harmony now raises a RuntimeError naming the stage and parameters instead of silently returning NaNs. (#55)

Development

  • The sanitizer CI job preloads libstdc++ alongside libasan so C++ exceptions thrown by the extension are handled correctly under AddressSanitizer.
  • The pbmc test now compares against the tracked R harmony2 reference (data/pbmc_3500_pcs_harmony2.tsv.gz, generated by scripts/generate_harmony2_reference.R) and requires per-PC correlation

    = 0.99. Previously that file was untracked, so CI silently fell back to a 2022 R v1 reference with a 0.9 threshold and could not catch fidelity regressions. The old reference file is removed.

Source: README.md, updated 2026-09-16