引言
变异检测是人类基因组重测序过程中,比较重要的一个步骤。我们使用比对软件将二代测序得到的短序列映射到人类的参考基因组上之后,便是需要进行变异检测。
所谓变异,分为点突变,插入删除,拷贝数变异,结构变异等等。不同变异的检测方法不同,当然针对不同类型的测序数据,也需要使用不同的检测方法。点突变的检测相对比较简单,需要从比对结果中找突变的位置,并通过统计学算法区分测序错误,比对错误和真实变异。
拷贝数变异也是一种变异类型,对拷贝数变异的检测,与点突变的检测方法不同。假设测序得到的短序列在整个参考基因组上分布均匀,那么如果所有区域拷贝数都是正常的话,那么所有区域的分布的序列数都一致。如果某个区域的分布的序列数出现异常,那么可以得到该区域的拷贝数出现了异常。正是根据这个假设,人们开始设计不同的基于测序覆盖度的拷贝数检测算法。
根据不同的测序数据,可以分为全基因组拷贝数检测方法,全外显子组拷贝数检测方法。根据不同的检测目的,可以分为遗传性拷贝数变异检测方法,癌症基因组拷贝数检测方法。拷贝数检测软件有很多,具体的软件的列举,我会在另一篇文章中进行总结和介绍,下面我主要介绍几类拷贝数检测方法中涉及到的算法。
拷贝数变异检测算法
一、全基因组检测方法
(1)划分窗口
一般会根据测序深度进行窗口的划分,窗口划分的大小会影响CNV检测的大小。一般来说,测序深度越深,检测到的CNV的大小的下限就越小。
所以窗口大小的划分对检测结果是影响很大的。针对(0.5-1.5X)低深度的全基因测序,我们通常使用50kb的窗口滑动,滑动距离是5kb,这样的窗口设置也可以检测到1M左右的拷贝数变异,甚至是1M以下的。
(2)统计每一个窗口的序列计数或平均深度
根据设定的窗口,计算每一个窗口的序列计数或者平均深度,这个是判断该区域是否存在拷贝数变异的重要指标。
(3)对计数或深度进行校正
虽然我们做了全基因组序列分布均匀的假设,但是根据实际数据分析,某些区域因为某些原因,会出现序列分布不均匀的现象,这些现象的发生与拷贝数变异无关,而与一些序列特征有关,如GC含量等。发现了这个问题,一般算法都会对计数或测序深度进行GC校正或其他校正。校正的方法有很多,中位数校正,拟合回归校正等等。
(4)对完成校正后的数据进行CNV检测
这种CNV检测方法有很多,比如circular binary segmentation算法,HMM算法,或者直接设定阈值的简单算法。
根据以上的四个步骤,即使不使用参照集(或者说是外部参照),也可以进行CNV的检测。
二、全外显子组检测方法
全外显组拷贝数变异的检测与全基因组的最大的不同就在于之前的假设上,全外显组靶向捕获技术由于捕获效率的不同,导致不同的目标区域获取的序列数目是不同的,即使是同一个panel,不同时间不同人员的操作,可能都会对捕获效率有所影响,这就造成了拷贝数变异检测的困难。
在这样的情况下,人们不得不使用外部参照,通过参照集的比较,找到异常的区域,从而发现CNV。
拷贝数检测几个相关问题
(1)序列数和平均测序深度
我认为统计序列数和平均深度差异并不是很大,可能在测序深度很深情况下,对于较小的CNV检测是会有影响,因为两者在区域边缘处理上会有所差异。
(2)参照集的选择
参照集的选择建议尽量选择同一个实验批次的样本,最为合适。这里对于全外显子组数据要求更高。
(3)杂合子分析
由于拷贝数的变化也会引起该区域内杂合子的缺失,所以有时杂合子的缺失也是拷贝数变异的一个佐证,在分析过程中,有的算法也会把这部分的信息考虑进来。
三、全基因组拷贝数检测方法Go实现(CNVgo)
解决难点:
- GC校正方法:中位数校正,回归校正
- 并行计算覆盖度或reads数目
- 区域识别,CBS算法实现,HMM算法实现
- 非整倍体识别
- 批量检测,固定参照集,无参照集
计划算法:
- 并行快速计算覆盖度,输入文件是bam文件;
- 去除同源区域或异常区域
- 将窗口大小,滑动大小设置为参数
- 多种校正方法选择,多种识别方法选择
- 兼容非整倍体识别
- 可选对照集
- 绘制必要的图表