Skip to content

scrnaseq completeness audit (2026-08-21)

Upstream: nf-core/scrnaseq @ 4.2.0 · Port: oxo-flow-scrnaseq (23 rules, cellranger-based path, live-verified).

Mode matrix (upstream)

Single workflow, 6 aligner modes via --aligner (default simpleaf), protocol matrix via --protocol (10XV1-4/dropseq/smartseq/custom), plus per-mode samplesheet columns (cellrangerarc sample_type, cellrangermulti feature_type).

mode 10x 3' Drop-seq Smart-seq3 ATAC/Multiome VDJ Multi-modal
simpleaf (default)
kallisto (kb)
star (STARsolo)
cellranger ✓ auto/SC3Pv1-4
cellrangerarc
cellrangermulti ✓ auto ✓ (gex/vdj/ab/crispr/cmo)

Smart-seq2 explicitly routed to nf-core/rnaseq; cell hashing not supported.

Gap tiers vs the port

P0 (portable, must port): - simpleaf (upstream DEFAULT): SIMPLEAF_INDEX (piscem) / SIMPLEAF_QUANT (alevin-fry, unfiltered-pl) / QCATCH empty-drop QC — all OSS. - kallisto: KALLISTOBUSTOOLS_REF / COUNT (kb_workflow standard|lamanno| nac) — OSS. - star: STAR_GENOMEGENERATE / STAR_ALIGN (STARsolo; --star_feature Gene|GeneFull|Velocyto) + STAR_GENOMEPARAMS_UPGRADE legacy-index path — OSS. - cellrangerarc (10x ATAC/Multiome): CELLRANGERARC_MKGTF/MKREF/COUNT. - cellrangermulti: PARSE_CELLRANGERMULTI_SAMPLESHEET, CELLRANGER_MKVDJREF, CELLRANGER_MULTI + optional refs (--gex_frna_probe_set/--gex_target_panel/--gex_cmo_set/--fb_reference/ --vdj_inner_enrichment_primers).

P1 (license): Cell Ranger container is 10x-EULA'd AND container-only (hard-fails under conda profiles). The port's existing cellranger path already accepts this constraint — document it uniformly across all cellranger-family modes.

P2 (config variants): protocol matrix, --skip_fastqc/--skip_qcatch/ --skip_cellbender/--skip_multiqc, index pre-supply (--*_index/--txp2gene), --barcode_whitelist, --save_align_intermeds, cellbender GPU toggle, iGenomes --genome entries, cellranger-multi per-type channels.

Shared tail (all modes): FASTQC, GUNZIP_FASTA/GTF, GTF_GENE_FILTER, GTF_SOURCE_FIX (cellranger family + iGenomes), MTX_TO_H5AD, CONCAT_H5AD, ANNDATAR_CONVERT, CELLBENDER_REMOVEBACKGROUND (raw-only, not cellrangerarc), MULTIQC.

Dead at this tag: GFFREAD_TRANSCRIPTOME, gffread, unzip modules.

Notes

  • The port's live-verified path = cellranger, which is NOT upstream's default mode (simpleaf). Coverage verdict: default-path with a large P0 surface (5 of 6 aligner modes).
  • Cellbender CPU fallback exists (GPU image only with ext.use_gpu).
  • External deps: iGenomes AWS S3 refs, Seqera Wave/community containers (mtx_to_h5ad/anndatar_convert/qcatch) — registry dependency, not a gate.

Re-verification (2026-08-23, 9-mini queue 3/9)

Engine: latest main (post-v0.14.1) · Box: tx-ubuntu (singularity) · Mode: real CLI run, not dry-run · -j 2 --keep-going.

22 succeeded, 10 skipped, 0 failed, exit 0. Important: the first launch was a 0/32 pure checkpoint no-op (Aug-19 checkpoint all fresh) — NOT a real test. The run was forced (rm -rf .oxo-flow results) and then truly executed 22 rules: fastqc → cellranger mkref (reused) → cellranger_count S1+S2 (real runs) → h5ad conversion → anndatar filter → cellbender → multiqc. All 10 skips are reference-build reuse + condition gates.