Cell Type Annotation in Single-Cell RNA-Seq: How to Get It Right

Clustering a single-cell dataset is easy. Deciding what the clusters are is where the analysis is actually made or lost — and it is the step most likely to be done badly, because it feels subjective and there is no obvious error bar.

This guide covers how to annotate cell types defensibly, the failure modes that produce confident wrong answers, and how to tell a real population from an artefact.

Resolution is a decision, not a default

Clustering algorithms take a resolution parameter, and it determines how many clusters you get. Raise it and populations split; lower it and they merge. There is no correct value, and leaving it at the default is a choice you are making without noticing.

The productive approach is to cluster at several resolutions and inspect how clusters split. A split that separates two groups with distinct, coherent marker genes is real biology. A split producing two clusters whose differences are a handful of ribosomal and mitochondrial genes is not — that is technical variation.

Clustering trees, which visualise how cells move between clusters as resolution increases, make this concrete: stable branches that persist across resolutions are trustworthy; branches that appear and dissolve are not.

Three sources of evidence, not one

A defensible annotation triangulates. Any one source alone is weak.

Marker genes

The traditional approach: find genes enriched in each cluster and match them against known markers. It works, with caveats. Dropout means a canonical marker may be undetected in a cell that expresses it, so absence is weak evidence. And many markers are less specific than textbooks suggest — CD4 is expressed on monocytes, not only on T cells.

Use marker combinations rather than single genes, and be explicit that you are reasoning from a panel.

Reference-based automated annotation

Tools such as SingleR, Azimuth and CellTypist compare each cell against an annotated reference. This is fast, reproducible and free of the confirmation bias that creeps into manual labelling.

The limitation is the reference. A cell type absent from the reference is assigned to whatever is nearest, with a confident-looking label. Always inspect the score distributions: a cluster where every cell scores poorly against every reference type is telling you something the reference cannot.

Manual review by someone who knows the tissue

Neither of the above replaces domain knowledge. Whether a population makes sense in this tissue, at this developmental stage, under this treatment, is a biological judgement. The most common annotation errors are not statistical — they are labels that are internally consistent and biologically implausible.

The artefacts that masquerade as cell types

Doublets

Two cells captured in one droplet produce a transcriptome that looks like a hybrid. In a UMAP they frequently sit between two real clusters and can form their own apparently novel population co-expressing two lineages’ markers.

Run doublet detection (scDblFinder, DoubletFinder, Scrublet) before annotation, and treat any cluster co-expressing markers of two unrelated lineages as a doublet cluster until proven otherwise. “Novel hybrid cell type” is almost always a doublet.

Ambient RNA

Free RNA from lysed cells is captured alongside genuine transcripts and contaminates every droplet. In a tissue where one population is abundant and fragile, its transcripts appear at low level in every other cluster — and can look like low-level expression of a marker where none exists. Correction tools such as SoupX and CellBender help; awareness helps more.

Stress and dissociation signatures

Tissue dissociation, especially warm enzymatic digestion, induces immediate-early genes: FOS, JUN, HSPA1A and similar. A cluster defined mainly by these is a dissociation artefact, not a cell state. If the biological question concerns activation states, this is a serious confounder and the protocol matters more than the analysis.

Cell cycle

Proliferating cells cluster by cell cycle phase rather than identity, which can split one cell type across several clusters. Scoring cell cycle phase and, where appropriate, regressing it out resolves this — but not if proliferation is the biology you are studying.

Cell types versus cell states

A distinction worth being explicit about, because conflating them causes real confusion.

A cell type is a stable identity: a hepatocyte, a CD8 T cell. A cell state is a transient condition that identity can occupy: activated, hypoxic, cycling, exhausted.

Clustering does not distinguish them. Whether your clusters resolve types or states depends on the resolution you chose and how strong the state signal is. In a treatment experiment, state signals are often stronger than type signals, so clusters may separate primarily by condition — which then makes cross-condition comparison circular. Annotate types first, ideally after integration, then examine states within each type.

Doing differential expression properly

Once populations are annotated, the usual next question is what changes between conditions. This is where the most consequential statistical error in single-cell analysis occurs.

Treating individual cells as replicates inflates significance dramatically. Ten thousand cells from three mice are not ten thousand independent observations; they are three, with substantial within-animal correlation. Per-cell tests on such designs generate long lists of significant genes that do not replicate.

Where you have biological replicates, aggregate to pseudobulk — sum counts per sample per cell type — and test with DESeq2 or edgeR. This respects the actual experimental design. Where you have no biological replicates, no test recovers that; say so and treat the results as exploratory.

A checklist for a defensible annotation

  1. Doublets detected and removed before clustering.
  2. Ambient RNA considered, and corrected where the tissue warrants it.
  3. Clustering examined at several resolutions, with the choice justified by marker coherence.
  4. Each cluster supported by a marker panel, not a single gene.
  5. Reference-based annotation run as an independent check, with scores inspected.
  6. Clusters defined by stress, ribosomal or mitochondrial genes flagged as technical.
  7. Types distinguished from states explicitly.
  8. Differential expression by pseudobulk wherever replicates exist.
  9. Uncertain clusters labelled as uncertain rather than given a confident name.

That last point is the one most often skipped. An honest “unresolved population, possibly X” is far more useful to a reader — and to a reviewer — than a confident label the data does not support.

Leave a Reply

Your email address will not be published. Required fields are marked *