课程介绍:HaplotypeCaller在变异检测中的地位

1.1 从原始数据到变异集:整个流程长什么样?

做生物信息学变异检测,说白了就是回答一个问题:这个样本的基因组序列,跟参考基因组比,到底哪些位置不一样?

但这条路从下机数据到最终的VCF文件,中间其实要过好几关。我自己刚入行时,常常搞不清每一步到底在干嘛——后来带团队才发现,很多同学一开始也卡在这里。

下面这张图把核心流程串起来了。你今天学的是HaplotypeCaller,它卡在比对、标记重复和碱基质量校正之后,在联合基因型分析之前。

单样本变异检测核心流程 测序原始数据 比对 (BWA MEM) 预处理 (MarkDuplicates + BQSR) HaplotypeCaller 单个样本 gVCF 过滤 & 注释 最终 VCF 本节课聚焦的步骤 单样本 → gVCF

嗯,这里要注意:很多入门教程把HaplotypeCaller和联合分析(GenomicsDBImport + GenotypeGVCFs)混在一起讲。我们这门课只专注单样本阶段,你先把这一步跑稳了,后面多个样本合并自然水到渠成。

1.2 HaplotypeCaller 凭什么成为“主流”?

如果你翻过一些老教程,应该见过 UnifiedGenotyper——GATK 的上一代变异检测工具。HaplotypeCaller 和它最大的区别,就是不再基于单一位点的统计模型,而是局部重比对 + 从头组装。

说白了,UnifiedGenotyper 像拿着放大镜看每个位置;而 HaplotypeCaller 会先把可疑区域整段捞出来,像拼图一样组装成可能的单倍型,再跟参考基因组比对。结果就是:对插入缺失(indel)和结构变异的检出率,明显上了一个台阶。

我在一个肿瘤外显子项目里踩过坑:

避坑提醒:

有一次我用 UnifiedGenotyper 跑一个高异质性样本,结果有个 3bp 的缺失直接被跳过了。后来换成 HaplotypeCaller 重新跑,那个缺失稳稳地被检出。从此我养成了习惯——只要条件允许,优先用 HaplotypeCaller。

下面这张表可以快速看出两个工具的核心差异:

对比项 UnifiedGenotyper HaplotypeCaller
核心算法 单点贝叶斯模型 局部组装 + 单倍型推断
indel 检出 依赖比对结果中的gap 主动从头组装,indel更敏感
计算资源 较低 稍高(但可接受)
输出格式 标准VCF gVCF(可联合分析)
推荐使用场景 历史遗留或极低覆盖度 绝大多数WES/WGS项目

1.3 单样本场景下的独特优势

你可能会问:既然HaplotypeCaller可以跑联合分析,为什么还要特意学单样本?

原因很简单:实际项目中,很多情况你只有一个样本——比如临床诊断的罕见病家系、肿瘤活检,或者你只是想快速查看某个个体的变异。联合分析需要等所有样本都准备完毕,而单样本HaplotypeCaller随到随跑。

另外,我个人发现单样本模式还有一个隐藏好处:调试流程时特别快。你不需要启动整个队列,拿一个样本测试就能排除90%的参数问题。

关键点:

单样本 HaplotypeCaller 生成的是 gVCF(带每个位点的碱基质量、覆盖度等详细信息)。这份 gVCF 可以直接用于后续的联合分析——所以你现在的输出不是废纸,而是未来合并的“零件”。

1.4 实战前的准备

在正式敲命令之前,建议确认以下环境就位:

  • GATK 4.x(建议 ≥4.2.0,我目前在用 4.3.0.0)
  • 参考基因组(比如 hg38,记得下载好 .fai 和 .dict 索引)
  • 已经过 BWA 比对、MarkDuplicates、BQSR 的 BAM 文件(我们会在第3章准备一个完整例子)
  • 足够的 RAM(建议 ≥16GB,WGS 数据可能需要 32GB)

一个标准的启动命令长这样(先别急着跑,后面会逐行解析):

gatk HaplotypeCaller \
    -R /ref/hg38.fa \
    -I sample.bam \
    -O sample.g.vcf.gz \
    -ERC GVCF

一个提升效率的小习惯:

我习惯把 -ERC 参数单独写一行,方便后期快速切换成 -ERC NONE 直接输出标准 VCF。另外别忘了 --native-pair-hmm-threads 线程数设置,默认单线程,改成 4~8 能快不少。

好了,关于“HaplotypeCaller 在变异检测中到底扮演什么角色”,相信你已经有了一个清晰的全局图景。它就像一个高精度的局部拼图师,先把可疑小区块拆解重建,再严谨地报出每一个可能的变异。

准备好进入下一关了吗?我们先不往下翻——先把上面这张图刻在脑子里。后面的每一章,都会反复回到这个核心流程。