3. 一致性评估概述
3.1 什么是VCF一致性评估
VCF一致性评估,说白了就是拿两个或多个VCF文件放到一起比对,看看它们到底有多“像”。
我在项目中遇到过不少这种情况:同一个肿瘤样本,用不同版本的流程跑了两遍,出来的VCF看起来行数差不多,但真要合并分析或者上线生产,心里就没底了。这时候就需要一致性评估——不是简单比一下文件大小、变异总数,而是从位点级别去衡量:到底有多少变异是被两个批次共同检出的?有多少是一个批次有、另一个批次漏掉的?
嗯,这里要区分一下。VCF一致性评估跟普通的文件diff不一样。文件diff只看文本是否一模一样,而一致性评估关注的是生物学意义上的一致。即便两个VCF的坐标表示方式略有差异(比如左对齐、右对齐),只要它们描述的是同一个变异位点,就应该被判定为一致。
一句话总结:VCF一致性评估是对不同批次、不同方法或不同平台的变异检测结果进行系统化比较,量化其一致程度的技术手段。
3.2 为什么需要做一致性评估
做一致性评估的目的很实际,你想想看,生信分析 pipeline 的开发和部署过程中,有几个场景是绕不开它的:
- 流程版本升级:GATK 从 3.x 升到 4.x,或者换了个联合 call 的策略,新旧流程的结果到底差多少?
- 跨平台验证:WGS 和 WES 的数据,同一个样本在两个平台上的结果是否一致?
- 重复性评估:同一个样本重复建库测序,技术重复之间的一致性是否达标?
- 基准测试:用 gold standard(如 GIAB)来评估新流程的准确性。
- 生产环境监控:日常运行的批量样本中,随机抽一些做一致性检查,防止 pipeline 悄悄退化。
我个人的经验是,一致性评估最好纳入 CI/CD 流程。每次 pipeline 有改动,先跑一批标准样本的一致性评估,通过了再上线。这个习惯帮我避免了好几次“升级后召回率暴跌”的尴尬局面。
3.3 核心指标
讲指标之前,得先统一一下四个基础计数的含义。在VCF一致性评估这个语境下,我们通常以其中一个VCF为参考(reference),另一个为待评估(query):
| 计数 | 含义 | 通俗解释 |
|---|---|---|
| TP (True Positive) | 两个VCF都报告的变异位点 | 两边都叫出来了,好样的 |
| FP (False Positive) | 仅在待评估VCF中报告,参考VCF中没有 | 你多叫了,可能是假阳性 |
| FN (False Negative) | 仅在参考VCF中报告,待评估VCF中没有 | 你漏掉了,可能是假阴性 |
| TN (True Negative) | 两个VCF都没有的位点 | 通常不纳入计算,基因组太大,TN无穷多 |
为什么 TN 不算?因为人类基因组上绝大部分位置都不是变异位点,TN 的数量会压倒一切,导致所有指标都趋近于 1,失去区分度。所以在 VCF 评估里,我们只看 TP、FP、FN 三个值。
一致率 (Concordance Rate)
一致率衡量的是两个VCF在所有非冗余变异位点上的整体一致程度:
一致率 = TP / (TP + FP + FN)
这个指标直观好懂。比如两个 VCF 比对下来,TP=8500,FP=500,FN=1000,那一 致率 = 8500 / (8500+500+1000) = 0.85。意味着两个 VCF 中所有非冗余的变异位点里,有 85% 是双方共同检出的。
但要注意,一致率高不一定代表结果可靠。我曾经遇到一个 case:两个 VCF 的一致率高达 0.97,但仔细一看,是因为两个流程都只检出了高频的常见 SNP,而低频的 somatic 突变几乎都没检出——嗯,这是高一致率下的“共谋假象”。
精确率 (Precision)
精确率也叫阳性预测值(PPV),回答的是:“你叫出来的变异中,有多少是靠谱的?”
精确率 = TP / (TP + FP)
用上面的数字:精确率 = 8500 / (8500+500) = 0.944。待评估 VCF 中每叫出 100 个变异,大约有 94 个在参考 VCF 中也有。我个人习惯把精确率看作是“可信度”指标——它告诉你这个流程的阳性结果经得起交叉验证的比例。
召回率 (Recall)
召回率也叫灵敏度(Sensitivity),回答的是:“应该被叫出来的变异,你叫出了多少?”
召回率 = TP / (TP + FN)
同样用上面的数字:召回率 = 8500 / (8500+1000) = 0.895。参考 VCF 中的变异,待评估 VCF 能召回 89.5%。
这里有个常见的坑:很多人在看一致性评估报告时只看精确率,觉得“我精确率 0.98,很高啊”。但召回率可能只有 0.6——这意味着你确实没怎么叫错,但你漏掉了将近四成的真实变异。在临床诊断场景下,召回率的重要性甚至超过精确率。
F1-score
精确率和召回率是一对跷跷板——你提高一个,另一个往往会下降。F1-score 是把这两个指标揉在一起看:
F1-score = 2 × (精确率 × 召回率) / (精确率 + 召回率)
代入上面:F1 = 2 × (0.944 × 0.895) / (0.944+0.895) = 0.919。
F1-score 的取值范围是 [0, 1],越接近 1 说明精确率和召回率都高且均衡。我建议在流程对比和版本升级的场景中,把 F1-score 作为首要的决策指标。它不会让你被单一维度的漂亮数字欺骗。
小技巧: 如果两个流程的 F1-score 接近,再看精确率和召回率的差值。差值越小,说明流程越稳定、越均衡。
3.4 四个指标对比
| 指标 | 聚焦问题 | 公式 | 取值范围 | 最佳用途 |
|---|---|---|---|---|
| 一致率 | 两个 VCF 整体有多一致? | TP/(TP+FP+FN) | [0, 1] | 总体一致性概览 |
| 精确率 | 你叫出的变异靠谱吗? | TP/(TP+FP) | [0, 1] | 假阳性控制评估 |
| 召回率 | 你漏掉变异了吗? | TP/(TP+FN) | [0, 1] | 假阴性控制评估 |
| F1-score | 综合表现怎么样? | 2×P×R/(P+R) | [0, 1] | 流程对比 & 决策 |
这四个指标不是互相替代的关系,而是从不同角度刻画一致性。完整的一致性评估报告,四个指标都应该列出。
避坑提醒: 不要只看一致率!一致率高不一定意味着精确率和召回率都高。我曾经见过一致率 0.93 但召回率只有 0.55 的案例——原因是两个 VCF 都只检出了高频变异,低频变异双双漏检。这种“共谋漏检”会导致一致率虚高,掩盖召回率低的问题。
下面是整个一致性评估的核心流程,从两个 VCF 输入到四个指标输出,我把它画成了一张图:
从上到下走一遍:两个VCF先做位点级交叉比对,统计出TP、FP、FN三个核心计数,然后分别计算一致率、精确率、召回率和F1-score。每个指标回答的问题不同,组合在一起才能全面反映一致性的真实水平。