VQSR简介
做变异过滤这么多年,我最大的体会是:变异过滤不是简单的“切一刀”。你写个阈值,比如QD小于2.0就干掉,看起来干脆利落——但数据分布是会骗人的。今天给你上一课:VQSR——变异质量评分再校准,说白了就是让数据自己告诉你哪些变异靠谱。
什么是VQSR
VQSR,全称 Variant Quality Score Recalibration。名字很长,核心就两句话:用已知的“好变异”和“坏变异”训练一个概率模型,然后给每个新变异打个分。这个分数叫 VQSLOD,越高代表越像真变异。
具体怎么做?它用了高斯混合模型(GMM)。我刚开始接触时觉得这东西太抽象,后来拆开看其实不复杂:
- 从你的变异集里挑出已知真实的位点(比如dbSNP、HapMap里的)和已知假阳性位点(比如你人工验证过的)。
- 拿一些质量指标当特征:QD、FS、SOR、MQ、ReadPosRankSum……大概10个左右。
- GMM自动学习这两类在特征空间里的分布。
- 对每个新变异,计算它落在“真实分布”和“假阳性分布”里的概率比,取对数就是VQSLOD。
为什么需要VQSR
你可能会问:我直接用硬过滤不行吗?我举个例子你就懂了。
硬过滤就像按身高招篮球队员——超过190cm就要,不到就淘汰。但有些190cm的人不会打球,有些185cm的人弹跳惊人。你想想看,一个全基因组测序跑下来,几千万个变异,靠三四个阈值一刀切,必然会漏掉真实的、保留假阳的。
VQSR强在哪?它综合多个指标,不做简单切分。它在高深度区域放得宽,在低深度区域收得紧。我印象最深的一次:一个肿瘤-正常配对项目,硬过滤把13个真实somatic SNV都滤掉了(因为其中一个指标刚好超标),换成VQSR后全部保住了。所以VQSR不是可选项,是必需品——尤其当你处理全基因组数据时。
与硬过滤的区别
我整理了一张对比表,你一看就明白:
| 维度 | 硬过滤 | VQSR |
|---|---|---|
| 阈值方式 | 人工设定固定阈值(如QD > 2.0) | 训练GMM,自动计算VQSLOD,再选一个概率切点 |
| 特征数量 | 通常只用2-3个指标 | 使用全部可用质量指标(QD、FS、SOR、MQ等) |
| 对数据适应 | 不依赖数据分布,所有样本一刀切 | 利用样本自身分布特性,因人而异 |
| 假阳性控制 | 容易漏掉边界值附近的假阳性 | 概率化判断,假阳性率可控 |
| 运行开销 | 极低,几秒完成 | 需要训练模型,全基因组约30-60分钟 |
| 适用场景 | 小规模项目、快速原型、WES低深度 | 全基因组、大规模、对准确性要求高 |
说白了,硬过滤是“快但糙”,VQSR是“慢但好”。哪个更香?看你手里的项目有多大。
VQSR的工作流程
给你画张图,把上面说的串起来:
流程走完,你拿到每个变异的VQSLOD,然后选一个切点——一般用99.9% sensitivity或者VQSLOD阈值-2.0。剩下的变异质量就靠谱多了。
嗯,这里要注意:VQSR不是万能的。如果你的训练集本身有错误标注,GMM学到的东西就是错的。我曾经遇到过dbSNP里混入系统假阳性(某个批次测序错误),结果VQSR把所有类似特征的假阳性都当成了真变异……后来我加了第二道硬过滤规则才救回来。
一句话总结
硬过滤是“看门大爷查身份证”,VQSR是“AI面试官看综合素质”。做全基因组,我选后者。不过具体怎么调参数、怎么选阈值、怎么判断模型好坏——那是后面几章的事了。