一句话:痛风的知识图谱里确实有一个统计上站得住的、指向心血管基因的信号,但它小到不足以支撑一张可用的 top 50 预测名单。名单照给,但它是线索表,不是预测表。
第一层,信号是真的。 以 256 个痛风 GWAS 基因为种子在 STRING 蛋白互作网络上做扩散,判别「这个基因是否已被 GWAS 报道过与心血管疾病关联」的 AUROC = 0.5755;度数配对零模型(3000 组「网络位置一样、但与痛风无关」的种子)均值 0.5446,3000 次没有一次达到实测值,经验 p = 0.00033(z = 4.56)。五折留出配对检验 15 折全部胜出,AUROC 增益中位数 +0.0292(自助法 95% 区间 [0.0236, 0.0311]),精确 Wilcoxon 双侧 p = 6.1e-05。只用 2021 年底前已知的 37 个痛风基因、预测 2022 年之后才首次被报道的心血管基因,AUROC 仍有 0.5750(经验 p = 0.0077)——这一条已经撤回。 交付后把网络冻结到 2021 年发布的 STRING v11.5 重跑:AUROC 掉到 0.5620,零模型 0.5535 ± 0.0088,经验 p = 0.174(z = 0.97),不再显著。而在未冻结的 v12.0 上只用同样这 34 个种子仍然显著(p = 0.0113),所以信号消失不是因为少了 3 个种子,而是它依赖 2022 年之后才进入网络的内容——另外标签这一侧同样不是历史快照(用的是 2026 年的 GWAS Catalog,“首次报道年份”“本体项归属”“最近基因映射”都是 2026 年回溯策展的结果),所以两头都不满足前瞻的要求——标签按时间切了、特征没切,原来那个 p = 0.0077 撑不起「前瞻性验证」这个名字。全部数字见交付包内的冻结重跑说明。
第二层,信号很弱,弱到 top 50 用不了。 AUROC 距离随机只有 0.0755。top 50 里已知心血管基因 3 个,命中率 6.0%,零模型 4.24%,经验 p = 0.35——不显著。k 从 10 扫到 500,没有任何一档能与零模型区分(最好一档 p = 0.10)。这套方法能把整条排序整体往正确方向拨一点,但拨不动最顶端。
第三层,为什么可以相信上面两句话。 三个对照都通过:
「痛风病人是否发生心血管并发症」的病人层面二分类,需要带随访结局的个体数据(UK Biobank、CPRD、医院电子病历),这些全部是申请制,超出「只用匿名可下载公开数据」的边界。本轮不绕行,而是把二分类下沉到基因层面:
| 病人层面的问题 | 本轮实际做的 | |
|---|---|---|
| 分类对象 | 一个痛风病人 | 一个基因 |
| 标签 y=1 | 发生了心血管并发症 | 该基因是心血管疾病 GWAS 关联基因 |
| 预测信息 | 临床与基因型 | 痛风基因在蛋白互作网络上的邻域 |
| 回答的问题 | 谁会发病 | 痛风的分子网络本身能不能指认出心血管基因 |
如果痛风的网络结构连"哪些基因是心血管基因"都指不出来,那么"网络上离痛风最近的 50 个基因"就没有预测效力背书。先检验它,再给表。
抽取规则跑前写死在 claims.json:
MONDO_0005393(gout)与 EFO_0021525;刻意不含 EFO_0004531(尿酸水平不等于痛风);映射进 STRING 后:痛风种子 256 个、心血管阳性 828 个、重叠 72 个。
> DisGeNET 原计划作补充来源,实测其下载地址已跳转到登录页、不能匿名下载,按边界弃用,改为直接用 GWAS Catalog 原始关联自行映射。
STRING combined_score >= 700,16201 个节点、236930 条边。重启随机游走(RWR),种子均匀分布在 256 个痛风基因上,alpha = 0.3(跑前定死,全程不调)。
防泄漏:256 个痛风种子整体从评估宇宙中剔除,否则 72 个重叠基因会天然拿到最高分。剔除后评估宇宙 15945 个基因,心血管阳性 756 个(基线阳性率 4.741%)。
| 臂 | 类型 | 回答什么 |
|---|---|---|
gout_rwr | 实验臂 | 痛风种子的网络扩散分数 |
degree_only | 平凡基线 | 只看连边数,完全不看痛风——研究偏倚的化身 |
degree_matched_random_seeds | 零模型 | 3000 组度数逐个配对、与痛风无关的种子 |
label_permutation | 负对照 | 标签打乱后 AUROC 应回到 0.5 |
positive_control_gout_self | 正对照 | 痛风预测留出痛风;测不出说明尺子坏了 |
随机种子 20260912 / 20260913 / 20260914,按种子分别报告,不挑种子。
| 检验 | 结果 | 判定 |
|---|---|---|
| 标签置换 3000 次 | 均值 0.49987,95% 区间 [0.4788, 0.5204] | 通过 |
| 正对照(15 折) | AUROC 0.6387 vs 零模型 0.5494 | 通过 |
| 正对照增益 | 中位 +0.0899,15/15,Wilcoxon p = 6.1e-05,自助法 95% 区间 [0.0805, 0.0980] | 通过 |
| 指标 | gout_rwr | degree_only | 度数配对零模型 |
|---|---|---|---|
| AUROC | 0.5755 | 0.5398 | 0.5446 ± 0.0068 |
| AUPRC | 0.0585 | 0.0510 | —(基线 0.0474) |
| 经验 p | 0.00033 | — | — |
| 配对比较(15 折) | 胜负 | 增益中位数 | 自助法 95% 区间 | Wilcoxon p |
|---|---|---|---|---|
| vs 度数配对随机种子 | 15/15 | +0.0292 | [0.0236, 0.0311] | 6.1e-05 |
| vs 只用度数 | 15/15 | +0.0356 | [0.0347, 0.0369] | 6.1e-05 |
15 折全赢,但每折只赢约 0.03 个 AUROC——计数式说法必须和连续量一起读。
2021 年底前 37 个痛风基因当种子,预测 2022 年起首次报道的心血管基因(评估宇宙 15523 个、334 个新阳性):AUROC 0.5750,度数基线 0.5378,零模型 0.5514 ± 0.0098,经验 p = 0.0077。种子只有 37 个,功效有限。
| 指标 | 全通道 | 去掉 textmining |
|---|---|---|
| AUROC | 0.5755 | 0.5431 |
| 零模型均值 | 0.5446 | 0.5224 |
| 相对零模型增益 | +0.0309 | +0.0207 |
| 经验 p | 0.00033 | 0.0127 |
| top-k | 命中率 | 命中数 | 零模型均值 | 经验 p |
|---|---|---|---|---|
| 10 | 10.0% | 1/10 | 2.93% | 0.25 |
| 20 | 5.0% | 1/20 | 3.53% | 0.50 |
| 50 | 6.0% | 3/50 | 4.24% | 0.35 |
| 100 | 6.0% | 6/100 | 4.58% | 0.32 |
| 200 | 7.0% | 14/200 | 4.92% | 0.11 |
| 500 | 6.4% | 32/500 | 5.05% | 0.10 |
全局 AUROC 显著而顶端不显著,并不矛盾:AUROC 是整条排序的平均性质,可以被中段和尾段撑起来。度数校正排序(专门压 hub 效应)也没有更好:precision@50 降到 4.0%(p = 0.62)。排序方式不是瓶颈(度数校正也没更好);我们判断瓶颈在数据层,但本轮没做功效/可识别性分析——top 50 这个设计期望命中只有约 2.1 个、实测 3 个,这种量级本来就测不出差异,所以这是判断,不是已证实的结论。
top 50 的成分也说明问题:既有 TP53、EGFR、CTNNB1 这样的超级枢纽,也有紧贴某个痛风基因而上榜的低度数基因;中位度数排名 242 / 16201,整体偏向被研究得多的基因。
完整表在 work/results/top50_candidates.tsv 与 top50_candidates.json(含到痛风种子的最强路径与每条边的 STRING 分数)。它是"网络上离痛风最近、值得人工过一眼的 50 个基因",不是"预测出来的共病基因"。
| 排名 | 基因 | RWR 分数 | 度数排名 | 已知心血管基因 | 最强证据链(STRING 分数) |
|---|---|---|---|---|---|
| 1 | TP53 | 1.170e-3 | 1 | 否 | TP53 → CHEK2 (999) |
| 2 | TMEM192 | 1.104e-3 | 13944 | 否 | TMEM192 → SPRYD4 (820) |
| 3 | PTP4A1 | 1.074e-3 | 8963 | 否 | PTP4A1 → CNNM2 (970) |
| 4 | EGFR | 1.029e-3 | 4 | 否 | EGFR → PTPN11 (999) |
| 5 | HDAC1 | 9.554e-4 | 45 | 否 | HDAC1 → EZH2 (999) |
| 6 | UBE2D2 | 9.459e-4 | 921 | 否 | UBE2D2 → RNF115 (801) |
| 7 | SDCBP | 9.313e-4 | 3007 | 否 | SDCBP → NRXN2 (826) |
| 8 | CCDC63 | 9.229e-4 | 11701 | 否 | CCDC63 → HECTD4 (700) |
| 9 | CBFA2T3 | 9.119e-4 | 6424 | 否 | CBFA2T3 → ZNF652 (827) |
| 10 | MAGI3 | 9.059e-4 | 8658 | 是(2022) | MAGI3 → MAST3 (763) |
50 个里有 3 个(MAGI3、RHOA、ERBB2)已带心血管 GWAS 关联——是对排序的支持性检查,不是新发现。
另附 72 个在 GWAS Catalog 中同时带痛风与心血管关联的基因(known_gout_cvd_overlap):已知事实表,不是预测,但作为有双重 GWAS 证据的起点可能比 top 50 更直接可用。
全部代码、数据抽取结果、日志、图在 work/ 下。python3 audit_delivery.py 用一条独立的纯标准库实现重算报告里的每个数字,对不上会报错退出。

figs/ 目录。