scATAC-seq analysis: the numbers that decide whether your clusters are real
Chromatin accessibility data has its own quality metrics and its own normalisation, and one routine step silently changes the cluster boundaries. What to check, with a measurement on public data.
Single-cell ATAC is not single-cell RNA with different features. The quality metrics are different, the normalisation is different, and there is a step almost every pipeline performs without telling you that changes how many cell types you appear to have. If you are about to interpret a scATAC clustering — yours or someone else's — these are the numbers to ask for.
The short version: ask for fragments per cell and FRiP (not gene counts and mitochondrial percentage), confirm the analysis used TF-IDF and LSI (not log-CPM and PCA), and ask which LSI components were discarded and how much the answer changed when they were. On public PBMC data, two entirely defensible answers to that last question agree at only ARI 0.69.
1 · The quality metrics have different names for a reason
There is no gene count to filter on and no mitochondrial percentage that means anything. The two numbers that matter are:
- Unique fragments per cell. How much usable material the cell yielded after duplicates are removed. A few thousand is workable; a few hundred is not.
- FRiP — the fraction of a cell's fragments that fall inside called peaks. This is the signal-to-background measure, and it has no equivalent in RNA. A cell can have plenty of fragments and still be unusable if they are scattered across the genome rather than concentrated in accessible regions.
A third, TSS enrichment (or the simpler fraction of fragments near transcription start sites), catches the same failure from a different angle. On the public 10x 5k PBMC dataset we use as a reference, the medians are about 14,000 fragments, FRiP 0.80, and 0.55 of fragments TSS-proximal. If a report gives you cluster figures but none of these three, the quality control either was not done or is not being shown.
2 · Binary-ish data needs different normalisation
A peak is either accessible in a given cell or it is not; counts above one carry little extra information, and the matrix is far sparser than an RNA one. The standard treatment is TF-IDF weighting followed by singular value decomposition — usually called LSI. Running the RNA recipe (log-CPM, highly variable feature selection, PCA) on a peak matrix is a common and quiet error, because it produces a plausible-looking UMAP either way.
One detail that sounds like style and is not: the IDF term should be the plain ratio of cells to peak occurrences. We first implemented a log-scaled variant, which looks harmless. Measured against sequencing depth, it was not — see below.
3 · The first component is sequencing depth, and dropping it is not the end of it
In LSI the leading component almost always tracks library depth rather than biology, so the convention is to discard it before clustering. On the public dataset that convention is clearly right: component 1 correlates with log depth at r = 0.97. No biological axis explains 97% of a depth signal.
The part that is usually left unsaid is what happens next. After dropping component 1, a later component still correlated with depth at r = 0.52. So we asked the only question that matters — does it change the answer?
- Dropping only component 1: 13 clusters.
- Dropping every depth-correlated component: 14 clusters, and the two labellings agree at ARI 0.69.
That is not agreement. Roughly a third of the pairwise cluster structure depends on which of two defensible choices was made — a choice most pipelines make for you, with no line in the methods section.
The wrong conclusion to draw is "the later component is noise, remove it too". Cell types genuinely differ in how much open chromatin they carry, so correlation with depth is not proof of an artefact. The right conclusion is that a cluster count from scATAC is a conditional number, and the condition belongs in the report. If a reviewer asks why there are thirteen clusters, "that is what the pipeline produced" is not an answer.
4 · What to ask for
- Fragments per cell and FRiP distributions, with the thresholds that were applied and why.
- Confirmation that TF-IDF + LSI was used, and which components were dropped.
- A sensitivity check: how the clustering changes if the depth-correlated components are handled differently.
- For any cluster you plan to make a claim about, its median fragment count — if your "novel population" is also your shallowest cluster, that needs addressing before it goes in a figure.
We publish a worked example on public data with the script and every number behind it — see the scATAC sample deliverable. If you have a dataset and want to know what it would cost to have this done properly, ask for a quote.