一分钟搞懂 quantile normalization

  最近学习了一个适用于CUT&RUNCUT&Tag文库大小矫正的方法,数据标准化过程用到了Quantile Normalization,记忆力有限需要动手记录一下。

  Quantile Normalization (分位数标准化) 可以将样本间的不同分布映射到同一种分布,从而消除分布差异便于样本间的比较。

  其主要思想是通过对每个样本进行排序、均值、映射,使得所有样本在每个位置上都具有相同的分布。下面来看看具体的过程。

  从原始矩阵出发:

  首先,样本基因表达值排序并保留排序位置:

  这一步相当于生成了两个新的矩阵,左边是样本内基因排序的矩阵,右边是基因在排序后的位置矩阵。

  接着,对表达值排序矩阵的每一行求平均值:

  最后,根据位置矩阵和行均值生成最终的结果矩阵:

  填充时根据基因在样本内的排序位置,从行均值里面找到对应行的值做为基因的表达值,如gene2在样本sample1的排序位置为5,则行均值的第5行的18.6即为gene2的表达值。

  当然,quantile normalization的过程无需自己动手写代码来实现,在R里面有可用的包来做这个事,如下面用preprocessCore包的函数来完成:

>library(preprocessCore)

>data
      sample1 sample2 sample3 sample4 sample5
gene1       3      16      13       4      18
gene2      17       2      11      13       2
gene3      14      10       8      11       5
gene4       4      20       3      18      17
gene5      15      11      20      16      12

>normalize.quantiles(as.matrix(data))
     [,1] [,2] [,3] [,4] [,5]
[1,]  2.8 15.4 15.4  2.8 18.6
[2,] 18.6  2.8 12.2 12.2  2.8
[3,] 12.2  7.6  7.6  7.6  7.6
[4,]  7.6 18.6  2.8 18.6 15.4
[5,] 15.4 12.2 18.6 15.4 12.2

  搞懂了Quantile Normalization的原理及作用,下一个重要的问题就是适用于什么场景?没有最适合只有更适合,也许只有通过实践才知道答案。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容