Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

bwa-mem3-bench

bwa-mem3-bench is a benchmarking suite that measures the alignment performance of bwa-mem3 against the upstream bwa-mem2 v2.2.1 baseline. It runs on AWS Batch spot instances across four dataset types — whole-genome sequencing (WGS), whole-exome sequencing (WES), panel, and bisulfite-sequencing (methylation) — all aligned against the hg38 reference. The suite covers three CPU microarchitectures: ARM Neon, x86 AVX2, and x86 AVX-512. Results are collected into a SQLite database for local analysis and reporting. The project is implemented in Python (orchestration, reporting, and CLI), Rust (BAM comparison tool), Snakemake (alignment workflow), and AWS CDK (cloud infrastructure).

When you’d use it

Use bwa-mem3-bench when you need reproducible, multi-architecture throughput numbers before committing a bwa-mem3 change to production or before deciding whether to adopt bwa-mem3 in place of bwa-mem2. It provides a structured “bless baseline, then compare” workflow: an upstream bwa-mem2 run is blessed once per upstream tag and stored in S3; subsequent bwa-mem3 runs are measured against that fixed baseline. Running a full benchmark fires a Snakemake coordinator job on AWS Batch and costs roughly $10 in spot capacity.

How it relates to bwa-mem3

bwa-mem3-bench is the authoritative source of benchmark evidence for every performance claim made in the bwa-mem3 documentation and changelog. When the Performance Overview cites speedup numbers, those numbers come from bwa-mem3-bench runs collected after the relevant PR was merged. The suite also validates that bwa-mem3 does not regress relative to bwa-mem2 on any supported architecture before a new release is tagged.

Per-release concordance history

Per-(release, sample) primary-alignment concordance against upstream bwa-mem2 v2.2.1, with supplementary-alignment counts, across released bwa-mem3 versions. Concordance is the minimum vs-baseline value over reps and x86 architectures (deterministic per sample); supp_query/supp_baseline are total supplementary records emitted by bwa-mem3 and bwa-mem2, and count_mismatch is the number of templates whose supplementary count differs. The divergence catalog explains what each kind of drift is and its budget.

This table and the divergence catalog are both generated from the benchmark database — do not edit them by hand. Regenerate after a new release is collected with pixi run python -m bwa_mem3_bench.cli bench docs --releases v0.2.0=<sha>,v0.2.1=<sha>,... (in the bwa-mem3-bench repo), then replace the content between the FG-DIVERGENCE-CATALOG / FG-RELEASE-TABLE markers with the emitted runs/docs/{divergence-catalog.md,release-table.md} (the inject_between_markers helper in bwa_mem3_bench.report.docs does exactly this splice).

releasesampleconcordance_%supp_querysupp_baselinecount_mismatch
v0.2.0meth-twist-emseq-5M98.8852000
v0.2.0panel-twist-5M100.00001869461869460
v0.2.0smoke-1M100.0000145514550
v0.2.0smoke-meth98.8573000
v0.2.0wes-5M100.0000511851180
v0.2.0wgs-5M100.000049686496860
v0.2.1meth-twist-emseq-5M98.8852000
v0.2.1panel-twist-5M100.00001869461869460
v0.2.1smoke-1M100.0000145514550
v0.2.1smoke-meth98.8573000
v0.2.1wes-5M100.0000511851180
v0.2.1wgs-5M100.000049686496860
v0.2.2meth-twist-emseq-5M98.8773000
v0.2.2panel-twist-5M99.9414187039186946199
v0.2.2smoke-1M99.9460000
v0.2.2smoke-meth98.8429000
v0.2.2wes-5M99.9996512351185
v0.2.2wgs-5M99.98934992649686256

See also: Performance Overview · SIMD dispatch matrix · bwa-mem2 (upstream) · Release process