RNA-seq的标准化方法

对于RNA-seq而言,由于 技术误差测序深度不同基因长度不同,为了能够比较不同的样本,比较不同的基因的表达量,以及使表达水品分布符合统计方法的基本假设,就需要对原始数据进行标准化。

对于一个新兴的领域,通常会有50多种算法,但是最后常用的,其实也就那么几个。在RNA-seq标准化这个领域也是如此,目前用的最多也就是, RPKM/FPKM, TPM,但是注意,有些时候一个方法出现的多,单纯是因为公司没有修改他们的分析流程。

为了方便理解,假设目前你在一次测序中(即剔除批次效应)检测了一个物种的3个样本,A,B,C,这个物种有三个基因G1,G2,G3, 基因长度分别为100, 500, 1000. 通过前期数据预处理,你得到了尚未标准化的表达量矩阵,如下所示。

事先声明,以下数字完全是我瞎编,方便用于后续的计算,如有雷同,留个微信,线下交友。

基因/样本 样本A 样本B 样本C
G1(100) 300 400 500
G2(500) 700 750 800
G3(1000) 1000 1300 1800

基因表达量矩阵

基因/样本 样本A 样本B 样本C
G1(100) 300 400 500
G2(500) 700 750 800
G3(1000) 1000 1300 1800

先说三个简单的策略,也就是最容易想到的方法

  • Total Count, TC, 每个基因计数除以总比对数, 即文库大小, 然后乘以不同样本的总比对数的均值
  • Upper Quartile, UQ, 和TC方法相似, 即用上四分位数替代总比对数
  • Median, Med, 和TC方法相似, 用中位数代替总比对数

上面方法都相似,考虑到我的例子只有三个基因,所以只展示TC方法的结果. 可以发现,原本比其他组观测值的A-G2,目前反而是最高。

TC处理后 A B C
G1 370 402.7 418.1
G2 863.3 744.1 543.5
G3 1233.3 1308.8 1505.1

如果省去TC中的 "乘以不同样本的总比对数的均值" 这一步,那么差不多就是CPM (counts per million)的策略,也就是根据直接根据深度对每个样本单独进行标准化. 在edgeR和limma/voom里面都有出现过。

CPM

TMM(trimmed mean of M value)方法出现在2010年,比TC、 UQ、Med, CPM方法高级一点,基本假设是绝大数的基因不是差异表达基因.计算方法有点复杂,简单的说就是移除一定百分比的数据后,计算平均值作为缩放因子,对样本进行标准化。这次我们用R/edgeR来算. 和之前不同,A组的G2基因标准化后还是最低,这就是trim所引起。

> library(edgeR)
> expr <- matrix(c(300,400,500,700,750,650,1000,1300,1800),nrow = 3,byrow = TRUE)
> f <- calcNormFactors(expr, method = "TMM")
> mt_norm <- t(t(mt) /f )
> mt_norm[,1]      [,2]      [,3]
[1,]  303.0164  402.5300  491.9114
[2,]  707.0382  754.7438  787.0583
[3,] 1010.0545 1308.2226 1770.8811

DESeq2/DESeq有自己专门的计算缩放因子(scaling factor)的策略,它的基本假设就是绝大部分的基因表达在处理前后不会有显著性差异,表达量应该相似,据此计算每个基因在所有样本中的几何平均值(geometri mean), 每个样本的各个基因和对应的几何平均数的比值的中位数就是缩放因子(scaling factor). 这里仅仅提到思想,不做计算。

上述方法都是对样本整体进行标准化,标准化的结果只能比较不同样本之间的同一个基因的表达水平。如果要同时比较不同样本不同基因之间的表达量差异,就得考虑到每个基因的转录本长度未必相同,毕竟转录本越长,打算成片段后被观察到的概率会高一点。最长尝试解决这个问题,应该是单端测序时代的RPKM(双端则是FPKM), 全称为Reads Per Kilobase Million, 其中K象征的是转录本长度, M象征的是测序量.

RPKM

对于A-G1而言,他的表达量就是300*1000 / (2000 x 100) = 1.5, 其中系数10e6在这里不需要使用。你可以认为它是先对文库大小进行标准化,然后再根据基因长度标准化

RPKM处理后 A B C
G1 1.5 1.63 1.61
G2 0.7 0.61 0.52
G3 0.5 0.53 0.58

一波操作下来,感觉数值就有点可比性了。

下面介绍TPM(transcript per million), 计算公式如下,其中X表示比对到基因上的read数,l表示基因的长度。

TPM

如果手动计算的话,那就是先进行 长度标准化

长度标准化 A B C
G1 3 4 5
G2 1.4 1.5 1.6
G3 1 1.3 1.8

然后进行文库标准化,即每一列各个数值除以每一列的和

长度标准化 A B C
G1 0.56 0.59 0.60
G2 0.26 0.22 0.19
G3 0.18 0.19 0.21
列和 1 1 1

目前还有一种技术叫做UMI,可以进行转录本的绝对定量,一个转录本有多少特异的UMI,就一定程度上代表了它的表达量。

一些看法

RNA-seq数据标准化其实要分为两种,样本间标准化和样本内标准化。

对于差异表达分析而言,样本内对不同转录本长度进行标准化 毫无必要,是的,真的是没啥意义,粗略比较同一个基因在两个样本间是否有差异,只要处理好测序深度这个问题就行,任何要求用RPKM/FPKM而不是raw count作为差异表达分析的原始数据的分析方法都需要被淘汰掉,而沿用这种分析策略的公司都已经很久没有更新自己流程了。

此外,如果你要比较不同样本内的基因表达情况,那么目前更推荐用TPM。 因为在它的计算方法中,能更有效的标准化不同转录本组成上的差异,而不是简单除以文库大小。

题外话,我最近看到一篇发在Nature上ATAC-seq文章,Method部分提到他用RPKM这个方法对每个bin的read count进行标准化。考虑到每个bin的大小都一样,我觉得这个标准化的方法从定义上更接近CPM。

Correcting for gene length is not necessary when comparing changes in gene expression within the same gene across samples, but it is necessary for correctly ranking gene expression levels within the sample to account for the fact that longer genes accumulate more reads.

对于差异表达分析而言,标准化不但要考虑测序深度的问题,还要考虑到某些表达量超高或者极显著差异表达的基因导致count的分布出现偏倚, 推荐用TMM, DESeq方法进行标准化。

参考文献

  • TMM: A scaling normalization method for differential expression analysis of RNA-seq data
  • TPM: RNA-Seq gene expression estimation with read mapping uncertainty
  • RNA-seq必看综述: A survey of best practices for RNA-seq data analysis
  • Estimating number of transcripts from RNA-Seq measurements (and why I believe in paywall)
  • What the FPKM? A review of RNA-Seq expression units

RNA-seq的标准化方法罗列相关推荐

  1. 一文掌握RNA seq,RNA seq课程大汇总

    RNA测序(RNA-seq)在过往十年里逐渐成为全转录组水平分析差异基因表达和研究mRNA差异剪接必不可少的工具.RNA-seq帮助大家对RNA生物学的理解会越来越全面:从转录本在何时何地转录到RNA ...

  2. 数据的标准化和标准化方法

    数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量纲的指标能 ...

  3. python代码规范化_数据标准化方法及其Python代码实现

    数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法.标准差法).折线型方法(如三折线法).曲线型方法 ...

  4. 为什么要特征标准化及特征标准化方法

    1.归一化定义 归一化化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内.归一化的原因是什么那? 2.归一化原因 一是,为了后面数据处理的方便,把不同量纲的东西放在同一量纲下 ...

  5. 笔记|数据分析:指标体系中的标准化方法

    总体来说,可以将标准化方法分为两类:一类是定距的,即保留数据之间距离:一类是定序的,即不保留数据之间实际距离,只保留大小关系. 1 保留数据的实际距离的标准化方法 当需要保留数据之间距离时,需要包括三 ...

  6. 常用的数据标准化方法

    数据的标准化(normalization)是将数据按照一定规则缩放,使之落入一个小的特定区间.这样去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权.其中最典型的 ...

  7. 【指数编制系列二】数据标准化方法

      在系统学习指数编制方法之前,先介绍一下几个指数编制过程中会经常使用的数据处理方法,如:数据标准化方法.权重设置方法.异常值处理方法.因为在后面指数编制过程中会经常用到这些方法.接下来我还是按照分类 ...

  8. 核糖核酸RNA的药物修饰方法

    核糖核酸RNA的药物修饰方法 mRNA上存在着众多类型的RNA修饰,且分布规律各不相同.从5'末端开始,常见的RNA修饰包括2'-OH端的甲基化核苷酸,如N6, 2'-O-二甲基腺嘌呤(m6Am).N ...

  9. (染色归一化)病理图像(HE或者WSI)图像标准化方法小介绍

    更新 有朋友和我说Vahadane这个方法运行的时候有点慢.确实是不快,但对于很多更优的方法来说,已经是比较快的了.但确实比Macehko和Reinhard这种方法要慢不少.因为求非负矩阵求解的时候是 ...

最新文章

  1. 【转】Hbuilder MUI 页面刷新及页面传值问题
  2. 微信公众号扫描带参数二维码实现自动分组?
  3. [转] 字符集、字符编码
  4. NSArray 过滤
  5. VS2008和VS2012怎么进行Debug模式和Release模式的切换
  6. js实现元素水平垂直居中
  7. Eclipse配置CAS client
  8. ZOJ - 3228 Searching the String(AC自动机求不重复子串出现次数)
  9. Win7下提取加密PDF文件(pdf加密成exe)
  10. hibernate注解方式来处理映射关系
  11. PHP 表单文件上传的原理,php多文件上传功能实现原理及代码
  12. php类文件命名规则,phpcms文件命名规则
  13. 《复联》里的黑科技距离现实有多近?
  14. 内衬纸缺陷在线检测系统
  15. python安装pywifi
  16. 设计模型之Visitor模式-图书馆管理系统应用C++实现
  17. python还款程序_python 之简单模拟银行系统功能(卡号申请、还款、支付、取现)...
  18. 微信营销的价值及注意
  19. ios沙箱模式开启_iOS的沙箱机制 是否应该清理后台
  20. 对MySQL 8.0分区表探索总结

热门文章

  1. 关于安装依赖时报错 code128的问题
  2. mysql where条件中字符集转换
  3. 郑清2461 我是签到题
  4. 华为NCE网管配置EVPL业务(共享VCTrunk)之路径法
  5. 在xp上安装linux只需要对安装盘符格式为fat32就行了吗,从硬盘安装在XP下装红旗linux双系统...
  6. Unity3D中开发2D游戏——游戏玩家的出生、无敌、死亡方法
  7. Java游戏开发 —— 五子棋
  8. 世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”
  9. 蓝光视频BDMV转MKV
  10. Spring Framework源码使用 spring-aspects AOP遇到的问题