Skip to content

chipseq completeness audit (2026-08-21)

Upstream: nf-core/chipseq @ 2.1.0 · Port: oxo-flow-chipseq (live-verified).

Mode matrix (upstream — all parameter-driven, one entry point)

axis options default
library layout paired / single-end (per-sample samplesheet)
aligner bwa / bowtie2 / chromap / star bwa
peak mode broad / --narrow_peak broad
consensus peaks --skip_consensus_peaks ON
DESeq2 QC --skip_deseq2_qc ON

NOT runnable at this tag: differential binding (removed in 2.0.0 — only reproducibility QC remains), UMI mode (with_umi=false hardcoded, UMITOOLS_EXTRACT is dead code), no-input mode (input mandatory).

Gap tiers vs the port

P0 (portable): the 3 non-default aligners — bowtie2, chromap, star (each = index build + align step only; downstream shared). SE branch (BAMTOOLS_FILTER se-JSON + SAMTOOLS_INDEX + BAM_STATS; bigWig -fs).

P2 (config variants — the bulk of the surface): narrow/broad (--broad_cutoff), --macs_fdr/--macs_pvalue, --save_macs_pileup, --min_reps_consensus, all --skip_* gates (consensus_peaks, deseq2_qc, peak_annotation, peak_qc, fastqc, trimming, preseq, picard_metrics, spp, plot_profile, plot_fingerprint, igv, multiqc), --keep_dups, --keep_multi_map, --save_align_intermeds/--save_trimmed/--save_reference, --fragment_size, trim args, --bwa_min_score, --seq_center, --deseq2_vst, iGenomes genome entries, manual reference overrides.

P1: none hard — all tools OSS. Soft gate: UCSC bedGraphToBigWig (kent utilities: free academic/non-profit, UCSC license for commercial — document it).

External deps: iGenomes S3 refs, blacklists ship in-repo, nf-core/configs fetch (warning-only offline), test data HTTPS.

Verdict

Likely the lightest audit of the batch — default bwa+broad path ported, the gap surface is almost entirely P2 toggles + 3 P0 aligners sharing the downstream chain.

Re-verification (2026-08-23, light group)

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

143 succeeded, 11 skipped, 0 failed, exit 0, one round, zero repo fixes. Coverage chain: bwa → markdup → blacklist filter (correct -U semantics — the workflow itself documents the earlier -L inversion fix) → deeptools QC → macs3 callpeak (S1 treatment group) → FRiP → homer annotation → multiqc. All 11 skips are intentional semantics: C1 control sample has no peaks called (optional inputs missing) + deseq2_qc when gate false.