High tissue/cell specificity scores when gene expression is low or even not detected

Hello,

First of all thank you for all your work on this amazing resource!

Regarding the tissue/cell specificity scores available in v26.06 baseline_expression, I’ve observed for some genes the specificity scores can be extremely high even when a gene is not detected/barely expressed in a cell or tissue. I was wondering how this could be, as I had thought these scores were calculated within each dataset, for each cell-tissue pair (in the case of Tabula Sapiens) or per tissue (in the case of GTEx/PRIDE)?

Some examples, considering the MUC5B gene:

  • MUC5B in GTEx esophagus: specificity 78.6% when median TPM is 0.4
  • MUC5B in Tabula Sapiens is where I observed this behaviour the most. In the trachea, for example:
    • mature NK T cell: specificity 89.7% with median of 0 CPMs
    • granulocyte: specificity 87.5% with median of 0 CPMs
    • intermediate monocyte: specificity 84.5% with median of 0 CPMs
    • monocyte: specificity 80.6% with median of 0 CPMs

Any advice on how to interpret this would be much appreciated.

Hi Elena,

I completely understand the confusion. Hopefully I can clear it up a little bit.

So we use the tool CELLEX to calculate our expression specificity scores. It takes the average of 4 scores which all capture specificity (relative to other cell types/tissues) in somewhat independent ways, you can read more on how this works in Timshel et al. 2020, in appendix 2.

After these 4 scores are calculated, they are normalised within each cell type/tissue onto a 0 to 1 scale. This means the final score is a rank on that cell type/tissue’s internal leaderboard of specifically expressed genes.

So for the oesophagus, although a tissue like stomach has higher median expression it likely has other, highly expressed genes that are specific to stomach and shift MUC5B down the within-tissue ranking whereas for oesophagus there are fewer genes to “compete” that are more specifically expressed, if that makes sense.

For the cell types within tissues (e.g. mature NK T cell in trachea) there are likely a few factors at play. In scRNA-seq extracellular or ambient RNA (RNA that was inside cells which have died/lysed) can be captured together with cells in droplets meaning you can see epithelial transcripts in cells labelled as immune cell types. Doublets, where two different cells are sequenced together, can also result in a similar effect. The Tabula Sapiens team will have gone to great lengths to prevent this during processing and correct for this computationally but when generating data at this scale, nothing is perfect.

Now our specificity tool CELLEX is likely seeing one or a handful of pseudobulked samples with expression of these genes, potentially as a result of the above. And because these datasets are generated from only a handful of individuals, one or two samples may be moving the needle on the specificity scores whilst leaving the median unaffected.

In general, when ingesting expression data we tried to take a light touch because the data generators will have performed their own quality controls and our attempts to further remove artefacts may end up masking true biology. But it’s still possible we will revisit this later on.

If you’re curious, you can browse the Tabula Sapiens dataset here and subset for cells expressing MUC5B > 0 to see this in the data.

Let me know if anything is unclear,
Tobi

Hi @Tobi_Alegbe ,

Thank you so much for getting back to me so quickly and for the thorough explanation - that makes a lot of sense.

Going forwards, if we wanted to discern “higher quality” specificity estimates from those that could be arising from artifacts, would you then recommend we set some expression filters? So, for example, only consider a gene as being highly specific if it has at least a median expression of X TPMs/CPMs?

You can absolutely apply your own filters, median > 0.5 or 1.0 TPM/CPM AND specific is a reasonable one. However it comes with its own caveats of masking true biology, for example I think the score for oesophagus is trustworthy but would be thrown out under that filter.

It’s only at the tissue-cell type level I would throw the scores into doubt and this is partially why we don’t show these in the baseline expression widget on the platform. Perhaps filtering these scores only for median expression > 0 CPM would be the safest bet.

This is a very useful clarification and highlights an important distinction between expression abundance and expression specificity. A high CELLEX specificity score should not be interpreted as evidence that a gene is meaningfully expressed in that tissue or cell type, especially in sparse single-cell datasets where ambient RNA, doublets, donor effects, or a small number of positive pseudobulk samples can distort the ranking. For target prioritization, particularly when assessing tissue selectivity or safety risk, I think specificity should always be interpreted together with absolute expression, detection prevalence, donor consistency, and ideally orthogonal evidence from independent transcriptomic or protein datasets rather than used as a standalone metric. Great discussion team!! @elena.bernabeu @Tobi_Alegbe