RNA-seq定量得到每个基因或转录本原始的readcount值,除了基因真实表达水平,readcount值还受到其它因素的影响,主要是基因长度和测序深度,所以不能对其进行直接比较。举个例子,比较样本A中基因a与基因b的表达水平,如果基因a的原始readcount值为2000,基因b的原始readcount值为1000,能说基因a的表达水平比基因b的表达水平高吗?(先不考虑是否显著差异)不能!由于是同一个样本,可以不考虑测序深度带来的影响,但还有基因长度因素,在基因a和基因b都表达一份的情况下,两个基因转录后的mRNA被随机打断成一定长度的片段,基因长度越长,那打断的片段就越多,最终落在长度长的基因上的reads就越多。如果基因a的长度为20000,基因b的长度为1000,那实际上基因b比基因a的表达水平要高得多。再比较基因a在样本A和样本B之间的表达水平,由于是同一个基因在不同样本间的比较,可以不考虑基因长度的影响。如果基因a在样本A中的原始readcount值为2000,在样本B中的原始readcount值为4000,那能说基因a在样本B中的表达水平高吗?不能!如果样本A被测了10M的reads,样本B被测了20M的reads,在理想情况下,基因a在样本A和样本B中的表达水平应该是相当的。当然,这是在理想的情况下,实际上,随着测序数据量的增加,所有基因的readcount值并不会严格按照数据量增加的比例增加,往往是高表达的基因(如管家基因)在疯狂增长,而低表达基因增长很少,如果用常规方法校正测序深度的影响,即每个基因在各样本中的readcount值除以各样本所有基因的reads总和,那一些高表达基因,实际上在处理和对照间没有差异,就有可能被这种校正方法假阳性低认为是上调表达。一些实际上没有差异的低表达基因,就有可能被假阳性地认为是下调表达。
不同标准化方法及应用软件
CPM
Counts per million的缩写,只对测序深度进行校正,一般差异分析都是比较同一基因在处理和对照间的表达差异,所有只做差异分析的话,校正到测序深度就足够了,因为同一个基因在不同样本间的长度都是一样的。常规的计算方法是某个基因的readcount值除以各样本总文库大小或是总的mapped reads数,然后乘以10的6次方(不这样处理的话,数字很小,不方便后面的处理和可视化)。举例来说,某个基因在样本A中的readcount值为1000,在样本B中的readcount值为1500,样本A的总reads数为10M,样本B的总reads数为15M,那该基因在样本A中的CPM值就为100,在样本B中的CPM值也为100。上面说过,这种常规的方法只在理想的情况下适用,实际上,在测得各基因达到饱和的情况下,随着测序深度的增加,各基因的丰度往往不是均匀增加,而是少部分的高表达基因(如管家基因)疯狂增长。这种常规方法计算出的CPM值用来进行差异分析,假阳性会很高。
由于常规方法存在缺陷,学者们提出了一些改进的方法,一种是除以处理和对照中所有样本reads数的上四分位数或中位数,这种方法虽然有了一些改进,但仍然存在一些缺陷。DESeq和edgeR两个软件包提供了另一种相近的方法,它们都基于大部分基因不差异假设,这大部分不差异基因的readcount值比较接近,ratio值接近1,DESeq校正方法选取ratio值的中位数,对每个lane的数据计算一个标准化因子,利用标准化因子校正原始的readcount值(没有进行CPM的转化),对标准化后的readcount值进行差异分析(注意DESeq2的logfolchang计算采用收缩估计模型)edgeR对每个样本都计算一个标准化因子,根据这个标准化因子可以计算每个样本的有效文库大小(也就是总reads数),再计算CPM值进行差异分析。
RPKM/FPKM
RPKM/FPKM是在CPM的基础上,又对基因长度进行了校正处理,这样既可以横向比较某个基因在不同样本间的表达情况,又可以纵向比较同一个样本内不同基因的表达情况(改进后的计算方法),RPKM和FPKM的区别在于,RPKM是针对于单端测序,FPKM是针对于双端测序,R代表reads,F代表fragment。因为在RPKM这个概念提出来的时候,还只有单端测序,后来双端测序出现,RPKM跟着升级为FPKM。这里要注意,同一个文库,双端测序跟单端测序所测得的片段数是一样的,只不过在单端测序中,这个片段就是一个read,而在双端测序中,是由小read1和小read2共同确立的一个read(为了和单端区别,通常叫它fragment),read1是这个fragment的左边一小部分,read2是这个fragment的右边一小部分,这样在比对的时候,通过两者的结合来确定这个fragment的位置,能提高精准度。所以RPKM和FPKM只是一个read和一个fragment概念上的区别,计算方法是相同的(如果比对时过滤read1和read2不同时mapping上的片段)。
常规的计算方法是基因的readcount值除以该样本的总reads数以及基因长度,再乘以10的9次方(和之前一样,不这样处理的话,RPKM/FPKM的值会非常小,不方便后续的处理和可视化。),改进后的计算方法在总reads数的处理上与改进后的CPM计算方法类似,在此基础上,还有对基因长度进行改进的方法,即除以有效基因长度,有效长度是指那些完全落在转录本上的fragment,所有可能的起始位点之和,计算方法是转录本长度减去fragment均值加1。
TPM
TPM(Transcripts per million)最早是由RSEM作者提出来的,和RPKM/FPKM类似,但不同于FPKM的是,TPM先对基因长度进行校正,再对测序深度进行校正,具体算法是,某个readcount值除以有效长度得到一个RPK值,再除以所有基因RPK值的总和,再乘以10的6次方。显然,在乘以10的6次方之前,样本内所有基因的TPM值之和应该等于1,乘以10的6次方,是为了让数据更好处理和可视化,当然,意义也就变成了每测1M的fragment,便有相应比例的fragment支持该转录本。也就说,在不同样本中,TPM值总和都是固定的10的6次方,而RPKM和FPKM并非如此,提出RPM概念的作者,也觉得TPM在比较不同样本间基因的表达更有优势(尽管不应该这么做)。
总结
CPM,RPKM/FPKM TPM都是描述基因相对表达水平的值,不能说是标准化方法,得到这些值的过程,才叫方法。
在进行差异分析时,关键是对测序深度的校正,DESeq2是直接用校正后的readcount值进行差异分析,edgeR是用校正后的readcount值转换成CPM值进行差异分析,但一般都不会校正基因长度再进行差异分析(低表达的基因效力会降低。)