第一章:GATK概述 —— 背景、版本与核心工具链
大家好,我是你们的讲师。很多年以前,我刚接触二代测序数据分析时,最头疼的就是怎么从一堆FASTQ文件里找到真实的基因突变。那时候工具没现在这么成熟,跑出来的结果真假难辨。
直到后来GATK出现,才算是给变异检测领域立了个规矩。说白了,GATK不是万能的,但它是目前行业里最靠谱的标准流程。今天这第一讲,我就带大家把这个框架搭起来。
1.1 GATK是什么?为什么它是行业标准?
GATK的全称是Genome Analysis Toolkit,由Broad Institute开发。它不是单一工具,而是围绕变异检测设计的完整分析管线。我的理解是,它把测序数据分析中各种“坑”都考虑进去了——比如测序错误、比对偏差、PCR重复等等。
为什么GATK能成为标准?核心就两点:
- 严格的统计模型:它不盲信碱基,而是用贝叶斯模型评估每个位点的可信度。我见过很多团队拿别的工具跑出阳性结果,但用GATK一校验,基本都归于测序噪音。
- Bias校正机制:专门针对测序仪、文库制备引入的系统性误差做校正,这是别的工具很少深入处理的。
核心观点:GATK的价值在于“降噪”。测序数据里大部分变异信号都是假的,GATK帮你筛掉90%以上的假阳性,留下来的才值得关注。
1.2 关键版本差异:HG38 vs. b37,千万别用错参考基因组
嗯,这里要特别说一句。很多新手在这上面栽跟头,我曾经也犯过这个错——用了不同版本的参考基因组,结果最后怎么都对不上。
GATK官方文档里,常用的参考基因组版本有:
| 版本名 | 实际内容 | 常见用途 |
|---|---|---|
| b37 | 基于GRCh37,但改名decoy序列 | Broad内部标准,很多公开数据集在用 |
| hg19 | 与b37不完全一致,有差异位点 | 需额外调整,容易出坑 |
| GRCh38 / hg38 | 官方最新版,修正了gap和错误 | 新项目推荐,尤其是WGS |
| hs37d5 | b37加上decoy序列 | 用于BWA-MEM比对时的最佳选择 |
避坑指南:我以前做了一个肿瘤配对项目,用b37跑的BAM,结果下游用GATK4时默认用了hg38参考,变异位点几乎全部错位。那次教训太深刻了:参考基因组版本必须在项目一开始就固定,并在整个流程中保持一致。交叉比对时尤其要注意。
1.3 GATK核心工具链概览:从BAM到VCF的完整流程
GATK官方给出的Best Practices管线,分为数据预处理、变异发现和变异过滤与评估三大阶段。我个人的习惯是先理清楚每个阶段的核心工具,然后才动手写脚本。
下面是GATK4中我用得最多的核心工具列表:
- MarkDuplicates:标记PCR重复,减少假阳性 - 典型内存需求:根据BAM大小,至少给4G堆内存。
- BaseRecalibrator / ApplyBQSR:碱基质量分数重校正——这是GATK最大亮点之一,后面章节会详细讲参数。
- HaplotypeCaller:核心的变异检测器——支持GVCF模式,用于群体joint calling。
- GenotypeGVCFs:将多个GVCF合并联合分型——我建议先用CombineGVCFs再Genotype,效率更高。
- VariantRecalibrator / ApplyVQSR:基于机器学习的变异质量分数重校准——用于过滤无法硬过滤掉的假阳性。
为什么流程顺序这么重要?你想想看,如果比对好之后直接去call snp,那些重复读段和测序系统错误就会被当成变异信号,结果可想而知。
1.4 核心逻辑:一张图看懂GATK工作流
下面这张图,我画了整个GATK分析管线的核心骨架。你理解这张图,就掌握了GATK的说明书。后续所有参数调优和bias校正,都是在这张图节点上做文章。
个人经验:很多团队一上来就跑HaplotypeCaller,忽略了前面的预处理。但我建议你无论如何先跑完MarkDuplicates和BQSR。我做过对比实验,跳过后false positive能多出30%以上,那后面的分析全白做了。
1.5 环境准备:你需要知道的命令行基础
GATK4提供了两种运行方式:直接调用gatk命令,或者用Spark模式加速。下面是我最常用的几种调用姿势,你可以直接参考:
# 最基本的MarkDuplicates命令
gatk MarkDuplicates \
-I my_sample.bam \
-O my_sample_dedup.bam \
-M my_sample_metrics.txt
# BQSR推荐用两阶段:先建模,再校正
gatk BaseRecalibrator \
-R reference.fasta \
-I marked_dups.bam \
--known-sites known_indels.vcf \
-O recal_data.table
gatk ApplyBQSR \
-R reference.fasta \
-I marked_dups.bam \
--bqsr-recal-file recal_data.table \
-O recalibrated.bam
# HaplotypeCaller典型GVCF模式
gatk HaplotypeCaller \
-R reference.fasta \
-I recalibrated.bam \
-ERC GVCF \
-O sample.g.vcf.gz
避坑指南:我一开始总忘记 -ERC GVCF 参数,结果输出的普通VCF没法做联合分型。记住:如果你准备跑多个样本联合分析,HaplotypeCaller一定要加 -ERC GVCF。