Repository navigation
v5.4.2
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
DispatchPathsum type replaces the formerLmmDispatchboolean bag; the compute ladder and workspace allocator select the kernel via exhaustivematch, and illegal dispatch states are unrepresentable by construction. - LOCO now runs through the shared C kernels at
n_refine=20(previously pure-NumPy atn_refine=10); per-SNPlogl_H1/lambdadiagnostics 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_chunkhelper and the unusedfused_mode4parameter oncompute_chunk_size_numpy.
Wheels (incl. MKL-ILP64 Linux) are built and published to PyPI by the release workflow.