| name | bio-workflows-atacseq-pipeline |
| description | Orchestrates the end-to-end bulk ATAC-seq pipeline from FASTQ to differential accessibility and TF footprints, chaining Nextera-aware fastp QC, Bowtie2 alignment, chrM removal, dedup, a single Tn5 +4/-5 shift, MACS3 peak calling, Corces fixed-width consensus, DiffBind/csaw differential accessibility, and TOBIAS footprinting. Use when committing the reference build + blacklist once, recognizing ATAC has NO input control (the shift-extend model IS the background), applying the Tn5 shift exactly once (never combining -f BAMPE with --shift/--extsize), removing chrM before calling, building a fixed-width consensus so per-sample counts are comparable, or choosing MACS3 vs Genrich vs HMMRATAC. Hands mechanism to the atac-seq component skills; not a re-teach of any single step. |
| tool_type | mixed |
| primary_tool | MACS3 |
| workflow | true |
| depends_on | ["read-qc/fastp-workflow","read-alignment/bowtie2-alignment","alignment-files/duplicate-handling","atac-seq/atac-peak-calling","atac-seq/atac-qc","atac-seq/consensus-peakset","atac-seq/differential-accessibility","atac-seq/footprinting","atac-seq/motif-deviation","atac-seq/nucleosome-positioning"] |
| qc_checkpoints | [{"after_qc":"Q30 >85%, adapter content <5% (Nextera)"},{"after_alignment":"Mapping rate >80%, mitochondrial <20% (Omni-ATAC lower)"},{"before_dedup":"NRF >0.8, PBC1 >0.8 (computed PRE-dedup)"},{"after_peaks":"FRiP >0.2, TSS enrichment >5 (ENCODE v3; v4 thresholds differ, do not mix)"},{"after_consensus":"Fixed-width (Corces 501 bp) consensus built before counting for differential"}] |
Version Compatibility
Reference examples tested with: Bowtie2 2.5.3+, MACS3 3.0+, Genrich 0.6+, bedtools 2.31+, deepTools 3.5+ (alignmentSieve), fastp 0.23+, samtools 1.19+, DiffBind 3.12+, TOBIAS 0.16+
Before using code patterns, verify installed versions match. If versions differ:
- R:
packageVersion('<pkg>') then ?function_name to verify parameters
- CLI:
<tool> --version then <tool> --help to confirm flags
If code throws ImportError, AttributeError, or TypeError, introspect the installed
package and adapt the example to match the actual API rather than retrying.
Note: macs3 callpeak -f BAMPE uses real fragment lengths and IGNORES --shift/--extsize/--nomodel; the cut-site style needs -f BAM/-f BED on Tn5-shifted reads. alignmentSieve --ATACshift applies the +4/-5 shift once. ENCODE ATAC-seq v3 and v4 QC thresholds are not interchangeable. Confirm in-tool before quoting.
ATAC-seq Pipeline
"Run ATAC-seq from FASTQ to differential accessibility and footprints" -> Chain QC/trim, alignment, chrM removal, dedup, a single Tn5 shift, peak calling, fixed-width consensus, differential accessibility, and footprinting.
- CLI + R: fastp -> bowtie2 -> drop chrM -> markdup -> Tn5 shift (once) -> macs3 -> Corces consensus -> DiffBind/csaw -> TOBIAS
This is a workflow skill: it owns the chaining decisions and hand-offs, not the internals of any one step. Every step below cross-references the component skill that teaches its mechanism.
The governing principle
ATAC-seq differs from ChIP-seq at four seams, and each is where the analysis goes wrong.
- There is NO input control -- the shift-extend cut-site model IS the background. ATAC has no matched IP/input; peak significance comes from local lambda over the Tn5 insertion signal. Do not invent a "control"; commit instead to the build + ENCODE blacklist (removed before calling) as the coordinate frame.
- The Tn5 +4/-5 shift is applied EXACTLY ONCE, after dedup and chrM removal.
alignmentSieve --ATACshift (or one bedtools awk) applies it. Applying it twice, or combining -f BAMPE with --shift/--extsize (silently ignored), misplaces every cut site. Pick ONE calling mode: cut-site (-f BAM/-f BED + --nomodel --shift -75 --extsize 150) OR fragment (-f BAMPE on shifted reads, NO ).