几种丰度计算方法
feature
定义: 基因组上对具有不同性质区域的定义(例如: gene/exon/intron/miRNA等)。
优点: 利于分类整理结果。
两类测序bias(偏差)
长度bias: 相同表达丰度的转录本,往往会由于其基因长度上的差异,导致测序获得的Read (Fregment)数不同。总的来说,越长的转录本,测得的Read (Fregment)数越多。
测序深度bias: 由测序文库的不同大小而引来的差异。即同一个转录本,其测序深度越深,通过测序获得的Read (Fregment)数就越多。
reads Count:count数据,不需要提供基因长度信息。
(一般一个read 50个bp)
定义: 。可使用featureCount等软件进行计算。
优点: 可有效说明该区域是否真的有表达及真实的表达丰度能够近似呈现真实的表达情况。有利于实验验证。
缺点: 由于exon长度不同,难以进行不同exon丰度比较;由于测序总数不同,难以对不同测序样本间进行比较。
RPKM/FPKM/TPM标准化方法
RPKM: Reads Per Kilobase of exon model per Million mapped reads (代表每百万reads中来自于某基因每千个碱基转录得到的reads数。是将map到基因的read数除以map到基因组上的所有read数(以million为单位)与RNA的长度(以KB为单位)之和);
- total exon reads:样本中某个基因mapping到外显子上的所有的reads数
- mapped reads (Millions) :样本总reads数 (以million为单位)
- exon length(KB):某个基因的长度(外显子长度的总和,以KB为单位)
测序read数会受到基因长度和测序深度影响,解决方案如下:
受到基因长度影响,那么将测序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。
例子
举例来说,假定有以下RNA-seq数据,测定了A、B、C、D四个基因,长度分别是2、4、1、10kb,共测定了3个生物重复:Rep1、Rep2、Rep3。
第一步,计算总Read数
第二步:标准化总Read数
第三步:标准化基因长度
FPKM: Fragments Per Kilobase of exon model per Million mapped fragments(每千个碱基的转录每百万映射读取的fragments)
其实FPKM同RPKM是一样的,只是RPKM用于单末端测序,而FPKM用于双末端测序。
二代测序时,会将所有的DNA打成片段(fragment),然后再去测序。单末端测序时,一个片段对应一个Read,但是双末端测序时,一个片段会从两端分别测定一次,因此这两个配对Read对应的是同一片段(偶尔也会有一个片段只对应一个Read的情况,另一个Read因为某些原因被剔除或丢失了)。
区别也就在这里,对于FPKM来说,配对到同一片段上的两个Read只会算作一个Read,也就是说FPKM是以Fragment为准,不以Read数为准,其他计算方式是完全一样的。
补充:对于单末端测序, 虽然理论上FPKM等同于RPKM, 但是实际上即使是使用同一个mapping软件得到的mapping结果, 然后再分别去计算同一个基因的RPKM (自己人工计算,或者用现成的一些软件都能算) 和FPKM (用Cufflinks/Stringtie计算), 结果却仍然是不同, 因为不同软件有自己的模型和自己的一些内在算法。)
【bulk测序,count值和RPKM/FPKM值一半一半;单细胞测序中大多用count值】
TPM:每千个碱基的转录每百万映射读取的Transcripts
TPM的计算方法其实同RPKM很类似,同样的对基因长度和测序深度进行标准化,只不过RPKM是先进行测序深度标准化,后进行基因长度标准化;而 TPM是先进行基因长度标准化,后进行测序深度标准化 。事实证明,TPM的标准化方法更有优势
例子
第一步:进行基因长度标准化
第二歩:计算总Read数(RPK)
第三步:进行总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的。
【当使用TPM时候,每个样本的TPM总和是一样的(=10^6)。这使得比较同一个基因的reads数在不同样本间的比例变得容易。FPKM和RPKM与此相反,每个样本的FPKM或RPKM的累加和可以不一样,造成样本间不能直接比较FPKM或RPKM值】