OMICSDESKbioinformatics, delivered

CITE-seq: what to check before you trust a protein signal

Antibody counts are not expression counts. The isotype-control number, the normalisation, and the protein-versus-RNA check that decides whether a surface marker means anything — with numbers from a public dataset.

Updated 2026-08-02

CITE-seq costs meaningfully more than plain single-cell, and it is bought for one reason: surface protein tells you things RNA does not. That is true, but antibody counts behave nothing like transcript counts, and the checks that decide whether a protein signal is real are usually missing from the report.

The short version: ask for three numbers — the share of antibody signal carried by isotype controls, the normalisation that was used, and the protein-versus-RNA agreement for markers where both exist. On the public 5k PBMC TotalSeq-B dataset, isotype controls carry 0.25% of the antibody signal, which is low enough that a positive stain means something. If that number were several percent, most of the panel would be background.

1 · The isotype controls are the whole calibration

Isotype controls are antibodies that should bind nothing. Whatever counts they pick up are the background floor for the entire panel — the level below which a "positive" cell is not positive. In the public dataset the isotype median is 7 counts against an antibody-total median of 2,757, so 0.25% of signal is background. That is healthy. A panel where isotypes carry a few percent is one where weak markers cannot be interpreted at all, and no amount of downstream analysis recovers that.

If a panel was run without isotype controls, background cannot be quantified. That is a design decision made before the data existed, and it is worth knowing before you plan the analysis rather than after.

2 · Normalisation is not the RNA one

Antibody-derived tags are sequenced far more deeply per feature than genes and the counts are compositional — a cell with more total antibody signal has more of everything. The standard treatment is a centred log-ratio (CLR) per cell, not log-CPM. Applying the RNA recipe produces plots that look fine and rankings that are wrong. The report should name the normalisation; "the antibody data was normalised" is not an answer.

3 · Check protein against RNA where both exist

For markers with a matching transcript, the two measurements should rise in the same populations. This is a free check and it catches failed antibodies immediately. On the public data, across RNA-defined clusters:

AntibodyMatching geneCorrelation across clusters
CD19MS4A10.999
CD8aCD8A0.998
CD14CD140.968
CD3CD3E0.935
CD4IL7R0.543

Four of five are near-perfect. The fifth is the instructive one: CD4 protein against IL7R RNA correlates at only 0.543 — and that is expected, because IL7R is a proxy rather than the CD4 transcript, and CD4 protein is also carried by monocytes. A low number here is a prompt to check whether the pairing makes biological sense, not automatic evidence that the antibody failed. The point of the check is that it is run and reported, so that a genuinely dead antibody is separated from a mismatched pair.

4 · Do not let protein silently drive the clustering

There are two defensible choices: cluster on RNA and use protein to annotate, or cluster on both jointly. They give different cell populations, and the difference is not small. Whichever is chosen, it belongs in the methods — a reader cannot otherwise tell whether a population is defined by transcriptome or by a 32-antibody panel. We measured the analogous effect on multiome data, where clustering the same cells on RNA alone and on chromatin alone agreed at only ARI 0.553.

What to ask for

  1. Isotype-control share of total antibody signal, stated as a number.
  2. The normalisation used for antibody counts, named explicitly.
  3. Protein-versus-RNA agreement for every marker where a matching transcript exists.
  4. Which modality defined the clusters.
  5. Per-antibody counts, so a dead antibody is visible rather than buried in an average.

Our worked example on public data, with the script and every number, is the CITE-seq sample deliverable. If you have a panel and want the analysis to survive review, describe the dataset.

Need this done rather than explained?

We do analysis only — send a count matrix, an h5ad/Seurat object or a public accession and get publication-ready results with the code that produced them. Fixed price agreed before work starts.

→ Get a fixed quote  ·  See a full sample deliverable

More guides