Gene2Phenotype — 3,856 条基因病关联的置信度分级

7 个疾病面板 / 3,170 个基因 / 六级置信度

来源 https://www.ebi.ac.uk/gene2phenotype/发布时间: 2026-10-26最后更新: 2026-10-26 阅读 9
Gene2Phenotype — 3,856 条基因病关联的置信度分级

信息速览

数据集名称Gene2Phenotype — 3,856 条基因病关联的置信度分级
数据类型人工标注,元数据,本体映射,文献引用
规模不适用(关联级数据库,无个体患者)
接入方式https://www.ebi.ac.uk/gene2phenotype/
AI 就绪度

Gene2Phenotype 是一份「专家给基因—疾病关联打分」的库。截至 2026 年 10 月 26 日,全库 3,856 条记录,覆盖三千一百余个基因、三千八百余个疾病名,分属七个疾病面板。它的核心产出不是「某基因导致某病」这一句话,而是这句话后面的那个词——definitive、strong、moderate、limited、disputed、refuted 六档之一,由具名审编人员读完文献后判定。

这个设计在一众遗传数据库里很特别。OMIM 写描述,ClinVar 收变异,gnomAD 给频率,它们都在回答「是什么」。G2P 回答的是「有多确定」,并且把这个答案结构化成可以直接写进代码里的枚举值。临床诊断流程里最耗时的环节之一,就是从一堆候选基因里挑出值得写进报告的少数几个;G2P 的置信度栏就是为这一步准备的。

规模上它不算大——比 ClinVar 的百万级提交小三个数量级,比 OMIM 的条目数也少。但它的每一条记录背后都有明确的审编动作与审校日期,这是它区别于自动聚合库的地方。一屏速览见下表。

维度 内容
全称 Gene2Phenotype(G2P)
建设方 EMBL-EBI,与 Wellcome Sanger 研究所联合策展
起步年份 2012(最初为发育障碍面板)
平台重构 2026 年,新增 REST API 与结构化数据模型
核心单位 基因—疾病关联(LGD,locus-disease)
记录数 3,856(2026-10-26 全库 CSV 行数)
基因数 3,170
疾病名数 3,805
面板数 7(DD / Eye / Skin / Skeletal / Cardiac / Cancer / Ear)
置信度档位 6(definitive / strong / moderate / limited / disputed / refuted)
definitive 占比 53.0%(两千零四十五条)
记录编号格式 G2P00001(五位数字,稳定不变)
坐标参考 GRCh38
疾病本体 MONDO(3,434 条)+ OMIM(3,039 条)
表型本体 HPO(2,548 条有值,平均 17.4 项)
许可 CC0 1.0
接入方式 Web 检索、REST API、CSV 全量下载
API 根 https://www.ebi.ac.uk/gene2phenotype/api
最新文献 J Mol Biol 2026,doi:10.1016/j.jmb.2026.169768

§1 它要解决的具体麻烦

1.1 一个基因与一个疾病之间,「有关联」和「确定有关联」差得很远

临床遗传学的日常是这样的:一个患儿做了全外显子测序,筛出三万个变异,过滤掉常见多态后剩两百个稀有变异,落在八十个基因上。接下来要判断的是——这八十个基因里,哪些与患儿的表型有已知关联?

文献能回答,但答案的可靠性天差地别。有的关联来自十几个家系的共分离证据加功能实验,写在教科书里;有的来自一篇病例报告,一个患者、一个变异、一句「可能相关」;还有的被后续研究明确否定,但那篇否定文章引用量远低于原始报道。

如果只按「有没有文献提到」来筛,这三类会被混在一起。G2P 的第一件事就是把它们分开:同一个基因—疾病对,只出一条记录,后面跟一个置信度词。

1.2 三条常见的错误期待

误以为它是变异级数据库。 打开一条记录,你看到的是「LMNA 与扩张型心肌病有关联,置信度 definitive,涉及移码、错义、无义介导降解的剪接位点变异」。这里面没有「某个具体的 c.123A>G 是否致病」的答案。要那个答案,去 ClinVar。

误以为它覆盖全部罕见病。 七个面板:发育障碍、心脏、眼、骨骼、皮肤、肿瘤易感、耳。神经系统退行性疾病、代谢病、血液病、免疫缺陷都不在其中。全库不过三千八百余条,而 OMIM 的基因—表型条目远超此数。

误以为置信度可以跨面板直接比。 各面板由不同团队按各自的证据传统审编。Cardiac 面板的 179 条里有 49 条是 disputed,比例高达 27%;DD 面板两千八百余条里 disputed 只有 4 条。这不说明心脏领域的关联更不可靠,而说明该面板对「有争议」这一档的启用更积极。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
判断某基因与某病是否已确立关联 六级置信度,逐条给出 够
知道该关联的遗传模式 allelic requirement 七种取值 够
知道分子机制方向 四类加两个未定子类 够,但三成未定
拿到支持文献清单 PMID 列表,平均 3.7 篇 够
变异级致病性判定 不给 不够
某基因上的具体变异列表 不给(只有变异类型的类别) 不够
患者级临床数据 不给 不够
覆盖全部罕见病 只覆盖七个领域 大面积不够
中文疾病名 不给,全英文 需自建映射
程序化批量取数 给,CSV + REST API 够
明确的再分发许可 CC0,无限制 够,这是它少见的优点

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

你的处境 它能帮你什么 下一步该做什么
手里有一批候选基因,要排优先级 每条关联一个置信度,可直接排序与过滤 先按 definitive + strong 切一刀,再人工看
要为一个检测面板选基因 面板本身就是现成的领域清单,附置信度 与 PanelApp 交叉,取交集作绿单
写病例报告,需要说明关联的既有证据等级 一条可引用的结构化记录,带稳定编号 引 G2P 编号 + 原始 PMID,两者都写
训一个罕见病基因优先级模型 三千余条带标签的关联,可作为监督信号 注意标签极不平衡,definitive 占一半
做变异解读,要判断某个变异 帮不上,这是基因级不是变异级 改用 ClinVar + ACMG 规则
研究非七个面板内的疾病 帮不上,未收录 改用 OMIM + 文献自建
需要中文命名与中文表型 帮不上,全英文 借 HPO 中文翻译表自行映射
只想要一份能直接下载的全量清单 一个 CSV,24 列,2.6 MB 一次 curl 即可,见 §5.1

1.5 一句话判断

你要问「这个基因和这个病,遗传学界到底认不认」,它给的是最短路径:一个词,加一串 PMID。你要问「这个变异致不致病」,它一句话都不给。

1.6 不适合谁:四条边界

要做变异级解读的,它不是工具。 全库没有任何一条记录到变异层面(HGVS 表达)。它只在 variant types 一栏给出类别(frameshift、missense、stop gained NMD triggering 等),且这一栏有 2,640 条为空。

要全病种覆盖的,缺口很大。 七个面板之外一概不收。代谢病、血液病、原发性免疫缺陷、神经肌肉之外的大部分神经病学,都不在范围内。拿它做「全罕见病知识库」会漏掉大半个领域。

要自动更新的,得自己建管道。 它没有 webhook、没有变更日志接口。想知道某条记录变没变,只能定期全量下载 CSV 并比对 date of last review——而这一栏有大量历史批次痕迹,见 §7.3。

要用中文做临床落地的,翻译成本不低。 三千八百余个英文疾病名、HPO 项、SO 术语,都需要中文对照。HPO 官方有中文翻译但覆盖不全,SO 的中文译名在中文文献里也不统一。

§2 数据构成与规格

2.1 一次下载能看到什么

全库 CSV 一个请求就能拿到:2.6 MB,三千八百余行数据加一行表头,24 列。这是它相对很多遗传数据库的一大优势——不需要注册、不需要申请、不需要分批。

项 值 来源
下载端点 /api/panel/all/download/ 官方 API
HTTP 状态 200 2026-10-26
Content-Type text/csv 响应头
文件大小 2,675,808 字节 响应头
行数(含表头) 3,857 wc -l
列数 24 表头
单条 JSON 大小 约 8–14 KB G2P03271 为 10,881 B

2.2 二十四列的完整字典

CSV 的列名用的是小写英文加空格,不带下划线。这一点在写解析代码时要注意——pandas 读进来后列名带空格,直接点属性访问会失败。

# 列名 类型 含义 完整度
1 g2p id 字符串 G2P00001 格式的稳定编号 100%
2 gene symbol 字符串 HGNC 现行符号 100%
3 gene mim 字符串 OMIM 基因编号 3 条为空
4 hgnc id 字符串 HGNC:xxxxx 100%
5 previous gene symbols 分号分隔 曾用名,供旧数据匹配 92.3% 有值
6 disease name 字符串 疾病名,多为「基因-related 病名」格式 100%
7 disease mim 字符串 OMIM 表型编号 78.8% 有值
8 disease MONDO 字符串 MONDO:xxxxxxx 89.1% 有值
9 allelic requirement 枚举 7 种遗传模式 100%
10 cross cutting modifier 分号分隔 跨切修饰词,可多值 12.7% 有值
11 confidence 枚举 6 档置信度 100%
12 variant consequence 分号分隔 SO 本体项,可多值 99.5% 有值
13 variant types 分号分隔 具体变异类别 31.5% 有值
14 molecular mechanism 枚举 5 种取值 100%
15 molecular mechanism support 枚举 inferred / evidence 100%
16 molecular mechanism categorisation 字符串 细分机制标签 1.8% 有值
17 molecular mechanism evidence 字符串 证据类型描述 7.0% 有值
18 phenotypes 分号分隔 HPO 项,如 HP:0000007 66.1% 有值
19 publications 分号分隔 审编所用 PMID 97.5% 有值
20 additional mined publications 分号分隔 自动挖掘的 PMID 80.9% 有值
21 panel 分号分隔 所属面板,可多值 100%
22 comments 自由文本 审编备注 6.6% 有值
23 date of last review ISO 时间戳 最后审校时间 100%
24 review 自由文本 复核意见 0.2% 有值

这张表本身就是一份使用说明书:哪一列能拿来做分析,哪一列只能当备注看,一目了然。比如想按 HPO 做表型驱动的检索,得先接受三分之一记录没有表型这一事实;想按变异类型统计,得接受七成记录为空。

2.3 一条记录的完整解剖

拿 G2P03271 做样本——LMNA 相关扩张型心肌病。这是 LMNA 九条记录里的心脏那一条,也是全库结构最典型的一条。

CSV 里它长这样(部分列):

g2p id             G2P03271
gene symbol        LMNA
gene mim           150330
hgnc id            HGNC:6636
disease name       LMNA-related dilated cardiomyopathy
disease MONDO      MONDO:0007269
allelic requirement monoallelic_autosomal
confidence         definitive
variant consequence altered gene product structure; decreased gene product level
molecular mechanism undetermined
molecular mechanism support inferred
panel              Cardiac
publications       31983221; 28912180; 10580070; 10662742; 11897440; ...
date of last review 2022-xx-xx

同一记录的 JSON 版本信息量大得多——它把每一栏都展开成对象:

curl -sL "https://www.ebi.ac.uk/gene2phenotype/api/lgd/G2P03271/"

注意路径结尾的斜杠。不带斜杠会返回 301,curl 不加 -L 就跟不过去,拿到的是空响应体而不是报错。这是这套 API 最容易踩的一个坑。

JSON 里有几块是 CSV 完全没有的:

locus 块给出基因组坐标。G2P00119(BRCA1 相关范可尼贫血)的 locus 是 sequence: 17、start: 43044295、end: 43170245、strand: -1、reference: grch38,另附 HGNC、Ensembl、OMIM 三个标识与别名列表。做区域查询或与 VCF 交集时,这一块是关键。

disease.ontology_terms 给出 MONDO 与 OMIM 两条映射的完整文本,还有一段从本体继承来的疾病定义。CSV 里只有一个 accession,JSON 里能看到这个词条在本体里的原文描述。

publications 数组每条带 pmid、title、authors、year,以及 number_of_families 这类结构化计数——这一个字段是 CSV 里完全没有的,而它对判断证据强度极有价值:一篇报了 20 个家系的论文和一篇只报 1 个病例的论文,在 PMID 列表里看起来一样。

mined_publications 是自动挖掘结果,每条带 status: "mined" 与一段 comment,说明挖掘来源。这一栏不能与审编文献等价——见 §4.3。

cross_cutting_modifier 是对象数组,G2P00119 的取值是 potential secondary finding(潜在次要发现),意思是这个基因上的变异在做外显子测序时可能被顺带发现,与主诉无关但具临床意义。

molecular_mechanism 展开成 mechanism、mechanism_support、synopsis、evidence 四个键。G2P00119 的 evidence 是一个空对象——机制判为 loss of function,但证据强度只到 inferred。而 G2P03507(MTFMT 相关线粒体病)的 evidence 里有 biochemical function、protein expression function、patient cells functional alteration、patient cells rescue 四项,那就属于 evidence 级别。

2.4 七个面板的实际体量

面板不是并列的七份数据,而是七条不同量级的河流汇进一个湖。DD 一条就占全库 74.5%。

面板 记录数 基因数 最后更新 definitive strong moderate limited disputed refuted
DD 发育障碍 2,871 2,565 2026-10-21 1,484 759 282 340 4 2
Eye 眼 789 663 2026-09-25 542 134 7 106 0 0
Skin 皮肤 608 485 2026-09-21 440 66 42 59 0 1
Skeletal 骨骼 346 297 2026-10-01 292 38 6 10 0 0
Cardiac 心脏 179 112 2026-09-18 69 5 8 47 49 1
Cancer 肿瘤易感 125 113 2026-02-04 97 9 13 6 0 0
Ear 耳 98 88 2026-06-08 72 17 5 4 0 0

这张表里有两处值得停下来看。

第一处是 Cardiac 的 disputed 高达 49 条,占该面板 27.4%,而其他六个面板合计只有 4 条。这不是说心脏领域的基因关联更不牢靠,而是说这个面板的审编团队对「已有反证但尚未彻底否定」这一状态更愿意启用 disputed。跨面板比 disputed 比例是没有意义的。

第二处是各面板的「最后更新」相差半年以上。DD 更新到 2026 年 10 月,Cancer 停在 2026 年 2 月。用它做研究时,「截至某日」这句话对不同面板意味着不同的时点。

2.5 记录数与基因数为什么对不上

三千八百余条记录对应三千一百余个基因,差六百多。原因是多条记录共用同一基因——一个基因可以导致多个疾病,各疾病的遗传模式与机制可能完全不同。

基因 记录数 疾病举例
LMNA 9 家族性部分脂肪营养不良、早老症、Emery-Dreifuss 肌营养不良、扩张型心肌病、致心律失常性右室心肌病
FGFR3 8 软骨发育不全、致死性发育不良、Crouzon 综合征伴黑棘皮病
FLNA 7 脑室周围结节状灰质异位、耳腭指综合征、otopalatodigital 综合征
FGFR2 7 Crouzon 综合征、Apert 综合征、Pfeiffer 综合征
DSP 7 致心律失常性右室心肌病、掌跖角化病伴心肌病、扩张型心肌病
COL2A1 6 脊柱骨骺发育不良、II 型胶原病、Stickler 综合征
GJB2 6 非综合征性感音神经性耳聋、掌跖角化病伴耳聋
PRPS1 5 Arts 综合征、X 连锁耳聋、磷酸核糖焦磷酸合成酶缺乏症

反过来看,2,665 个基因只有一条记录,占 84.1%。这个分布形态说明:少数「多效性」基因贡献了不成比例的关联条目,而绝大多数基因在某个特定疾病领域只对应一种表型。

2.6 等位基因要求的七种取值

这一栏回答的是「什么样的基因型才会致病」。七种取值不是纯粹的分类学,每一种都直接对应不同的检出策略。

取值 记录数 占比 检出含义
biallelic_autosomal 2,019 52.4% 需检出两个致病变异,单杂合不致病
monoallelic_autosomal 1,594 41.3% 单杂合即致病,需查显性遗传
monoallelic_X_hemizygous 175 4.5% X 连锁,男性半合子致病,女性携带
monoallelic_X_heterozygous 58 1.5% X 连锁显性,女性杂合即致病
mitochondrial 7 0.2% 线粒体基因组,需考虑异质性水平
monoallelic_X 2 0.05% 未细分显隐的 X 连锁
monoallelic_Y_hemizygous 1 0.03% Y 连锁

monoallelic_X 这个取值只有 2 条,属于历史遗留的写法;后来统一拆成 _hemizygous 与 _heterozygous 两种。写代码做等位基因要求统计时,这三种要合并考虑,否则会得出「有 235 条 X 连锁」这种看起来精确实则口径混乱的结论。

2.7 与同类资源的字段差异

维度 G2P OMIM ClinVar PanelApp
单位 基因—疾病关联 基因 / 表型条目 变异提交 基因面板条目
置信度分级 有,六级 无 有(ACMG 五级,变异级) 有,三色
规模 三千余 万余条目 百万级提交 数千基因
覆盖范围 七个疾病领域 全部孟德尔表型 全部提交 英国 GMS 面板
更新方式 专家定期重审 编辑撰写 提交者自报 专家评审
许可 CC0 限制使用 公有领域 英国官方
API REST,2026 年新增 有限 完整 有限
最适合的用途 判「确定的程度」 查「是什么」 查「这个变异」 定「查哪些基因」

这四者不是替代关系。做一套临床诊断流程,通常是 PanelApp 定检测范围、G2P 定关联的可信度、ClinVar 查具体变异、OMIM 查病种描述。四份数据各有各的缺口,交叉核对才能得到可交付的结论。

§3 置信度:六档到底在说什么

3.1 六档的分布与含义

这是全库最重要的一栏。全部记录的分布如下:

档位 记录数 占比 通俗解释
definitive 2,045 53.0% 已确立:多个独立研究支持,被领域广泛接受
strong 887 23.0% 强:有实质性证据,但尚未到「教科书级」
limited 534 13.8% 有限:证据存在但薄弱,可能只有少量家系
moderate 334 8.7% 中等:证据介于 limited 与 strong 之间
disputed 53 1.4% 有争议:已有研究提出反证,尚未定论
refuted 3 0.08% 已否定:后续研究明确推翻

一个反直觉的事实:definitive 超过一半。这说明 G2P 不是「把所有报道过的关联都收进来」,而是有相当强的准入筛选——大量质量不足的关联报道根本没进这个库。它的策略是「收录时报得紧,收录后用置信度分出层次」,而不是「广收然后标注质量」。

3.2 置信度与文献量的对应关系

置信度的判定依据之一是文献数量与质量。从全量数据算出来的对应关系如下:

档位 记录数 平均审编文献数 最多 无文献记录
definitive 2,045 5.25 82 61
strong 887 2.41 41 17
moderate 334 2.01 10 3
limited 534 1.35 16 15
disputed 53 1.21 7 0
refuted 3 2.00 4 0

平均文献数从 definitive 到 limited 单调递减,这条曲线很干净。但两个例外要注意。

definitive 里有 61 条没有任何审编文献。 这些多半是早年入库、以专家共识或其他数据库为依据建立的老记录,文献栏未回填。用它们做证据强度分析会把均值拉偏。

limited 里有 16 条最多写到 16 篇文献。 文献多但置信度低,通常意味着这些文献互相矛盾,或者都是阴性/不确定结果。

3.3 同一基因的九条记录:置信度如何分层

LMNA 是全库关联最多的基因,九条记录几乎覆盖了置信度的全谱。这个案例能把「同一基因不同疾病,结论完全不同」这件事讲清楚。

G2P 编号 疾病 置信度 等位要求 分子机制 面板
G2P00802 Hutchinson-Gilford 早老症 definitive 单等位常显 gain of function DD; Skin; Skeletal
G2P00599 家族性部分脂肪营养不良 definitive 单等位常显 undetermined DD; Skin
G2P01342 Emery-Dreifuss 肌营养不良 definitive 单等位常显 loss of function DD; Skin
G2P02748 致死性限制性皮肤病 definitive 双等位 loss of function Skin
G2P03271 扩张型心肌病 definitive 单等位常显 undetermined Cardiac
G2P02319 心手综合征(斯洛文尼亚型) moderate 单等位常显 undetermined Skin
G2P02320 致死性紧肤挛缩综合征 limited 单等位常显 gain of function Skin
G2P00674 Charcot-Marie-Tooth 病 limited 双等位 undetermined Skin
G2P03794 致心律失常性右室心肌病 limited 单等位常显 undetermined Cardiac

三条机制结论在这里同时出现:早老症是 gain of function(progerin 蛋白获得毒性功能),Emery-Dreifuss 肌营养不良是 loss of function(lamin A/C 缺失),扩张型心肌病是 undetermined。同一个基因,同一批外显子,机制方向完全相反——这正是 G2P 把分子机制单列一栏的意义:它不是基因的属性,是「基因—疾病对」的属性。

3.4 案例:G2P03271 为什么是理解这份数据的最佳切口

G2P03271(LMNA 相关扩张型心肌病)值得单独拆开看,因为它在几个维度上都是「恰好」的代表。

它是最常见的一类记录。 单等位常显、definitive、有一个明确的 MONDO 映射、有一串 PMID。全库一半以上的记录都是这个形态。

它的分子机制是 undetermined,但置信度是 definitive。 这一点最能破除误解。132 条 LMNA 相关记录里,心脏这一条的机制至今未定,但「LMNA 导致扩张型心肌病」这件事毫无争议——11 篇审编文献、多个独立家系、明确的共分离。机制不明不等于关联不成立。

它落在 Cardiac 面板,而该面板的 disputed 比例最高。 同面板的 179 条里,49 条有争议。这说明该团队对「有反证」这件事很敏感,在这种审编风格下仍给这条判 definitive,分量更重。

它的 variant consequence 是双值。 altered gene product structure 加 decreased gene product level,两个 SO 项同时成立。全库有 208 条是这种双值形态,62 条是三值。解析时不能用 split() 后取第一个就完事。

它的 JSON 里 phenotypes 为空。 CSV 的 phenotypes 栏也是空。这不是遗漏——这条记录确实没有挂 HPO 项。全库三分之一记录如此。指望按表型检索的流程,在这里会直接漏掉它。

五条理由合起来说明一件事:这条记录单看很普通,但它把「怎么正确读一条 G2P 记录」的所有要点都碰了一遍。后面 §4.4、§5.3、§6.2 还会回到它。

§4 分子机制与变异后果

4.1 机制的四类加两个未定子类

molecular mechanism 一栏的取值只有五个,分布极不均匀:

取值 记录数 占比 含义
loss of function 2,308 59.9% 功能缺失:基因产物减少或失活
undetermined 1,204 31.2% 未确定
gain of function 197 5.1% 功能获得:产物获得新活性或毒性
dominant negative 132 3.4% 显性负效应:突变产物干扰正常产物
undetermined non-loss-of-function 15 0.4% 已排除功能缺失,但具体机制未定

undetermined non-loss-of-function 只有 15 条,但含义微妙:审编人员已经能确定「不是功能缺失」,却还不能说清是什么。这一档的存在本身就是一种诚实——它比笼统写 undetermined 提供了更多信息。

undetermined 与置信度是独立的两个维度。 交叉起来看:

机制 \ 置信度 definitive strong moderate limited disputed refuted
loss of function 1,463 519 154 171 0 1
gain of function 125 41 18 12 1 0
dominant negative 92 14 14 12 0 0
undetermined 362 309 142 337 52 2
undetermined non-LOF 3 4 6 2 0 0

362 条机制未定但置信度 definitive 的记录,是这张表里最值得注意的格子。它说明「知道这个基因导致这个病」和「知道它怎么导致」是两件事,而且前者往往先于后者确立——这在遗传学史上很常见。

反过来看,disputed 的 53 条里有 52 条机制是 undetermined。这个相关性不是巧合:机制不清的关联更容易被后续研究质疑。

4.2 机制证据只有两种强度

molecular mechanism support 只有两个取值,且极度偏斜:

取值 记录数 占比
inferred 3,643 94.5%
evidence 213 5.5%

inferred 意思是「由变异后果推断」——看到无义变异导致蛋白缺失,就推断机制是 loss of function,这是逻辑推理不是实验证据。evidence 意思是有功能实验或患者细胞实验支持。

只有 213 条(5.5%)有实验级机制证据。 这个比例低得值得注意:全库绝大多数机制判定是推断出来的。这不是缺陷,是学科现状——为一个罕见病基因做功能实验的成本极高,绝大多数关联永远停留在推断层面。

molecular mechanism evidence 栏(自由文本)只有 271 条有值,描述的正是那些 evidence 级记录用了什么实验:

biochemical function; protein expression function; patient cells functional alteration; patient cells rescue

这是 G2P03507(MTFMT 相关线粒体病)的值——四类证据齐全,从生化功能到患者细胞拯救实验都做了。这类记录在全库不足 7%,是最有分量的一批。

4.3 审编文献与挖掘文献不能混

CSV 有两栏 PMID:publications(审编所用)与 additional mined publications(自动挖掘)。二者的地位完全不同。

项 publications additional mined publications
来源 审编人员阅读并引用 文献挖掘管道自动匹配
是否人工确认 是 否
有值比例 97.5% 80.9%
可否作为证据 可以 只能作为线索
API 中的字段 publications mined_publications

挖掘文献的 JSON 里带 status: "mined" 标记,就是这个区分的机器可读形式。用的时候如果两栏合并计数,会把「有人确认过」和「机器觉得可能相关」混成一锅。

4.4 变异后果用的是 SO 本体

variant consequence 一栏的值来自 Sequence Ontology,不是自由文本。这一栏 99.5% 有值,是全库最完整的一栏之一。

取值组合 记录数 说明
absent gene product 2,024 产物缺失(无义、移码、大片段缺失)
altered gene product structure 1,139 产物结构改变(错义、框内插入缺失)
uncertain 241 后果不确定
前两者并存 208 同一关联下两类变异都观察到
altered structure; decreased level 70 结构改变加表达量下降
三者并存 62 全类型都见过
decreased gene product level 37 仅表达量下降(如启动子变异)

多值不能只取第一个。 208 条双值、62 条三值,合计 270 条记录有多个后果类型。如果写代码时 value.split('; ')[0],这 270 条的信息会丢一半。

在 JSON 里,每个后果项还带 SO accession:

"variant_consequence": [
  {"variant_consequence": "absent gene product", "accession": "SO:0002317", "support": "inferred", "publication": null}
]

SO:0002317 是 absent gene product 的本体编号。用 accession 而不是字符串做键,可以避免拼写差异与措辞更新带来的匹配失败。

4.5 case:G2P03271 的后果组合说明了什么

回到 G2P03271。它的 variant consequence 是 altered gene product structure; decreased gene product level,两个 SO 项并存,且都是 inferred。

这个组合对应的是「错义变异破坏蛋白结构,同时通过无义介导降解或蛋白不稳定导致表达量下降」。在 JSON 里进一步看,variant types 列出了具体的变异类别:frameshift variant、missense variant、stop gained NMD triggering、splice donor variant NMD triggering、splice acceptor variant NMD triggering。

这里有个值得注意的细节:stop gained NMD triggering 这个标签本身就编码了 NMD 机制。普通的功能丧失标注不会区分「无义变异是否触发无义介导降解」,而这个标签明确说了触发。这意味着该记录对变异后果的刻画精细到机制层面,但 molecular mechanism 一栏仍写 undetermined。

两者不矛盾:知道「这个变异通过 NMD 降解了蛋白」和知道「蛋白缺失如何导致扩张型心肌病」是两个层级的问题。前者是分子层面的后果,后者是细胞与器官层面的致病通路。G2P 的机制栏问的是后者。

§5 程序化取数

5.1 一次拿全量

最简单的方式是整库下载。一个请求、2.6 MB、不需要翻页。

curl -sL "https://www.ebi.ac.uk/gene2phenotype/api/panel/all/download/" -o g2p_all.csv
wc -l g2p_all.csv   # 3,857 —— 含表头,数据行 3,856

-L 不能省。这套 API 的所有路径对结尾斜杠敏感:不带斜杠返回 301,不带 -L 就会拿到一个空文件而 curl 的退出码仍是 0。这个问题在 2026 年平台重构后出现,老脚本从 Web 页面抓数据时不会遇到。

5.2 按面板下载

如果只关心一个领域,按面板下更省事:

for p in DD Cardiac Eye Skeletal Skin Cancer Ear; do
  curl -sL "https://www.ebi.ac.uk/gene2phenotype/api/panel/${p}/download/" -o "g2p_${p}.csv"
  printf "%-10s %s\n" "$p" "$(($(wc -l < g2p_${p}.csv) - 1))"
done

面板名大小写敏感,必须用 DD、Cardiac 这样的官方写法,dd 会 404。七个面板相加是 5,016,大于全库总数,因为多面板记录会被重复计入——这是判断「某面板有多少条」的正确口径,与「全库有多少条」不是一回事。

5.3 用 API 拿单条完整记录

CSV 是扁平化的,要拿完整结构必须走单条端点。

import json, urllib.request

def get_lgd(stable_id: str) -> dict:
    """按 G2P 编号取单条完整记录。路径结尾必须有斜杠。"""
    url = f"https://www.ebi.ac.uk/gene2phenotype/api/lgd/{stable_id}/"
    with urllib.request.urlopen(url, timeout=30) as r:
        return json.loads(r.read())

d = get_lgd("G2P03271")
print(d["summary"])
#-- LMNA-related dilated cardiomyopathy has a confidence assertion of definitive
#-- based on 11 curated publications.
print(d["locus"]["reference"])    # grch38
print(list(d["locus"]["ids"]))    # ['HGNC', 'Ensembl', 'OMIM']
print(len(d["publications"]))     # 审编文献条数
print([p["number_of_families"] for p in d["publications"]])

publications 里每条带 number_of_families,这是 CSV 拿不到的字段。它为 null 时说明该文献不是家系研究,可能是功能实验或病例报告。用它做证据加权,比单纯数 PMID 靠谱得多。

5.4 检索端点返回什么

/api/search/?query= 返回的是精简结构,适合做「先找候选再取详情」的两段式流程。

curl -sL "https://www.ebi.ac.uk/gene2phenotype/api/search/?query=BRCA1"
{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {"stable_id": "G2P01796", "gene": "BRCA1", "genotype": "monoallelic_autosomal",
     "disease": "BRCA1-related cancer", "mechanism": "loss of function",
     "panel": ["Cancer"], "confidence": "definitive"},
    {"stable_id": "G2P00119", "gene": "BRCA1", "genotype": "biallelic_autosomal",
     "disease": "BRCA1-related Fanconi anemia", "mechanism": "loss of function",
     "panel": ["DD", "Skeletal"], "confidence": "strong"}
  ]
}

这个返回结构本身就是一个完整的案例:同一个 BRCA1,两种等位基因要求、两个疾病、两个置信度。BRCA1 相关肿瘤是单等位常显、definitive;BRCA1 相关范可尼贫血是双等位、strong。临床上报「BRCA1 阳性」而不说清是哪种遗传模式,等于没说。

count 字段是精确总数,next 为 null 说明没有分页。检索默认应该是全字段模糊匹配,但官方未公布语法细节——这一点在 §7.3 的局限里再提。

5.5 把 CSV 读成可分析的表格

pandas 读进来的第一个坑是列名带空格。

import pandas as pd

df = pd.read_csv("g2p_all.csv")
df.columns = [c.strip().replace(" ", "_") for c in df.columns]

#-- 一次处理多值列:panel 与 variant consequence 都可分号分割
df["panel_list"] = df["panel"].str.split("; ")
df["consequence_list"] = df["variant_consequence"].fillna("").str.split("; ")

#-- 只要心脏面板里 definitive 且机制明确的记录
sel = df[df["panel_list"].apply(lambda xs: "Cardiac" in xs)]
sel = sel[(sel["confidence"] == "definitive") & (sel["molecular_mechanism"] == "loss of function")]
print(len(sel))

fillna("") 那一步不能省。variant_consequence 有 19 条为空,直接 .str.split() 会产生 NaN 而不是空列表,后续 apply 里遍历会抛异常。

5.6 交叉查询:与 HPO 联用

G2P 的表型栏是 HPO 项,可以和 HPO 本体联用做表型驱动的检索。

import csv
from collections import defaultdict

#-- 建立 HPO 项到 G2P 记录的倒排
hpo2g2p = defaultdict(list)
with open("g2p_all.csv", encoding="utf-8") as f:
    for row in csv.DictReader(f):
        for hp in [x.strip() for x in row["phenotypes"].split(";") if x.strip()]:
            hpo2g2p[hp].append((row["g2p id"], row["disease name"], row["confidence"]))

#-- 查「智力障碍」这个表型下有哪些基因—疾病关联,且置信度足够
for rid, dis, conf in hpo2g2p.get("HP:0001249", [])[:10]:
    print(rid, conf, dis[:60])

phenotypes 列用分号加空格分隔,但部分记录只有分号没有空格,所以按 ";" 切再 strip 更稳。全库 2,548 条记录有表型,平均 17.4 项,最多 122 项。

5.7 做增量监控的正确姿势

G2P 没有变更日志接口,要监控变动只能定期全量比对。但 date of last review 这一栏有历史批次痕迹,不能单纯按日期增量。

import pandas as pd

old = pd.read_csv("g2p_all_prev.csv").set_index("g2p id")
new = pd.read_csv("g2p_all.csv").set_index("g2p id")

added = new.index.difference(old.index)
removed = old.index.difference(new.index)
changed = new.index.intersection(old.index)
changed = [i for i in changed
           if new.loc[i, "confidence"] != old.loc[i, "confidence"]
           or new.loc[i, "date of last review"] != old.loc[i, "date of last review"]]

print("新增", len(added), "| 消失", len(removed), "| 变更", len(changed))

真正的信号是 confidence 的变化,不是日期。日期会被批量重审刷成同一天(2025 年有 1,365 条被刷),但置信度的升降是实质变更。按置信度比对,才能从「一千多条日期变了」里挑出真正改判的那几条。

§6 与库内条目的关系

6.1 关系图谱

G2P 在千方医数集库内属于「关联知识层」,与几个层级的条目都有接触点。

关系类型 库内条目举例 说明
上游本体 HPO、MONDO、Sequence Ontology G2P 用它们的术语做字段值
同层知识库 OMIM、ClinVar、gnomAD 各自回答不同问题,交叉核对
同机构资源 BioStudies、Expression Atlas、Ensembl 同在 EMBL-EBI 体系
下游应用 罕见病诊断模型、基因优先级排序 用 G2P 的置信度作监督信号
病例来源 DECIPHER DD 面板的病例多来自该体系

6.2 检索路径:从一个表型到一份候选基因清单

假设你有一个患儿,表型是「智力障碍 + 肌张力低下 + 面中部发育不良」,想列出值得优先排查的基因。这条路怎么走?

第一步,把表型转成 HPO 项。 用 HPO 官方的表型标注工具,得到 HP:0001249(智力障碍)、HP:0001252(肌张力低下)、HP:0000303(下颌前突)之类的组合。

第二步,在 G2P 里按 HPO 反查。 用 §5.6 的倒排表,拿到挂这些表型的记录。注意这一步会漏掉三分之一没有表型的记录——所以它不是穷举,是快速缩小范围。

第三步,按置信度分层。 definitive 与 strong 的进主清单,limited 的进备查清单,disputed 与 refuted 的直接排除。

第四步,核对等位基因要求。 双等位常显的记录,如果患儿只检出一个杂合变异,不能定;单等位常显的记录,一个杂合变异就够。这一步经常被跳过,是误报的主要来源。

第五步,回到原始文献。 每条记录的 PMID 列表里挑一到两篇最相关的,看表型是否真的匹配。G2P 的 summary 是好东西,但它替代不了原文。

6.3 互链建议

写相关内容时,G2P 可以在以下几处被引用:

  • 讨论「基因—疾病关联的可信度分级」时,G2P 是唯一给出六级结构化判定的公开库
  • 讨论「分子机制方向」时,LMNA 九条记录(§3.3)是同一基因不同机制的经典样本
  • 讨论「专家审编 vs 自动聚合」时,G2P 的 inferred / evidence 二分(§4.2)是最清晰的例子
  • 讨论「遗传数据的许可开放程度」时,CC0 是少见的无限制方案

§7 质量评估与局限性

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

有一条常见的误判需要先排除:把 G2P 的置信度当成「数据质量评分」。

它不是。definitive 不表示这条记录填得完整、字段没缺、格式规整;它只表示「这个基因与这个疾病的因果关系已被充分证实」。一条 definitive 记录可能没有表型、没有变异类型、分子机制是 undetermined——G2P03271 三者皆备,置信度照样是 definitive。

反过来,一条 limited 记录可能在 CSV 里每一栏都填得满满当当。字段完整度与结论可信度是两个互相独立的维度。

这个误判的后果很实际:如果用「置信度高的记录质量更好」这个前提去做数据清洗(比如只保留 definitive 并期待字段完整),会得到一批缺表型、缺变异类型的记录,然后在表型分析上直接失效。

7.1 五维评分

用 DAIMS 框架(Data and Information Management System)的五个维度给一个整体画像:

维度 评分 依据
Metadata(元数据) ★★★★☆ 24 列结构化字段,HPO / MONDO / SO / HGNC / OMIM 五套本体的映射都在;扣一星因三成记录缺表型
Annotation(标注) ★★★★★ 每条关联由具名审编人员阅读文献后判定,有审校日期,有 inferred / evidence 的证据强度区分——这是全库最扎实的一维
Access(获取) ★★★★★ CC0 无限制、整库一个 CSV、REST API 四个端点、无需注册。在遗传数据库里属于最开放的一档
Interpretability(可解释性) ★★★★☆ summary 字段用自然语言把整条记录讲一遍,六级置信度语义清晰;扣一星因置信度的判定标准未公开成文
Sustainability(可持续性) ★★★★☆ EMBL-EBI 核心资源,2012 年至今连续维护,2026 年完成平台重构;扣一星因七个面板的更新节奏不一致

7.2 为什么 Metadata 只给四星

24 列看起来很多,但真要用起来会发现关键几栏的空值率不低。

字段 空值率 影响
phenotypes 33.9% 为空 表型驱动检索漏掉三分之一
variant types 68.5% 为空 无法按变异类型做统计
molecular mechanism evidence 93.0% 为空 无法区分实验类型
disease MONDO 10.9% 为空 本体对齐有缺口
cross cutting modifier 87.3% 为空 该栏稀疏,但稀疏本身是语义(无修饰词)

cross cutting modifier 这一栏的空值要单独理解:空不等于「未知」,而等于「没有特别的跨切说明」。它是可选的补充标注,不是必填项。但 phenotypes 与 variant types 的空值就是真的缺信息了。

7.3 已知的、可枚举的偏差

偏差一:DD 面板主导全局统计。 该面板占全库 74.5%。任何「全库平均」的结论实质上都是 DD 面板的结论。比如「全库 definitive 占 53%」,其实是「DD 占 51.7%、Eye 占 68.7%、Cardiac 占 38.5%」加权出来的结果,看全库这个数没有解释力。

偏差二:date of last review 的批次痕迹。 按年份看分布:2015 年 581 条、2017 年 450 条、2025 年 1,365 条、2026 年 179 条,其余年份都是两位数或三位数。2015 与 2025 是两个大规模的集中审校年份,一次刷了一大批记录的日期。这意味着不能用这个日期做「知识更新速度」的时间序列——它是审编工作流的痕迹,不是科学进展的节奏。

偏差三:七个面板的审编尺度不一。 Cardiac 的 disputed 占 27.4%,DD 的 disputed 占 0.14%。同一档词在不同面板里的启用门槛明显不同。

偏差四:早期记录的字段回填不全。 2015 年审校的那 581 条里,variant types 与 phenotypes 的空值率显著高于 2025 年审校的批次。用全库均值做分析时,这批老记录会系统性地拉低完整度。

偏差五:refuted 只有 3 条。 一个只有三例的否定档几乎无法用于方法学研究。「被推翻的关联长什么样」这个问题在这份数据里得不到统计意义上的答案。

7.4 外部验证矩阵

验证项 方法 结果
全库记录数 CSV 行数减表头 3,856
面板汇总 /api/panels/ 返回的 total_records 之和 5,016(含重复计入)
基因数 gene symbol 去重 3,170
与面板统计交叉 各面板 definitive 数相加 2,996(含重复)
单条 JSON 与 CSV 一致性 G2P03271 逐字段比对 一致
疾病名称一致性 summary 首句与 disease.name 一致
坐标参考 locus.reference 全部 grch38

这里有一处需要说明:面板统计相加得 5,016,比全库多 1,160,差额全部来自多面板记录(如 DD; Eye 会在两个面板各计一次)。这两个数字都对,看的是不同口径。

7.5 它为何能持续:一个「小而稳」的生存逻辑

G2P 的规模在遗传数据库里属于小的。三千八百余条记录,放在 ClinVar 的百万级提交旁边几乎看不见。但它从 2012 年活到现在,还在 2026 年完成了一次平台重构。为什么?

第一,它守着一个别人不做的窄口子。 OMIM 写描述、ClinVar 收变异、PanelApp 定清单,没有一家把「基因—疾病关联的可信程度」单独做成一个结构化字段。这个口子窄,但临床诊断流程里绕不过去。

第二,它的成本结构是可控的。 专家审编听起来昂贵,但每年新增记录量级是几百条,不是几万条。一个人读二十篇文献能新增一条记录,一年维护几百条是可行的。相比之下,ClinVar 那种提交制需要的是海量审核的基础设施。

第三,它的用户是「必须用」而不是「可以用」。 英国基因组医学服务体系的诊断流程里有明确位置,DECIPHER 体系的病例报告依赖它。有稳定的使用方,就有稳定的资助理由。

第四,2026 年的重构解决了它最大的短板。 之前它只有 Web 界面加 CSV,没有 API,程序化取数要靠网页抓取。重构后四个 REST 端点加一个标准 JSON 模型,把它从「可读」变成「可编程」。这一步对存活很关键——现在做遗传分析的人默认要 API。

§8 生态位与历史

8.1 从发育障碍到七个面板

G2P 的起点很窄:2012 年建立时只做发育障碍(DD)。这个领域有天然的策展优势——DD 病例集中在少数几个中心,表型标准化程度高,DECIPHER 提供了现成的病例网络。

之后逐步扩展:2015 年前后加眼与皮肤,2017 年前后加骨骼,心脏与肿瘤易感较晚。到 2026 年,七个面板的规模已经拉开两个数量级——DD 2,871 条,Ear 98 条。

这个扩展路径解释了一个现象:面板之间的审编风格差异不是随机的,而是随加入时间与团队而变的。DD 有十多年的积累与最成熟的流程,Cardiac 较新且面对的证据更复杂(心脏表型的异质性大、外显率不全),所以 disputed 用得更多。

8.2 2026 年重构改了什么

按 2026 年 J Mol Biol 论文的描述,重构的核心是「标准化、结构化的罕见单基因病数据模型」,明确目标是提升 FAIR 属性(可发现、可访问、可互操作、可复用)。具体变化有三:

变化 重构前 重构后
数据模型 扁平表 + Web 展示 分层 JSON:locus / disease / mechanism / publications
程序化访问 无官方 API REST,四个端点
本体映射 部分字段 MONDO、HPO、SO、HGNC、OMIM 全字段化

第三项影响最深远。变异后果从自由文本变成 SO accession,疾病从名字变成 MONDO 编号,表型从描述变成 HPO 项——这三件事合起来,让 G2P 第一次可以和其他本体驱动的资源做机器对齐。

8.3 与四个邻近资源的生态分工

资源 定位 与 G2P 的互补点
OMIM 基因与疾病的百科 G2P 给置信度,OMIM 给描述与临床特征
ClinVar 变异级提交库 G2P 判基因级关联,ClinVar 判具体变异
PanelApp 英国 GMS 基因面板 PanelApp 定「查哪些」,G2P 定「查到后怎么判」
DECIPHER 基因组变异与表型数据库 DD 面板的病例来源,两者的表型体系同源
HPO 表型本体 G2P 的表型栏直接引用它

这五者构成一条完整链条:HPO 标准化表型 → DECIPHER 汇总病例 → G2P 判定关联可信度 → PanelApp 决定检测范围 → ClinVar 落具体变异 → OMIM 提供病种背景。

8.4 一个假想:如果 G2P 停止更新

它的数据是 CC0 的,全量 CSV 2.6 MB,任何人都能镜像。所以「停止更新」不会让数据消失,但会让一件事失效:置信度的时效性。

遗传学知识在动。今天的 limited 可能三年后变 definitive,今天的 definitive 也可能被 refuted。G2P 的价值一半在数据,一半在「这条判定是什么时候做的」。没有持续审编,这个日期就永远停在某一天,用它做临床判断时风险会逐年累积。

这也解释了它为什么必须保持「小而稳」:如果为了规模而放宽准入,审编成本会指数上升,维护频率必然下降,最终反而损害它最核心的资产——时效性。

§9 使用指引

9.1 三种角色的路径

临床遗传医师。 从表型出发,用 HPO 项反查(§5.6),拿到候选后按置信度分层,重点核对等位基因要求是否与检出的基因型匹配。不要把 G2P 当唯一依据——它不含变异级信息,也不覆盖七个面板之外的疾病。

研究罕见病机制的人。 从基因出发,看同一基因下的多条记录(§3.3 的 LMNA 是最佳样本),比对不同疾病的机制方向。molecular mechanism support 这一栏能快速筛出有实验证据的少数记录(全库 5.5%)。

做诊断算法的人。 三千余条带标签的关联可以作监督信号,但要处理两个问题:标签极不平衡(definitive 占 53%、refuted 只占 0.08%),以及面板间的系统性差异(§7.3 偏差三)。分层抽样比全局抽样稳。

9.2 一条最短的可用流程

如果你只有十分钟,走这条:

#-- 1. 拿全库
curl -sL "https://www.ebi.ac.uk/gene2phenotype/api/panel/all/download/" -o g2p.csv

#-- 2. 看你关心的基因有几条记录、什么置信度
grep -i "^G2P[0-9]*,LMNA," g2p.csv | cut -d, -f1,6,9,11,14

#-- 3. 拿其中最关心的一条的完整结构
curl -sL "https://www.ebi.ac.uk/gene2phenotype/api/lgd/G2P03271/" | head -c 2000

第 2 步的 cut -d, -f1,6,9,11,14 取的是 id、疾病名、等位要求、置信度、分子机制五列。CSV 里有引号包裹的逗号(comments 栏),所以简单 cut 在个别行会错位——正式分析仍应用 pandas。

9.3 引用方式

引用 G2P 时,2012 年的建库论文与 2026 年的重构论文需要分别引。当前应引:

Hunt SE, Lemos D, Pericherla SR, et al. Gene2Phenotype: A Database of Structured Human Monogenic Diseases and Pathomechanisms. J Mol Biol. 2026. doi:10.1016/j.jmb.2026.169768

单条记录引用时给出 G2Pxxxxx 编号与访问日期,因为记录内容会随重审变化。

§10 AI 使用声明

项 内容
性质 专家审编的知识库,非原始数据、非患者数据
本文用途 介绍其数据结构、置信度体系、机制字段与取数方式
不建议用途 单独作为临床诊断依据;作为变异致病性判定依据
伦理 不含个体患者信息,无隐私风险;CC0 允许自由使用
引用 2026 JMB 论文 + 具体 G2P 编号 + 访问日期
版本 数据截至 2026-10-26 全库 CSV
状态 活跃维护,2026 年完成平台重构

常见误读(避坑清单)

说法 实际 证据
「G2P 的 confidence 等于 ACMG 分级」 前者是基因—疾病级,后者是变异级 §1.2、FAQ 第 1 问
「undetermined 机制说明关联不可靠」 362 条机制未定但置信度 definitive §4.1 交叉表
「definitive 记录字段一定完整」 字段完整度与结论可信度是两个维度 §7.0、G2P03271 无表型
「全库有多少条看面板数相加」 面板相加值约为全库的 1.3 倍,多面板记录被重复计 §2.4、§7.4
「挖掘文献也是证据」 自动匹配未人工确认,只能作线索 §4.3
「date of last review 能当知识更新时间线」 2015 与 2025 是两次批量审校,日期被成批刷新 §7.3 偏差二
「disputed 比例高说明该领域关联更不牢」 各面板审编尺度不同,跨面板比该比例无意义 §2.4、§7.3 偏差三
「一个基因只有一条记录」 LMNA 有 9 条,686 条记录属于多记录基因 §2.5
「变体后果只取第一个值就行」 270 条记录有多个后果类型 §4.4
「它覆盖全部罕见病」 只有七个疾病领域 §1.6

FAQ

问:G2P 和 PanelApp 该用哪个?

两个都用。PanelApp 回答「这个面板该查哪些基因」,G2P 回答「查到之后这条关联有多确定」。PanelApp 的绿单里有基因,G2P 有对应的置信度,两者交叉能筛掉一部分只靠单一报道支撑的条目。

问:为什么同一个病在不同面板里出现?

一条记录可以挂多个面板。比如 G2P00119(BRCA1 相关范可尼贫血)同时属于 DD 与 Skeletal——范可尼贫血既有发育异常也有骨骼表现。全库 1,160 条记录属于多面板。

问:怎么判断一条记录是不是过时了?

看 date of last review,但要结合面板看。DD 面板更新到 2026 年 10 月,Cancer 停在 2026 年 2 月。同一条记录如果三年未审,不代表它错了,只代表还没轮到。

问:cross cutting modifier 里那些词是什么意思?

最常见的三个:restricted mutation set(只有特定类型变异致病,不是任意变异都致病)、typically de novo(多为新发突变,父母通常不带)、potential secondary finding(做外显子测序时可能被顺带发现,与主诉无关但有临床意义)。全库 12.7% 的记录有值。

问:能不能用它做 GWAS 后基因优先级排序?

可以做参考层,但不适合做主排序信号。它的覆盖只有七个疾病领域,且置信度是定性的六档而非连续分数。用于排序时通常把它当过滤器(先滤掉 refuted 与 disputed),排序本身交给其他信号。

问:JSON 里 number_of_families 为 null 是什么意思?

两种可能:该文献不是家系研究(功能实验、病例报告、队列研究),或审编时未填。不要把它当 0 处理——0 表示「明确没有家系」,null 表示「未记录」。

问:为什么 /api/search/ 不带斜杠会返回 301?

这套 API 基于 Flask 的路由规则,定义了带尾斜杠的路径,不带斜杠时框架会做规范化重定向。用 curl 时加 -L,用 requests 时它会自动跟随,用 urllib 时不会——这是最容易静默失败的一个点。

问:全库最小的面板 Ear 只有 98 条,还值得用吗?

如果你的研究对象是听力损失,它是现有公开库里少有的带置信度分级的整理。98 条里有 72 条 definitive、17 条 strong,质量密度很高。规模小是覆盖范围的问题,不是质量问题。

问:它的疾病名有中文版吗?

没有。三千八百余个疾病名全英文,格式多为「基因-related 病名」。要做中文展示,可以借 MONDO 的中文标签(覆盖不全)或 HPO 中文翻译项目自建映射。注意 MONDO 只覆盖 89.1% 的记录。

问:为什么 refuted 只有 3 条,是不是很少用?

确实很少用。审编流程里,一条关联被判 refuted 需要明确的否定性证据(比如多个家系的研究未能重复),门槛较高。多数「有反证但未定论」的会被判 disputed(53 条)。这两档合起来才构成完整的负面证据谱。

问:CSV 里 review 栏是什么?

复核意见,只有 8 条有值,属于审编流程的内部记录。一般分析时可以忽略。

问:它能和 VCF 直接联用吗?

不能直接联。G2P 是基因级,VCF 是变异级。中间需要一步:用 locus 的坐标区间(如 BRCA1 的 17:43044295-43170245)筛出落在这些基因内的变异,再按 G2P 的等位基因要求与后果类型做过滤。这一步通常用 ANNOVAR 或 VEP 的基因注释完成,G2P 提供的是过滤规则而非过滤工具。

术语表

术语 解释
LGD locus-disease,G2P 的核心记录单位,一条基因—疾病关联
G2P 编号 G2Pxxxxx 格式的稳定标识,跨版本不变
confidence 六档置信度,判定关联的可信程度,不是数据质量
definitive 已确立,多研究支持,领域广泛接受
strong 强证据,未到教科书级
moderate 中等,介于 limited 与 strong 之间
limited 证据有限,可能仅少量家系或单篇报道
disputed 有争议,已有反证但未定论
refuted 已被明确否定
allelic requirement 等位基因要求,即何种基因型致病(双等位、单等位、X 连锁等)
biallelic_autosomal 双等位常染色体隐性,需两个致病变异
monoallelic_autosomal 单等位常染色体显性,一个变异即致病
monoallelic_X_hemizygous X 连锁,男性半合子致病
cross cutting modifier 跨切修饰词,对整条关联的补充限定
restricted mutation set 仅特定类型变异致病
typically de novo 多为新发突变
potential secondary finding 潜在次要发现,测序时可能顺带检出
molecular mechanism 分子机制:LOF / GOF / 显性负效应 / 未定
loss of function 功能缺失,产物减少或失活
gain of function 功能获得,产物获得新活性或毒性
dominant negative 显性负效应,突变产物干扰正常产物
mechanism support 机制证据强度:inferred(推断)或 evidence(实验)
variant consequence 变异后果,SO 本体项,可多值
absent gene product 产物缺失,对应 SO:0002317
altered gene product structure 产物结构改变
NMD 无义介导的 mRNA 降解
SO Sequence Ontology,序列本体
MONDO 疾病本体,Mondo Disease Ontology
HPO Human Phenotype Ontology,人类表型本体
HGNC HUGO 基因命名委员会
DECIPHER 英国基因组变异与表型数据库,DD 面板病例来源
PanelApp 英国 GNS 体系的基因面板评审平台
GMS Genomic Medicine Service,英国基因组医学服务
FAIR 可发现、可访问、可互操作、可复用

附录 A:核心数字核对表

项 值 来源 可否自行复算
记录数 3,856 全库 CSV 行数 可
基因数 3,170 gene symbol 去重 可
疾病名数 3,805 disease name 去重 可
面板数 7 /api/panels/ 可
definitive 2,045(53.0%) confidence 计数 可
strong 887(23.0%) 同上 可
moderate 334(8.7%) 同上 可
limited 534(13.8%) 同上 可
disputed 53(1.4%) 同上 可
refuted 3(0.08%) 同上 可
有 MONDO 映射 3,434(89.1%) disease MONDO 非空 可
有 HPO 表型 2,548(66.1%) phenotypes 非空 可
HPO 平均项数 17.4(最多 122) phenotypes 分割计数 可
有变异类型 1,216(31.5%) variant types 非空 可
机制为 LOF 2,308(59.9%) molecular mechanism 计数 可
机制为 undetermined 1,204(31.2%) 同上 可
机制证据为 evidence 213(5.5%) mechanism support 计数 可
平均审编文献数 3.72(中位 2,最多 82) publications 分割计数 可
多记录基因贡献 686 条(505 个基因) 基因计数差 可
CSV 字节数 2,675,808 HTTP 响应头 可

附录 B:数字的来源分层

层级 覆盖的数字 可信度 处理方式
全库 CSV 逐行统计 附录 A 全部计数与分布 高(可复现) 文中注明统计方式
面板统计 API 七个面板的 total_records / total_genes / by_confidence 高 直引,注明与全库口径不同
单条 JSON API locus 坐标、SO accession、number_of_families 高 直引
2026 JMB 论文摘要 建库年份、重构内容、FAIR 目标 中高 直引
本文推断 面板风格差异的成因、批次痕迹的解释 低 正文标为推测

附录 C:完整参考文献

  1. Hunt SE, Lemos D, Pericherla SR, Austine-Orimoloye O, Cibrian Uhalte E, Yates TM, Ansari M, Thompson L, et al. Gene2Phenotype: A Database of Structured Human Monogenic Diseases and Pathomechanisms. Journal of Molecular Biology. 2026. doi:10.1016/j.jmb.2026.169768
  2. Gene2Phenotype 官方站点与 REST API,https://www.ebi.ac.uk/gene2phenotype/ ,访问日期 2026-10-26
  3. 全库 CSV 下载端点,https://www.ebi.ac.uk/gene2phenotype/api/panel/all/download/ ,访问日期 2026-10-26

附录 D:四个常见分析任务的代码

D.1 按置信度筛出可用的基因清单

import pandas as pd

df = pd.read_csv("g2p_all.csv")
df.columns = [c.strip().replace(" ", "_") for c in df.columns]

#-- 排除有争议与已否定,保留 definitive 与 strong
ok = df[df["confidence"].isin(["definitive", "strong"])]
#-- 只要单等位常显(显性遗传,杂合即致病)
ad = ok[ok["allelic_requirement"] == "monoallelic_autosomal"]
print(len(ok), len(ad))

D.2 找出「同一基因、机制方向相反」的记录

import pandas as pd

df = pd.read_csv("g2p_all.csv")
df.columns = [c.strip().replace(" ", "_") for c in df.columns]

g = df.groupby("gene_symbol")["molecular_mechanism"].apply(set)
mixed = g[g.apply(lambda s: {"gain of function", "loss of function"} <= s)]
print(mixed)   # LMNA 会出现在这里

D.3 生成一份面板级的质量画像

import pandas as pd

df = pd.read_csv("g2p_all.csv")
df.columns = [c.strip().replace(" ", "_") for c in df.columns]
df["panel_list"] = df["panel"].str.split("; ")

rows = []
for p in ["DD", "Eye", "Skin", "Skeletal", "Cardiac", "Cancer", "Ear"]:
    sub = df[df["panel_list"].apply(lambda xs: p in xs)]
    rows.append({
        "panel": p,
        "n": len(sub),
        "definitive_pct": round((sub["confidence"] == "definitive").mean() * 100, 1),
        "has_hpo_pct": round(sub["phenotypes"].notna().mean() * 100, 1),
        "lof_pct": round((sub["molecular_mechanism"] == "loss of function").mean() * 100, 1),
    })
print(pd.DataFrame(rows).to_string(index=False))

D.4 检查某条记录的字段完整度

import json, urllib.request

d = json.loads(urllib.request.urlopen(
    "https://www.ebi.ac.uk/gene2phenotype/api/lgd/G2P03271/").read())

for k in ["phenotypes", "phenotype_summary", "variant_type", "variant_description",
          "comments", "cross_cutting_modifier", "molecular_mechanism"]:
    v = d.get(k)
    print(f"{k:28s} {'空' if not v else type(v).__name__ + f'({len(v)})'}")

对 G2P03271 跑这段,会发现 phenotypes、phenotype_summary、variant_type、variant_description、comments、cross_cutting_modifier 六项全空,只有 molecular_mechanism 有内容。而它的置信度是 definitive。这就是 §7.0 那个前置校正的实证。

附录 E:七个面板的一句话画像

面板 一句话
DD 全库的压舱石,七成以上记录在此,审编最成熟,disputed 极少
Eye 规模第二,definitive 比例最高(68.7%),表型与基因对应清晰
Skin 中等规模,definitive 占比高(72.4%),分子机制分布最偏 LOF
Skeletal 小而精,84.4% 为 definitive,几乎没有 disputed
Cardiac 争议最多,27.4% 为 disputed,反映心脏表型的异质与不完全外显
Cancer 最晚加入,更新时间最旧(2026-02),但 definitive 占 77.6%
Ear 最小(98 条),质量密度高,是听力学方向的少见结构化资源

附录 F:三类使用者的决策树

如果你在诊室。 有表型、有候选基因,想知道某条关联能不能写进报告。走:表型转 HPO → G2P 反查 → 置信度分层 → 核等位要求 → 读一篇原文。全程约十五分钟一个基因。

如果你在写代码。 要一个可编程的基因—疾病知识源。走:整库 CSV 落库 → 按 confidence 建索引 → 按 HPO 建倒排 → 需要详情时调单条 API。注意结尾斜杠与多值字段。

如果你在做研究。 要研究「基因—疾病关联的证据结构」。走:全库 CSV → 交叉分析置信度 × 机制 × 文献数 × 面板 → 注意面板间的尺度差异与日期批次痕迹。这份数据适合做「证据如何积累」的横截面研究,不适合做时间序列。

附录 G:五个常被问到的对照

对照 结论
G2P vs OMIM 要置信度选 G2P,要病种描述与临床特征选 OMIM,两者互补
G2P vs ClinVar 基因级 vs 变异级,不可互替;判变异去 ClinVar
G2P vs PanelApp PanelApp 定检测范围,G2P 定关联可信度,交叉使用
G2P vs Orphanet Orphanet 重流行病学与疾病分类,G2P 重分子机制与置信度
G2P vs DECIPHER DECIPHER 存病例,G2P 存结论;DD 面板的病例多来自 DECIPHER

附录 H:一个完整的两段式取数示例

下面这段代码把「找候选 → 取详情 → 输出表格」串起来,可以直接改成批量任务。

import json, time, urllib.parse, urllib.request

BASE = "https://www.ebi.ac.uk/gene2phenotype/api"

def search(q: str) -> list:
    url = f"{BASE}/search/?query={urllib.parse.quote(q)}"
    with urllib.request.urlopen(url, timeout=30) as r:
        return json.loads(r.read())["results"]

def lgd(sid: str) -> dict:
    with urllib.request.urlopen(f"{BASE}/lgd/{sid}/", timeout=30) as r:
        return json.loads(r.read())

out = []
for hit in search("dilated cardiomyopathy"):
    if hit["confidence"] not in ("definitive", "strong"):
        continue
    d = lgd(hit["stable_id"])
    out.append({
        "id": hit["stable_id"],
        "gene": hit["gene"],
        "disease": hit["disease"],
        "confidence": hit["confidence"],
        "n_pub": len(d.get("publications") or []),
        "n_families": sum((p.get("number_of_families") or 0) for p in (d.get("publications") or [])),
    })
    time.sleep(0.3)   # 对公共 API 保持克制

for row in out:
    print(row)

time.sleep(0.3) 不是可选项。EMBL-EBI 的公共 API 没有硬性速率限制,但批量请求不做间隔会影响其他用户。number_of_families 求和时用 or 0 兜住 null,否则会 TypeError。

附录 I:字段更新频率的观察

按 date of last review 的年份分布,能看出审编工作流的节奏:

年份 记录数 说明
2010 15 早于建库年份,应为历史数据回填
2015 581 第一次大规模集中审校
2016 95 —
2017 450 第二次较大规模审校
2018 153 —
2019 201 —
2020 92 —
2021 108 —
2022 159 —
2023 311 —
2024 147 —
2025 1,365 第二次大规模集中审校,占全库 35.4%
2026 179 截至 10 月,其中 10 月当月 17 条

这张表最重要的读法是:它不是「知识更新速度」的曲线。2015 与 2025 两个尖峰是工作流事件(集中重审),不是科学发现的高峰。真正反映活跃度的是 2026 年那 179 条——平均每月不到 20 条,与「每年新增几百条」的维护节奏相符。

附录 J:如果只记五件事

  1. 近四千条基因—疾病关联,六级置信度,definitive 占 53%。 规模不大,但每条都有审编动作。
  2. 七个面板极不平衡,DD 占 74.5%。 任何全库平均都是 DD 平均。
  3. undetermined 机制不等于不可信。 362 条机制未定但置信度 definitive。
  4. 一个 CSV 就能拿全量。 2.6 MB、24 列、CC0,不需要注册。
  5. API 路径必须带结尾斜杠。 不带会 301,curl 不加 -L 会静默拿到空响应。

编辑说明

本篇数字来源分三层,已在附录 B 列明:全库 CSV(/api/panel/all/download/,2,675,808 字节,3,856 行数据)逐行统计、面板统计 API(/api/panels/)、单条记录 API(G2P03271、G2P00119、G2P03507)。核验时间 2026-10-26。

逐行可复算的数字:记录数、基因数、疾病名数、六档置信度计数、七个面板的体量、等位基因要求七种取值、分子机制五种取值、变异后果的取值组合、HPO 覆盖率与平均项数、文献数分布、日期年份分布。计算方式已写在附录 A 与附录 D 的代码里。

核对过程中发现的三处与预期不符:①面板统计相加得 5,016,与全库 3,856 差 1,160,差额为多面板记录重复计入;②refuted 全库仅 3 条,无法支撑统计研究;③date of last review 在 2015 与 2025 各有一个明显尖峰(581 与 1,365),系集中审校批次,不可作为知识更新的时间序列。

未做的核验:七级置信度的判级标准未见成文公开,本文对其语义的描述依据 summary 字段的自然语言表述与实际分布反推;api/search/ 的检索语法未公开,仅验证了单关键词行为;molecular mechanism categorisation 一栏有值仅 69 条,其细分标签体系未完整取得;2012 年建库论文的原始 PDF 未取得,历史沿革部分依据 2026 年论文的回顾表述。

未覆盖:各面板的审编 SOP;comments 与 review 两栏的完整内容(分别 255 条与 8 条有值);挖掘文献管道的匹配算法;与 DECIPHER 的病例级对应关系。

数据以 CC0 1.0 公开放弃权利,本篇引用其结构与统计属学术评论与工程说明,不构成对任何记录本体的再分发。


相关数据集导航

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

  • biomodels — 共享标签:基因组学与多组学 / 医学问答与基准 / 公共卫生与流行病学
  • impc — 共享标签:基因组学与多组学 / 公共卫生与流行病学
  • alphamissense — 共享标签:基因组学与多组学 / 公共卫生与流行病学
  • uk-biobank — 共享标签:基因组学与多组学 / 公共卫生与流行病学
  • rnacentral — 共享标签:基因组学与多组学 / 医学问答与基准
  • rfam — 共享标签:基因组学与多组学 / 医学问答与基准
  • cpic — 共享标签:基因组学与多组学 / 医学问答与基准
  • ckb — 共享标签:基因组学与多组学 / 公共卫生与流行病学
  • all-of-us — 共享标签:基因组学与多组学 / 公共卫生与流行病学
  • sra — 共享标签:基因组学与多组学 / 公共卫生与流行病学

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

返回 AI-Ready 数据集