[0.2.4] - 2026-11-11
Added
- Added direct GWAS Catalog study-accession support to
SumstatsTableand
GWADataLoader. Accessions are resolved to preferred GRCh37 harmonised,
formatted, or GWAS-SSF summary-statistics files with metadata-based build
detection and actionable errors when no compatible file exists. - Added genome-build metadata to genotype, summary-statistics, annotation, and
LD inputs, including normalization of common GRCh37/hg19 and GRCh38/hg38
aliases, propagation through split/filter operations, and validation against
conflicting builds during loading and harmonization. - Added selective summary-statistics loading through
col_subset, preserving
variant-identification columns and automatically reading dependencies needed
to derive requested statistics. The option is available from parsers,
SumstatsTable, andGWADataLoaderto reduce peak memory use. - Added
--consolidate-metadataand--ziptomgp_compute_ldfor consolidated
Zarr metadata and deterministic zero-compression chromosome archives. Added
--include-ldtomgp_expand_ldfor emitting focal SNP, tagged SNP, and
correlation triples. - Added native batched LD matrix products, transpose-aware triangular products,
compiled diagonal-shift updates, runtime OpenMP capability reporting, and an
LD-product benchmark with expanded operator documentation.
Changed
- Variant harmonization now prefers composite chromosome/position identifiers
when every source provides them and falls back to SNP IDs otherwise. Duplicate
filtering follows the same identifier preference, allowing data without SNP
IDs and avoiding false duplicate removal when rsIDs are reused. - Summary-statistics parsers now store alleles categorically and use compact
single-precision types for most numeric statistics while retaining double
precision for p-values and position parsing. Format-specific derived columns
continue to load their required source fields under column selection. - Reworked
LDLinearOperatorto borrow compatible LD, RHS, and diagonal-shift
buffers; batch multiple right-hand sides; preserve float32/float64 behavior;
support complex inputs without intermediate complex arrays; and avoid dense,
dequantized, per-row, or per-thread temporary matrices. - Optimized native
BlockLDcomputation to apply validated, non-overlapping
block boundaries in one BED-backed pass, including gaps between blocks.
Other genotype backends retain a lazily constructed per-block fallback. - Improved LD command-line workflows with vectorized SNP lookup and aggregate
sparse extraction inmgp_expand_ld, quieterWARNING-level defaults, and
logger setup that prevents duplicate package and progress output. - Updated build and release automation to use current Miniforge and macOS 15
runners, platform-specific C++17/optimization flags, and refreshed locked
oauthlibandpyasn1dependencies.
Fixed
- Fixed overlapping writes in multithreaded triangular LD products by assigning
disjoint output rows to workers, and corrected block-boundary handling for
variants in gaps or outside the supplied blocks. - Fixed Cython C++ template deduction across NumPy/native scalar typedefs,
including the Cython 3.1.2 WebAssembly build path. - Fixed Windows compilation by suppressing unsupported OpenMP SIMD directives
while retaining parallel OpenMP regions, and by passing MSVC-compatible
optimization and C++17 switches. Also corrected Apple Silicon CI and wheel
runner configuration.