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.
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:
| Antibody | Matching gene | Correlation across clusters |
|---|---|---|
| CD19 | MS4A1 | 0.999 |
| CD8a | CD8A | 0.998 |
| CD14 | CD14 | 0.968 |
| CD3 | CD3E | 0.935 |
| CD4 | IL7R | 0.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
- Isotype-control share of total antibody signal, stated as a number.
- The normalisation used for antibody counts, named explicitly.
- Protein-versus-RNA agreement for every marker where a matching transcript exists.
- Which modality defined the clusters.
- 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.