chinesehugh的个人博客分享 http://blog.sciencenet.cn/u/chinesehugh

博文

[转载]你真得明白RPKM, FPKM, TPM这三者的区别吗?

已有 17182 次阅读 2021-1-17 17:14 |系统分类:科研笔记|文章来源:转载

在高通量测序(比如RNA-seq)中很重要的一块就是检测基因的表达量,基因表达量计算和差异表达分析是转录组数据分析的基础。与qPCR类似,转录组数据基因表达量的衡量也是采用相对定量的方法。那么,到底该如何定量呢?

假设通过比对得到了A,B,C,D四个基因在3个样本中的read counts,如下表,那么,可以用比对到参考基因的reads数来衡量不同样本基因的表达量吗?能否认为样本1中gene B比gene C表达量高吗?或者gene B在样本3中比样本1表达量高吗?

 表1 不同基因比对得到的reads个数

基因名称

样本1

样本2

样本3

gene A (2kb)

20

24

30

gene B (4kb)

40

50

60

gene C (1kb)

10

16

15

gene D (10kb)

0

0

1

total reads

70

90

106

 答案当然是不可以。原因主要有两点:

① 基因长度的影响。

在同一个样本中,基因越长,随机打断得到的片段就越多,该基因被测到的概率就越大,比对到该基因的reads就越多。

② 测序深度的影响。

不同样本中,样本的测序深度越高,同一基因被测到的次数越多,比对到该基因的reads就越多。

为了能进行不同样本不同基因间的比较,就需要给这些数据同样的“起跑线”,类似物理学的参照系。简单来说也就是将该基因的read counts除以总reads数和基因长度,消除测序深度和基因长度的影响。于是就有了常见的RPKM、FPKM、TPM等标准化方法。


RPKM  

RPKM(Reads Per Kilobase Million):即Reads Per Kilobase of exon model per Million mapped reads。

计算公式:

RPKM= total reads/mapped reads(Million) /length(kb)

total reads:某个样本mapping到特定基因的外显子上的所有的reads;

mapped reads(Million):某个样本的所有reads总和(以Million为单位);

length(kb):某个基因的长度(外显子的长度的总和,以kb为单位)。

下面是依照公式计算上表中基因的RPKM值(注意:为了便于显示,这里将公式中的Million改为100):

 表2 不同基因的RPKM值的计算结果(“M”为100时)

基因名称

样本1

样本2

样本3

gene A (2kb)

14.29

13.33

14.15

gene B (4kb)

14.29

13.89

14.15

gene C (1kb)

14.29

17.78

14.15

gene D (10kb)

0

0

0.09

total RPKM

42.87

45.00

42.54

 

FPKM  

FPKM(Fragments Per Kilobase Million): Fragments Per Kilobase of exon model per Million mapped fragments

FPKM和RPKM的计算方法基本一致,只不过把reads换成了fragments。对于单末端测序数据,由于Cufflinks软件计算的时候是将一个read当做一个fragment来算的,故而FPKM等同于RPKM。

对于双末端测序,如果一对paired-read都比对上了,那么这一对paired-read称之为一个fragment;而如果只有一个比对上了,另外一个没有比对上,那么就将这个比对上的read称为一个fragment。而计算RPKM时,一对paired-read会当成两个read分别计算。

关于Fragments和Reads的区别见下图:

图片1.png 

TPM  

TPM(Transcripts Per Kilobase Million):Transcripts Per Kilobase of exon model per Million mapped reads

而TPM 的计算公式:

TPM=(Ni/Li)*1000000/sum(Ni/Li+……..+ Nm/Lm)

Ni:mapping到基因i上的read数; Li:基因i的外显子长度的总和

一个样本中某基因的TPM值的计算方法:先对每个基因的read数用基因的长度进行校正,之后再用校正后的这个基因read数(Ni/Li)与校正后的这个样本的所有read数(sum(Ni/Li+……..+ Nm/Lm))求商。

下面是依照公式计算上表中基因的TPM值(注意:为了便于显示,同上,将公式中的100万改为100):

表3 不同基因的TPM值的计算结果(“M”为100时)

基因名称

样本1

样本2

样本3

gene A (2kb)

33.33

29.63

33.26

gene B (4kb)

33.33

30.86

33.26

gene C (1kb)

33.33

39.51

33.26

gene D (10kb)

0

0

0.22

total TPM

100

100

100

不管是计算FPKM、RPKM,还是计算TPM,我们需要一个Read Count的数据矩阵(行为基因,列为样本)。在计算TPM是先对基因长度进行标准化,之后再对列进行标准化。

这样使得最终的TPM矩阵的每列总和都相同(1M),也就是说每个样本中的TPM的总和都是一样的。理论上,这使得我们更容易比较不同样本中所占同一基因的read数的比例。


备注:在进行microRNA表达分析时,往往不考虑碱基长度的影响,因为miRNA的长度范围大部分集中在21-23nt,差异不大,但原理上大家要弄懂。

 

总结:

不管是计算FPKM、RPKM,还是计算TPM,我们都要先得到一个Read Counts的矩阵(行为基因,列为样本)。在计算FPKM和RPKM时,都是先按列(也就是这个样本的总read数)进行标化,之后再对对个基因的长度进行标准化。而TPM是先对基因长度进行标准化,之后再对列(这个时候就不再是这个样本的总read数了)进行标准化。这样使得最终的TPM矩阵的每列都相同,也就是说每个样本中的TPM的和都是一样的。这样就会使得我们更容易去比较同一个基因在不同样本中所占的read数的比例。而RPKM/FPKM由于最终的表达值矩阵的列和不同,故而不能直接比较同一个基因在不同样本中所占的read数,需要再换算成比例。

 

转载自

http://www.360doc.com/content/19/0315/12/19913717_821662843.shtml

http://www.360doc.com/content/19/0315/12/19913717_821662274.shtml




https://blog.sciencenet.cn/blog-3431904-1267652.html

上一篇:随机森林(Random Forest)介绍
下一篇:[转载]数据标准化简介
收藏 IP: 111.36.137.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (3 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-13 20:05

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部