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一致性评估核心流程 VCF 批次 A VCF 批次 B 变异位点交叉比对 TP / FP / FN 统计 一致率 精确率 召回率 F1-score 输入 → 比对 → 统计 → 指标 四个维度综合评估一致性

从上到下走一遍:两个VCF先做位点级交叉比对,统计出TP、FP、FN三个核心计数,然后分别计算一致率、精确率、召回率和F1-score。每个指标回答的问题不同,组合在一起才能全面反映一致性的真实水平。