引言
变异检测(variant calling)回答的是「这个样本的基因组和参考哪里不一样」,而变异注释与临床解读回答的是「这些不一样意味着什么」。这是两个截然不同的问题:前者是算法与统计问题,输出一份包含数万个变异的 VCF;后者是知识整合与判读问题,输出一份可能只包含一到两个「有临床意义的变异」的报告。
这个转换的难度被严重低估。一个 30x 的全基因组测序会产生约 400-500 万个变异,其中绝大多数是良性的人群多态。从这 500 万个变异里找出「真正致病的那一个」,依赖的不是更强的算法,而是数据库的完整度、证据的可靠性与判读准则的一致性。同样的变异,在不同实验室、不同数据库版本下,可能得到不同的结论——这是临床遗传学最大的工程挑战。
工程上的难点有三层。第一层是注释本身的正确性:同一个变异在不同转录本上的后果可能完全不同(一个在转录本 A 上是错义、在转录本 B 上是同义),选错转录本会给出错误的判读。第二层是数据库的时效性与矛盾:ClinVar 里同一个位点可能有相互冲突的提交,gnomAD 的频率在不同人群间差异巨大。第三层是判读的标准化:ACMG/AMP 准则把判读拆成「证据条目 + 强度」,但「证据是否成立」仍需人工判断,自动化工具只能给建议。
本文按「分工 → 注释流程 → 数据库 → 打分器 → 频率过滤 → ACMG 判读 → 自动化 → SV/CNV 注释 → 报告与可重复性」的顺序展开。命令基于 VEP 112、snpEff 5.2、bcftools 1.19 与 InterVar。读完你应该能搭出一条从 VCF 到临床报告的完整链路,并理解每一步的判据与陷阱。上游的变异检测原理参见 变异检测与 VCF 处理 ,本文不重复。
目录
- 注释与解读的分工边界
- 注释流程:VEP 与 snpEff 的工程实现
- 数据库整合:gnomAD、ClinVar、OMIM
- 后果预测与计算型打分器
- 群体频率过滤与人群差异
- ACMG/AMP 致病性判读准则
- 自动化判读工具与证据整合
- SV 与 CNV 的注释与解读
- 报告生成与可重复性保障
1. 注释与解读的分工边界
把「注释」与「解读」分开,是理解这一章的关键:
| 阶段 | 输入 | 输出 | 判据 |
|---|---|---|---|
| 检测(calling) | BAM | VCF | 统计显著性、质量分数 |
| 注释(annotation) | VCF | 带注释的 VCF | 数据库比对、转录本映射 |
| 过滤(filtering) | 注释 VCF | 候选变异集 | 频率阈值、后果类型 |
| 判读(interpretation) | 候选变异集 | 分类结论 | ACMG 证据条目 |
| 报告(reporting) | 分类结论 | 临床报告 | 实验室规范、法规 |
注释是「客观映射」,解读是「主观判读」——前者原则上可完全自动化且结果可复现,后者依赖专家判断且需要文献证据支撑。工程上最该做的是「把能自动化的部分彻底自动化并锁定版本」,把人力集中在真正需要判断的少数变异上。一个典型的 WGS 案例:500 万变异 → 频率过滤后约 2-5 万 → 按后果过滤后约 500-2000 → 按遗传模式过滤后约 10-50 → 人工判读 1-10 个。
这个漏斗的每一层都会漏掉真变异,因此过滤阈值的设计必须与临床场景匹配:做罕见病诊断时,把频率阈值设在 1% 会漏掉许多致病变异(某些致病变异在特定人群中频率较高);做肿瘤体细胞分析时,过滤逻辑完全不同(关注 VAF 而非人群频率)。没有「通用阈值」。
不同临床场景的过滤策略
| 场景 | 频率阈值 | 关注后果 | 关键差异 |
|---|---|---|---|
| 罕见病 WGS/WES | popmax < 1% | 蛋白截断、错义、剪接 | 需按遗传模式(AD/AR/XL)筛 |
| 肿瘤体细胞 | 无人群频率过滤 | 全部编码后果 | 关注 VAF、驱动基因、通路 |
| 肿瘤胚系易感 | popmax < 1% | 已知易感基因 | 与体细胞结果分开报告 |
| 药物基因组 | 按位点清单 | 特定位点 | 只查 CPIC/PharmGKB 清单位点 |
| 携带者筛查 | popmax < 5% | 隐性病基因 | 阈值放宽,避免漏携带 |
「遗传模式过滤」是罕见病分析的核心一步:常染色体显性(AD)病只需一个杂合致病变异,隐性(AR)病需要两个(或一个纯合),X 连锁(XL)需按性别判断。没有家族史时无法确定遗传模式,通常的做法是「按所有可能模式分别筛一遍,再结合表型收敛」——这也是 trio(患者 + 父母)分析价值巨大的原因:新发变异(de novo)在 trio 数据里可以直接识别,是 AD 病最强的证据之一。
表型匹配
现代临床流程会用 HPO(Human Phenotype Ontology)术语描述患者表型,再与基因-表型数据库(OMIM、Orphanet)做语义相似度匹配,给候选基因打分排序:
# Exomiser:表型驱动的变异优先级排序(简化调用)
exomiser --sample sample.vcf --pedigree sample.ped \
--hpo-terms HP:0001250,HP:0001263 --genome hg38 \
--output-format TSV --output out.tsv
表型匹配的价值在于把「几百个候选基因」压缩到「几个与症状相关的基因」。但它也带来风险:表型描述不准确(尤其儿童患者的早期表型不典型)会让真正的致病基因排在后面。因此表型匹配的结果应作为「排序依据」而非「过滤依据」——不能因为「表型不匹配」就把一个致病变异直接排除。
2. 注释流程:VEP 与 snpEff 的工程实现
VEP(Variant Effect Predictor)与 snpEff 是两个主流注释工具,功能高度重叠,差异在细节与生态:
# VEP:完整注释(本地缓存模式,避免网络依赖)
vep --input_file cohort.vcf.gz --output_file annotated.vcf \
--cache --dir_cache /data/vep_cache --assembly GRCh38 --offline \
--vcf --symbol --numbers --terms SO --force_overwrite \
--plugin LoF,loftee_path:/tools/loftee,human_ancestor_fa:ancestor.fa \
--plugin SpliceAI,snv:spliceai_snv.vcf.gz,indel:spliceai_indel.vcf.gz \
--plugin CADD,whole_genome_SNVs.tsv.gz \
--fields "Uploaded_variation,Location,Allele,Gene,SYMBOL,Consequence,\
HGVSc,HGVSp,CANONICAL,EXON,INTRON,Existing_variation,gnomADe_AF,CLIN_SIG" \
--fork 8
# snpEff:轻量快速
snpEff -v -canon GRCh38.105 input.vcf.gz > annotated.vcf
两个工程细节决定了注释结果的可比性:
转录本选择。一个基因有多个转录本,同一变异在不同转录本上的后果可能不同。VEP 用 --canonical(或 MANE Select)指定「代表性转录本」,snpEff 用 -canon。报告里必须写明用的是哪套转录本定义——MANE Select 是当前临床推荐的统一标准(每个基因一个代表性转录本),用 RefSeq 或 Ensembl 的 canonical 会得到不同结果。
HGVS 命名。注释输出的是 HGVS 表示(如 NM_007294.4:c.5266dupC),它是临床交流的通用语言。但 HGVS 对「重复序列中的插入缺失」有歧义(同一个变异可以有多种合法写法,即 3’ 规则),不同工具可能给出不同的 HGVS 字符串。临床报告前必须用 VariantValidator 等工具校验,否则会导致实验室间的沟通错误。
# 常用下游处理
bcftools norm -f ref.fa -m -both annotated.vcf.gz -Oz -o norm.vcf.gz # 拆分多等位并左对齐
bcftools csq -f ref.fa -g annotation.gff3 norm.vcf.gz # 另一条注释路线
3. 数据库整合:gnomAD、ClinVar、OMIM
注释的价值取决于背后的数据库。四类数据库各有分工:
gnomAD(人群频率)。当前最大的人群频率库(约 80 万个体,含多个祖先群体)。它回答「这个变异在人群中多常见」,是过滤良性多态的第一道闸。关键字段:AF(总体频率)、AF_popmax(最大人群频率)、nhomalt(纯合子数量)。判据上应优先看 AF_popmax 而非总体 AF,因为总体频率会被大样本群体稀释,掩盖某个小人群中的高频。
ClinVar(临床意义)。记录「变异-疾病」关系的公开档案库,每个提交带有临床意义(Pathogenic / Likely pathogenic / VUS / Likely benign / Benign)与评审等级(review status,0-4 星)。使用时必须注意三点:一是评审等级(只有 2 星以上的提交较可靠);二是冲突提交(同一变异有 Pathogenic 与 Benign 两种提交,需按 ACMG 规则处理冲突);三是时效性(ClinVar 每月更新,旧版本可能漏掉最新证据)。
OMIM(基因-疾病关系)。描述「基因与疾病的关联」,用于判断「这个基因是否与患者的表型相关」。它的作用是表型匹配——一个致病变异如果落在一个与患者症状无关的基因上,不应作为主要发现报告(但可能作为次要发现)。
dbNSFP(整合预测库)。把数十种计算型预测分数(CADD、REVEL、SIFT、PolyPhen-2 等)整合到一张表,用 dbNSFP 插件批量注释:
vep --plugin dbNSFP,dbNSFP4.7a.gz,REVEL_score,CADD_phred,SpliceAI_pred_DS_AG \
--plugin SpliceAI,snv:spliceai_snv.vcf.gz,indel:spliceai_indel.vcf.gz ...
数据库版本必须写进报告。同一个变异在 gnomAD v2 与 v4 中的频率可能相差数倍(样本量扩大、群体构成变化),在 ClinVar 2023 与 2025 中的分类可能不同。可复现性的要求在这里体现得最直接:没有版本号的注释结果无法复现,也无法审计。参见 生信可复现性工程 了解如何把数据库版本纳入流程管理。
数据库矛盾时怎么处理
数据库冲突是常态,处理原则有三条:
- 优先看评审等级与证据来源。ClinGen 专家面板的结论优先于单个实验室的提交,多实验室一致提交优先于孤例。
- 频率证据优先于分类证据。若 gnomAD 显示某变异频率 3%,那么即使 ClinVar 标为 Pathogenic,也基本可判定该分类过时(因为高频率与高外显率罕见病不相容)。
- 记录冲突并降级。证据冲突时按 ACMG 规则降级(如「1 Strong 支持致病 + 1 Strong 支持良性」应判为 VUS),并在报告中如实说明冲突存在。
一个工程上的实用做法是同时注释多个频率库(gnomAD、1000G、TOPMed、内部人群库),看结论是否一致。若某个变异在 gnomAD 中罕见但在本地人群库中高频,说明本地人群有奠基者效应,这个信息对判读至关重要。
4. 后果预测与计算型打分器
计算型打分器(in silico predictors)用机器学习或进化保守性预测「变异是否有害」。它们不是证据本身,而是证据的支持材料,在 ACMG 准则里对应 PP3/BP4 条目。常用工具与适用场景:
| 工具 | 适用类型 | 分数范围 | 常用阈值 | 特点 |
|---|---|---|---|---|
| CADD | SNV + indel | Phred 0-99 | > 20 有害,> 30 强 | 覆盖全基因组,含非编码 |
| REVEL | 错义 SNV | 0-1 | > 0.5 有害,> 0.75 强 | 专为错义设计,表现最佳 |
| SpliceAI | 剪接影响 | 0-1 | > 0.2 可能,> 0.5 强 | 预测隐性剪接位点 |
| AlphaMissense | 错义 SNV | 0-1 | > 0.564 可能致病 | 2023 起,覆盖全蛋白组 |
| PolyPhen-2 / SIFT | 错义 SNV | 0-1 | 各有阈值 | 经典,已被 REVEL 超越 |
| phyloP / PhastCons | 保守性 | - | 正值保守 | 进化证据,非直接预测 |
使用打分器的三条原则:
第一,分清「训练数据污染」。REVEL 与 AlphaMissense 的训练集包含 ClinVar 的已知致病变异,因此在「已知致病变异」上表现极好,但在**新发变异(novel variants)**上表现会显著下降。用 ClinVar 变异评估工具性能再外推到新变异,是常见的评估偏差。
第二,剪接变异必须单独处理。传统打分器(CADD、REVEL)对剪接位点附近的变异评估不准,因为它们只建模「氨基酸改变」。SpliceAI 专门填补这个空白,对「外显子内部但创造/破坏剪接位点」的变异(即所谓「同义突变致病」的常见机制)尤其重要。一个「同义变异」不应因为「不改变氨基酸」就被轻易排除。
第三,打分器不能单独定级。ACMG 准则里 PP3 只是「支持证据」(supporting),需要与其他证据组合才能升级为致病。把 CADD > 30 直接判为致病,是自动化判读最常见的误用。
2023 年 ClinGen 的 SVI 建议对 PP3/BP4 做了重要修订:不再使用单一工具的单阈值,而是要求「多个预测工具一致」或「使用校准过的连续分数」。具体做法是把多个工具的分数转成「似然比」,只有当证据强度达到要求时才赋予 PP3。这条修订的实践意义是:「用哪个工具」比「阈值设多少」更重要,且工具的组合方式必须记录在流程里。AlphaMissense 的引入进一步改变了错义变异的判读格局——它覆盖了全部可能的错义变异(约 7100 万个),使「无人群数据的罕见错义」也有了可用的预测证据。
5. 群体频率过滤与人群差异
频率过滤是「从 500 万变异到几万候选」的关键一步,但阈值设定充满陷阱。
基本判据:对于罕见孟德尔病,常用阈值是 AF_popmax < 0.01(1%)或更严格(0.005 甚至 0.001,取决于疾病患病率与遗传模式)。逻辑是:一个导致罕见病的变异不可能在人群中高频存在。但这条逻辑有例外:
- 奠基者效应(founder effect):某些人群(如芬兰人、阿什肯纳兹犹太人、冰岛人)中特定致病变异频率异常高。用「总体 AF」会漏掉这些变异,必须查人群特异的 AF。
- 隐性携带:常染色体隐性病的致病变异在携带者中频率可达 1%-2%(如囊性纤维化的 CFTR F508del 在某些人群约 2%),阈值设在 1% 会漏掉。
- 外显率不全与迟发:某些致病变异在老年人群中仍有相当频率(因为携带者尚未发病或终生不发病)。
技术性陷阱:gnomAD 的频率基于「人群样本」,这些样本本身可能包含患病个体(尤其在线粒体病、迟发病中)。因此 AF 高 ≠ 一定良性,只能说「不可能是高外显率的早发孟德尔病」。
# 用 bcftools 做频率与后果过滤(简化示例)
bcftools view -i 'INFO/gnomADe_AF_popmax < 0.01 || INFO/gnomADe_AF_popmax = "."' \
annotated.vcf.gz | \
bcftools view -i 'INFO/CSQ ~ "missense_variant|stop_gained|frameshift|splice"' | \
bcftools view -e 'INFO/CLIN_SIG ~ "benign"' -Oz -o candidates.vcf.gz
注意 AF_popmax = "." 的处理:缺失频率数据的变异不应被直接丢弃(可能是新变异或数据库未覆盖),而应保留并标记。把缺失当 0 或当良性,是两种相反的严重错误。
6. ACMG/AMP 致病性判读准则
ACMG/AMP 2015 准则(及其后续的 ClinGen 细化指南)是临床判读的国际标准。它把判读拆成「证据条目」,每条有「强度」(Very Strong / Strong / Moderate / Supporting),再按组合规则得出五级分类:
| 分类 | 含义 | 典型组合 |
|---|---|---|
| Pathogenic(致病) | 明确致病 | 1 Very Strong + ≥1 Strong |
| Likely Pathogenic(可能致病) | 证据倾向致病 | 1 Very Strong + 1 Moderate |
| VUS(意义未明) | 证据不足或冲突 | 不满足其他分类 |
| Likely Benign(可能良性) | 证据倾向良性 | 1 Strong + 1 Supporting |
| Benign(良性) | 明确良性 | 1 Stand-alone 或 ≥2 Strong |
核心证据条目(PVS1/PS/PM/PP 与 BA1/BS/BP 系列)中,最常用的几条:
- PVS1:无义、移码、经典剪接位点变异,且该变异导致基因功能丧失是该病的已知机制;
- PS1:同一氨基酸改变已有公认致病的变异(氨基酸替换相同);
- PM2:在 gnomAD 中缺失或频率极低(注意:2024 年 ClinGen 建议将 PM2 降级为「支持证据」);
- PP3:计算型预测支持有害(见第 4 节);
- PS3:功能实验证实有害;
- BA1:等位基因频率 > 5%(良性独立证据);
- BS1:等位基因频率高于该病预期;
- BP4:计算型预测支持良性。
工程上最该注意的两点:
第一,PVS1 有严格前提。不是「所有无义变异都致病」——若该基因的致病机制是「功能获得」或「显性负效应」,截断变异可能无害甚至不致病。PVS1 的适用性判断(PVS1 decision tree)是判读中最容易出错的地方,必须结合基因的疾病机制。
第二,VUS 是常态而非失败。一个规范的临床报告里,VUS 比例通常高达 50%-80%。把 VUS 当致病变异报告,或为了「给出结论」而强行升级证据,是最严重的临床错误。VUS 的正确处理是「如实报告 + 说明随访建议(如家系共分离分析、功能实验)」。
共分离与家系证据
PP1(共分离)与 PS2(新发)这两条证据只能来自家系分析,也是自动化工具无法填充的部分。做法是把变异在家系成员中分型(Sanger 测序或靶向 panel),检查「变异是否随疾病在家族中共分离」:
家系共分离的逻辑(常染色体显性)
患者(有变异)→ 患病亲属也应有变异(支持)
→ 健康亲属若有变异,则证据被削弱(外显率不全)
→ 健康老年亲属若有变异,PP1 基本不成立
共分离的强度取决于家系大小与代数:三代以上、多个患病成员一致携带,才能达到 Moderate/Strong 强度。小家庭(如只有一个患病成员)无法提供共分离证据——这是罕见病判读中最常见的证据缺口,也是「全外显子测序做了却仍得不到结论」的主要原因。
7. 自动化判读工具与证据整合
人工逐条判读无法规模化,自动化工具的价值在于「把 ACMG 证据条目自动填充,把人力集中在证据冲突的少数变异上」。
InterVar 是最广泛使用的自动化判读工具:它读取 VEP 注释后的 VCF,按 ACMG 规则自动填充证据条目并给出分类:
# InterVar:输入必须是 VEP 注释且含特定字段的 VCF
python3 Intervar.py -i annotated.hg38_multianno.vcf \
-o intervar_out --input_type=AVinput -b hg38 --skip_annovar
# 输出含 19 条证据条目的逐条判定与最终分类
AutoPVS1 专门处理 PVS1 的适用性判断(按 ClinGen 的决策树自动评估)。ClinGen VCEP 规范则针对特定基因给出更细的判读规则(如 BRCA1/2、LDLR 等已有基因特异规范),这些规范优先于通用 ACMG 准则。
自动化工具的局限必须清楚:它们只填充「可从数据库自动获取」的证据(PM2、PP3、PS1、BA1 等),对「功能实验(PS3)」「家系共分离(PP1)」「新发(PS2)」这类需要实验与临床信息的证据无能为力。因此自动化输出永远是「待审草稿」而非「最终结论」,必须由持证判读人员复核并签字。
一个流程设计的建议是:把证据条目结构化输出(每个变异 × 19 条证据的矩阵),而不是只给最终分类。这样判读人员能快速看到「哪些证据是自动填充的、哪些是缺失的、哪些相互冲突」,大幅提高复核效率与一致性。参见 数据工程与批处理 了解如何把这类结构化输出组织成可查询的证据表。
8. SV 与 CNV 的注释与解读
结构变异(SV,> 50 bp)与拷贝数变异(CNV)的检测方法在上游流程里已详述,本节只讲注释与解读的差异。
SV/CNV 的注释比 SNV 难得多,根本原因是断点不精确与表示方式不唯一。同一个缺失可以用多种方式表示(起始位置差几个 bp、用 <DEL> 符号 vs 具体序列),导致基于坐标的数据库查询经常失败。
注释 SV 的实用策略:
- 断点区间查询:不要精确匹配坐标,而是用「断点 ± 数百 bp 的区间」查询数据库(
bedtools intersect); - 基因重叠判断:SV 是否完全/部分删除某基因的外显子,这是判读的核心(完全缺失编码区通常比部分缺失更严重);
- 剂量敏感性:查 ClinGen 的剂量敏感性图谱(haploinsufficiency / triplosensitivity 评分),判断「该基因的缺失/重复是否致病」;
- 已知综合征区域:与 DECIPHER、ClinGen 的 CNV 区域比对,识别已知的微缺失/微重复综合征。
# 用 bedtools 做 SV 断点与基因的重叠分析
bedtools intersect -a sv.bed -b genes.bed -wa -wb > sv_gene_overlap.txt
# AnnotSV:SV/CNV 注释的集成工具(整合多个数据库)
AnnotSV -SVinputFile sv.vcf -outputFile annotated_sv.tsv \
-annotationMode both -genomeBuild GRCh38
CNV 解读的特殊性在于剂量效应的连续性:一个基因的「单拷贝缺失」是否致病,取决于该基因对剂量的敏感度——有些基因单拷贝就够(缺失无害),有些必须双拷贝(缺失致病)。这个信息不在序列里,而在数据库与文献里。因此 CNV 判读对数据库的依赖程度比 SNV 更高,也更依赖专家经验。
另一个工程难点是 CNV 的边界判定:CNV 检测工具给出的边界通常有 ± 数 kb 的误差,而「是否包含某个关键外显子」可能取决于这几 kb。关键 CNV 必须用正交方法验证(如 MLPA、qPCR、长读测序),不能仅凭 NGS 的边界就下临床结论。
9. 报告生成与可重复性保障
临床报告是整条链路的最终产物,也是受法规约束最严的部分。它的工程要求与科研分析完全不同:
可追溯性。报告的每个结论必须能追溯到「原始数据 → 比对 → 变异检测 → 注释 → 判读证据」的完整链路,且每个环节的版本(工具版本、数据库版本、参考基因组版本、参数文件)必须记录。参见 生信可复现性工程 了解如何用容器与流程引擎实现这一要求。
报告内容的结构化。一份规范的临床 WGS/WES 报告通常包含:
| 部分 | 内容 |
|---|---|
| 主要发现 | 与表型相关的致病变异(含基因、HGVS、合子型、分类、证据) |
| 次要发现 | ACMG SF v3.2 建议报告的基因(如 BRCA1/2、LDLR)中的致病变异 |
| 携带者状态 | 隐性病携带(可选,需伦理与知情同意) |
| VUS | 意义未明变异(通常列出或按需提供) |
| 方法与局限 | 覆盖度、检测范围、无法检出的变异类型(如深度内含子、重复扩增) |
| 版本信息 | 参考基因组、注释工具与数据库版本、报告日期 |
报告生成的自动化。人工写报告容易出错且不可复现。工程做法是「模板 + 结构化数据填充」:判读结果以结构化格式(JSON/TSV)存储,用模板引擎渲染成报告,任何修改都记录在案。这样既保证一致性,又满足审计要求。
# 报告数据结构化的示意(判读结果 → 结构化记录)
record = {
"gene": "BRCA1",
"hgvs_c": "NM_007294.4:c.5266dupC",
"hgvs_p": "NP_009225.1:p.Gln1756ProfsTer74",
"zygosity": "heterozygous",
"classification": "Pathogenic",
"acmg_evidence": ["PVS1", "PS4", "PM2_Supporting", "PP3"],
"clinvar_id": "17677",
"gnomad_af_popmax": 0.000008,
"db_versions": {"gnomad": "v4.1", "clinvar": "2025-08", "vep": "112"},
}
必须如实报告的局限。没有任何一次检测是「全能的」:短读 WGS 对重复扩增(如脆性 X 的 CGG 重复、亨廷顿的 CAG 重复)无能为力,对深度内含子变异、甲基化异常、平衡易位也不敏感。报告里明确写出「本次检测无法排除的情况」,既是规范要求,也是对患者的保护。
权衡取舍
| 决策点 | 方案 A | 方案 B | 建议 |
|---|---|---|---|
| 注释工具 | VEP(全、插件多) | snpEff(快) | 临床用 VEP,批量筛选用 snpEff |
| 转录本 | canonical | MANE Select | 临床统一用 MANE Select |
| 频率阈值 | 1%(宽松) | 0.1%(严格) | 按疾病患病率与遗传模式定,勿一刀切 |
| 频率字段 | 总体 AF | AF_popmax | 必须用 popmax,避免人群稀释 |
| 打分器 | CADD(全类型) | REVEL / AlphaMissense(错义) | 错义用 REVEL,剪接用 SpliceAI,非编码用 CADD |
| 判读 | 人工逐条 | 自动化 + 人工复核 | 自动化填证据,人工定结论 |
| VUS 处理 | 不报告 | 列出并说明 | 如实报告,给出随访建议 |
| SV 注释 | 精确坐标查询 | 断点区间查询 | 用区间查询,避免表示差异导致漏查 |
常见坑清单
- 转录本选错导致后果判错:同一变异在不同转录本上后果不同;临床统一用 MANE Select 并注明版本。
- 用总体 AF 而非 AF_popmax:小人群高频致病变异被稀释成「罕见」;一律看 popmax。
- 把缺失频率当 0 或当良性:新变异被误过滤;缺失应保留并标记,不参与频率过滤。
- CADD 高分直接判致病:PP3 只是支持证据;必须与其他证据组合。
- 忽视剪接变异:同义变异可能破坏剪接位点;用 SpliceAI 单独筛查剪接影响。
- 用 ClinVar 低星级提交做结论:评审等级不足的提交不可靠;优先 2 星以上并检查冲突。
- PVS1 无条件套用:功能获得或显性负效应机制下截断变异可能无害;先查疾病机制。
- VUS 强行升级报告:把意义未明当致病是最严重的临床错误;如实报告并给随访建议。
- SV 用精确坐标查库:表示方式差异导致漏查;用断点 ± 区间查询。
- 数据库版本未记录:结果无法复现也无法审计;版本号必须进报告与流程配置。
小结
变异注释与临床解读的本质是「把计算输出转化为可辩护的医学结论」。它由两段构成:前一段(注释、数据库整合、过滤)是客观的、可完全自动化且必须锁定版本的工程链路;后一段(ACMG 判读、报告)是主观的、依赖证据与专家判断的临床过程。把这两段分清,就不会犯「用打分器代替判读」或「把人工判断藏在脚本里」这两类典型错误。
工程上最该建立的三个认知:第一,版本即结论。gnomAD、ClinVar、VEP、参考基因组的版本变了,同一份 VCF 的注释结果就变了,因此版本必须作为流程的一等公民管理。第二,自动化只做证据填充,不做结论。工具能把 19 条 ACMG 证据自动填出大半,但「哪条证据成立」仍需人工确认,尤其是依赖实验与家系信息的条目。第三,如实报告局限与 VUS。检测能力有边界,判读证据有不足,把这两件事写清楚比给出一个「漂亮但站不住」的结论更有专业价值。
下一步可以看可复现性工程篇了解如何把数据库版本、工具镜像与判读记录纳入可审计的流程,或了解当遗传学证据不足时如何用转录组与表观数据补充功能证据。如果你的候选变异「太多筛不出来」,先检查频率过滤用的是总体 AF 还是 popmax;如果「一个都筛不出」,先确认注释用的转录本与参考版本是否与 calling 阶段一致。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。