这篇笔记是对GATK官网上发布的寻找突变体之前的数据预处理这一块内容的学习笔记。实际上也是一篇翻译笔记。原文在这里,是发表在20多天前的,是一个很短小的文章:https://gatk.broadinstitute.org/hc/en-us/articles/360035535912-Data-pre-processing-for-variant-discovery
Purpose
这是在寻找突变体之前必须做的第一阶段。它包括对原始序列数据(以FASTQ或uBAM格式)进行预处理,生成可分析的BAM文件。这包括对参考基因组的比对以及一些数据清理操作,以纠正技术偏差,使数据更适合后续分析。
一般流程是:
Expected input
上面这个工作流程是针对单个样本进行操作的,这些样本的数据最初被组织在不同subset中,称为read group(关于read group里都包含哪些信息,可以参考文章:WES中常见问题汇总)。这些read group对应于由多重化产生的库的交集(DNA产物从生物样本分离出来,准备测序,其中包括DNA片段和用于标记的barcodes)和lane(DNA测序芯片的物理分隔)。我们的reference implementations 读取未映射的BAM (uBAM)格式数据作为输入。转换程序可用于从FASTQ转换到uBAM。
Main steps
数据预处理的过程可以概括为:首先将序列reads比对到参考基因组,生成一个按坐标排序的SAM/BAM文件。接下来,我们标记重复,以减少数据生成步骤(如PCR扩增)带来的偏差。最后,我们重新校准基础质量分数,因为不同的calling算法高度依赖分配给每个序列read中单独的基础calls的质量分数。
(1)Map to Reference
涉及到的软件:BWA, MergeBamAlignments
第一个处理步骤是按每一个read group进行处理,包括将每对read比对到参考基因组上。因为比对算法是单独处理每对read的,所以可以进行大规模并行处理。
(2)Mark Duplicates
涉及软件:MarkDuplicatesSpark / MarkDuplicates + SortSam
MarkDuplicatesSpark:
第二个处理步骤是对每个样本进行操作,包括通过一些人工操作,识别可能来自相同原始DNA片段的重复的reads对。这些被认为是非独立的观察,因此软件在每组重复中标记除了单个read对之外的所有read对。在这一步里,还需要按照染色体顺序对reads进行排序,以便进行下一步的处理。MarkDuplicatesSpark用来重复标记和排序。这一步曾经是一个技术瓶颈,因为在样本中read对之间进行大量比较,之后MarkDuplicatesSpark利用Apache Spark来并行化进程,从而更好地利用可用资源。即使不访问专用的Spark集群,也可以在本地运行此工具。
MarkDuplicates and SortSam:
作为MarkDuplicatesSpark的替代方案,可以通过使用Picard软件里的MarkDuplicates实现来执行这个步骤,然后使用SortSam对read进行排序。这两个工具目前都是作为单线程工具实现的,因此无法利用core并行性的优点。建议在服务器上运行。
(3)Base (Quality Score) Recalibration
涉及软件: BaseRecalibrator, Apply Recalibration, AnalyzeCovariates (optional)
第三个处理步骤对每个样本进行操作,包括应用机器学习来检测和纠正base质量分数中的系统错误。在发现突变体的过程中,base质量分数在权衡支持或反对可能的等位基因变异体方面起着重要作用,因此纠正数据中观察到的任何系统性偏差非常重要。偏差可能来源于文库的准备和测序过程、芯片的制造缺陷,或测序器的仪器缺陷。重新校准(recalibration)过程包括从数据集中的所有base calls中收集协变量测定,根据这些统计数据构建一个模型,并基于产生的模型对数据集中应用于base质量调整。最初的统计数据收集可以通过分散到整个基因组坐标进行并行化,通常是通过染色体或染色体批次进行并行化。然后每个区域的统计数据必须被收集到一个单一的基因组范围的共变异模型里;这步不能被并行化,但它在计算上很简单,因此不会成为瓶颈。最后,从模型中获得的重新校准规则应用于原始数据集,以产生一个重新校准的数据集。这与初始统计数据收集的方式相同,在基因组区域上进行并行处理,然后执行最后的文件合并操作,为每个样本生成一个准备好后续分析的文件。