Skip to content

v5.4.2

Choose a tag to compare

@michael-denyer michael-denyer released this 09 Jul 16:56
· 478 commits to master since this release
ba0ecf0

Patch release. Internal LMM engine consolidation plus a LOCO correctness fix.

Fixed

  • LOCO SNP-statistics basis with missing phenotypes: when some phenotypes/covariates are missing (analysed ≠ all samples), LOCO now computes each chromosome's SNP mean/MAF, reported allele frequency, and missing-genotype imputation over the analysed samples — matching GEMMA — instead of reusing the all-sample statistics cached during the kinship pass. Previously the cached and non-cache paths could report different allele frequencies (and, with missing genotypes, different effect estimates) for the same run.

Changed

  • Shared NumPy LMM chunk runner across the batch, streaming, and LOCO paths, decomposed into focused sibling modules (all under 1000 lines).
  • Typed LMM dispatch path: a DispatchPath sum type replaces the former LmmDispatch boolean bag; the compute ladder and workspace allocator select the kernel via exhaustive match, and illegal dispatch states are unrepresentable by construction.
  • LOCO now runs through the shared C kernels at n_refine=20 (previously pure-NumPy at n_refine=10); per-SNP logl_H1/lambda diagnostics shift slightly, while p-values, effect sizes, and significance calls are unchanged.
  • Single source of truth for C-availability flags; deduplicated per-chunk result sinks.

Removed

  • The dead write_streaming_chunk helper and the unused fused_mode4 parameter on compute_chunk_size_numpy.

Wheels (incl. MKL-ILP64 Linux) are built and published to PyPI by the release workflow.