<p>You should <em>never</em> use RPKM. <a href="https://haroldpimentel.wordpress.com/2014/05/08/what-the-fpkm-a-review-rna-seq-expression-units/" rel="nofollow noreferrer">It’s simply obsolete</a> in the age of paired-end sequencing, and has been replaced by FPKM (which is, strictly speaking, a synonym).</p>

<p>The linked blog post explains more generally the problems that measures such as FPKM and CPM suffer from. A more robust measure is the TPM (transcripts per million), which scales CPM by the lengths of the transcripts.</p>

<p>Lastly, none of these measures perform very well for comparing gene expression across replicates. Since you have read count data, <a href="http://bioconductor.org/packages/devel/bioc/vignettes/DESeq2/inst/doc/DESeq2.html" rel="nofollow noreferrer">you should run DESeq2</a> or edgeR to perform differential expression analysis across all genes, and go from there.</p>

<p>As the comment noted, the paper you cite does not represent scientific best practice. In fact, a competent reviewer would have rejected this analysis.</p>

CC BY-SA 4.0
2018-05-09T20:23:01.133Z
2018-05-09T20:23:01.133Z
Konrad Rudolph
<p>For visualization purposes, using log(cpm) is fine. But plot don't check if differences are significant or not, statistical tests do. You can certainly add the results of a proper statistical test to a plot - like adding asterisks to denote a significant difference, for example.</p>

CC BY-SA 4.0
2018-05-09T15:35:18.507Z
2018-05-09T15:35:18.507Z
h.mon
<p>You can use the raw counts to normalise your data. It is import to do so before doing a differential expression analysis: otherwise you will detect more reads from samples with higher coverage and from longer genes. A gene with longer mRNA molecules will produce more reads than a shorter one for the same number of transcript molecules. Samples will not produce the same number of reads due to variation in cDNA extraction, amplification, library preparation, etc.</p>

<p>This does not inherently mean that a sample expresses every gene more than another sample. Hence we compare samples by relative rather than absolute expression (for microarray and RNA-Seq data). This is in principle, very similar to using housekeeper genes in qPCR experiments except we adjust for total RNA or reads, gene length, and batch effects.</p>

<p>There are many ways to achieve this but I recommend using the <em><a href="http://bioconductor.org/packages/release/bioc/html/limma.html" rel="nofollow noreferrer">limma</a></em> package in R. This provides the “voom” normalisation procedure. “voom” is documented in a separate <a href="https://genomebiology.biomedcentral.com/articles/10.1186/gb-2014-15-2-r29" rel="nofollow noreferrer">follow-up</a> paper to the <a href="https://academic.oup.com/nar/article-lookup/doi/10.1093/nar/gkv007" rel="nofollow noreferrer">limma paper</a>. It produces normalised data (on a log-scale) which is compatible with downstream analysis provided by the package (including built-in Venn diagram and volcano plot functions). See the package vignette for more details.</p>

<p>Of course, everything here only applies to bulk RNASeq experiments and procedures for single-cell analysis are different.</p>

CC BY-SA 4.0
2018-06-02T15:28:38.417Z
2018-06-02T15:34:35.197Z
2018-06-02T15:34:35.197Z
Tom Kelly ケリー・トム
<p>I would like to check the expression of a gene in different groups like Disease vs Normal samples. I want to make a plot out of that to check whether it is significant or not.</p>

<p>From this paper <a href="https://www.nature.com/articles/nsmb.3211.pdf" rel="nofollow noreferrer">lncRNA</a> I see that Figure 1C they used RPKM value. But, I'm using read counts data. My question is can I use log cpm to make a plot like that or should I need to use only RPKM?</p>

CC BY-SA 4.0
2018-05-09T15:16:22.547Z
To check if a gene is significantly differential expressed between groups, is not done with a plot but with linear models (e.g., limma trend or voom, edgeR, or DEseq2). Doing a t-test with RPKM data like in the paper is certainly not recommended (but reviewers are usually no statisticians or bioinformaticians, so that unsound statistics is still published). My advice is to keep count data for statistics in limma (or other tools I mention), and make violin plots with cpm.
benn
CC BY-SA 4.0
2018-06-02T15:30:40.017Z
log-scale is very important for differential expression analysis but I think why we do this is best addressed as a separate question.
Tom Kelly ケリー・トム
<rna-seq><gene><differential-expression><rna><fpkm>
Expression of a gene in different groups
# Expression of a gene in different groups

(Asked by: username_0 on 2018-05-09)

I would like to check the expression of a gene in different groups like Disease vs Normal samples. I want to make a plot out of that to check whether it is significant or not.

From this paper [lncRNA](https://www.nature.com/articles/nsmb.3211.pdf) I see that Figure 1C they used RPKM value. But, I'm using read counts data. My question is can I use log cpm to make a plot like that or should I need to use only RPKM?

**Tags:** rna-seq, gene, differential-expression, rna, fpkm
> **Comments:**
> **username_1**: To check if a gene is significantly differential expressed between groups, is not done with a plot but with linear models (e.g., limma trend or voom, edgeR, or DEseq2). Doing a t-test with RPKM data like in the paper is certainly not recommended (but reviewers are usually no statisticians or bioinformaticians, so that unsound statistics is still published). My advice is to keep count data for statistics in limma (or other tools I mention), and make violin plots with cpm.  
> **username_2**: log-scale is very important for differential expression analysis but I think why we do this is best addressed as a separate question.  

---

## 3 answers

### Answer by username_3 on 2018-05-09. Score: 2

You should *never* use RPKM. [It’s simply obsolete](https://haroldpimentel.wordpress.com/2014/05/08/what-the-fpkm-a-review-rna-seq-expression-units/) in the age of paired-end sequencing, and has been replaced by FPKM (which is, strictly speaking, a synonym).

The linked blog post explains more generally the problems that measures such as FPKM and CPM suffer from. A more robust measure is the TPM (transcripts per million), which scales CPM by the lengths of the transcripts.

Lastly, none of these measures perform very well for comparing gene expression across replicates. Since you have read count data, [you should run DESeq2](http://bioconductor.org/packages/devel/bioc/vignettes/DESeq2/inst/doc/DESeq2.html) or edgeR to perform differential expression analysis across all genes, and go from there.

As the comment noted, the paper you cite does not represent scientific best practice. In fact, a competent reviewer would have rejected this analysis.


---

### Answer by username_4 on 2018-05-09. Score: 1

For visualization purposes, using log(cpm) is fine. But plot don't check if differences are significant or not, statistical tests do. You can certainly add the results of a proper statistical test to a plot - like adding asterisks to denote a significant difference, for example.


---

### Answer by username_2 on 2018-06-02. Score: 0

You can use the raw counts to normalise your data. It is import to do so before doing a differential expression analysis: otherwise you will detect more reads from samples with higher coverage and from longer genes. A gene with longer mRNA molecules will produce more reads than a shorter one for the same number of transcript molecules. Samples will not produce the same number of reads due to variation in cDNA extraction, amplification, library preparation, etc.

This does not inherently mean that a sample expresses every gene more than another sample. Hence we compare samples by relative rather than absolute expression (for microarray and RNA-Seq data). This is in principle, very similar to using housekeeper genes in qPCR experiments except we adjust for total RNA or reads, gene length, and batch effects.

There are many ways to achieve this but I recommend using the *[limma](http://bioconductor.org/packages/release/bioc/html/limma.html)* package in R. This provides the “voom” normalisation procedure. “voom” is documented in a separate [follow-up](https://genomebiology.biomedcentral.com/articles/10.1186/gb-2014-15-2-r29) paper to the [limma paper](https://academic.oup.com/nar/article-lookup/doi/10.1093/nar/gkv007). It produces normalised data (on a log-scale) which is compatible with downstream analysis provided by the package (including built-in Venn diagram and volcano plot functions). See the package vignette for more details.

Of course, everything here only applies to bulk RNASeq experiments and procedures for single-cell analysis are different.


---

