FPKM,RPKM,RPM以及TPM的关系之见解(转自http://blog.sciencenet.cn/blog-1113671-1038659.html)

FPKM,RPKM,RPM以及TPM的关系之见解

 

 

RPKM: Reads Per Kilobase of exon model per Million mapped reads (每千个碱基的转录每百万映射读取的reads)

FPKM: Fragments Per Kilobase of exon model per Million mapped fragments(每千个碱基的转录每百万映射读取的fragments)

RPM/CPM: Reads/Counts of exon model per Million mapped reads (每百万映射读取的reads)

TPM:Transcripts Per Kilobase of exon model per Million mapped reads (每千个碱基的转录每百万映射读取的Transcripts)

 

#####################################################################

 

RPKM (Reads Per Kilobase Million)

FPKM (Fragments Per Kilobase Million)

TPM(Transcripts Per Kilobase Million)

RPM (Reads per million)

CPM (Counts per million)

 

#####################################################################

 

FPKM (推荐软件,cufflinks/Stringtie) 和RPKM (推荐软件,Range) 的计算方法基本一致,公式如下(外显子的表达):

                            RPKM= total exon reads/ (mapped reads (Millions) * exon length(KB))

你可以用这个公式计算基因,外显子,转录本的表达,这里以基因的表达为例进行说明:

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

                    mapped reads (Millions) :某个样本的所有reads总和

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

 

在一个样本中一个基因的RPKM等于落在这个基因上的总的read数(total exon reads)与这个样本的总read数(mapped reads (Millions))和基因长度(exon length(KB)) 的乘积的比值。

 

 

#####################################################################

 

而RPM的计算公式:

RPM=total exon reads / mapped reads (Millions)

RPM per gene iscalculated as the number of reads per gene divided by the number ofsingle-mapping reads per sample library times one million

 

#####################################################################

 

而TPM (推荐软件,RSEM/Stringtie) 的计算公式:

                                       TPMi=(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))求商。

 

 

#####################################################################

 

FPKM和RPKM的区别就是一个是fragment,一个是read. 对于单末端测序数据,由于Cufflinks计算的时候是将一个read当做一个fragment来算的,故而FPKM等同于RPKM. 对于双末端测序而言,如果一对paired-read都比对上了,那么这一对paired-read称之为一个fragment,而如果一对paired-Read中只有一个比对上了,另外一个没有比对上,那么就将这个比对上的read称之为一个fragment.而计算RPKM时,如果一对paired-read都比对上了会当成两个read计算,而如果一对paired-read中只有一个比对上了,另外一个没有比对上,那么就计read数为1. 故而即使是理论上将各个参数都设置成一样的,也并不能说FPKM=2RPKM. 对于单末端测序,虽然理论上FPKM等同于RPKM, 但是实际上即使是使用同一个mapping软件得到的mapping结果,然后再分别去计算同一个基因的RPKM (自己人工计算,或者用现成的一些软件都能算)和FPKM(用Cufflinks/Stringtie计算),结果却仍然是不同,因为不同软件有自己的模型和自己的一些内在算法。

 

      RPM与RPKM的区别看公式或者全称就能看出来,就不赘述了!

 

    不管是计算FPKM、RPKM,还是计算TPM,我们都要先得到一个ReadCount的矩阵(行为基因,列为样本)。在计算FPKM和RPKM时,都是先按列(也就是这个样本的总read数)进行标化,之后再对对个基因的长度进行标准化。而TPM是先对基因长度进行标准化,之后再对列(这个时候就不再是这个样本的总read数了)进行标化。这样使得最终的TPM矩阵的每列都相同(列和都等于1000000),也就是说每个样本中的TPM的和都是一样的。这样理论上就会使得我们更容易去比较同一个基因在不同样本中所占的read数的比例。而RPKM/FPKM由于最终的表达值矩阵的列和(有效的read总数,测序深度)不同,故而理论上不方便直接比较同一个基因在不同样本中所占的read数的比例,而实际上用stringtie计算出来的每个基因在每个样本中的FPKM和TPM是差不多的,故而很多人包括我也会用FPKM或者RPKM来比较同一个基因在不同样本间的表达值 。

    虽然上面说了对于单末端测序数据,FPKM等同于RPKM. 但是不论是单末端测序还是双末端测序,Cufflinks的表达值的单位都是FPKM,至于在单末端测序数据下,Cufflinks的表达值的单位用RPKM代替FPKM,个人仍旧是持反对意见的。

posted @ 2018-01-12 14:08  ZzzzHong  阅读(768)  评论(0)    收藏  举报