StatQuest生物统计学专题 - RPKM,FPKM,TPM
其实RPKM,FPKM,TPM的概念和应用,大家或多或少的都知道。生信菜鸟团以前的专题也已经讲过这几个概念:浅谈RPKM,FPKM,RPM,TPM的区别。在本专题里面重提这个话题,是基于这样一个考虑:RPKM,FPKM,TPM的生物学意义其实很简单,计算时的逻辑其实也很清楚,但是偏偏它的数学形式很复杂,全名也很绕。
以RPKM为例:
全名为:
Reads Per Kilobase of exon model per Million mapped reads.
计算方式为:
RPKM= total exon reads/ (mapped reads (Millions) * exon length(KB));
其中,
total exon reads:某个样本mapping到特定基因的外显子上的所有的reads;
mapped reads (Millions) :某个样本的所有reads总和;
exon length(KB):某个基因的长度(外显子的长度的总和,以KB为单位).
希望你第一次见到这些的时候不是晕的,而本专题重新提到他们,是因为他们其实很简单。
RPKM,FPKM,TPM是为了消除基因长度和测序深度的影响
在RNA-Seq的分析中,为了获得差异表达基因,只需要对不同基因的测序Read数进行比较即可。然而比对到不同基因上的Read数目并不能直接用于比较这两个基因的表达量差异,因为在RNA-seq中有一个很浅显的道理,基因越长,比对到此基因上的Read就会越多;测序深度越大,那么本次RNA-seq的所有Read数都会增加。也就是说Read数除了和基因表达量相关外,也和基因的长度、测序深度有关,因此为了比较多个RNA-seq重复(测序深度有一定差异)的不同基因(基因长度有一定差异)之间的表达量差异,那么就不能使用Read数直接进行比较,而是需要对Read数进行标准化。
计算RPKM,FPKM,TPM的一个例子
RPKM的计算逻辑
RPKM的计算逻辑其实很简单,我们刚才已经说过,测序Read数是会受到基因长度和测序深度影响的,所以RPKM就是为了消除这两项偏差,那么如何消除呢?
既然受到基因长度影响,那么将测序Read数除以基因长度就OK了,而受到测序深度影响,那么再将Read数除以总Read数进行标准化也就消除了测序深度的影响。
只不过这里基因长度是用kb表示的,所以RPKM中是K,Kilobase。而总Read数太大了,直接除以这个数字就会使得标准化出来的Read数出现太多的小数,所以为了美观,一般都是除以以百万为单位的总Read数,举例来说,假定一次RNA-seq的总Read数为2*10^7
,那么在进行Read标准化的时候,并不是直接除以这个数值,而是除以20,因为2*10^7 = 20*10^6 = 20M
,所以RPKM中才是M,Million。
总结一下,RPKM的计算方法:
计算总Read数:计算每一个RNA-seq样本的总Read数,然后将其换算为以百万位单位(M);
标准化总Read数:将所有基因的Read数除以总Read数;
标准化基因长度:再将所有基因的Read数除以基因长度(基因长度单位为kb);
计算RPKM的的一个例子
举例来说,假定有以下RNA-seq数据,测定了A、B、C、D四个基因,长度分别是2、4、1、10kb,共测定了3个生物重复:Rep1、Rep2、Rep3。
第一步,计算总Read数
由于只有4个基因,所以总Read数并没有太大,因此使用10模拟百万进行总read换算。
第二步:标准化总Read数
将Rep1、Rep2、Rep3除以各自换算后的总Read数(也就是3.5,4.5,10.6),得到RPM,见下图:
第三步:标准化基因长度
再将基因A、B、C、D的RPM值除以各自的基因长度,得到RPKM,见下图:
如此一个RPKM标准化就完成了。
FPKM与RPKM
其实FPKM同RPKM是一样的,只是RPKM用于单末端测序,而FPKM用于双末端测序。
二代测序时,会将所有的DNA打成片段(fragment),然后再去测序。单末端测序时,一个片段对应一个Read,但是双末端测序时,一个片段会从两端分别测定一次,因此这两个配对Read对应的是同一片段(偶尔也会有一个片段只对应一个Read的情况,另一个Read因为某些原因被剔除或丢失了)。
区别也就在这里,对于FPKM来说,配对到同一片段上的两个Read只会算作一个Read,也就是说FPKM是以Fragment为准,不以Read数为准,其他计算方式是完全一样的。
TPM的计算逻辑及例子
TPM的计算方法其实同RPKM很类似,同样的对基因长度和测序深度进行标准化,只不过RPKM是先进行测序深度标准化,后进行基因长度标准化;而TPM是先进行基因长度标准化,后进行测序深度标准化。事实证明,TPM的标准化方法更有优势,为何会这样,见后述。这里先看看TPM的计算。
仍以图一的数据为例:
第一步:进行基因长度标准化
先将基因A、B、C、D的Read数除以各自的基因长度(基因长度单位kb),得到RPK。
第二歩:计算总Read数(RPK)
计算总Read数,并将其进行百万转换。由于基因数太少,这里是使用10模拟百万转换。
由于TPM先进行基因长度标准化,所以这里的总Read数计算已经变为基因长度标准化后的Read数,也就是RPK数。
第三步:进行总Read数标准化
将Rep1、Rep2、Rep3的RPK除以各自的转换后的总Read数,得到TPM值。
总结一下,TPM的计算方法:
标准化基因长度:将所有基因的Read数除以基因长度(基因长度单位为kb);
计算总Read数:计算每一个样本的总Read数,然后将其换算为以百万位单位(M);
标准化总Read数:将所有基因的Read数除以总Read数;
TPM相比较RPKM,FPKM的优势
目前都已经推荐进行TPM标准化,不再使用了RPKM、FPKM了,为何会这样?
先看看刚才的RPKM和TPM数据:
将每个转录本的相应RPKM和TPM值进行加总后,可以发现不同转录本的总RPKM并不相同,而进行TPM变换后的加总TPM值是相同的。事实上所有进行TPM变换后的转录本的加总TPM值都是相同的(正常情况下,是百万)。
这个差异会造成什么样的影响呢?
由于RNA-seq就是为了通过比较不同样本间的标准化后的Read数差异来得出基因表达量差异的结果的,那么不同样本的加总RPKM不同,就会导致无法通过直接比较RPKM值确定两者的差异。
举例来说,在不考虑统计差异的情况下,以基因A为例,Rep1的RPKM值为1.43,Rep3的RPKM值是1.42,那么能说基因A在Rep1中的表达量大于Rep3中的表达量吗?
答案是不能,因为Rep1的总RPKM值是4.29,而Rep3的总RPKM值是4.25,虽然Rep1中基因A的RPKM大,但是Rep1的总RPKM值也是较大的(说白了,RPKM的测序深度标准化并不完善)。
而对于TPM数据就不同了,由于总TPM都是相同的,Rep1中基因A的TPM值3.33大于Rep3中基因A的TPM值3.326,所以在不考虑统计学差异的情况下,可以直接得出Rep1中基因A的表达量是要大于Rep3的。
参考资料
StatQuest课程:https://statquest.org/video-index/
猜你喜欢
生信菜鸟团-专题学习目录(6)
还有更多文章,请移步公众号阅读
▼ 如果你生信基本技能已经入门,需要提高自己,请关注下面的生信技能树,看我们是如何完善生信技能,成为一个生信全栈工程师。
▼ 如果你是初学者,请关注下面的生信菜鸟团,了解生信基础名词,概念,扎实的打好基础,争取早日入门。