# The confusion of using TPM (transcripts per million)

It is shown that TPM values are not suitable for DEG analysis but good for within-sample comparison since TPM normalized the gene length. My question is first: if TPM is not suitable for across sample comparison, then why are some heatmaps using TPM values? In what scenario are TPM values really useful? Should downstream analysis use TPM or raw count matrix?

When I analyzed sc-RNA seq data, the Seurat package uses normalized counts (which is CPM) for DEG, but TPM is not advised for differential testing. I'm not sure what I'm missing in the understanding. It seems very convoluted to me.

I just don't get the point that TPM is commonly used as an input for DEG testing by Seurat (Seurat findmarker function uses "data" slot, which is normalized counts), but TPM is not recommended for DEG testing for bulk.

Use raw counts as much as you can. Add in various relevant factors as covariates in DESeq2. RNAseq metrics have come a long way but are still misused by people because it's more convenient to compare some sort of normalized metric that give out relevant confounding factors, I guess.

• Thank you for your comment！Just curious, raw count data does not account for sequencing depth, but my intuitive assumption is that accounting for sequencing depth is necessary for the comparison of gene expression between samples. Why using count data is more appropriate than TPM or other methods? Thank you! Jul 13 at 18:31
• DESeq2 will account for library depth. Comparing anything between two samples is not robust, one should compare between groups of samples using statistically sound methods. You can of course compare TPM but it leaves room for false results. Jul 13 at 18:43

The naive per-million scaling methods do not properly correct for the compositional bias between samples. This is especially true if the groups you compare are expected to be very different, e.g. different organs, see here demonstrated on some GTEx data: https://www.biostars.org/p/9465851/#9465854

Why do people use flawed metrics? Well, because some are very common. Per-million is easy to compute and does not change when new samples are added. The latter is convenient, and sometimes per-million might be good enough for visualization. I never do it though, I always use normalized (or vst) counts from DESeq2 or edgeR.

For differential analysis of bulk data one commonly uses raw counts which are then normalized internally by the established frameworks such as DESeq2, edgeR or limma-voom.

Single-cell data, if you consider each cell a replicate, often can go with simpler stats as the large sample such allows tests such as the T- or Wilcox test. Again, plain per-million scaling is probably bad, and alternative methods do exist, e.g. the deconvulution/sum-factor strategy in the scran package at Bioconductor. I cannot speak for Seurat, as I do not use it.

For most downstream applications such as visualization and clustering you probably want to use the properly normalized counts on the log2 scale. For something like heatmaps one would scale the data (Z-score) before plotting to show relative differences. I see no application for raw counts beyond feeding them into a DE testing framework that then normalizes them. The only applications that use raw countsbeyond the aforementioned DE testing frameworks that come to my mind are Combat-Seq (batch correction for bulk data) and sctransform (varaince stab/normalization/regression) for single-cell data.

• Thank you very much for such a comprehensive comment. Most of the confusion is cleared except one: you mentioned ：” For most downstream applications such as visualization and clustering you probably want to use the properly normalized counts on the log2 scale“, here do you mean log2(rawcount+1) or log2(TPM+1）？which one is more preferred? I have definitely seen both, but for the sake of learning, I am trying to get a deeper understanding. Thanks in advance Jul 14 at 2:08

For scRNA-seq, you don't want to normalize for gene length because the most popular 10X technology only sequences a the 3' or 5' end of the transcript. Hence CPM, which normalizes for sequencing depth alone, is popular for single cell data.

This is different from your average bulk RNA-seq, where you typically get full length transcripts (unless you're doing something like DRUG-seq).