1. NGS变异检测流程概述
说到NGS变异检测,说白了就是拿测序原始数据,经过一系列计算,找出样本跟参考基因组不一样的地方。单核苷酸变异(SNV)、小插入缺失(Indel)、结构变异(SV)都在这个范畴里。
我刚开始接触这个领域时,觉得不就是比对+找差异嘛,很简单。直到第一次处理全外显子数据,跑完才发现假阳性高得离谱……嗯,从那以后我才明白,流程里每一步的质量控制和参数调优,都比想象中重要得多。
1.1 到底什么是NGS变异检测流程
一套完整的变异检测流程,通常包含这几步:
- 原始数据预处理:FASTQ质量控制、去接头、低质量过滤。
- 比对:将reads比对到参考基因组,输出BAM文件。
- 比对后处理:标记重复、碱基质量分数重校准(BQSR)。
- 变异识别:用HaplotypeCaller(GATK)或类似工具找变异。
- 变异质控与过滤:根据深度、质量分数、链偏好等做硬过滤或用VQSR。
- 注释:用ANNOVAR、VEP等给变异加上基因位置、影响、人群频率等。
你想想看,任何一步出问题,后面的结果基本都没法用。我之前在项目里遇到过测序深度不均匀,结果在低深度区域疯狂报假阳性,后来加了深度过滤才解决。
1.2 应用场景
NGS变异检测的应用场景很广,我简单列几个:
- 肿瘤精准医疗:体细胞突变检测,指导靶向用药。
- 遗传病诊断:全外显子/全基因组寻找致病胚系突变。
- 药物基因组学:检测药物代谢相关基因的变异。
- 微生物基因组学:细菌/病毒变异追踪,耐药突变。
- 群体遗传学:大规模人群的变异频率分析。
不同场景对准确性、速度、成本的要求差别很大。比如肿瘤检测对假阳性容忍度低,你不敢漏掉一个真正有意义的突变;而大规模队列研究,你可能更关注通量和成本。
1.3 主流流程对比
目前业界用得最多的三套流程:GATK Best Practices、Sentieon、DRAGEN。我从几个关键维度对比一下:
| 维度 | GATK Best Practices | Sentieon | DRAGEN |
|---|---|---|---|
| 开发团队 | Broad Institute | Sentieon Inc. | Illumina |
| 许可证 | 免费开源(BSD) | 商业许可 | 商业许可(硬件绑定) |
| 速度 | 较慢(纯CPU) | 快(优化多线程/GPU) | 极快(FPGA加速) |
| 准确度 | 金标准(社区验证最多) | 与GATK高度一致,部分指标更好 | 与GATK高度一致,极低假阳性 |
| 社区生态 | 最丰富(教程、docker、WDL) | 中等(官方文档较好) | 较少(依赖Illumina平台) |
| 计算资源 | 高(内存/CPU需求大) | 中等 | 低(专用硬件) |
| 典型成本 | 免费(但需自备机器) | 按核心年收费 | 设备+许可费 |
一个小经验:如果你刚开始做流程搭建,我建议先跑GATK。原因是社区资源最多,出问题了容易搜到答案。等你把逻辑跑通、知道哪里容易踩坑,再考虑用Sentieon提速。
我在医院项目里用过GATK和Sentieon两种。GATK跑一个全外显子,36线程大概要12小时;换成Sentieon,同样的服务器只要3小时左右。结果一致性很高,但在某些高重复区域Sentieon的假阳性略高,需要额外做过滤。
1.4 避坑指南
我曾经犯过的错:直接用默认参数跑GATK HaplotypeCaller,结果在低深度区域叫出了大量低质量变异。后来才意识到,必须根据测序深度、文库类型调整 --min-base-quality-score 和 --min-pruning 参数。
另外,不同流程的输入格式也有细微差别。比如GATK需要索引后的参考基因组,DRAGEN需要自己的参考文件格式。提前看清楚文档,否则跑一半报错很浪费时间。
一句话总结:没有最好的流程,只有最适合你场景的流程。快速出结果选DRAGEN或Sentieon;需要高度可控、社区支持选GATK。
1.5 本章知识体系
下面这张图把NGS变异检测的上下文和本章核心概念串起来了:
这张图可以帮你建立全局视角。后面的章节,我们会从数据预处理一步一步讲起,最终让你能自己部署一套可自动化运行的NGS变异检测流程。