表达量计算--RPKM, FPKM, TPM,CPM,RPM

两类测序bias:

  1. 长度bias:相同表达丰度的转录本,往往会由于其基因长度上的差异,导致测序获得的Read(Fregment)数不同。总的来说,越长的转录本,测得的Read(Fregment)数越多。
  2. 测序深度bias:由测序文库的不同大小而引来的差异。即同一个转录本,其测序深度越深,通过测序获得的Read(Fregment)数就越多。

本文提到的RPKM/FPKM/RPM等方法都是为了消除这两类bias而进行的标准化。例如:RPM主要应用于sRNA(sRNA长度变化不大),来消除测序深度bias;RPKM/FPKM应用范围会更广泛,用于同时消除长度及测序深度这两种bias。

一、几种丰度计算方法

1.1 reads Count

  • 定义:高通量测序中比对到exon上的reads数。可使用featureCount等软件进行计算。
  • 优点:可有效说明该区域是否真的有表达及真实的表达丰度。能够近似呈现真实的表达情况。有利于实验验证。
  • 缺点:由于exon长度不同,难以进行不同exon丰度比较;由于测序总数不同,难以对不同测序样本间进行比较。

1.2 RPKM

RPKM:Reads Per Kilobase Million=Reads Per Kilobase Per Million Reads,即每一百万条Reads中,对基因的每1000个Base而言,比对到该1000个base的Reads数。

$ \frac{R1*10{}^{9}}{L1*RT} $

R1=map到该基因的reads总数
L1=该基因长度
RT=map到基因组的总reads数

1.3 FPKM

FPKM:Fragments Per Kilobase Million=Fragments Per Kilobase Per Million Reads。

$ \frac{F1*10{}^{9}}{L1*FT} $

F1=map到该基因的fragments总数
L1=该基因长度
FT=map到基因组的总fragments数

FPKM意义与RPKM的区别仅在于,Fragment 与 Read。

RPKM的诞生是针对早期的SE测序,FPKM则是在PE测序上对RPKM的校正。

Reads即是指下机后fastq数据中的每一条Reads,Fragments则是指每一段用于测序的核酸片段,在SE中,一个Fragments只测一条Reads,所以,Reads数与Fragments数目相等;在PE中,一个Fragments测两端,会得到2条Reads,但由于后期质量或比对的过滤,有可能一个Fragments的2条Reads最后只有一条进入最后的表达量分析。总之,对某一对Reads而言,这2条Reads只能算一个Fragments,所以,Fragment的最终数目是Reads的1到2倍之间。

1.4 RPM

  • 定义:RPM/CPM: Reads/Counts of exon model per Million mapped reads (每百万映射读取的reads)
  • 公式:RPM = ExonMappedReads * 10^6 /TotalMappedReads

优点:利于进行样本间比较。根据比对到基因组上的总reads count,进行标准化。即:不论比对到基因组上的总reads count是多少,都将总reads count标准化为10^6。sRNA_seq等测序长度较短的高通量测序经常采用RPM进行标准化,因为sRNA长度差异较小,18-35 nt较多,所以长度对不同的small RNAs相互比较影响较小 (优点:计算简单、方便。)。

缺点:未消除exon长度造成的表达差异,难以进行样本内exon差异表达的比较。

1.5 TPM

TPM:​Transcripts Per Million。

TPM的计算分3步:

  • step1:根据基因/转录本长度​校正count值;假设某基因count值为R1,则校正后count值为:R1/(L1/1000)​ ==> L1为该基因的长度;
  • step2:计算total 校正后count值;即所有基因的校正后count值​总和,Rtotal;
  • step3:计算TPM;TPM​结果为:

$ \frac{R1*10{}^{9}}{L1*Rtotal} $

优点:首先消除exon长度造成的差异,随后消除样本间测序总reads count不同造成的差异。

缺点:因为不是采用比对到基因组上的总reads count,所以特殊情况下不够准确。例如:某突变体对exon造成整体影响时,难以找出差异。

二、相互关系

评价:以上几种计算exon表达丰度的方法,差异不是非常大。如果结果是显著的,那么采用上面任一计算方法大多均可找出显著结果。但是当表达丰度差异不是那么显著时,不易区分不同类别,需要根据实际需要选择对应的标准化方法。通常情况下首先推荐FPKM值;计算样本差异时(edgeR/DESeq2等),采用raw read count;计算sRNA丰度时,通常采用RPM值。

注意:以上TotalMappedReads推荐首选比对到基因组上的总reads数,而不是比对到exon或者gene上总reads数。而且需要注意可能存在某一区域产生大量序列的情况,如:rRNA/tRNA及一些未注释区域等。如果该区域可能影响最终结果,TotalMappedReads需要减去这些产生过量扩增的序列或去除重复序列(Deduplicate很多时候都是很有必要的,samtools markdup:bam文件过滤和去重复)。这同样需要根据实际情况而定。

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn