normalize 和差异分析


差异

表达差异,剪接变化差异,和富集差异等等,如何从生物信息学的角度理解差异

剪接差异 应该最为容易理解:通过计算PSI(percent spliced in)值,进而得到样本间变化的 ΔPSI(PSI1-PSI2)。

表达差异(这里表达简单指基因转录出RNA的水平),平常在做基因表达差异的时候,往往会通过 RPKM,FPKM, TPM 值等做 normalize 的方法,三者间的差异详见RPKM、FPKM、TPM详解。总结说,TPM 是更完备的 normalize 方法。

这里说到的表达差异,个人认为可以这样理解:

A,B,C,D 四人分 RMB,在第一次分 100 RMB 的时候,四个人势均力敌,大家和平相处,都分了25 RMB;
然而,第二次通货膨胀,分 1000 RMB,D带了一把扳手,于是,只分给了A,B,C一人 50 RMB,自己拿了 850 RMB;

这个时候问,D与A谁分到的多? A在哪次中拿到的多?
第一个问题傻瓜,不做回答
第二个问题,大部分人可能都会稍微考虑一下,不会直接说第二次拿到的多,因为,第二次总量也多了。
第一次 25/100,分到了 1/4
第二次 50/1000,分到了 1/20
实际上第二次A分到的相对变少了(杠精出门左拐)

基因表达也是类似,在同一样本间比较,是容易的,考虑到 gene length 就可以了。而在样本间比较,要考虑到两次间的深度(read depth)不同。normalize 的过程,其实就是把分摊的钱总数变一致的过程。换个角度想,A 在第一次中,分到的RMB数与其他人并列第一,而第二次,却与BC并列第二了,从名次上看,也是第一次多。

没走的杠精可能会问了:
第一次确实分的钱少了,也不是因为通货膨胀的影响,两次购买力一致,那第二次A分到的就是多了。

这次给杠精点个赞,这确实也反映了实际的生物学测序上的问题,

  1. 当我们敲低一个转录因子的时候,整体的表达量就是降低的,我们再用 normalize 的方法做,真的可以吗?
  2. 会不会出现每个基因同等比例的下降,采用 normalize 比较时,没有检测到基因表达有差异?或者说,只有下降和没有变化的,用 normalize 的方法就会出现,下降和上升两种变化?
  3. 不同组织中,活跃的基因不同,仅在组织A中表达的基因a,在组织B中,用 normalize 的方法作比较,a的reads数就会变为0,相当于分摊到了其他基因上。

这些问题,其实是文库补偿(library composition)效应造成的,RPKM,FPKM 和 TPM 就不能很好的解决这样的问题。我目前能想到的,对于这样情况,只能利用 spike-in,或者你已知一些不受影响的基因,作为参考。

差异表达的计算中,DESeq2 和 edgeR 使用了“参考基因”(edger与DEseq包分析原理)

富集差异(这里指代ChIP-seq类数据中peak的富集)。如果你能想到上边的问题,就会发现, ChIP-seq 这一类富集的测序数据不也有这样的情况吗? peak 整体的降低,或者大多数降低的减少,个别升高的很多的情况。
如果把 mRNA-seq 想象成,mRNA是被 “polyA抗体” 富集下来的,那么 ChIP-seq 和 mRNA-seq 在数据处理的角度,就是相似的。

ChIP-seq and RNA-seq

如果把所有样本的 peak set 整合成一个 collection,是不是很像基因组注释?

在一篇研究胚胎发育的研究中Zygotic genome activation triggers the DNA replication checkpoint at the midblastula transition,对于 ChIP-seq differential binding 的确定就用到了 edgeR

Regions of significant enrichment were determined using Zinba (Rashid et al., 2011), differential binding was determined using edgeR.

留个问题

既然 RPKM, FPKM, CPM 方法用于比较样本间的变化,用这些方法制作文件得到的 coverage track 还有意义吗?有没有其他的方法?

先做个回答:
肯定是有意义的,很多文章也一直都在用。
上面我们所讨论的问题其实都推向了一个极端,DESeq2 和 edgeR 的算法相对而言是更 complete,更能反应真实情况。

不过,大多数实际情况会比这些极端情况温和得多,也就是说,RPKM 等方法做 normalize 还是能够反应一部分真实得情况。

如果有其他见解,欢迎评论区留言,可附一些文章链接。

CPM

在 ChIP-seq 类数据的处理中,常使用的方法是 CPM(count per million),count 与 read 的区别,我是从单细胞中了解到的,单细胞的矩阵分为 read matrices 和 molecular matrices(count matrices),二者的区别在于 reads 根据 UMI 去重后得到了 counts,所以单细胞多用 count matrices。在 ChIP-seq 类数据中,即使在没有 UMI 的情况下,也会做去重,相当于得到了 counts,所以 normalize 方法选用 CPM。在 RNA-seq 中,reads 与 counts 等同。

diffbind

这个 R 包主要用于 不同处理条件、不同时间节点的 peak 差异比较,实现了 peak 的合并和 差异分析。

简单实现差异比较

diffbind bioconda principle
diffbind bioconda commands

拓展链接

统计学笔记

StatQuest学习笔记11——p值详解
StatQuest学习笔记12——FDR及实现
StatQuest学习笔记06——分位数及其应用

DESeq2 在 RNA-seq 中的使用

RNA-seq workflow: gene-level exploratory analysis and differential expression

spike-in

ERCC spike-in RNA 的调研
The Overlooked Fact: Fundamental Need for Spike-In Control for Virtually All Genome-Wide Analyses


文章作者: 梁绍波
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 梁绍波 !
评论
  目录