jaxqtl 0.3.0 improves cis-scan execution, count-model fitting, and saddlepoint approximation (SPA).
- Reusable compiled scans: Fixed-size genotype blocks reuse JAX compilation across genes for ACAT, SPA, permutation, and Wald testing, reducing repeated compilation and memory pressure.
- Count-model fitting: Refactored Negative Binomial optimization and convergence checks, including dispersion-boundary handling.
- SPA reliability: Bracketed bisection replaces Newton root finding, and log-space tail calculations avoid overflow. Failed SPA corrections now return
NaNinstead of silently substituting an uncorrected normal p-value; this can materially change ACAT results. - Expression PCs: Probabilistic PCA now returns orthonormal sample components ordered by explained variance.
- Python API: Hypothesis tests use typed initialization state with
init(X, y, offset)andtest(X, G, state). Scan execution and aggregation responsibilities are reorganized. - Documentation: Reorganized the user guide and API reference, with ACAT + SPA examples alongside Beta-approximation permutation scans.
For fast gene-level score testing, use --spa --acat. Runtime gains depend on the data and scan settings; permutation scans remain available.
Full changes: v0.2.2...v0.3.0