第一章: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
hs37d5b37加上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校正,都是在这张图节点上做文章。

GATK 核心工作流(Best Practices) 原始BAM / 比对结果 MarkDuplicates 标记PCR重复 BaseRecalibrator + ApplyBQSR HaplotypeCaller GVCF模式 GenotypeGVCFs 群体联合分型 VariantRecalibrator 过滤后 VCF 流程说明与注意事项: ① 数据预处理:MarkDuplicates + BQSR 是保证变异检测精度的前提 ② 每个样本单独运行 HaplotypeCaller 生成 GVCF 后再合并 ③ VQSR 依赖已知变异数据库(比如 dbSNP、HapMap)作为训练集 ④ 大规模项目(>100样本)建议用并行任务,单线程跑太慢

个人经验:很多团队一上来就跑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。