text: user6398: 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.
  
  user104: 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).
  
  user-1: 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.
  
  user650: 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.
  
original_text: 6398: <p>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?</p>
  <p>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.</p>
  <p>I just don't get the point that TPM is commonly used as an input for DEG testing by Seurat (Seurat findmarker function uses &quot;data&quot; slot, which is normalized counts), but TPM is not recommended for DEG testing for bulk.</p>
   104: <p>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.</p>
  <p>This is different from your average bulk RNA-seq, where you typically get full length transcripts (unless you're doing something like DRUG-seq).</p>
   -1: <p>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: <a href="https://www.biostars.org/p/9465851/#9465854" rel="nofollow noreferrer">https://www.biostars.org/p/9465851/#9465854</a></p>
  <p>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.</p>
  <p>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.</p>
  <p>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 <code>scran</code> package at Bioconductor. I cannot speak for Seurat, as I do not use it.</p>
  <p>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.</p>
   650: <p>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.</p>
  