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图帮你理清关系。
你看这张图,三个流程有个共同的起点——数据预处理。如果你做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就不会发虚了。记住,把基础打好,后面才跑得顺。