#1 feat/single-copy-parser |
Replaces kseq on the read path with fr_fastq, copying each FASTA/FASTQ field once into mb_bseq1_t instead of twice. |
I/O perf, conditional: ~10% wall reduction on read-bound 96-thread runs with a slow system zlib; ~0 with zlib-ng (read stage hides under mapping). |
lh3 issue (discussion) |
byte-identical SAM/PAF |
#2 feat/submem-ablation |
Exposes --max-sub-occ / --min-sub-occ to ablate Pass-2 sub-SMEM reseeding. |
Research/measurement knob. No default-behavior change and no perf gain by itself; enables cost/benefit studies of Pass-2. |
lh3#12 |
bit-identical at defaults |
#3 feat/soft-clip-penalty |
Adds -L INT[,INT] 5'/3' soft-clip penalty, matching bwa-mem. |
Compatibility feature. Lets minibwa reproduce bwa-mem clipping decisions; default 0,0 preserves current behavior. |
lh3#13 |
default = unchanged |
#4 chore/meth-cleanups |
Adds a --meth bisulfite CI test + documents the conversion-strand flip and b_ts default. |
Maintainability / regression protection. No runtime change. |
lh3#19 |
confirmed still valid post-meth4; merges clean |
#5 feat/inline-appenders |
Replaces per-record sprintf-lite calls in SAM/PAF formatting with inline byte appenders. |
CPU perf, high-core: ~39% CPU reduction in per-record formatting; matters when formatting is on the critical path (e.g. -t96); ~0 on small machines. |
lh3#32 |
byte-identical SAM/PAF |
#6 perf/ll-sse-affine-reassoc-arm |
Reassociates the affine-gap recurrence in ksw2_ll (mate rescue) for arm64/NEON. |
Kernel perf, arm64-only: 1.13–1.17× on Graviton4, ~1.1–1.2× on Apple NEON; ~2% end-to-end on mate-rescue-heavy runs. |
lh3#37 |
identical scores; ⚠ a differential kernel harness gate on further kernel edits |
#7 feat/alt-aware-liftgroup |
ALT-contig awareness via liftover groups (DRAGEN-style), not the bwa-mem .alt/postalt scheme. |
Correctness/feature for ALT-containing references. Inert without a .alt file. |
fork-only |
byte-identical to baseline when ALT off |
#8 feat/index-threads-v2 |
Parallelizes the SA→BWT index build with OpenMP (parallel fill, fused SSA+inversion, byte-packed compaction, parallel rank-dict build). |
Index-build perf: ~1.8× on DH10B (4.69 Mbp) at 4–8 threads on a 12-core M-series; ~3× at 16 threads on hg38 (original measurement). |
lh3#8 · rebuilt on current master |
byte-identical .mbw across -t 1/2/4/8 (chrM, 2 Mbp synthetic, DH10B) |
#10 perf/pe-encode-vectorize |
Splits the paired-end query encode (pe.c) so the nt4 base-translation gather no longer blocks auto-vectorization of the reverse-complement half. |
CPU perf, marginal: ~1.4× on the isolated PE query-encode at 150 bp; end-to-end neutral — encode is <1% of wall-clock. No intrinsics; just lets -O3 vectorize. |
fork-only |
byte-identical SAM on 6k sampled pairs + 1M real WGS-151bp pairs |
Living index of the draft PRs carried in this fork (
nh13/minibwa). Most began as contributions proposed to upstreamlh3/minibwa; this fork keeps them as drafts against its ownmasterfor continued development, for use cases the fork cares about, and as a place to refine them before any future upstream discussion. Updated as PRs land or change.PRs
feat/single-copy-parserfr_fastq, copying each FASTA/FASTQ field once intomb_bseq1_tinstead of twice.lh3issue (discussion)feat/submem-ablation--max-sub-occ/--min-sub-occto ablate Pass-2 sub-SMEM reseeding.feat/soft-clip-penalty-L INT[,INT]5'/3' soft-clip penalty, matching bwa-mem.0,0preserves current behavior.chore/meth-cleanups--methbisulfite CI test + documents the conversion-strand flip andb_tsdefault.meth4; merges cleanfeat/inline-appenderssprintf-lite calls in SAM/PAF formatting with inline byte appenders.-t96); ~0 on small machines.perf/ll-sse-affine-reassoc-armksw2_ll(mate rescue) for arm64/NEON.feat/alt-aware-liftgroup.alt/postalt scheme..altfile.feat/index-threads-v2.mbwacross-t 1/2/4/8(chrM, 2 Mbp synthetic, DH10B)perf/pe-encode-vectorizepe.c) so thent4base-translation gather no longer blocks auto-vectorization of the reverse-complement half.-O3vectorize.Benefit legend
Notes
--methand themimallocgnu11build fix are intentionally not carried here: both are already available upstream.