信息速览
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:完整参考文献
- 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
- Gene2Phenotype 官方站点与 REST API,https://www.ebi.ac.uk/gene2phenotype/ ,访问日期 2026-10-26
- 全库 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:如果只记五件事
- 近四千条基因—疾病关联,六级置信度,definitive 占 53%。 规模不大,但每条都有审编动作。
- 七个面板极不平衡,DD 占 74.5%。 任何全库平均都是 DD 平均。
- undetermined 机制不等于不可信。 362 条机制未定但置信度 definitive。
- 一个 CSV 就能拿全量。 2.6 MB、24 列、CC0,不需要注册。
- 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 — 共享标签:基因组学与多组学 / 公共卫生与流行病学
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

