变异检测概述:应用场景与基本概念
大家好,我是老张。做生信这行有些年头了,变异检测这块坑踩了不少,也攒了些经验。这一章咱们先聊聊基础——不是什么枯燥的定义堆砌,而是把变异检测到底在干嘛、用在哪儿、核心逻辑是什么,掰开揉碎了讲清楚。
你想想看,做人类基因组也好,肿瘤测序也好,或者搞动植物育种,最终目的都是找出样本跟参考基因组不一样的地方。这个“不一样”,就是变异。怎么从海量测序数据里把这些位点揪出来?这就是变异检测要干的事。
1.1 变异检测在干什么
说白了,就是拿着测序仪产出的短读长(reads),跟参考基因组比对,然后看哪些位置对不上。对不上的地方,可能是单个碱基换了、多了、少了,也可能是大段结构变了。
我个人习惯把变异检测比作“找茬游戏”:参考基因组是标准答案,你的样本是答题卡,测序数据就是答题卡上的铅笔痕迹。我们要从那些模糊、重叠、有噪声的痕迹里,识别出真正写错的地方。
1.2 应用场景——你在什么项目里会遇到它
不同场景对变异检测的要求差得挺远。我列几个我实际接触过的典型场景:
| 场景 | 典型项目 | 检测重点 | 参数要求 |
|---|---|---|---|
| 人类遗传病 | WGS/WES 家系分析 | SNP、Indel(尤其是罕见变异) | 高灵敏度,低假阳性 |
| 肿瘤体细胞突变 | 肿瘤-正常配对测序 | SNV、小 Indel、CNV、SV | 低等位基因频率检出,降噪 |
| 动植物育种 | GWAS、群体遗传 | SNP 密度,群体多态性 | 批量处理,硬过滤标准 |
| 微生物/病毒 | 病原体溯源、耐药突变 | 高深度位点,低频变异 | 低深度阈值,高深度矫正 |
| 三代测序 | PacBio/ONT 结构变异 | 大段缺失、插入、倒位 | 比对容忍度,链特异性处理 |
我在一个肿瘤项目里遇到过这样的情况:用默认参数跑GATK HaplotypeCaller,结果把测序深度低的区域全判成杂合缺失。后来发现是参数里的最小碱基质量阈值设得太低,导致很多假阳。你看,参数不对,后面的注释全白费。
1.3 变异检测的核心概念
为了后面聊参数时不懵,先快速过几个你必须搞清楚的名词:
- 参考基因组(Reference):比对的目标序列。hg38、GRCh37、T2T-CHM13 你是要选的。不同版本影响比对结果。
- 比对(Alignment):把 reads 贴到参考上。常用的 BWA-MEM、minimap2。比对质量直接决定检测质量。
- 碱基质量(Base Quality):每个碱基的测序置信度。Phred 分数,Q30 = 1/1000 错误率。检测时会根据质量加权投票。
- 测序深度(Depth):覆盖到某个位点的 reads 数量。深度不够,低频变异根本看不到,或者假阳性爆炸。
- 等位基因频率(AF):支持变异 reads 占该位点所有 reads 的比例。体细胞突变一般要求 AF ≥ 0.05~0.1,生殖系突变期望 0.5(杂合)或 1.0(纯合)。
- 重比对(Realignment):在 Indel 附近重新调整 reads 位置,减少错配。老工具依赖这一步,新模型(如 GATK4 的 HaplotypeCaller)内嵌了局部组装。
- 硬过滤 vs 软过滤:硬过滤是直接丢掉不达标的位点,软过滤是标记出来留给下游自己定。实操里我倾向先软过滤,做诊断项目时再硬过滤。
1.4 主流工具与调用方式
现在业内常见的变异检测工具有这些:
- GATK(HaplotypeCaller, Mutect2):人类 WGS/WES 金标准,以局部 haplotype 组装为核心。
- freebayes:基于贝叶斯的非流程检测,适合群体和细菌,速度快。
- bcftools + samtools mpileup:老牌组合,适合快速预览和批量过滤。
- DeepVariant:Google 的深度学习方法,使用 CNN 模型,精度高但吃 GPU。
- Strelka2:Illumina 出品,兼顾速度和准确度,支持体细胞和生殖系。
调用方式基本都遵循:先比对,再排序标记重复,然后跑检测。拿 GATK 举个例子:
# 比对
bwa mem -t 8 -R '@RG\tID:my_sample\tSM:my_sample\tPL:ILLUMINA' \
reference.fa sample_R1.fastq.gz sample_R2.fastq.gz | \
samtools sort -o sample_sorted.bam
# 标记重复(预处理必做)
gatk MarkDuplicates -I sample_sorted.bam -O sample_dedup.bam -M metrics.txt
# 调用 Germline SNP/Indel
gatk HaplotypeCaller \
-R reference.fa \
-I sample_dedup.bam \
-O sample_raw_variants.vcf
嗯,这里要注意:@RG标签不写的话,后面很多分析脚本直接报错,或者分组出错。我见过有人跑完了100个样本才发现所有样本的RG都一样,结果没法合并GVCF——那一周白干了。所以养成习惯,每一步都检查文件头和元数据。
1.5 变异检测的整体流程框架
下面这张图是整个章节的知识骨架,也是后续参数调优的思维地图。我把它画出来,你保存好,后面每一章都会围绕这些节点展开。
1.6 参数调优的第一原则
你可能会问:“老张,这么多参数,到底哪些最重要?” 我个人经验,第一步永远是看数据质量。打开 FastQC 报告,看碱基质量分布、GC含量、接头污染、重复率。如果这里有硬伤,后面怎么调参数都没用。
另一个经验是:记住你的参考基因组版本。我见过有人用 hg38 比对,却用 GRCh37 的 dbSNP 做过滤,结果大量已知位点被错误标记。检查参考版本、dbSNP 版本、注释数据库版本是否一致,是必须做的作业。
好了,这一章把大背景讲清楚了。后面每一章我们会深入到一个具体参数:从碱基质量阈值、映射质量、深度过滤、AF 阈值、到 Indel 区域重比对、硬过滤条件、联合基因型……每一个参数我都会告诉你怎么设、为什么这么设、以及我在项目中踩过的坑。