2. GATK工具链简介:版本选择、核心模块与最佳实践

说实话,我刚接触GATK那会儿,也是被一堆版本号和模块名搞懵过。后来踩了些坑,才慢慢摸清这套工具链的脾气。今天我就把我个人习惯的那套思路捋一捋,帮你快速了解GATK的版本怎么选、核心模块管什么、官方最佳实践的骨架长什么样。

2.1 GATK版本选择:别用错版本,否则白跑

GATK现在主流的版本分两条线:4.x系列 和 3.x系列。你可能会问:为什么老版本还在用?

版本 发布时间 关键特性 我的建议
GATK4 (4.1 ~ 4.6) 2018至今 Spark集成、原生Python API、模块化工具、更快 新项目首选,支持现代HPC和云环境
GATK3 (3.8) 2014 ~ 2018 经典队列管理器、内存密集型、需Java 8 仅用于维护旧流程,别用来搞新项目
GATK4-Lite 2021 精简版,去掉了部分非核心工具 跑单个工具还行,做完整流程不推荐

我个人习惯:新手直接上 GATK 4.5.x 或更新的版本。为什么?因为GATK4把很多工具拆得更细,内存管理也更友好。举个例子,我在项目中遇到过用GATK3.8跑HaplotypeCaller,动不动就OOM(内存溢出),换成4.x版本后,同样的数据量稳如老狗。

避坑指南:我曾经看到有人用GATK4的工具去调用GATK3的旧参数,结果跑出来结果全是错的。记住,GATK4的很多命令语法变了,比如 -T 参数在4.x里被移除了,改用 --tool 或子命令模式。

2.2 核心模块介绍:记住这几个就够了

GATK4的工具多到上百个,但常用的就那十几个。我把它们按功能分成三组,这样你心里有个谱。

2.2.1 数据预处理模块

这部分是BQSR的邻居,也是整个GATK流程的前菜。说白了,就是把原始BAM/CRAM文件收拾干净。

  • MarkDuplicates:标记PCR重复reads。如果不做这步,变异检测会假阳性爆表。
  • BaseRecalibrator:BQSR的核心工具。它先评估碱基质量分数的系统偏差,建一个模型。
  • ApplyBQSR:把BaseRecalibrator生成的模型应用到BAM文件里,重写碱基质量分数。
  • FixMateInformation:修复reads的配对信息。某些比对工具输出的mate信息是乱的。

2.2.2 变异发现模块

  • HaplotypeCaller:最常用的变异检测工具。它会在目标区域做局部组装,特别擅长找SNP和小的InDel。
  • GenotypeGVCFs:当你用GVCF模式跑完HaplotypeCaller后,用这个工具合并样本并进行联合基因分型。
  • Mutect2:专门用于体细胞变异检测。我建议肿瘤样本用这个,别跟HaplotypeCaller混着用。

2.2.3 过滤与评估模块

  • VariantFiltration:根据质量指标过滤变异位点。比如QD小于2.0的变异,直接标记为失败。
  • CollectAlignmentSummaryMetrics:产出比对统计报告。我有一次用它发现比对率只有85%,一查才知道参考基因组版本选错了。
  • ValidateSamFile:检查BAM文件是否损坏。嗯,这个工具我每次跑流程前都会用一次,省了很多排查时间。

我的经验:如果你是第一次跑GATK,别急着把所有工具都加进流程。先搭一个最简管线:MarkDuplicates → BaseRecalibrator + ApplyBQSR → HaplotypeCaller。跑通之后,再慢慢加过滤和评估的步骤。

2.3 官方最佳实践概览

GATK官方最佳实践,你可以把它理解为一张地图。它告诉你不同数据类型该走哪条路。我自己最喜欢它的原因:每条路都是经过大量验证的,不会出错。

下面是官方推荐的三大流程,我用一张SVG图帮你理清关系。

GATK官方最佳实践概览 原始测序数据(FASTQ) 数据预处理 比对 + MarkDuplicates + BQSR 流程1:种系SNP/InDel HaplotypeCaller + GVCF GenotypeGVCFs → VQSR 流程2:体细胞变异 Mutect2 + FilterMutectCalls 基于配对肿瘤-正常样本 流程3:RNA-seq变异 SplitNCigarReads HaplotypeCaller(特殊参数) 输出:VCF/BCF文件集 经过过滤与评估的可靠变异位点 所有流程均推荐先做BQSR 这是后续分析的基石

你看这张图,三个流程有个共同的起点——数据预处理。如果你做BQSR(也就是本课程的核心),那不管走哪个流程,这一步都是必须的。我习惯把BQSR看作一个“质量过滤器”,没有它,后续的变异检测就像在沙子上盖房子。

2.3.1 流程一:种系SNP/InDel检测

这是最经典的流程。适合做全基因组测序(WGS)或全外显子组测序(WES)的正常样本。关键在于GVCF模式,它允许你在累积足够样本后再做联合基因分型,省资源又高效。

2.3.2 流程二:体细胞变异检测

我个人觉得这条流程比较挑剔。它要求你有肿瘤样本和配对正常样本,然后用Mutect2去识别那些只在肿瘤里出现的变异。我曾经在项目中试过用HaplotypeCaller跑体细胞,结果出来几百个假阳性,换成Mutect2后过滤效率高了很多。

2.3.3 流程三:RNA-seq变异检测

RNA-seq的情况特殊一点——reads含有剪接位点。直接跑HaplotypeCaller会出错。官方推荐先用 SplitNCigarReads 处理剪接的CIGAR信息,再加一些过滤参数,比如 --dont-use-soft-clipped-bases。

注意:RNA-seq的数据量通常比WGS小,但噪音大。我建议在BQSR阶段就用更严格的参考数据集,比如只针对已知的RNA编辑位点做校准。

2.4 一个简单的命令示例:看看GATK4怎么跑

为了让你有个直观感觉,我贴一个最基本的数据预处理命令。这是BQSR的前两步,后面课程会详细拆解每一行。

# 第一步:标记重复
gatk MarkDuplicates \
    -I aligned_reads.bam \
    -O marked_duplicates.bam \
    -M metrics.txt

# 第二步:碱基质量重校准(先建模型)
gatk BaseRecalibrator \
    -I marked_duplicates.bam \
    -R reference.fasta \
    --known-sites dbSNP.vcf \
    --known-sites Mills_1000G_indels.vcf \
    -O recalibration.table

你看命令结构:每个工具前面都加 gatk,后面跟工具名,然后是一堆参数。我个人习惯把所有输入输出路径写完整,不依赖环境变量,这样换台机器也能直接跑。

嗯,到这里你应该对GATK工具链有了一个整体印象。版本选对了、核心模块认清了、最佳实践的路子也清楚了,后面你再学BQSR就不会发虚了。记住,把基础打好,后面才跑得顺。