DNA-seq 变异过滤与质量控制
这页讨论的是 variant calling 之后的那一步:在一堆候选位点里区分出更可信的变异,而不是简单把 caller 输出的所有记录都当成'真变异'。
- 理解 QUAL、DP、AF、FILTER 等 VCF 字段的大致含义,比死记具体软件参数更重要。
- 过滤逻辑高度依赖 caller、样本类型和设计,下面只提供通用直觉,不是固定阈值菜单。
变异过滤(Variant Filtering)要解决的核心问题是:
输入:一个候选变异集合(通常来自 caller 的原始 VCF 输出),每个变异附带质量分数、深度、等位基因频率等统计信息。
输出:一个经过筛选的变异子集,尽可能保留真实的生物学变异,同时剔除假阳性。
该问题的本质是在召回率(Recall)与精确率(Precision)之间做权衡。过度严格的过滤会导致假阴性(漏掉真实变异),而过度宽松的过滤则会保留大量假阳性。
caller 产生的原始候选集通常包含大量假阳性。研究表明,未经过滤的变异调用中假阳性率可能高达 10-30%。过滤这一层连接了:
- 原始数据层:BAM 中的 read 证据、比对质量、碱基质量;
- 统计层:VCF 中的质量字段(QUAL、GQ)、深度(DP)、等位基因频率(AF);
- 算法层:caller 内部的统计模型和过滤逻辑;
- 上下文层:重复区域、低复杂度区域、样本类型(germline vs somatic)。
如果过滤策略不合理,后续解释、数据库查询和统计分析都会建立在不稳定的候选集上,导致研究结论不可靠。
常用 VCF 字段的统计意义
Section titled “常用 VCF 字段的统计意义”理解以下字段的统计含义是设计过滤策略的基础:
- QUAL (Quality Score)
- 变异位点的整体质量估计,通常为 Phred 标度:$QUAL = -10 log_{10} P( ext{变异不存在} | ext{数据})$。注意不同 caller 的计算方法可能有差异。
- DP (Depth / Read Depth)
- 该位点的测序深度,即覆盖该位置的 reads 数量。深度过低(如 $< 10$)难以提供稳定证据;深度过高(如 $> 500$)可能提示重复区域或技术偏好。
- AF (Allele Frequency) / VAF
- 支持替代等位基因的 reads 占总 reads 的比例。对于二倍体 germline 数据,理想杂合位点 $AF approx 0.5$,纯合位点 $AF approx 1.0$;somatic 变异中 $AF$ 反映克隆频率。
- FILTER
- caller 或过滤工具赋予的状态标记。PASS 表示通过所有内部过滤;其他标记(如 LowQual、StrandBias、ClusteredEvents)提示特定的可疑特征。
- GQ (Genotype Quality)
- 基因型判定的质量分数,$GQ = -10 log_{10} P( ext{错误基因型} | ext{数据})$。高 GQ 表示对 0/0、0/1、1/1 的判断有信心。
- SB (Strand Bias)
- 链偏好性度量。真实变异应在正负链上都有支持 reads;若变异只出现在单链,可能是测序错误或链特异性偏好。
过滤策略的分类
Section titled “过滤策略的分类”1. Hard Filtering(硬过滤)
Section titled “1. Hard Filtering(硬过滤)”定义:基于单个或多个字段的简单阈值进行二元判定。
优点:
- 直观可解释,易于实现和调试;
- 计算成本低,适合大规模数据。
缺点:
- 难以自适应不同平台(Illumina vs. PacBio)和实验条件;
- 阈值选择往往基于经验,缺乏统计严谨性;
- 无法捕捉字段间的复杂交互。
2. 模型化过滤(Soft Filtering / ML-based)
Section titled “2. 模型化过滤(Soft Filtering / ML-based)”定义:使用统计模型或机器学习方法,基于多个特征联合评估变异可信度。
常见方法:
- 高斯混合模型(GMM):将变异特征分布建模为真假阳性的混合;
- 随机森林 / 神经网络:利用标注数据训练分类器;
- Variant Quality Score Recalibration (VQSR):用已知变异位点训练模型,为每个变异分配校准后的质量分数。
优点:
- 能整合多个证据源;
- 可学习平台特定的错误模式;
- 输出连续的质量分数,便于下游阈值调整。
缺点:
- 需要高质量的训练数据;
- 模型假设可能不适用于所有样本类型;
- 跨项目迁移时需要重新评估。
即使字段看起来不错,在重复序列和低复杂度区域仍可能出现:
- 多重比对导致定位不稳定;
- mapping 错位导致假阳性 indel 或 SNP;
- coverage 异常堆积掩盖真实模式。
在教学或探索阶段,可以先用一个较为保守的思路:
- 看
FILTER = PASS; - 看深度是否过低;
- 看等位基因支持是否只来自极少数低质量 reads;
- 对重复和低复杂度区域额外谨慎。
需要强调的是:不存在一组对所有数据都正确的通用阈值。
过滤策略必须结合:
- 测序平台与实验设计;
- caller 的具体字段定义;
- 下游任务对假阳性和假阴性的容忍度。
与真实工具或流程的连接
Section titled “与真实工具或流程的连接”真正的 variant filtering 不是看单个字段,而是把以下证据一起看:
- BAM 中的 read 支持;
- VCF 中的质量和偏好性指标;
- caller 文档中的 FILTER 含义;
- 区域注释、群体频率与功能注释。
因此,它是连接 caller 输出与结果解释的一层关键桥梁。