日常掰瞎
第一眼看到spike-in这个词,首先想到了以下两个问题:
spike-in是什么?
所谓spike-in就是适用于所有应用的掺入质控品,包含多个不同的 DNA 序列,这些序列并非来自您的目标生物体,但其 GC 含量与您的目标生物体的 GC 含量相同。对于高通量测序平台,掺入spike-in的 DNA 片段的长度也应与文库构建前的 DNA 片段大致相同。例如RNA-seq 分析时,使用的外部 RNA控制混合物 (ERCC) ,做人类细胞H3K79me2的ChIP-seq 分析时掺入的果蝇表观基因组。
spike-in能干什么?
通常芯片或NGS测序平台来比较两个或多个实验条件之间变化的分析都基于一个假设,就是要分析的样品(无论是 DNA 还是 RNA)在不同实验条件下每个细胞的总产量是相同的。因此,研究人员通常采用相同数量的总 RNA 或 DNA 在他们的芯片或NGS测序平台上进行分析,并将所得数据相互标准化,以便使来自每个实验条件的信号总量(例如,每百万reads [RPM ] 测序归一化和芯片分位数归一化)保持相同,到达可比较的目的。然而,当来自不同实验条件的细胞不能产生相同数量的 DNA 或 RNA 时,这种假设就是有缺陷的。那么为了准确解释样本间基因组每个区域的信号是否增加或减少,就要在每个样本中掺入一定比例的spike-in做为对照,用于随后的数据标准化。文字解释可能不是那么直观,下面来看一个示意图:
(a) 当基因组各处都发生相同程度的变化时,将总测序reads归一化为相同的数字会隐藏变化,而将spike-in的reads归一化为相同的数字会揭示reads密度的全局变化。
(b) 当特定基因组区域发生信号增加时,标准化样本之间的总测序reads会导致来自基因组其他区域的reads数量人为减少,这就会错误地解释为在特定实验条件下减少。而通过使用spike-in的reads作为标准化,可以避免这种人为的变化。
(c) 甲基化 DNA 拷贝数的差异在使用spike-in标准化下可以被准确的分析,而样本中甲基化的比例在没有spike-in标准化下也可以正确分析。
案例
下面的图片显示了使用spike-in做为标准化的前后信号对比情况。a、b两个图为基因组的信号track图,显示了由 MNase-seq 得到的年轻和年老细胞中确定的核小体信号分布。a图为没有使用spike-in做为标准化,可以看出年轻和年老细胞中确定的核小体信号分布没有差别,而使用spike-in标准化(b图)后年老细胞中核小体的信号仅为年轻里的一半。c、d(spike-in标准化)显示了年轻和年老细胞中由 RNA-seq 确定的基因表达倍数变化情况。从这里可以看出,spike-in对实验条件之间的全局变化进行归一化的效果很明显。
方法
在一个简单的场景中,例如,当reads-in计数和样本浓度之间存在线性相关性时,可以基于全局线性标度执行归一化。通过将对照组中spike-in的reads数与实验组中的reads数进行比较,可以为实验组生成标准化函数,例如,实验组标准化 的reads可以通过一个ratio来矫正,即n = 1.5 ×r ,n表示归一化读取数,r是原始读取数。
在更复杂的情况下,可能需要数十个spike-in 片段和更复杂的归一化算法来纠正测序偏差。例如,spike-in计数和样本浓度之间的相关性可能看起来是非线性的。这时可以对样本之间的单个区域spike-in计数进行分位数归一化,然后使用非线性回归模型来模拟每个样本的归一化函数。标准化的示意图如下:
结束语
spike-in的应用看起来效果很明显,但目前普及率好像还不是很高。具体到底好不好用,留待以后见证。简单的应用场景使用起来不怎么难,对于复杂的情况我也是迷迷糊糊的。按照惯例下面给出原始参考文献方便感兴趣的同学。今天的分享到此结束~~~
<<The Overlooked Fact: Fundamental Need for Spike-In Control for
Virtually All Genome-Wide Analyses>>