Repository navigation
2.8.0
Highlights
🧬 PairHMM Alignment Backend — Alternative Phase 3 alignment via --alignment-backend hmm with probabilistic scoring using base quality probabilities. Configurable LLR threshold and gap probabilities for repeat/non-repeat regions. 6 new CLI options, exposed as first-class Nextflow params.
🔬 MNP Quality Strategy — MNP quality now assessed using min(BQ) across the entire block, matching C++ GBCMS baseCountDNP. Low-quality MNP reads fall through to check_complex for masked comparison instead of being silently skipped.
📚 Comprehensive Documentation Audit — 28 fixes across 23 files. All GitBook URLs replaced with MkDocs, version templating (X.Y.Z), 5 mermaid diagrams updated, architecture module tree refreshed, PairHMM documented end-to-end.
✨ Added
- PairHMM alignment backend (
--alignment-backend hmm) with LLR scoring, tunable gap probabilities - MNP min-BQ-across-block quality strategy with
check_complexfallback - Per-phase ClassifyResult counters for diagnostic phase tracking
--trace flag— two-tier Rust logging via pyo3-log
🔧 Fixed
- Phase 2/2.5 overcounting — skip when
ref_len > 2 × alt_len - Phase 3 bypass for pure DEL/INS — removed i
s_worth_realignmentprefilter - DP anchor overlap — single-position check matching Mutect2/VarDict/samtools
- MNP LowQuality routing — falls through to
check_complexinstead of skip - S3 underflow guard — negative
ctx_offsetin deletion validation
🏗️ Refactored
- Split
counting.rs+normalize.rsinto idiomatic module directories (14 Rust modules) AlignmentBackendenum threaded through all Phase 3 call sites
📚 Documentation
- 28 fixes across 23 files — GitBook→MkDocs, X.Y.Z version templating, CLI docs, diagrams
- Deleted stale
nextflow/CHANGES.md
🧪 Tests
- 30+ new tests: alignment backend, MNP, multi-allelic, DP/neither, fragment consensus
Full Changelog: 2.7.0...2.8.0
Install: pip install py-gbcms==2.8.0 Docker: docker pull ghcr.io/msk-access/py-gbcms:2.8.0 Docs: https://msk-access.github.io/py-gbcms/