变异效应的临床翻译层 — ClinMAVE 功能证据库

218 万变异 / 821 基因 / ACMG 证据分级

来源 https://ngdc.cncb.ac.cn/clinmave/发布时间: 2026-10-28最后更新: 2026-10-28 阅读 19
变异效应的临床翻译层 — ClinMAVE 功能证据库

信息速览

数据集名称变异效应的临床翻译层 — ClinMAVE 功能证据库
数据类型多组学,本体映射,元数据,文献引用
规模不适用(体外细胞实验,无个体受试者)
接入方式https://ngdc.cncb.ac.cn/clinmave/
AI 就绪度

一个错义变异被写进报告,结论那一栏是"临床意义未明"。测序能读出它,频率库能证明它罕见,预测软件能给出一个接近致病的分数——三样东西合起来,仍然不足以把它写成"致病"。ACMG/AMP 指南留了一条路:如果有一个经过验证的功能实验证明它确实破坏了蛋白功能,就可以记一条 PS3 强证据。

MAVE 就是这类实验:一次测几万个变异,给每个变异一个功能分数。过去十年这类数据大多沉在 MaveDB 里,以论文附件的形态存在——分数是分数,结论是结论,中间隔着一整套校准、分级与互操作的工作。

ClinMAVE 修的就是这一段路。它把 MaveDB 与文献里的 CRISPR 筛选数据统一到 GRCh38 与 HGVS,用 ClinVar 的致病、良性变异做对照算出 OddsPath,再把每个变异分到强、中、弱三档,拼成可写进判读流程的 PS3 强度。一屏速览见下表。

维度 内容
全名 ClinMAVE: a curated database for clinical application of data from multiplexed assays of variant effect
中文定位 面向临床的变异效应实验(MAVE)整理库,功能证据的 ACMG 分级层
维护方 国家生物信息中心(NGDC)与中国医学科学院北京协和医院生物信息中心共建
官方入口 https://ngdc.cncb.ac.cn/clinmave/
上线时间 2025 年,版本 v1.0
论文 Nucleic Acids Research 2026, 54(D1): D1355–D1363;PMID 41233957
收录规模 2,179,903 个变异 / 821 个基因 / 2,147 个数据集 / 50 项研究
实验技术 2 类:深度突变扫描(DMS)与 CRISPR 类基因组编辑
功能分类 功能正常、功能丧失、功能获得三档
证据分级 PS3 强 / 中 / 弱(OddsPath 与 acmgscaler 双重量化)
校准覆盖 156 个数据集、50 个基因完成 PS3 映射
外部整合 ClinVar、gnomAD v4.1、TCGA(经 cBioPortal)、dbSNP 156、五个预测器
取数方式 网页浏览、JSON 表格端点、按表导出 CSV、按基因批量导出
注册要求 无需注册
许可 学术用途免费,商业用途需联系作者授权
数据体量 官方未公布打包体积

§1 它要解决的具体麻烦

1.1 卡住报告的不是测序,是那句"未明"

一份遗传检测报告里最尴尬的一栏是 VUS。检出率越高,这一栏越常出现,尤其在肿瘤易感基因与心肌病基因上——这些基因被研究得多,被检出的罕见错义变异也多,而人群频率、保守性、剪接预测这类间接证据通常只能到"疑似",凑不满致病所需的证据组合。

功能实验本来是打破僵局的那类证据。ACMG/AMP 在 2015 年的框架里就把"经过良好验证的功能实验"写成了 PS3,2019 年 ClinGen SVI 又给出了用 OddsPath 量化这条证据的操作方法:拿一批已知致病和已知良性的变异做对照,看实验能不能把它们分开,分得越开,这条证据能承担的强度越高。方法有了,问题变成了数据在哪里、能不能直接用。

答案通常是"数据在,但不能直接用"。MAVE 的原始产出是一个分数表:变异、分数、标准差,有时带一个作者自己划的阈值。这个分数是相对的——不同实验的零点不同、方向不同、量纲不同,同一个基因的两个实验可能一个分数越高越坏、另一个反过来。临床端拿到这样一张表,既不知道阈值该定在哪,也不知道这个实验值不值得信。中间缺的那层加工,正是 ClinMAVE 想补的。

1.2 三条常见的错误期待

第一条,期待它是一个"变异致病性数据库"。它不是。它给的是功能证据这一条线的强度,最终分类仍要与其他证据线合并。库里的每一条记录都停在"这个变异在某个实验里功能异常,该实验的校准水平支持强/中/弱证据",再往前一步的判断不属于它。

第二条,期待它覆盖所有基因。821 个基因听起来不少,但人类蛋白编码基因有两万上下,也就是说它覆盖的是做过 MAVE 的那一小部分。而且这 821 个基因里,绝大多数只被一种实验技术碰过——795 个基因只有单一技术覆盖,跨平台验证对它们无从谈起。

第三条,期待它的分数可以跨基因比较。MAVE 分数是每个实验自己的量表,官方明确说过不同数据集之间分布异质、不能用固定阈值切。库内之所以能做分级,是因为每个数据集都单独校准过;把 A 基因的分数拿去和 B 基因的分数比大小,是把它当成了统一量表,这个前提不成立。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
判断一个 VUS 有没有功能证据 按基因或 HGVS 检索,直接看到功能分类与证据强度 够,这是它最核心的用途
拿到某条 PS3 证据的量化依据 OddsPath 值、强度档、校准所用对照集规模 够,但要连带看数据集质量
比较同一变异在不同实验下的结论 跨实验比较表与跨实验命中数 够,这是它区别于 MaveDB 的地方
训练变异效应预测模型 两百余万条带分数的变异,附分子后果与频率 够做训练,但需按基因或数据集切分防泄漏
拿到原始读数与标准差 只给分数,不给逐变异的重复测量与置信区间 不够,需回 MaveDB 取原始表
覆盖非编码区与调控变异 明确只收编码变异 不够,调控类 MAVE 由 MPRAbase 承接
直接生成临床报告结论 只给证据强度,不给最终五级分类 不够,需与其他证据线合并
追溯每条阈值的原始出处 论文称有逐数据集的阈值来源说明,站点以字段呈现 部分够,细则需查原文补充材料

1.4 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
实验室报出一个 VUS,临床方追问"有没有功能证据" 用 HGVS 或基因名检索,几十秒内给出该变异的功能分类与 PS3 强度 先确认该数据集是否在 156 个已校准之列,未校准的只能当探索性证据
你在搭变异解读流水线,想把功能证据自动接进 ACMG 打分器 JSON 表格端点可直接拉全表,字段名稳定,含数据集编号 用数据集编号做外键,把 OddsPath 与强度档一起入库,别只存分数
你在训一个变异效应预测模型,缺高质量标签 两百余万条变异带连续分数,另有三分类标签 按基因切分训练测试集,同一变异的多条记录必须整组同侧
你要评估某个 MAVE 实验值不值得信 OddsPath、AUC、与五个预测器的一致性都可查 优先看 AUC 是否过 0.75,再看 PS3 档位,两者不一致时以 OddsPath 为准
你在做体细胞变异的肿瘤解读 TCGA 频次摘要与 CGC 基因标注可直接用 注意体细胞场景的证据规则与胚系不同,PS3 这套主要面向胚系
你在写中文的遗传检测报告模板 三档强度与 PS3 术语可直接映射到报告用语 报告里必须写明"功能证据"而非"致病",并注明实验体系
你只是想找几个已知致病位点做阳性对照 ClinVar 注释与功能分类并排,便于挑出高置信阳性 挑 PS3 强且 ClinVar 为致病、两者一致的词条

1.5 一句话判断

它的价值不在于又收了二百万条变异,而在于把"实验做出来一个数"和"临床能写一句话"之间的那段换算,逐数据集地做完了,并且把换算过程本身也摆了出来。

1.6 不适合谁:四条边界

不适合拿它当唯一的判读依据。 全库只有 156 个数据集完成 PS3 校准,覆盖 50 个基因。剩下的数据有分数、有功能分类,但没有强度——把它们当强证据用,等于跳过了校准这一步。

不适合覆盖非编码区。 官方口径很明确:只收编码变异。增强子、启动子、剪接调控区的 MAVE 不在其中,作者亦说明这类数据另有 MPRAbase 承接。做非编码变异解读的项目在这里会扑空。

不适合拿它替代原始数据。 它只保留分数与分类,不保留逐变异的重复测量、标准差与原始计数。要做方法学复现、要重算阈值、要检验批次效应,都得回 MaveDB 或原文补充材料。

不适合商业产品直接嵌入。 许可写的是学术用途免费,商业用途需联系作者。把接口接进商业报告系统之前,先解决授权问题,这一点在技术评估阶段最容易被忽略。

§2 数据构成与规格

2.1 三层半:变异、数据集、研究,外加基因汇总

整个库的骨架是三层加一张汇总表。最细的一层是变异,一行代表"某个数据集里的某个变异",带分数、功能分类与注释;中间一层是数据集,一行代表一次实验的一个读出,带实验模型、表型、诱变策略、位点数与变异数;最粗的一层是研究,一行代表一篇论文,一篇论文可以贡献多个数据集。

第四张表是基因汇总,它不是新的观测,而是把前两层按基因聚合:这个基因有几个数据集、用了哪几种技术、数据集体积多大。四张表的关系是聚合而非并列,理解这一点对取数很关键——想要变异就得从变异表拉,想要"这个基因做过什么实验"看基因表,不要指望从基因表反推变异。

层级 一行代表 主键 规模
变异 一个数据集里的一个变异 数据集编号 + HGVS 标识 两百余万行
数据集 一次实验的一个功能读出 dataset0001 形式的编号 两千余个
研究 一篇同行评议论文 PMID 五十项
基因汇总 一个基因的实验覆盖情况 Ensembl 基因编号 821 行

三层之间的关系有一个必须记住的后果:同一变异被多个数据集测过时,变异表里就会出现多行。官方统计里有 29.02% 的变异至少在两个独立实验里被测过,这些变异在多行之间可能结论一致,也可能不一致。做任何按变异的去重统计之前,先决定"一变异多行"怎么合并——取最严、取最宽、还是取多数,三种口径给出的阳性率差别很大。

2.2 字段字典

变异表是全库最宽的一张,官方接口返回的字段共二十余个,可以分成四组:身份与坐标、实验与表型、功能与分数、外部注释。

字段 含义 组别
identifier HGVS 格式的变异标识,含转录本号 身份
geneName 基因符号 身份
transcriptId MANE 选定的参考转录本 身份
datasetId 所属数据集编号 身份
chr / pos / ref / alt 染色体与一基座标、参考碱基、替代碱基 坐标
locationHg38 GRCh38 坐标字符串 坐标
locationHg19 GRCh37 坐标字符串 坐标
ucscHg38 指向 UCSC 浏览器对应位置的链接 坐标
molecularConsequence 分子后果,如剪接位点、错义、无义 注释
maveTechnique 实验技术大类,深度突变扫描或 CRISPR 类 实验
mutagenesisStrategy 诱变策略,如碱基编辑、寡核苷酸合成、易错 PCR 实验
phenotype 该数据集的读出表型 实验
functionalAssay 功能读出方式 实验
experimentModel 实验体系,如某细胞系 实验
aaNum 覆盖的氨基酸长度 实验
siteNum 覆盖的位点数 实验
score MAVE 功能分数,方向已统一 功能
consequenceClass 功能分类:正常、丧失、获得 功能
functionalDescription 结合模型与表型的一句话描述 功能
functionCuration 该数据集的功能整理程度,如"仅有后果" 功能
crossAssayHits 该变异被几个数据集覆盖 功能
clinvarInformation ClinVar 临床显著性 外部
populationFrequency gnomAD 人群频率 外部
dbsnpId dbSNP 编号 外部
tcgaSummary TCGA 体细胞频次摘要 外部
pmid 来源文献编号 外部

数据集表的字段更偏实验描述,是判断"这个实验值不值得信"的第一手材料:

字段 含义
datasetId 数据集编号
geneName / ensemblId 基因符号与 Ensembl 编号
maveTechnique 技术大类
mutagenesisStrategy 诱变策略
functionalAssay 功能读出
experimentModel 实验体系
phenotype 读出表型
aaNum 氨基酸长度
siteNum 位点数
varNum 变异数
functionCuration 功能整理程度
pmid / pmidLink 来源文献与链接

基因汇总表只有六个字段,回答的是"覆盖度"问题:

字段 含义 用途
geneName 基因符号 检索入口
ensemblId Ensembl 编号 跨库映射
totalDatasets 该基因的数据集数 判断证据厚度
infoTechnique 技术与各自数据集数 判断是否跨平台
infoStrategy 诱变策略与各自数据集数 判断实验多样性
dataset 数据集编号清单 批量取数

研究表的字段以文献为中心,用于追到源头:

字段 含义
pmid / pmidLink 文献编号与链接
title 论文标题
journal 期刊
year 年份
geneName 该研究覆盖的基因,可多值
numDataset 该研究贡献的数据集数
datasetInfo 数据集编号清单
mutagenesisStrategy 诱变策略

2.3 一条记录的完整解剖

把一条真实记录摊开看,能看清各层字段是怎么咬合的。下面是 VHL 基因在某个数据集里的一条变异,字段按接口原样保留,长文本做了截断标注。

{
  "identifier": "NM_000551.4(VHL):c.263G>A",
  "geneName": "VHL",
  "transcriptId": "NM_000551.4",
  "datasetId": "datasetXXXX",
  "chr": "chr3",
  "pos": 10142000,
  "ref": "G",
  "alt": "A",
  "locationHg38": "3:10142000 (GRCh38)",
  "locationHg19": "3:10142000 (GRCh37)",
  "molecularConsequence": "Stop gained",
  "maveTechnique": "CRISPR-Based Genome Editing",
  "mutagenesisStrategy": "Saturation genome editing",
  "phenotype": "VHL-mediated HIF degradation",
  "functionalAssay": "Cellular fitness",
  "experimentModel": "HAP1",
  "score": -2.31,
  "consequenceClass": "Loss-of-function",
  "functionalDescription": "Loss of VHL-mediated HIF degradation in HAP1",
  "crossAssayHits": 2,
  "clinvarInformation": "Pathogenic",
  "populationFrequency": "0.0000032",
  "tcgaSummary": "NA",
  "pmid": "00000000"
}

三点值得注意。第一,identifier 用的是完整 HGVS,带转录本号,这保证了同一位点在两种转录本下的不同描述不会混为一谈;只按 c. 部分做字符串匹配会漏。第二,locationHg19 与 locationHg38 都给了,做跨版本对齐时不必自己转换,但两个字段的格式是"染色体:坐标 (版本)"的字符串,要拆开才能当数值用。第三,consequenceClass 与 functionalDescription 是两件事:前者是三分类标签,后者是带实验体系的一句人话描述,做文本挖掘时两者都要留。

同一变异在另一个数据集里的记录会是另一行,score 的量表不同、mutagenesisStrategy 可能不同,crossAssayHits 则相同。跨实验比较表就是把这些行横向拼起来的结果。

2.4 功能分类与证据强度的分布

官方在论文与站点统计端点里给了两组分布,一组是功能分类,一组是证据强度档。这两组数字口径不同,不能相加也不能互推:功能分类覆盖全库,证据强度只覆盖已校准的子集。

功能分类 变异数 占比
功能正常 1,660,040 76.15%
功能丧失 460,653 21.13%
功能获得 59,210 2.72%

功能丧失远多于功能获得,官方解释是研究取向所致:多数实验在设计时就针对功能丧失,约六成六的研究只测功能丧失。这个偏斜对使用者的直接影响是——做"功能获得"相关基因(原癌基因、通道病里的部分亚型)时,可用的数据会明显稀薄。

证据强度这一组来自站点的强度统计端点:

强度档 变异数
强 62,776
中 13,996
弱 8,638

三档合计八万余条,相对两百余万的总量不到百分之四。这就是这套分级最需要说清楚的边界:绝大多数变异有分数、有功能分类,但没有 ACMG 强度。看到"库里没有强度"时,不代表数据缺失,而代表这个数据集没有通过校准所需的对照集门槛。

跨实验覆盖的分布同样值得记住:

覆盖情况 变异数 含义
两个以上实验共享 1,323,292 可做一致性检验
仅单一实验 856,611 无法跨平台验证

基因层面的技术分布则是另一幅图景:只有深度突变扫描覆盖的基因 414 个,只有 CRISPR 类覆盖的 381 个,两类都有的仅 26 个。两侧相加正好是 821。这个"哑铃形"分布解释了为什么跨技术一致性分析只能做在很小的一块样本上——论文里那张一致性矩阵,用的是 3,663 个被两种技术同时测过的变异。

2.5 与 MaveDB、ClinVar 的字段差异

三者最容易混,因为它们都在讲"变异",但讲的不是同一件事。把字段摆在一起看,区别立刻清楚。

维度 ClinMAVE MaveDB ClinVar
一行代表 数据集里的变异 + 功能解读 一个 MAVE 分数集里的变异 一条临床提交的变异-表型断言
核心内容 功能分数、功能分类、PS3 强度 原始分数、标准差、读数计数 临床显著性五级分类
是否有 ACMG 强度 有,PS3 强/中/弱 无 有,但来自提交者,非统一校准
是否有实验元数据 有,模型、表型、诱变策略 有,更细,含原始构建信息 通常无
覆盖范围 821 个基因的编码变异 所有公开 MAVE 数据集 全人类基因的临床提交
更新方式 定期整合,版本化 社区提交驱动 持续提交与再评
主要使用者 临床解读与变异评估 实验与计算方法研究者 临床实验室与诊断流程

一句话概括三者的分工:MaveDB 存读数,ClinMAVE 把读数折成证据,ClinVar 收最终判读。顺序是从实验到证据再到结论,方向不能倒。想拿 ClinMAVE 反推 ClinVar 的判读、或拿 ClinVar 的结论去质疑 ClinMAVE 的分数,都是把三层压成了一层。

§3 核心层 A:身份与坐标

3.1 坐标统一是全部工作的前提

MAVE 实验的原始产出通常停在蛋白层或转录本层:作者写的是"第 88 位色氨酸变成终止",而不是"3 号染色体某个位置 G 变 A"。要把这样的描述与 ClinVar、gnomAD、TCGA 对上,必须先把蛋白层的变化反推到 DNA 坐标,再统一到同一个参考基因组版本上。这一步做不干净,后面所有注释都是错的。

ClinMAVE 的做法是分两条路走。深度突变扫描这一类,不走自己映射,而是直接用 Ensembl 发布的 MaveDB 处理文件——那份文件已经把蛋白层变异映射到了 GRCh38 的 DNA 坐标,并保留了原始序列上下文。用官方原话说,这是"已经过严格映射"的成果,直接复用比重新映射更稳。CRISPR 这一类没有现成的映射产物,只能从文献补充材料里抽 DNA 层变异;若原文只给了蛋白层或转录本层的描述,就用 TransVar 反推到 GRCh38。

两条路合流的产物是统一的 HGVS 标识。注释用 VEP v114.2,参考转录本用 MANE 的 GRCh38 v1.4 版本。选 MANE 而不是随便挑一个转录本,意义在于 MANE 是 NCBI 与 EMBL-EBI 联合认定的"临床报告首选转录本",选它等于让库里的 HGVS 与临床实验室写的 HGVS 尽量同形。

3.2 从蛋白层到 DNA 层:两条来源路径的代价

两条路径的代价不一样,值得分开说。

复用 MaveDB 映射的代价是"受制于上游"。MaveDB 的坐标映射是一个持续进行的工作,尚未覆盖全部已发表数据集;ClinMAVE 只能收录已经映射好的部分。这就是为什么论文在讨论局限时明确写到,一些数据集"尚待纳入",并举了 ATM 这类新近发表的例子。换句话说,库的完整性上限由 MaveDB 的进度决定。

自己从文献抽数据的代价是"受制于原文质量"。补充材料的格式千差万别,有的给 VCF,有的给带坐标的 CSV,有的只有一张蛋白层变化表。原文若只给氨基酸改变,反推时就依赖转录本选择,选错转录本会得到错误的 cDNA 位置。官方对此的处理是统一用 MANE 转录本,并在映射比例过低时整份数据集弃用。

来源 取得方式 优势 代价
DMS 类 复用 Ensembl 的 MaveDB 处理文件 坐标已校验,上下文保留 覆盖受上游进度限制
CRISPR 类 文献补充材料抽取 + TransVar 反推 覆盖最新发表的筛选 依赖原文质量与转录本选择

3.3 ID 体系:dataset0001 这样的编号

库里没有用 DOI,也没有用论文里的实验名,而是自造了一套顺序编号:dataset0001 到 dataset2147。这套编号的好处是稳定、短、便于做外键;坏处是它不自带语义——看到 dataset0104 你不知道这是哪个基因、哪篇论文、什么技术。

因此任何跨库对接都要多做一步映射。实践中真正稳定的锚点有三个:变异层用 HGVS 加转录本号,基因层用 Ensembl 基因编号,文献层用 PMID。数据集编号适合在库内做关联,不适合作为对外的主键。

标识类型 例子 稳定性 适用场景
数据集编号 dataset0104 库内稳定,跨版本可能重排 库内关联、批量导出
HGVS 标识 NM_000551.4(VHL):c.263G>A 高,但依赖转录本版本 跨库对接、临床报告
Ensembl 基因编号 ENSG00000134086 高 基因层聚合
PMID 数字编号 高 追文献、追阈值出处
dbSNP 编号 rs 编号 中,常见缺失 常见变异的快速匹配

dbSNP 一栏在库内大量为空,这不是缺陷而是数据性质:MAVE 测的多是人工构建的变异,其中相当一部分在人群里从未被观察到,自然没有 rs 编号。指望用 rs 编号做主键去对接,会在这里断掉。

3.4 转录本选择带来的可见差异

同一基因组位置的变异,在不同转录本下会写成不同的 c. 编号,甚至落在不同的外显子上。库内统一用 MANE,等于替你做了选择。但如果你的实验室用的是另一套转录本(比如某家医院沿用的旧版本),检索时就会对不上。

实务上的处理办法是双路检索:先用 HGVS 试一次,不中就用基因组坐标再试一次。库内的位置字段是现成的,chr、pos、ref、alt 四个字段拼起来就足以做精确匹配,不必依赖字符串。

检索方式 命中条件 失败原因
完整 HGVS 转录本号与库内一致 转录本版本不同
基因名 + c. 编号 同上 同上
基因组坐标四元组 参考版本一致 用了 GRCh37 坐标去配 GRCh38 字段
rs 编号 该变异在 dbSNP 中有记录 人工构建变异无 rs

3.5 坐标双写与版本陷阱

库内同时给了 GRCh37 与 GRCh38 两套坐标,看上去省事,实际藏着一个陷阱:两个字段都是字符串,形如"3:10142000 (GRCh38)",不能直接当整数比较或排序。要拿来做区间查询,得先按冒号与空格切开。

另一处需要注意的地方是,外部注释的版本并不完全同步:ClinVar 取的是 2025 年 5 月 3 日的快照,gnomAD 是 v4.1,cBioPortal 是 2025 年 6 月 2 日,dbSNP 是 156 版,预测器来自 dbNSFP v4.7a。这些版本各自冻结在不同的时点,把它们当成"当前最新"会对不上。做时间敏感的分析(比如"某变异在最新 ClinVar 里是否已被重分类")必须回原始库核。

外部资源 版本或快照 影响
ClinVar 2025-05-03 之后的重分类不会反映
gnomAD v4.1 频率口径与 v2 不同,不可混用
cBioPortal / TCGA 2025-06-02 体细胞频次为快照值
dbSNP build 156 新提交的 rs 可能缺失
预测器 dbNSFP v4.7a 五个工具的分数为打包版本
VEP / MANE v114.2 / v1.4 分子后果与转录本选择依据

§4 核心层 B:证据

4.1 OddsPath:把一次实验折成一个比值

OddsPath 是这套体系里最关键的中间量,来自 ClinGen SVI 的推荐做法。它的构造不复杂,但要理解它衡量的是什么,得看两个概率。

第一个概率 P1 是"致病变异在对照组里的占比",也就是对照集里致病记录除以全部记录;第二个概率 P2 是"致病变异中功能异常者的占比",功能异常指功能丧失或功能获得。两者相除再乘一个校正项,得到的就是 OddsPath。直观地说,它回答的是:在这个实验里,看到"功能异常"这件事,把"致病"的可能性抬高了多少倍。

$$ \text{OddsPath} = \frac{P_2}{P_1} \cdot \frac{1 - P_1}{1 - P_2} $$

这个量的好处是可比。不同实验的分数零点不同、量表不同,但 OddsPath 是比值,量纲被消掉了,于是可以横向排座次。ClinGen SVI 给出的三档门槛是:大于 2.1 支持 PS3 弱证据,大于 4.7 支持中等,大于 18.7 支持强。三条线是整篇论文里最常被引用的一组数字。

4.2 变异级强度:acmgscaler 的分档

OddsPath 是数据集级的,一个问题随之而来:同一个实验里,所有功能异常的变异都该拿同样的强度吗?指南的答案是"不该"。ACMG/AMP 建议把强度落到变异层(splitting),而不是整份实验一律套用(grouping)。理由很实在:一个实验的整体分辨力可以很强,但边缘区域的变异仍然可能被误判。

ClinMAVE 用的是 acmgscaler 给出的基因特异阈值。这个工具的思路是:对每个基因,用该基因自己的致病变异与良性变异分布去标定分数阈值,而不是套一个全局阈值。这解决了"不同基因的分数分布形状不同"的问题。分档结果是三档:强、中、弱。

这两层叠起来的用法,论文写得很清楚:OddsPath 决定这份实验最多能支持到哪一档,变异级强度决定这个变异有没有资格拿这一档。两者取小。一份 OddsPath 大于 18.7 的实验,只有落在强档的变异才能记 PS3 强;落在中档的变异只能记中等,尽管实验本身够强。

层 决定什么 单位 来源
OddsPath 这份实验最高能支持到哪一档 数据集 ClinGen SVI 阈值
变异级强度 这个变异够不够格拿这一档 变异 acmgscaler 基因特异阈值
合并规则 两者取小 变异 ACMG/AMP 的 splitting 原则

4.3 校准的覆盖:156 个数据集、50 个基因

校准不是免费的。要算 OddsPath,得有足够的已知致病与已知良性变异做对照,官方设的门槛是每个数据集至少 10 个致病或良性变异、且 ClinVar 评审星级至少一星。按这个门槛筛下来,进入校准的是 156 个数据集,覆盖 50 个基因。

这 156 个里,最终有一半多拿到了可用的分级:88 个达到映射条件,其中 45 个落在弱档、22 个落在中档、21 个落在强档。剩下三分之二左右虽然算出了 OddsPath,但没有跨过最低门槛,只能算"有量化但不够格"。

校准结果 数据集数 占比 含义
达到 PS3 弱档以上 88 56.41% 可写进判读流程
其中 PS3 强档 21 13.46% 多为 BAP1、VHL、BRCA1、BRCA2 类
其中 PS3 中档 22 14.10% 可作中等证据
其中 PS3 弱档 45 28.85% 可作支持性证据
未达最低门槛 68 43.59% 有 OddsPath 但不可用

强档集中在少数几个基因上,这不是巧合。这几个基因的共同点是:ClinVar 里有大量高置信的致病与良性词条,实验本身又有清晰的功能读出(细胞存活、转录激活、蛋白稳定性),两者叠加才能把 OddsPath 推到 18.7 以上。换句话说,强档的出现需要"临床端有共识"与"实验端有分辨力"同时成立,缺一不可。

4.4 案例:BAP1 c.535C>T 的三重对账

用一条具体变异走完整条链,能看清每一层各自贡献了什么。选 BAP1 的 c.535C>T(蛋白层 p.Arg179W),因为它在论文里被反复当作范例,且有一条独立验证线索。

第一层是实验。这条变异落在 BAP1 的催化域附近,所在数据集的 OddsPath 超过 18.7,属于能支持强档的那一类。实验读的是细胞适应性,饱和基因组编辑在内源位点直接改写序列,属于 CRISPR 类里证据分量较重的一种。

第二层是变异级分档。同一个数据集里,落在强档的只是功能异常变异的一部分,这条变异在强档内。两层取小,得到 PS3 强。

第三层是位点上下文。库里的棒棒糖图显示,在它两侧的 175 至 185 号密码子范围内,功能丧失变异的比例达到 73.08%。这个聚集本身不构成变异级结论,但按 ACMG 的规则可以支撑 PM1(位于突变热点或关键功能域)这一条中等证据。于是这条变异同时拿到了 PS3 强与 PM1 两条线,这在 VUS 重分类里是相当有力的一种组合。

对账的结果是:功能实验说它坏,位点分布说这一带本来就耐受性差,两者方向一致。论文提到,这条被判为 PS3 强的变异后来在一例葡萄膜黑色素瘤的家系分析中得到验证。

§4.4 的案例之所以值得记住,是因为它示范了正确用法:实验证据与位点证据分开记,最后在分类时合并,而不是拿实验分数直接下结论。

证据层 该变异的具体情况 对应 ACMG 条款
实验级 OddsPath 超过 18.7,实验可支持强档 PS3 上限
变异级 落在强档 PS3 强
位点级 邻近 175–185 号密码子功能丧失比例 73.08% PM1
独立验证 葡萄膜黑色素瘤家系分析支持 外部佐证

4.5 校准后的自评:AUC 与一致性

库自己给了两组质量读数,用来回答"这份实验到底能不能分开致病与良性"。第一组是 ROC 曲线下面积,第二组是与计算预测器的一致性。

AUC 这一项,官方在 163 个数据集上算了,取值范围从 0.42 到 1.0,其中 52 个(31.9%)超过 0.75。0.75 这条线是官方自己设的"有潜在临床效用"的门槛。值得注意的是,AUC 随 OddsPath 分档单调上升,所有 PS3 强档数据集的 AUC 都过了 0.75——这说明两套指标在方向上是一致的,OddsPath 高确实对应分辨力强。

第二组是预测器一致性。官方拿五个工具(AlphaMissense、CADD、MetaSVM、REVEL、PolyPhen-2)与 MAVE 的功能分组做正交比较,在至少含四个预测器的 1,696 个数据集里,有 837 个(49.35%)达到统计显著一致。这个比例不到一半,说明实验与预测在相当多的情况下并不同调——这既是预测器的局限,也是实验的局限,两者都不能单独当金标准。

指标 覆盖 结果 读法
AUC 163 个数据集 0.42–1.0,52 个过 0.75 过线才谈得上临床效用
预测器一致性 1,696 个数据集 837 个显著一致 约半数,实验与预测并非同源
跨技术一致性 3,663 个变异 63.47% 一致 两种技术测同一变异,三分之一不同调
通路广度 283,953 个异常变异 63.50% 只影响单通路 多效性有限

跨技术那一条最值得警惕:被深度突变扫描与 CRISPR 编辑同时测过的变异只有三千多个,一致性是 63.47%。也就是说,换一种实验技术,三分之一的变异结论会变。这不是谁错了,而是实验体系不同——一个在 exogenous 表达体系里测,一个在内源位点测,细胞环境本身就不同。

4.6 校准的边界:三件它做不到的事

第一件,校准不能替代对照集的质量。OddsPath 的分母与分子都来自 ClinVar,如果 ClinVar 里某个基因的致病词条本身有争议,算出来的 OddsPath 就会偏。库没有对 ClinVar 词条做再评估,它把这个不确定性原样继承了下来。

第二件,校准不能跨基因移植。acmgscaler 的阈值是基因特异的,A 基因的强档阈值不能套到 B 基因上。这也意味着"这个库给所有变异一个统一分数"的期待不成立——它给的是一套逐基因、逐数据集的换算表。

第三件,校准不能覆盖体细胞场景。PS3 这套规则出自胚系解读框架,体细胞变异用的是另一套(AMP/ASCO/CAP 的四级)。库里有 TCGA 频次与 CGC 基因标注,但那只是注释,不构成体细胞证据分级。

§5 核心层 C:取数

5.1 四个入口

取数有四条路,从轻到重排列:网页浏览、表格端点、按表导出、按基因批量导出。四条路的数据同源,差别在于一次能拿多少、要不要写代码。

入口 地址形态 一次能拿 适合谁
网页浏览 /browse/genes 等五个列表页 一页几十条 先看有什么的人
表格端点 /api/fetch/table/variant 等 一个 JSON 数组 写脚本的人
按表导出 页面上的 Download CSV 当前筛选的全部 要 Excel 的人
按基因导出 基因页触发的任务式下载 该基因全部变异 做单基因专题的人

五个列表页分别是基因、变异、数据集、研究、实验技术。列表页支持关键词检索,检索框能吃基因名、HGVS、数据集编号、Ensembl 编号。这一点在官方首页的说明里写得很明确——四种标识都能直接粘进去。

5.2 先问规模:一个端点拿四个数

在做任何取数之前,先确认规模,避免按错误的量级规划存储。站点的统计端点返回四个计数,是全库最权威的规模口径。

#-- 全库四个计数:基因、研究、数据集、变异
curl -s "https://ngdc.cncb.ac.cn/clinmave/api/stat/homestat"

#-- 返回形如
#-- {"geneCount":821,"studyCount":50,"datasetCount":2147,"variantCount":2179903}

这四个数就是速览表里那一行的来源。它们也解释了为什么这个库的"体量"不能用文件大小衡量——变异数量在两百万量级,但每条记录只有二十来个字段,纯文本导出后是几百兆级的表,不是影像库那种几十 GB 的量级。官方没有公布打包体积,任何具体数字都属于估算,不应引用。

5.3 表格端点:一次一个 JSON 数组

四个表格端点分别对应四张表。它们的响应是标准 JSON,外层是 data 数组,每条记录是一组键值对。字段名与正文 §2.2 的字典一致,可以直接拿来建表。

#-- 数据集表:每行一次实验的一个读出
curl -s "https://ngdc.cncb.ac.cn/clinmave/api/fetch/table/dataset" \
  | python3 -c "import json,sys; d=json.load(sys.stdin)['data']; print(len(d)); print(d[0])"

#-- 基因汇总表:每行一个基因的覆盖情况
curl -s "https://ngdc.cncb.ac.cn/clinmave/api/fetch/table/genesummary" \
  | python3 -c "import json,sys; d=json.load(sys.stdin)['data']; print(len(d))"

变异表的体量最大,直接整表拉取会得到几十兆的响应。实务做法是先在浏览器里用筛选条件缩小范围,再从地址栏把参数抄下来重放。这个接口的筛选参数没有公开文档,属于"看得见但没写在说明书里"的部分——这是取数时最需要留意的边界。

端点 返回 规模 备注
/api/fetch/table/variant 变异表 最大 建议带筛选参数
/api/fetch/table/dataset 数据集表 两千余行 可整表拉
/api/fetch/table/genesummary 基因汇总 821 行 可整表拉
/api/fetch/table/studysummary 研究汇总 50 行 可整表拉
/api/stat/homestat 四个计数 一行 最轻

5.4 下载是两段式的

按表导出与按基因导出都不是直链,而是一个任务:先申请,拿到任务号,再轮询进度,最后取文件。这个设计是为了应对大结果集——直接返回会让浏览器等很久。

#-- 两段式下载:申请任务 -> 轮询进度 -> 取文件
import time, urllib.parse, urllib.request

BASE = "https://ngdc.cncb.ac.cn/clinmave/api"

def start(params):
    q = urllib.parse.urlencode(params)
    with urllib.request.urlopen(f"{BASE}/download?{q}", timeout=60) as r:
        return r.read().decode().strip()

def progress(task_id):
    q = urllib.parse.urlencode({"taskId": task_id})
    with urllib.request.urlopen(f"{BASE}/download/progress?{q}", timeout=60) as r:
        return int(r.read().decode().strip())

def fetch(task_id, out):
    q = urllib.parse.urlencode({"taskId": task_id})
    with urllib.request.urlopen(f"{BASE}/download/file?{q}", timeout=600) as r:
        open(out, "wb").write(r.read())

tid = start({"geneName": "BRCA1"})
while progress(tid) < 100:
    time.sleep(2)
fetch(tid, "brca1_variants.csv")
print("done", tid)

任务号是一个 UUID 形式的字符串,进度接口返回 0 到 100 的整数。这套流程在页面上被封装成按钮,脚本里要自己实现。注意进度接口与文件接口的路径分别是 /download/progress 与 /download/file,两者都以任务号为唯一参数。

步骤 请求 返回 常见失败
申请 GET /api/download?geneName=BRCA1 任务号字符串 基因名拼错返回空
轮询 GET /api/download/progress?taskId=… 0–100 整数 任务过期
取件 GET /api/download/file?taskId=… 文件流 未等进度到 100

5.5 单基因批量:走通一条完整链路

单基因导出是最常用的一条路,适合做基因专题评估。下面这段把申请、轮询、落盘、读回四步连起来,读回时按功能分类做一次分组计数,用来快速判断这个基因的实验是否偏向某一类结论。

#-- 单基因导出后立刻做一次分组计数
python3 - <<'PY'
import csv, collections
rows = list(csv.DictReader(open("brca1_variants.csv", encoding="utf-8")))
c = collections.Counter(r.get("consequenceClass", "") for r in rows)
print("rows", len(rows))
for k, v in c.most_common():
    print(f"{k:22s} {v}")
PY

这段的意义不在于代码本身,而在于提醒一件事:拿到单基因的表之后,第一件该做的事是看功能分类的构成。如果一个基因的数据里九成都是功能正常,那这个实验多半测的是耐受性而非致病性,用它找阳性会很难。

5.6 拼一张自己的表:按数据集编号对齐

真正做分析时,往往要把变异表与数据集表拼起来——变异表里有 datasetId,数据集表里有实验模型与表型,两者一拼才能回答"这条变异是在什么体系里测的"。

#-- 变异表与数据集表按 datasetId 左连接
import json, urllib.request

def table(name):
    url = f"https://ngdc.cncb.ac.cn/clinmave/api/fetch/table/{name}"
    with urllib.request.urlopen(url, timeout=300) as r:
        return json.loads(r.read().decode())["data"]

var = table("variant")
ds = {d["datasetId"]: d for d in table("dataset")}
merged = [{**v, "model": ds.get(v["datasetId"], {}).get("experimentModel", "NA"),
           "pheno": ds.get(v["datasetId"], {}).get("phenotype", "NA")} for v in var]
print(len(merged), merged[0]["model"], merged[0]["pheno"])

这段跑全表会占不少内存,实务上应该先按基因或技术筛一遍再拼。拼完之后最有用的一列是实验体系:同一个基因若既有细胞系数据又有酵母数据,两者的结论需要分开看,不能混成一锅。

拼好之后还有一步是去重。主键是数据集加变异标识,直接拿去切训练集会把同一变异劈到两侧,下面这段按变异标识折叠,并保留它被几个数据集支持。

#-- 折叠到变异层:同一变异只留一行,并记录跨实验命中数
import json, urllib.request, collections

url = "https://ngdc.cncb.ac.cn/clinmave/api/fetch/table/variant"
with urllib.request.urlopen(url, timeout=300) as r:
    rows = json.loads(r.read().decode())["data"]

by_var = collections.defaultdict(list)
for r in rows:
    by_var[r["identifier"]].append(r)

folded = [{"identifier": k, "gene": v[0]["geneName"],
           "hits": len(v), "classes": sorted({x["consequenceClass"] for x in v})}
          for k, v in by_var.items() if v]
print(len(folded), sum(1 for f in folded if f["hits"] > 1))

classes 这一列会暴露一件事:有些变异在不同数据集里的功能分类并不一致。这类冲突记录在做监督学习时应当单独标记或剔除,混在训练集里会让模型学到自相矛盾的标签。

5.7 没有 API 文档这件事

站点提供了一套完整的 JSON 接口,但没有发布接口文档。参数名、分页方式、错误码都只能从前端代码或浏览器网络面板里反推。这带来三个现实后果。

第一,接口可能变。字段名一改,脚本就断,而没有任何变更通知可依赖。稳妥做法是把字段名写进配置,别硬编码在业务逻辑里。

第二,筛选参数不完整。表格端点的筛选能力取决于前端传了什么,某些组合可能不被支持,返回的是全表而不是筛选结果。判断办法是看返回条数是否与预期量级相符。

第三,没有速率承诺。批量抓取时应当自行限速,串行请求、间隔一秒以上,不要并发打满。这是对公共学术资源的基本礼貌,也避免被封。

风险 表现 应对
接口无版本 字段改名无通知 字段名配置化,加解析兜底
参数不完整 筛选被忽略,返回全表 校验返回条数
无速率承诺 并发过高被限 串行 + 间隔
无错误码文档 400 只说 Bad Request 逐个参数二分定位

§6 与库内条目的关系

6.1 关系图谱

在库内已有的变异类词条里,ClinMAVE 站的位置很特殊:它不提供新的一手观测,而是把别处的观测加工成证据。因此它与每一条的关系都是"上下游"而非"并列"。

库内词条 与 ClinMAVE 的关系 方向
ClinVar 临床变异注释库 提供校准用的致病与良性对照集;ClinMAVE 回写功能证据 双向
gnomAD 基因组聚合数据库 提供人群频率,用于判断罕见程度 上游
dbSNP 遗传变异库 提供 rs 编号,用于常见变异匹配 上游
TCGA 癌症基因组图谱 经 cBioPortal 提供体细胞频次 上游
cBioPortal 多组学平台 体细胞频次的取数渠道 上游
COSMIC 肿瘤体细胞突变库 提供 CGC 癌症基因清单 上游
OMIM 基因与遗传病库 提供基因-疾病关系的背景 旁支
AlphaMissense 致病性预测 五个正交预测器之一 并列
Ensembl 基因组注释 提供参考序列与 MaveDB 处理文件 上游
UniProt 蛋白质资源 提供蛋白层坐标与功能域参照 旁支
CIViC 肿瘤变异解读库 体细胞侧的临床解读,与胚系侧的 ClinMAVE 分工 并列
OncoKB 肿瘤变异知识库 同上,偏用药与预后 并列

有一点必须说明:库内目前没有 MaveDB 的独立词条。这不影响本文的写法,但在站内做内链时不能硬指——MaveDB 的相关说明只能落在正文里,不能做成站内跳转。

6.2 检索路径

站内的检索路径按"你想找什么"来分,比按词条名分更实用。

你要找的东西 站内检索词 会落到哪里
变异临床显著性的原始判读 ClinVar、临床显著性、星级 ClinVar 词条
人群频率与罕见性判断 gnomAD、等位基因频率 gnomAD 词条
原始 MAVE 分数与实验细节 MAVE、深度突变扫描、饱和基因组编辑 本文 §2.2 与 §5.3
体细胞频次与泛癌图谱 TCGA、cBioPortal、泛癌 TCGA 与 cBioPortal 词条
癌症基因清单 CGC、COSMIC COSMIC 词条
错义变异计算预测 AlphaMissense、REVEL、CADD AlphaMissense 词条
基因-疾病关系 OMIM、遗传病 OMIM 词条
蛋白功能域与位点 UniProt、功能域 UniProt 词条

6.3 三者最容易混的地方

ClinVar、MaveDB、ClinMAVE 三者的混淆不是术语问题,而是工作流问题。把它们按"一份变异从实验到报告要走几步"排开,位置就固定了。

步骤 谁负责 产出 典型误用
做实验、出分数 原始 MAVE 研究 分数表与阈值 把分数当结论
收原始数据、给统一坐标 MaveDB 坐标化的分数集 把仓库当解读库
折成证据、给强度 ClinMAVE PS3 强/中/弱 把强度当分类
收临床提交、给五级分类 ClinVar 致病/可能致病/未明/可能良性/良性 把提交当共识
出报告 临床实验室 判读结论 把任一层当全部

这五步里,越往下越接近结论,也越依赖人的判断。ClinMAVE 站在第三步,它的产出必须经过第四步与第五步才能进报告。任何试图从第三步直接跳到第五步的做法,都是把证据当结论。

§4.4 的案例正好演示了这条链:实验级给上限,变异级给档位,位点级给旁证,最后仍需临床侧独立验证。没有哪一层能单独成立。

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

先纠正一个最常见的误判:把"没有强度"当成"质量差"。库里有八成以上的变异没有 PS3 强度,原因不是数据粗糙,而是校准的门槛卡在对照集规模上——一个数据集要凑够十个以上带星级的已知致病变异才有资格算 OddsPath,许多冷门基因根本凑不出来。这是上游临床证据的稀缺,不是整理方的疏漏。

第二个需要校正的是"分数越高越可信"。MAVE 分数是每个实验自己的量表,跨数据集不可比;真正可比的是 OddsPath 与 AUC 这类经过对照集标定的指标。拿分数做跨基因排序,是这套数据里最隐蔽的一种误用。

把这两点摆正之后,下面五个维度的分数才有意义。给高分的地方集中在"它做了别人没做的事",扣分的地方集中在"它能做的事有明确上限"。

7.1 五维评分

按 DAIMS 的常用维度打分,每项 1–5 分,分数针对"作为临床变异解读的功能证据来源"这个用途:

维度 分数 理由
数据规模 4 两百余万条变异、821 个基因,在同侪中位置靠前
标注质量 4 阈值逐数据集回溯原文,方向统一,附校准指标
任务适配 5 把功能证据直接映射到 PS3 三档,这一步罕有替代
文档完整 3 论文写得细,站点接口无文档,字段释义靠推断
可获取性 4 免注册、有 JSON 端点,但限学术用途、无批量直链

合计 20 分(满分 25)。这个结构说明它不是全能型资源:适配性拿满,规模与标注稳健,短板在文档与授权。文档这一项的扣分尤其值得注意——论文里的方法描述足够详细,但站点的接口层面几乎是黑箱,两者不在一个水平上。

7.2 校准不等于定论

把"校准"与"定论"分开,是使用这套数据时最重要的认知。校准做的是三件事:确认这个实验能分开致病与良性、给出一个可比的比值、把这个比值折算成证据档位。它没有做的是:确认这条变异在患者身上真的致病。

这两件事之间的距离,在数据里能直接看到。跨技术一致性只有 63.47%——同一条变异,换一种实验技术,三分之一的结论会变。如果校准等于定论,这个数字应该接近百分之百。它不到,说明实验体系本身在影响结论,而体系差异不是校准能消除的。

§4.4 的案例里的那条 BAP1 变异之所以能记 PS3 强,是因为实验级与变异级两层恰好都到位;把其中任何一层换成一个弱数据集,结论立刻降档。这就是校准产出的是"这一条证据有多强",而不是"这个变异是什么"。

还有一层:校准的对照集来自 ClinVar。ClinVar 的记录本身有星级之分,一星记录可能是单一实验室的初步判断。官方设了"至少一星"的门槛,这挡住了完全无据的提交,但挡不住有据而后来被推翻的提交。校准结果因此有一个时间戳属性——它反映的是 2025 年 5 月那个时点的临床共识。

7.3 已知的、可枚举的偏差

偏差 表现 影响
技术覆盖哑铃形 414 个基因只有 DMS,381 个只有 CRISPR,26 个兼有 跨技术验证只能做在极少数基因上
功能方向偏斜 功能丧失占 21.13%,功能获得仅 2.72% 原癌基因与功能获得类疾病数据稀薄
校准覆盖窄 156 个数据集、50 个基因 其余数据有分数无强度
对照集依赖 OddsPath 全部来自 ClinVar 快照 ClinVar 的错误与滞后会传导
实验体系偏体外 多为永生化细胞系与酵母 与患者体内环境有距离
编码区限定 只收编码变异 非编码与调控变异完全缺失
上游映射受限 依赖 MaveDB 的坐标化进度 新数据集入库有延迟
快照不同步 ClinVar、gnomAD、TCGA 各取自不同日期 跨库联合查询会出现版本错位

其中"技术覆盖哑铃形"这一条最容易被低估。它意味着当你想说"这个结论在两个独立实验里都成立"时,能说这句话的基因只有 26 个。绝大多数基因的证据厚度是"一个实验",而不是"多个实验互相印证"。

7.4 外部验证矩阵

库的可信度不能只靠自己报的指标,还要看外部怎么用它。按目前能核实到的引用形态,大致有四类用法。

验证角色 做法 讲得通的地方 风险
作为解读流程的功能证据源 把 PS3 档位接进 ACMG 打分器 档位是标准术语,可直接映射 打分器对 PS3 权重的实现各家不同
作为预测模型的标签源 用功能三分类训分类器 标签量大、口径统一 同一变异多行,切分不当会泄漏
作为方法学的对照基准 拿 OddsPath 与 AUC 比较不同 MAVE 平台 指标已标准化 只覆盖已校准的子集
作为 VUS 重分类的旁证 挑强档变异做进一步家系验证 有独立验证的案例在先 强档仅二十余个数据集

第二类用法值得单独提醒。用这套数据训模型时,最大的陷阱不是标签噪声,而是同一条变异在多个数据集里出现造成的泄漏。变异表的主键是数据集加变异标识,去重之后才是变异层面的样本;如果直接按行切分训练测试集,同一个变异会同时出现在两侧,指标会虚高。

7.5 它为何能持续:换算这件事只有它在做

MAVE 数据会越来越多,MaveDB 会继续收,论文会继续发,这些都是上游的事。真正稀缺的是"把分数换算成临床能用的证据档位"这一层:它要求同时懂实验、懂 ClinVar 的判读习惯、懂 ACMG 的条款边界,还要愿意逐数据集回溯原文去核阈值。这三样凑齐的团队不多。

只要 ACMG 的 PS3 条款还在用、只要 VUS 还是报告里最常见的那一栏,这个换算层就有存在理由。它不会被上游替代,因为上游的职责是存数据;也不会被下游替代,因为临床实验室没有精力对每个基因做一遍 OddsPath。这正是它的生存逻辑。

§8 生态位与历史

8.1 一条不长的历史线

这个库的历史很短,短到可以用几个节点讲完。MAVE 这个概念在 2010 年代中后期成形,饱和基因组编辑在 2018 年前后因为 BRCA1 的工作进入主流视野;AVE 联盟随后推动了数据共享与报告规范,MaveDB 成了默认的存放处。到 2020 年代中期,问题从"有没有数据"变成了"数据能不能用"。

ClinMAVE 出现在这个转折点上。2025 年上线,同年发表预印本,2026 年 1 月正式刊于 Nucleic Acids Research 的数据库专刊。论文的收稿与接收日期都在 2025 年下半年,说明它的整理工作与写作是同步推进的。

时间 事件
2018 年前后 饱和基因组编辑在 BRCA1 上验证可行性,MAVE 进入临床视野
2019 年 ClinGen SVI 提出用 OddsPath 量化功能证据
2025 年 构建时纳入 ACMG 二级发现清单 v3.2、ClinGen GDV 与 CGC 三类基因标注
2025 年 ClinMAVE v1.0 上线,预印本发布
2025 年 6 月 站点数据更新
2026 年 1 月 论文正式刊出,DOI 与 PMID 齐备

8.2 它站在谁的肩膀上

把它拆开看,几乎没有一块是它自己发明的。OddsPath 来自 ClinGen SVI,splitting 原则来自 ACMG/AMP,基因特异阈值来自 acmgscaler,坐标映射来自 MaveDB,注释来自 VEP 与 MANE,外部数据来自 ClinVar、gnomAD、cBioPortal、dbSNP,预测器来自 dbNSFP 打包的五个工具。

它的贡献在于把这些零件装成一条流水线,并且逐数据集地把阈值核了一遍。这件事听起来不新,但工作量极大:一千多个数据集,每个都要读原文、找阈值定义、判断分数方向、必要时翻转符号。论文里那句"阈值主要依据原文,作者给出或从其描述推定"背后,是逐篇的人工阅读。

组件 来源 ClinMAVE 做了什么
证据量化方法 ClinGen SVI 的 OddsPath 批量计算并分档
变异级分档 acmgscaler 逐基因套用阈值
坐标映射 MaveDB 的 Ensembl 处理文件 直接复用,不自建
变异注释 VEP v114.2 + MANE v1.4 统一跑一遍
临床对照 ClinVar 快照 作为校准的阳性与阴性集
人群频率 gnomAD v4.1 并入变异记录
体细胞频次 cBioPortal 的 TCGA 汇总 并入变异记录
基因疾病关系 ClinGen GDV、CGC、ACMG SF v3.2 用于基因层标注

8.3 与同类资源的分工

同类资源不少,但各自负责一段。把它们并排看,能看出这个生态的分层结构。

资源 它负责的那一段 与 ClinMAVE 的交界
MaveDB 原始分数集的存放与坐标化 上游,ClinMAVE 的 DMS 数据来自它
MPRAbase 调控元件类 MAVE 互补,边界在编码与非编码
ClinVar 临床提交的五级分类 双向,既是输入也是输出方向
ClinGen 基因-疾病有效性、剂量敏感性 上游,提供基因层可信度
gnomAD 人群频率 上游,提供罕见性判据
AlphaMissense 等预测器 计算预测分数 并列,做正交比较
CIViC / OncoKB 体细胞变异的临床意义与用药 并列,场景不同
Franklin 等解读平台 面向临床医生的判读界面 下游,可消费功能证据

值得记住的是 MPRAbase 这一格。它提示了一个边界事实:MAVE 的世界已经按分子类型分家,编码归 ClinMAVE,调控归 MPRAbase。做非编码变异的人在这里找不到东西,不是遗漏,是有意为之。

8.4 中文语境里的位置

它由中国的两家机构共建:国家生物信息中心负责基础设施与数据规范,北京协和医院生物信息中心负责临床侧的需求与整理。这个组合在同类资源里不常见——多数 MAVE 相关资源出自欧美高校或联盟,临床端的参与度参差。

对中文使用者来说,这带来两个实际好处:一是站点在境内访问速度正常,不必担心跨境拉取;二是它的术语体系与国内临床遗传学的用词习惯接近,PS3、VUS、致病性这些词的译法不需要二次转换。坏处则在于文档——站点没有中文使用手册,接口也没有说明,中文使用者的上手成本与英文使用者相同。

§9 使用指引

9.1 三种角色的路径

不同角色对这套数据的用法差别很大,路径可以分开设计。

角色 首要问题 建议路径 需要跳过的部分
临床遗传咨询与分子诊断 这个 VUS 有没有功能证据 首页检索 HGVS → 看功能分类 → 看 PS3 档位 → 核对数据集 不必碰接口与批量下载
生物信息与变异解读工程 怎么把证据接进流水线 拉表格端点 → 按数据集编号对齐 → 只取已校准子集 不必逐条读论文
变异效应预测模型开发 怎么拿到干净的标签 按基因导出 → 去重到变异层 → 按基因切分 不必看 PS3 档位
方法学研究 这套校准方法靠不靠得住 读论文方法节 → 复算 OddsPath → 比对 AUC 不必拉全表

四类角色的共同点是都不需要"全库"。全库两百余万条对个体判读没有意义,对工程接入也只是多占磁盘。按需取子集,是这套数据最合适的用法。

9.2 一条最短的可用流程

从零到一个可用的判读结论,最短的路径是五步。下面这段把它写成可执行的脚本,用来确认站点可用、数据在手。

#-- 五步最短流程:探活 -> 取规模 -> 拉数据集表 -> 取单基因 -> 分组计数
set -e
BASE="https://ngdc.cncb.ac.cn/clinmave/api"

#-- 第一步:确认统计端点可用
curl -sf "$BASE/stat/homestat" -o homestat.json
python3 -c "import json;d=json.load(open('homestat.json'));print(d)"

#-- 第二步:拉数据集表并看字段
curl -sf "$BASE/fetch/table/dataset" -o dataset.json
python3 -c "import json;d=json.load(open('dataset.json'))['data'];print(len(d),sorted(d[0])[:8])"

#-- 第三步:取某个基因的变异(此前已通过页面导出为 CSV)
python3 - <<'PY'
import csv, collections
rows = list(csv.DictReader(open("brca1_variants.csv", encoding="utf-8")))
c = collections.Counter(r["consequenceClass"] for r in rows)
print(len(rows), dict(c))
PY

这段跑通之后,手上就有了三样东西:全库规模、数据集清单、单基因变异表。下一步是判读,而判读不在脚本里——要看具体变异的功能分类、它所隶属数据集的 OddsPath、以及它在位点上的上下文。

9.3 引用方式

官方在首页给出了引用格式,指向 2026 年发表于 Nucleic Acids Research 数据库专刊的那篇论文。引用时至少要给到期刊、卷期、页码与 PMID 四项,方便他人定位。

项 内容
论文标题 ClinMAVE: a curated database for clinical application of data from multiplexed assays of variant effect
期刊 Nucleic Acids Research
卷期页 2026, 54(D1): D1355–D1363
数字对象标识 10.1093/nar/gkaf1102
文献编号 PMID 41233957
全文编号 PMC12807648
站点 https://ngdc.cncb.ac.cn/clinmave/
许可提示 学术用途免费,商业用途需联系作者

引用时还有一条实务建议:如果你的结论依赖某个具体数据集,把数据集编号一并写进去。库内的数据集编号稳定,写出来别人能直接定位到那一次实验;只写库名,读者无法判断你用的是哪一份证据。

§10 AI 使用声明

项目 说明
数据性质 体外功能实验的整理结果,不是患者观测数据,不含个人健康信息
可直接用于训练 功能分数、功能三分类、分子后果、坐标,可作监督标签
需谨慎使用 PS3 档位,它是相对证据强度,不是绝对致病判定
不建议作为标签 ClinVar 注释字段,它随版本变动,作标签会引入时间漂移
泄漏风险 同一变异跨数据集多行,须按变异去重后切分
分布偏移 基因间覆盖极不均衡,强档集中在少数基因,随机切分会让稀有基因全落一侧
生成式模型注意 不得据功能分数直接生成临床结论,只能生成"证据摘要"
合规提示 商业用途需授权;用于临床决策时须由持证人员复核

常见误读(避坑清单)

常见说法 实际 证据
“这是 MaveDB 的中文镜像” 不是镜像,是加工层:数据来源、字段、结论都不同 只复用 DMS 部分,另补文献 CRISPR 数据
“有分数就能判致病” 分数是实验读数,判读要过校准与证据合并两道 八成以上变异没有 PS3 强度
“PS3 强就是致病” PS3 是单条证据,不是分类结论 ACMG 五级分类需多条证据线合并
“覆盖 821 个基因就等于覆盖常见遗传病” 这 821 个是做过 MAVE 的基因,与疾病基因集只部分重叠 其中 330 个为疾病相关基因
“可以用它替代 ClinVar” 两者方向相反:一个产证据,一个收结论 ClinVar 是它的校准来源
“分数可以跨基因比较” 每个数据集独立校准,量表不可通约 官方明确不同数据集分布异质
“所有变异都有 ACMG 分级” 只有 156 个数据集、50 个基因完成校准 站点强度统计合计八万余条
“它是 2026 年才有的” 2025 年上线,2026 年是论文刊出年 站点 2025 年即有版本记录
“非编码变异也能查” 明确只收编码变异 调控类由 MPRAbase 承接
“免费就是可以随便商用” 仅学术用途免费,商用需授权 站点 License 栏原文

FAQ

Q1:ClinMAVE 和 MaveDB 到底是什么关系?
MaveDB 是原始分数集的存放处,ClinMAVE 是它的临床解读层。ClinMAVE 的深度突变扫描部分直接从 MaveDB 经 Ensembl 处理后的文件取得,再补上文献里的 CRISPR 类数据,然后做坐标统一、阈值划分与 ACMG 校准。一个存读数,一个给结论。

Q2:PS3_strong 是不是等于这个变异就是致病的?
不是。PS3 只是 ACMG/AMP 五级分类里的单条强证据,要和其他证据线合起来才形成分类结论。库里给的是这条证据的强度,不是最终判读。把它当结论直接写报告,是这类数据最常见的误用。

Q3:为什么只有两百多个基因有计算预测器的校准阈值?
因为预测器分数要与 ClinVar 的致病、良性对照集配对才能定阈值,而多数基因在 ClinVar 里没有足够多的高置信记录。官方给出的数字是 821 个基因中 213 个至少有一个预测器可校准。

Q4:同一个变异在库里出现好几行,是重复吗?
不是重复,是同一个变异被不同数据集测过。主键是数据集编号加变异标识,跨实验命中数会告诉你有几个数据集覆盖它。想做一致性分析就用跨实验比较表。

Q5:能商用吗?
不能直接商用。站点许可栏的原话是学术用途免费,任何商业用途需联系作者取得商业授权条款。论文的数据可用性声明只说了免费开放、无需注册,没有提商业许可,两处要合起来读。

Q6:它和 ClinVar 的结论打架时听谁的?
看你要回答什么问题。要判读结论,以 ClinVar 的专家面板意见为主;要看功能证据的强度,以 ClinMAVE 的校准为主。两者打架本身是有信息量的——常常意味着该变异的证据线之间本来就不一致,值得回到原始文献看。

Q7:数据多久更新一次?
官方未公布固定的更新周期。站点记录显示 2025 年 6 月有过一次数据更新,论文提到 MaveDB 的坐标映射仍在推进、部分新数据集尚待纳入。做时间敏感的分析时,应记录取数日期。

Q8:能下载全量吗?
可以,但要走任务式下载而非直链。按表导出与按基因导出都是先申请任务号、再轮询进度、最后取文件。全量变异表体量在几十兆量级,建议先按基因或技术筛一遍。

Q9:有 API 文档吗?
没有。站点提供完整的 JSON 端点,但未发布接口说明,参数与分页方式只能从前端行为反推。字段名可能变动,接入时应做解析兜底。

Q10:为什么有些变异没有人群频率?
因为多数 MAVE 变异是人工构建的,在人群里从未被观察到,gnomAD 里自然没有记录。这不是缺失值问题,是数据性质决定的。

Q11:适合拿来做临床报告的直接依据吗?
适合做证据引用,不适合做结论来源。报告里应当写"功能实验提示功能丧失,校准强度支持 PS3 强",而不是"该变异致病"。最终判读须由持证人员结合其他证据完成。

术语表

术语 含义
MAVE 多重变异效应实验,一次并行测定大量变异的功能后果
DMS 深度突变扫描,在模型表达体系中导入变异文库
饱和基因组编辑 在内源位点系统性改写序列,逐个测功能
碱基编辑 不切断双链、直接改写单个碱基的编辑方式
先导编辑 用逆转录模板写入任意小片段改变的编辑方式
功能丧失 变异导致蛋白功能下降或消失
功能获得 变异导致蛋白功能增强或获得新活性
功能正常 变异未检出可测的功能改变
VUS 临床意义未明变异,五级分类中证据不足的一档
PS3 ACMG/AMP 中"功能实验支持致病"的强证据条款
BS3 对应的"功能实验支持良性"条款
PM1 位于突变热点或关键功能域的中等证据条款
OddsPath 致病几率比,量化一次实验能提供多强的功能证据
acmgscaler 按基因标定 ACMG 证据阈值的工具
splitting 把证据强度落到变异层而非整份实验的做法
AUC ROC 曲线下面积,衡量实验区分致病与良性的能力
校准 用已知致病与良性变异确定阈值与强度的过程
对照集 用于校准的已知结论变异集合
跨实验命中 同一变异被多个数据集测过的次数
分子后果 VEP 注释出的变异类型,如错义、无义、剪接
MANE NCBI 与 EMBL-EBI 联合认定的临床首选转录本集
HGVS 人类基因组变异学会的变异命名规范
诱变策略 构建变异文库的方法,如寡核苷酸合成、易错 PCR
正交验证 用另一套方法独立验证同一结论
MPRAbase 面向调控元件类 MAVE 的专门数据库

附录 A:核心数字核对表

项 值 来源 来源层级
变异总数 2,179,903 站点统计端点 官方接口
基因数 821 站点统计端点 官方接口
数据集数 2,147 站点统计端点 官方接口
研究数 50 站点统计端点 官方接口
实验技术类别 2 站点首页 官方页面
功能正常占比 76.15% 论文正文 论文
功能丧失占比 21.13% 论文正文 论文
功能获得占比 2.72% 论文正文 论文
已校准数据集 156 论文正文 论文
校准覆盖基因 50 论文正文 论文
PS3 三档门槛 2.1 / 4.7 / 18.7 论文正文 论文
强档数据集 21 论文正文 论文
预测器可校准基因 213 论文正文 论文
AUC 过 0.75 的数据集 52 论文正文 论文
跨技术一致性 63.47% 论文正文 论文
多实验覆盖变异占比 29.02% 论文正文 论文
疾病相关基因 330 论文正文 论文
打包体积 官方未公布 — 未核实

附录 B:数字的来源分层

层级 内容 可信度处理
官方接口 四个规模计数、强度档计数、功能分类计数、跨实验覆盖计数 直接引用,注明取数日期
官方页面 全名、简介、许可、引用格式、检索支持的四类标识 直接引用
论文正文 校准结果、AUC、一致性、基因疾病分布、纳入排除标准 直接引用,注明是论文口径
论文补充材料 逐数据集阈值来源、逐数据集质量指标 未逐份核对,仅引用论文对其的描述
第三方目录 版本号 v1.0、最近更新日期 引用 NGDC 自家目录页,标注为目录口径
未核实 打包体积、单文件大小、逐字段空值率 明示未公布或不统计

两处口径差异需要留意。第一处是变异总数:统计端点给的是二百一十七万九千九百零三,论文正文有一处写作二百一十七万九千九百零四,差一条,官方未说明差额来源。第二处是校准数据集数:论文一处写 156 个进入校准,另一处写 163 个做了 AUC 评估,两组数不是同一个筛选口径,不可互换。

附录 C:完整参考文献

编号 文献
1 Ma C, Li Z, Tang X, et al. ClinMAVE: a curated database for clinical application of data from multiplexed assays of variant effect. Nucleic Acids Res. 2026;54(D1):D1355–D1363. doi:10.1093/nar/gkaf1102. PMID:41233957
2 Brnich SE, Abou Tayoun AN, Couch FJ, et al. Recommendations for application of the functional evidence PS3/BS3 criterion using the ACMG/AMP sequence variant interpretation framework. Genome Med. 2019;12:3
3 Gelman H, Dines JN, Berg J, et al. Recommendations for the collection and use of multiplexed functional data for clinical variant interpretation. Genome Med. 2019;11:85
4 Findlay GM, Daza RM, Martin B, et al. Accurate classification of BRCA1 variants with saturation genome editing. Nature. 2018;562:217–222
5 Huang H, Hu C, Na J, et al. Functional evaluation and clinical classification of BRCA2 variants. Nature. 2025;638:528–537
6 Waters AJ, Brendler-Spaeth T, Smith D, et al. Saturation genome editing of BAP1 functionally classifies somatic and germline variants. Nat Genet. 2024;56:1434–1445
7 Buckley M, Terwagne C, Ganner A, et al. Saturation genome editing maps the functional spectrum of pathogenic VHL alleles. Nat Genet. 2024;56:1446–1455
8 Claussnitzer M, Parikh VN, Wagner AH, et al. Minimum information and guidelines for reporting a multiplexed assay of variant effect. Genome Biol. 2024;25:100
9 McEwen AE, Tejura M, Fayer S, et al. Multiplexed assays of variant effect for clinical variant interpretation. Nat Rev Genet. 2025
10 Richards S, Aziz N, Bale S, et al. Standards and guidelines for the interpretation of sequence variants. Genet Med. 2015;17:405–424

附录 D:任务代码

字段 内容
任务代号 clinmave
词条类型 数据库类(非影像、非队列)
主要数据形态 结构化表格(JSON / CSV)
建议存储 关系表三张加汇总表一张,按数据集编号建索引
关键外键 数据集编号、Ensembl 基因编号、PMID
去重键 变异标识加转录本号
切分建议 按基因切分,同一变异的多行整组同侧
校验要点 变异总数、功能三分类计数、已校准数据集数
常见失败 直接按行切分导致泄漏;把 PS3 档位当分类结论

附录 E:如果只记五件事

序 要点
一 它是 MaveDB 与临床判读之间的换算层,不是又一个变异库
二 两百余万条变异里,只有八万余条有 PS3 强度,其余有分数无档位
三 PS3 强不等于致病,它只是五级分类里的一条证据
四 只收编码变异,调控类归 MPRAbase,别在这里找非编码
五 学术免费、商用需授权,接口无文档,字段名要配置化

编辑说明

核验时间为 2026 年 10 月 28 日。核对方式为直接访问站点首页与其前端脚本,逐个调用统计端点与四张表格端点确认响应结构与字段名,并读取 Europe PMC 上的论文全文核对方法、规模与校准数字;clinmave.org 与 www.clinmave.org 两个域名均无法解析,实体确认以 ngdc.cncb.ac.cn/clinmave/ 为准。未覆盖的内容包括:逐字段空值率、逐基因的变异数排序、逐数据集的阈值分布、打包体积与单文件大小,这些或未公布或需全量下载后统计,按要求不写入。两处官方口径不一致已如实记录在附录 B,未作对错判断。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • igvf-catalog — 共享标签:基因组学与多组学 / 变异与注释
  • cosmic — 共享标签:基因组学与多组学 / 变异与注释
  • clinvar — 共享标签:基因组学与多组学 / 变异与注释
  • civic — 共享标签:基因组学与多组学 / 变异与注释
  • ipd-imght-hla — 共享标签:基因组学与多组学 / 变异与注释
  • mgi — 共享标签:基因组学与多组学 / 变异与注释
  • jogo — 共享标签:基因组学与多组学 / 变异与注释
  • varsite — 共享标签:基因组学与多组学 / 变异与注释
  • cellsnvreg — 共享标签:基因组学与多组学 / 变异与注释
  • circtarget — 共享标签:基因组学与多组学 / 变异与注释

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集