表达量计算--RPKM, FPKM, TPM,CPM,RPM
两类测序bias:
- 长度bias:相同表达丰度的转录本,往往会由于其基因长度上的差异,导致测序获得的Read(Fregment)数不同。总的来说,越长的转录本,测得的Read(Fregment)数越多。
- 测序深度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