sarek completeness audit (2026-08-21)
Upstream: nf-core/sarek @ 3.10.0 · Port: oxo-flow-sarek (live-verified).
Mode matrix (upstream — parameter cross-product, one workflow)
| axis | values |
|---|---|
| --step | mapping (default) / markduplicates / prepare_recalibration / recalibrate / variant_calling / annotate |
| library | WGS / WES / panel (--wes, --intervals, --no_intervals) |
| status | germline / tumor-only / somatic pair (samplesheet status column) |
| aligner | bwa-mem (default) / bwa-mem2 / dragmap / sentieon-bwamem / parabricks |
| tools (germline) | haplotypecaller, deepvariant, freebayes, mpileup, manta, strelka, tiddit, cnvkit, indexcov, parabricks_haplotypecaller, sentieon_dnascope, sentieon_haplotyper |
| tools (tumor-only) | mutect2, controlfreec, cnvkit, freebayes, lofreq, manta, msisensor2, mpileup, sentieon_tnscope, tiddit |
| tools (somatic) | mutect2, ascat, controlfreec, cnvkit, freebayes, manta, strelka, indexcov, msisensorpro, muse, sentieon_tnscope, tiddit |
| joint calling | --joint_germline (VQSR chain) / --joint_mutect2 |
| post-calling | --filter_vcfs / --normalize_vcfs / --snv_consensus_calling / --concatenate_vcfs / --tools varlociraptor |
| annotation | snpeff / vep / merge / bcfann / snpsift (+ VEP plugins loftee/dbnsfp/condel/mastermind/phenotypes/spliceai/spliceregion) |
| UMI | fgbio consensus / read-header / fastp / sentieon_consensus |
| engines | GATK Spark MD+BQSR, Parabricks GPU path |
34 tools across 3 statuses, all dispatch-verified by the auditor.
Gap tiers vs the port
P1 (license): Sentieon (4 entry points + 2 joint flavors — paid license secret), Parabricks (NVIDIA NGC + GPU, no conda profile), Mastermind VEP plugin (paywalled DB, user-supplied file).
P0 (portable — the large surface): dragmap + bwa-mem2 aligners; germline callers deepvariant/freebayes/mpileup/tiddit/cnvkit/indexcov; tumor-only controlfreec/lofreq/msisensor2; somatic ascat (free refs, hard-error if missing)/controlfreec/muse/msisensorpro; joint calling chains (GATK VQSR + sentieon variants); post-calling filter/normalize/consensus/concatenate + varlociraptor chain; annotation snpeff/merge/bcfann/snpsift + VEP plugin set; UMI modes; spring/bam-convert inputs; --step restarts; bbsplit contamination filter.
P2 (config): --skip_tools gates, --save_mapped/--save_output_as_bam, trim/split args, interval scatter, sex-field requirements, emit modes, cache download vs local cache.
Gates beyond licenses: AWS-hosted refs/caches (s3 ngi-igenomes + annotation-cache), ASCAT allele/loci refs (free but must be fetched), BQSR dbsnp/known-indels, Mutect2 gnomAD/PON (warn-only), sex field for ascat/controlfreec/varlociraptor. Copyleft notes: FreeBayes/Strelka/Manta GPL-family (compliance note, no runtime gate).
Verdict
The biggest audit surface of the batch — upstream is a 34-tool matrix across 3 statuses; the ported default (bwa-mem + strelka/hc subset) leaves the majority of callers and all 4 alternative aligners as P0.
Re-verification (2026-08-23, heavy group 2/3)
Engine: latest main (post-v0.14.1) · Box: tx-ubuntu · Mode: real CLI
run, not dry-run (checkpoint cleared, forced real execution) ·
-j 2 --keep-going.
165 succeeded / 0 failed first run + 1/38/0 resume — the single
resume rule was multiqc after the env fix. Coverage chain (real
execution): fastp → bwa mem → gatk markduplicates →
baserecalibrator/applybqsr → haplotypecaller → cnnscorevariants
→ filtervarianttranches → vep → bcftools/vcftools stats → multiqc.
The only failure was box-side: a stale pre-built multiqc env (1.29 +
rich 15 incompatible, rich.panel AttributeError); the repo yaml
already pins multiqc=1.35, so no repo change — conda install
multiqc=1.35 on the box. Lesson recorded in the failure catalog
(shared-env caches can lag repo pins).