Sanity check · ATAC-seq
How to Tell If You Sequenced Deep Enough in ATAC-seq
Before you pay for another lane, find out whether your ATAC-seq libraries are out of depth or out of complexity, and whether a third replicate would help more.
By Ming "Tommy" Tang, Director of Bioinformatics in Big Pharma · Reviewed October 2026 · 5 min read
You have ATAC-seq from sorted cells, two to four replicates per condition, and a sequencing core that offers to top up the libraries. Or a reviewer asks whether the study was deep enough. The raw read count on the report does not answer that. What matters is how many usable fragments are left after you remove chrM, duplicates and low-quality alignments, and whether the peaks you call are still growing with depth.
If you miss this, you either pay for reads that add nothing, or you build a differential accessibility analysis on libraries that were never complex enough to support it. Deeper sequencing of a low-complexity library mostly re-reads the same fragments. Replicates are what buy you statistical power.
In the next hour you can count usable fragments per sample, check library complexity, run a downsampling saturation test on peak number, and decide between more reads, more replicates, or a repeat of the library prep.
What it looks like when it's happening
- Raw read counts look healthy (tens of millions per sample), but after chrM and duplicate removal you have far fewer fragments than the sequencing report suggested.
- Duplicate rate climbs sharply with each top-up of sequencing, and NRF or PBC1 sit below 0.9 while PBC2 sits below 3.
- Peak count keeps rising almost linearly when you downsample to 25%, 50%, 75% and 100% of fragments, so the curve has not flattened.
- Peak count plateaus well before your full depth, and the extra reads only add low-signal peaks near the threshold.
- Replicates share only a modest fraction of peaks, and the consensus set shrinks a lot when you require a peak in more than one replicate.
- One sample has much more depth than the others, and the differential accessibility hits are enriched for low-accessibility regions that are only called in the deepest samples.
- FRiP is below 0.2 and TSS enrichment is below 5, so the sample is shallow in signal even though the read count is high.
Why it happens
Tn5 tags a limited number of accessible molecules in a limited number of nuclei. A bulk sample only contains so many unique, accessible fragments. Once you have sampled most of the distinct fragments that the library holds, extra reads are PCR copies of molecules you have already seen. That is why depth stops helping: complexity, not depth, limits what you find. In bulk samples, peak discovery saturates around 50 million usable fragments.
The number on the sequencer report is not the number that counts. Reads from chrM, unmapped or low-quality alignments, and PCR duplicates are removed first. A library with high mitochondrial content or heavy PCR bottlenecking can lose most of its reads before peak calling. Low input cell numbers, over-tagmentation and too many PCR cycles all push complexity down, and sequencing harder cannot fix that.
Depth also interacts with the statistics. Samples with different depths detect different numbers of low-accessibility regions, so depth imbalance across conditions can produce false differential calls in weak peaks, the same artifact you see in RNA-seq. Replicates measure biological variance, which depth cannot reduce. So once a library is saturated, the useful spend is on replicates, as long as each replicate is itself a good library.
The field has not settled whether the nucleosome-free to mononucleosome ratio is a better saturation indicator than absolute peak count, and saturation behaviour differs by cell type and tissue. Treat 50 million as a bulk reference point and measure your own curve.
The checks
Run them in order. Each one tells you what healthy looks like and what the problem looks like.
0/7 checked · saved in this browser
Run
samtools flagstaton the BAM after alignment and again after filtering (unmapped, mate unmapped, non-primary, QC-fail, duplicates, chrM). The first number is reads; divide by 2 for fragments in paired-end data. Compare the final fragment count per sample against the roughly 50 million usable fragments where bulk peak discovery saturates. The ENCODE standard asks for 50 million paired-end reads (25 million fragments) per replicate as a minimum.bashsamtools flagstat input.bam samtools view -h -F 1804 input.bam | samtools view -b > filtered.bam samtools flagstat filtered.bam- Healthy
- Usable fragments after filtering are close to the depth you planned, and alignment rate is above 95% (above 80% may be acceptable) before filtering.
- Red flag
- A large drop between raw and filtered counts, or a final count far below the depth you ordered, means your real depth is lower than the report says.
Count reads on chrM versus all aligned reads with
samtools idxstats, and compare to the total. This is a depth tax: every chrM read is a read that did not map to nuclear chromatin. Also confirm that chrM was removed from the BAM you use downstream.bashsamtools idxstats input.bam | awk '{t+=$3; if($1=="chrM"||$1=="MT") m+=$3} END{print m/t}'- Healthy
- chrM is a small share of aligned reads, so most of your sequencing lands in nuclear DNA.
- Red flag
- A big chrM share means most of the lane was spent on mitochondria. More depth will help only by brute force; the cleaner fix is in the prep.
Compute NRF, PBC1 and PBC2 from the pre-duplicate-removal BAM (Picard MarkDuplicates is the usual source of duplicate counts). Compare to the ENCODE thresholds: NRF above 0.9, PBC1 above 0.9, PBC2 above 3.
- Healthy
- NRF and PBC1 above 0.9 and PBC2 above 3: the library has many distinct molecules and more reads will still find new ones.
- Red flag
- Values below those thresholds mean the library is bottlenecked. Additional sequencing will return duplicates, so depth is not your problem.
Plot fragment length for each sample (Picard CollectInsertSizeMetrics or ATACseqQC). Look for a sharp peak below 100 bp (nucleosome-free) followed by periodic peaks at about 180 bp, 360 bp and 600 bp. Do this before talking about depth, because a failed library can have plenty of reads.
- Healthy
- A clear nucleosome-free peak below 100 bp and visible mono-, di- and tri-nucleosome periodicity.
- Red flag
- No periodicity, or a smear dominated by large fragments, means the library is poor. Depth will not rescue it.
Compute TSS enrichment and FRiP for each replicate. For human bulk ATAC-seq, TSS enrichment below 5 is concerning, 5 to 7 is acceptable and above 7 is ideal. FRiP above 0.3 is preferred and above 0.2 acceptable. For scATAC-seq in ArchR, the pass-filter is TSS enrichment of 4 and at least 1000 unique nuclear fragments per cell.
- Healthy
- TSS enrichment above 7 and FRiP above 0.3 mean the signal-to-noise is good, so the remaining question is truly depth versus replicates.
- Red flag
- TSS enrichment below 5 or FRiP below 0.2: the problem is signal quality. Re-sequencing the same library just gives you more noise.
Subsample each filtered BAM to fixed fractions of fragments (for example 25%, 50%, 75% and 100%) with
samtools view -s, using the same seed for both mates by operating on a name-sorted file or a tool that keeps pairs together. Call peaks at each fraction with the same MACS2 settings, then plot peak count and FRiP against usable fragments.bashmacs2 callpeak -f BAMPE -g hs --nomodel --shift -37 --extsize 73 -t sub_50pct.bam -n sub_50pct- Healthy
- The curve bends and flattens before 100%; going from 75% to 100% adds few new peaks. You are on the plateau.
- Red flag
- The curve is still climbing at 100%, so you have not saturated. Note that this only justifies more depth if the complexity metrics in the earlier checks are also healthy.
Build the consensus peak set and tabulate, per replicate, depth and the fraction of its peaks found in the other replicates. Plot per-sample usable fragments by condition. Check ENCODE peak counts: replicated peak files above 150,000 preferred (above 100,000 acceptable), IDR peak files above 70,000 preferred (above 50,000 acceptable).
- Healthy
- Replicates have similar usable depth across conditions and most of each sample's peaks are shared with its sibling.
- Red flag
- Depth that tracks condition, or replicates that disagree on peaks despite similar depth, points to a replicate and design problem rather than a depth problem.
What to do about it
Add replicates
When: Your libraries pass complexity, fragment-size, TSS enrichment and FRiP checks, and the downsampling curve has flattened. This is the most common case.
Keep at least two biological replicates per condition and add a third or fourth if the budget allows, each sequenced to roughly the saturated depth rather than deeper. Spend the money on new biological samples, not on topping up existing libraries.
Caveat: Costs more bench time and sorted cells, and a weak new replicate does not help. Run the quality checks on each new library.
Sequence deeper, only on healthy, unsaturated libraries
When: Complexity metrics are good (NRF and PBC1 above 0.9, PBC2 above 3), TSS enrichment and FRiP pass, and the saturation curve is still rising at full depth, typically below about 50 million usable fragments.
Top up the same libraries toward the saturation reference point and re-run the filtering and downsampling curve. Stop when 75% to 100% adds few peaks.
Caveat: If the libraries were already bottlenecked, extra reads are mostly duplicates and the spend is wasted.
Remake the library
When: Complexity is low (NRF, PBC1 or PBC2 below threshold), the chrM fraction is high, or the fragment-size histogram has no nucleosome periodicity.
Repeat the prep with healthier input, fewer PCR cycles and a tagmentation that gives the expected fragment ladder, then re-check the same metrics before sequencing.
Caveat: Needs more starting material, which may be unavailable for rare sorted populations.
Equalise depth before comparing conditions
When: Depth differs across samples, especially if it correlates with condition or batch.
Downsample the deep samples to a common usable-fragment count, or at least include depth in the diagnostic plots, before calling peaks and running differential accessibility. Check that your significant regions are not just the low-accessibility ones called in the deepest samples.
Caveat: Downsampling throws away data. Use it as a check on whether the result survives, not as a replacement for good design.
Use the single-cell filters for single-cell data
When: Your data is scATAC-seq, where the unit of depth is fragments per cell rather than per sample.
Apply per-cell filters such as at least 1000 unique nuclear fragments and TSS enrichment of 4 (the ArchR pass-filter in the lesson), then look at the sequencing saturation reported by your pipeline.
Caveat: The research here has no verified Cell Ranger saturation thresholds for scATAC-seq, so read your own pipeline's saturation report rather than assuming a cutoff.
When not to "fix" it
If a sample has few peaks because the cell type is genuinely less accessible, for example a quiescent or terminally differentiated population, a plateau at a lower peak number is biology and not a depth failure. Do not chase the 50 million reference by re-sequencing healthy, flat saturation curves. Likewise, if the library passes complexity, TSS enrichment and FRiP checks and the downsampling curve is flat, adding reads will not change your conclusions. Do not equalise depth by downsampling when depth is the same across conditions and the main concern is noise, since you only lose data.
Five things experienced analysts do here
- Decide your depth target in terms of usable fragments after chrM, duplicate and quality filtering, and tell the sequencing core that number rather than a raw read count.
- Look at the fragment-size histogram and TSS enrichment first. A failed library with plenty of reads is the most common reason people think they need more depth.
- Run the downsampling curve once per cell type in a pilot. The 50 million figure is a bulk reference, and the research behind this page has no quantitative data on how saturation shifts by tissue.
- Plot usable depth by condition and by batch before any differential test. Depth that tracks condition is a design problem, as in RNA-seq.
- When the budget is fixed, favour an extra biological replicate over a top-up of an existing saturated library, as long as each replicate passes the same quality checks.
Questions people ask
- How many reads do I need per sample for ATAC-seq?
The ENCODE standard asks for 50 million paired-end reads (25 million fragments) per replicate. In bulk samples, peak discovery saturates around 50 million usable fragments. Count usable fragments after chrM, duplicate and quality filtering, not raw reads.
- Should I sequence deeper or add more replicates for ATAC-seq?
If the library is complex and the saturation curve is still rising, depth helps. Once saturated, replicates almost always buy more than depth. A minimum of two biological replicates is required.
- How do I make a saturation curve for ATAC-seq?
Subsample filtered BAMs to fixed fractions of fragments, call peaks with the same MACS2 settings at each level, and plot peak count against usable fragments. A flat tail means you are saturated. Combine it with NRF, PBC1 and PBC2 to be sure the plateau reflects complexity.
- What is a good depth per cell for single-cell ATAC-seq?
The ArchR pass-filter in the lesson uses at least 1000 unique nuclear fragments per cell and TSS enrichment of 4. The research here does not give verified Cell Ranger saturation thresholds, so check your pipeline's own saturation report.
- Why is my duplicate rate so high in ATAC-seq?
A high duplicate rate usually means low library complexity, from too few input cells or too many PCR cycles. Check NRF, PBC1 and PBC2: values below 0.9, 0.9 and 3 indicate bottlenecking, and more sequencing will mostly add duplicates.
Related pages
- Guide · How to Call Peaks You Can Trust in ATAC-seq
- Guide · How to Tell If You Sequenced Deep Enough in Variant Calling
- Glossary · Peak calling
- Glossary · scATAC-seq
Sources
- ATAC-seq Data Standards and Processing Pipeline — Depth, TSS enrichment, FRiP, complexity and peak count thresholds
- Quality Control for ATAC-seq, Epigenomics Workshop 2025 documentation — Fragment size distribution and Tn5 offsets
- Beyond chromatin accessibility: bulk ATAC-seq as an integrative assay to portray genomes and epigenomes — MACS2 ENCODE3 parameters for ATAC-seq
- Filtering BAM files — samtools -F 1804 filtering
Part of the Sequencing depth and saturation series.