VCF 文件基础:格式详解与临床关键字段
做临床变异解读,每天打交道最多的文件就是 VCF。我刚入行那会儿,觉得 VCF 不就是个表格嘛,几列数据而已。直到有一次解读一份罕见病家系数据,因为忽略了一个 FILTER 标签,差点把假阳性报成了致病位点……嗯,从那以后我再看 VCF,每个字段都不敢马虎。
一个 VCF 记录长什么样
先看一条实际记录,你感受一下:
#CHROM POS ID REF ALT QUAL FILTER INFO
chr1 123456 rs123 A G 100 PASS AC=5;AF=0.01;AN=500;CLNSIG=Pathogenic
VCF 每行代表一个变异位点,固定 8 个字段,用制表符分隔。这 8 个字段缺一个都不行,是 VCF 规范的硬性要求。
| 字段 | 含义 | 临床解读要点 |
|---|---|---|
| CHROM | 染色体编号 | 注意 chr 前缀是否统一 |
| POS | 变异位置(1-based) | 与参考基因组版本对应 |
| ID | dbSNP 或其它数据库 ID | rs 号可辅助查找已知位点 |
| REF | 参考等位基因 | 与参考序列严格一致 |
| ALT | 替代等位基因 | 多个 ALT 用逗号分隔 |
| QUAL | 变异质量值 | 越高越可靠,但别只看它 |
| FILTER | 过滤状态 | PASS 才能进入解读流程 |
| INFO | 注释信息 | 临床标签都在这里 |
#CHROM 头行和 FILTER 列。头行告诉你用了哪个参考基因组版本,FILTER 列直接决定哪些位点值得看。
QUAL 字段——不只是数字
QUAL 是 Phred 质量值,公式是 -10 * log10(P(错误))。数值越高,测序或比对认为这个变异是真实的可能性越大。比如 QUAL=100,意味着错误概率是 10-10,相当可靠。
但我要提醒一句:QUAL 高不代表临床意义大。我在项目里见过 QUAL=999 的同义突变,也见过 QUAL=30 的致病剪接位点。QUAL 只反映测序质量,不反映生物学功能。
LowQual,但不会删掉。如果你不做 QUAL 过滤,这些位点会混在结果里。我建议临床解读只保留 QUAL ≥ 20 的位点,相当于错误率 ≤ 1%。
FILTER 字段——PASS 不是唯一答案
FILTER 字段记录这个变异是否通过了质控。如果通过,就是 PASS;没通过,会写具体原因,比如:
PASS
VQSRTrancheSNP99.90to100.00
LowQual
IndelFilter
Fail
你可能会问:为什么不过滤掉非 PASS 的位点?因为有些场景下,非 PASS 位点也有参考价值。比如肿瘤体细胞变异中,LowQual 的位点可能暗示低频克隆,值得复查,而不是直接丢弃。
但在临床遗传解读中,我建议严格一些:只解读 FILTER = PASS 的变异。非 PASS 位点可以写在备注里,但不要作为主要证据。
VQSRTrancheSNP99.95to100.00 过滤掉的——嗯,从那以后我把 FILTER 检查写进了每个管线的第一步。
INFO 字段——临床注释的宝藏
INFO 字段是 VCF 里最复杂、也最值钱的部分。它以 key=value 的格式存储,多个条目用分号分隔。临床解读中,我们重点关注以下标签:
| INFO 标签 | 全称 | 临床解读用途 |
|---|---|---|
| AC | Allele Count | 该等位基因在人群中的出现次数 |
| AF | Allele Frequency | 人群频率,AF > 0.01 通常排除致病 |
| AN | Allele Number | 该位点覆盖的等位基因总数 |
| DP | Depth of Coverage | 测序深度,DP < 10 要谨慎 |
| CLNSIG | Clinical Significance | ClinVar 临床意义:Pathogenic, Benign 等 |
| CLNDN | Clinical Disease Name | 关联的疾病名称 |
| CLNREVSTAT | ClinVar Review Status | 审核状态:reviewed_by_expert, criteria_provided 等 |
| CLNVC | ClinVar Variant Type | 变异类型:single_nucleotide_variant, deletion 等 |
| MAX_AF | Maximum Allele Frequency | 所有人群中的最大频率,比 AF 更严格 |
no_assertion_criteria_provided,即使 CLNSIG 写着 Pathogenic,可信度也要打折扣。我一般只采用 reviewed_by_expert 或 criteria_provided 的条目。
临床解读中的字段协作
QUAL、FILTER、INFO 三个字段不是孤立工作的。我画了一张图,帮你理解它们在临床解读流程中的协作关系:
实战避坑指南
- FILTER 列空值:有些 VCF 的 FILTER 列是
.,表示没做过滤。这种数据不要直接用于临床,至少跑一遍 GATK VQSR 或硬过滤。 - INFO 标签名大小写:ClinVar 的标签通常是
CLNSIG全大写,但有些注释工具会写成CLNsig。我在整合多来源 VCF 时踩过这个坑——大小写不一致导致合并漏数据。建议统一用大写解析。 - AC/AF/AN 单位:AC 是计数,AF 是频率,AN 是总数。举个例:AN=1000, AC=5, AF=0.005。如果你只看 AF 不看 AN,可能会误判。AN 太小(比如 < 100)的位点,人群频率不可靠。
- DP 与 QUAL 的关系:DP 高 QUAL 不一定高(比如有链偏好),QUAL 高 DP 不一定高(比如唯一一条 reads 但质量极好)。两个指标要结合看,不能互相替代。
VCF 的 QUAL、FILTER、INFO 三个字段,就是临床解读的三道关卡。每道关卡都有它的脾气,摸透了,你手里的 VCF 就不再是 "天书",而是一张清晰的变异地图。