Skip to content

阶段六:网络整合与靶点方向筛选

①MR + ④HyPrColoc + ⑤PheWAS 三方结果合起来,筛出能作为药物靶点候选的蛋白,并给出用药方向(抑制还是增强)。 脚本:analysis/06_network.R 产物:results/network_R9/results/network_R13/

bash
Rscript analysis/06_network.R R9      # 或 R13

别把这张图和"那张网络图"搞混了

analysis/02_visualize.R 出的 network.png本页 analysis/06_network.R 出的 network_integrated.png
属于阶段三(跨疾病重叠的可视化)阶段六(整合靶点网络)
用了什么只有 MRMR ∩ 共定位 ∩ PheWAS
能下靶点结论吗不能,未经共定位过滤✅ 可以

MR 一跑完就能出的那张网络图不是靶点网络——它最抢眼的枢纽节点(AGER、HCG22、CFB…)恰恰是共定位判定的 LD 假象。所以那张图的标题已改为 Stage 3: ... MR only,并注明"勿作靶点结论"。


一、入选规则(三关)

   MR 显著边(FDR<0.05)

        ├── ① 共定位关:该「蛋白×疾病」是否被 HyPrColoc 支持?
        │      (PP > 0.7  且  蛋白自己在簇里)
        │         ├─ 否 ──────────────────────────► C 级:仅 MR(疑 LD 巧合)
        │         └─ 是
        │              │
        ├── ② 方向关:同一蛋白在各并发症间 OR 方向是否一致?
        │         ├─ 否(有的 OR>1 有的 OR<1)────► B 级:方向矛盾
        │         └─ 是
        │              │
        └── ③ 多效关:工具 SNP 的 Bonferroni 显著脱靶表型数 > 100?
                  ├─ 是 ────────────────────────► B 级:高多效
                  └─ 否 ────────────────────────► ✅ A 级:候选靶点
级别含义能不能写进结论
A1:候选靶点(跨病共定位)三关全过,且共定位簇里含 ≥2 个疾病✅ 主要发现
A2:候选靶点(单病共定位)三关全过,但共定位簇里只有 1 个疾病⚠️ 成立但弱一档,不要与 A1 并列陈述
B:方向矛盾同一蛋白对不同并发症一个增risk一个降risk → 给不出一致用药方向⚠️ 需逐病分开讨论
B:高多效脱靶表型 > 100(如 APOE 685 个)⚠️ 提示性,不作因果证据
C:仅 MR共定位不支持❌ 很可能 LD 假象

用药方向OR > 1 = 蛋白升高增加风险 → 靶点应抑制(inhibit)OR < 1 = 保护 → 应增强(activate)


二、结果

2026-07-20 重大更新:候选门槛放宽 + 补齐数据 + A 级分层,本节数字已全部重算

三处变动叠加,本页旧版数字(R9 4 个 / R13 8 个)已作废

  1. 候选门槛放宽:共定位原先只对"MR 在 ≥2 个并发症上显著"的蛋白跑,导致 疾病特异性蛋白被结构性排除(详见方法学审计)。现放宽到 ≥1。
  2. 补齐区域数据:从 Synapse 补下 30 个蛋白的 cis 区域 tar(本地 65 → 97 个)。 此前那 65 个正是按"跨 ≥2 病共享"挑的,光改代码不补数据,扩池等于开着门没人进得来。
  3. A 级分层:新增 A1/A2,把"共定位簇含几个疾病"这一证据强度差异显式标出来。

⚠️ 关键澄清:A2(单病共定位)并非扩池才出现。旧门槛卡的是「MR 显著的疾病数」, 不是「共定位簇里的疾病数」——所以旧版 8 个 A 级里,PILRA / PILRB / CASP10 本来就是 单病共定位,只是当时看不出来。分层不是扩池带来的新问题,而是把一个一直存在的问题显形了。

下表为 2026-07-22 分家之前的合并 R13 口径,已作废

分家后 R13 拆成 R13_dm(糖尿病并发症)R13_amd(AMD 独立家族) 两支; 2026-07-27 修复轮又改了多效性的处理方式。最新数字见下方「分家后(2026-07-27 定稿)」。

R9R13(分家前,已作废)
MR 显著边(去掉 T1D/T2D 基础病)156163
共定位支持的边2121
A1 候选靶点(跨病共定位)1 个5 个
A2 候选靶点(单病共定位)12 个4 个
B 级(高多效)APOE、KLK1APOE

分家后(2026-07-27 定稿)

R13_dm(糖尿病并发症)R13_amd(AMD 家族)
MR 显著边(已排除基础病/外部参照)29(蛋白 14 × 结局 4)84(蛋白 44 × 结局 3)
共定位支持的蛋白–疾病对119
A1 候选靶点(跨病共定位)0 个6 个(APOE、TGFB1、WARS、CSF2、TNFRSF10A、SPRY2)
A2 候选靶点(单病共定位)1 个(APOL1)3 个(PILRA、PILRB、CASP10)
A 级合计1 个蛋白 / 1 条边9 个蛋白 / 19 条边

★ 高多效不再自动降级(2026-07-27 修 H11)

本页上表原写「B 级(高多效):APOE」。该处理方式已改。

原代码把 pleiotropy_flag 放在 A1/A2 判定之前,脱靶表型数一旦 > PLEIO_MAX 就永远 到不了 A 级,且被四个下游脚本按 grepl("^A", tier) 剔除 —— 这与 06_network.R 第 27 行 自己的注释「高多效标记(不自动剔除,仅标记)」直接矛盾;而 PLEIO_MAX=100 本就是本流水线自定的经验阈值(见本页后文,非文献标准)。

文献惯例是把 PheWAS 脱靶负担当作安全性注释 / 备选适应症线索,不是自动排除门槛 (Cell Genomics 全球生物库 proteome-wide MR;Alz Res Ther 2025 中 APOE2 仍被列为高优先 治疗靶点、跨人群效应「最强且最稳定」)。

现在tier 只由「共定位支持 → 方向一致性 → 共定位疾病数」决定;高多效改为 pleiotropy_flag + pleiotropy_note 两个独立列随表输出。于是 APOE 保持 A1, 但带上「⚠高多效: 工具 SNP 在 632 个性状上 Bonferroni 显著」的标注。

定稿 n_offtarget(2026-07-27 PheWAS 分母订正后)

蛋白n_offtargettier
APOE632 ⚠高多效A1
PILRA / PILRB38A2
TGFB130A1
WARS24A1
CSF214A1
CASP1014A2
TNFRSF10A6A1
SPRY20A1
APOL1(DM 支)2A2

此前这一列全部是 0

06_network.R 早于 03_phewas.R 3.5 小时生成(时间戳实证:17:37 vs 21:09), 合并时 n_offtarget 全为 NA 被置 0 —— 于是「高多效」判定从未真正生效过。 该 bug(H1)已修,并加了「PheWAS 表非空但 n_offtarget 全 0」的自检告警。

一句话总览

R13 的 AMD 线依然是主战场:5 个 A1 里 TGFB1 / WARS / TNFRSF10A 都跨 3 个 AMD 亚型共定位。 R9 的糖尿病并发症线仍然单薄——13 个候选里只有 GALNT3 一个是 A1,其余 12 个都是单病共定位。 放宽门槛后 R9 数量涨了三倍,但证据强度并没有同步提升,写作时切勿据此说"R9 线其实很丰富"。

R13 · 候选靶点 ★(最重要的表)

A1 · 跨病共定位(证据更强)

蛋白方向共定位疾病数结局(OR)脱靶表型数备注
TNFRSF10A增强3AMD 0.861 · 湿性 0.842 · 干性 0.8746全套证据最完整;已知 AMD GWAS 经典位点;IAMDGC 独立复制 + 共定位复制均过
TGFB1增强3AMD 0.754 · 湿性 0.702 · 干性 0.78827三亚型一致;但现成药方向与 MR 相反
WARS抑制3AMD 1.349 · 干性 1.340 · 湿性 1.36822三亚型一致
CSF2抑制2AMD 1.257 · 湿性 1.49514可重定位:6 个抗 GM-CSF、Phase 3、方向一致
SPRY2增强2AMD 0.530 · 湿性 0.4040零脱靶 + 效应量最大

A2 · 单病共定位(证据弱一档)

蛋白方向结局(OR)脱靶表型数备注
CASP10增强AMD 0.72613凋亡通路
APOL1抑制黄斑病变 1.4522🆕 补数据后新增;多效性极低
PILRA抑制AMD 1.06438脱靶数为候选中最高
PILRB抑制AMD 1.05638与 PILRA 同一个哨兵 SNP(rs1859788),二者高度相关;OR 已按各自真实暴露 β 订正

R9 · 候选靶点

A1 · 跨病共定位——只有 1 个

蛋白方向共定位疾病数结局(OR)脱靶表型数
GALNT3增强2糖网 0.846 · 多并发症 0.8732

A2 · 单病共定位(12 个,证据弱一档)

蛋白方向结局(OR)脱靶表型数
VTCN1抑制AMD 2.7150
ADGRG1增强低血糖 0.3671
CCN1抑制增殖性视网膜病变 1.9301
APOL1抑制黄斑病变 1.5212
IFNAR1增强黄斑病变 0.7823
CLPS抑制多并发症 1.1024
IL10抑制酮症酸中毒 1.90813
MANSC4增强酮症酸中毒 0.91213
NUDT5抑制糖网 3.08025
TGFB1增强AMD 0.74927
IL7R抑制视网膜NOS 1.13559
IL6R增强多并发症 0.94771

R9 这批 A2 要谨慎对待

12 个里有多个的结局是酮症酸中毒、低血糖这类急性代谢事件,而非微血管并发症—— 它们与"糖尿病并发症靶点"这个命题的相关性本身就需要论证。加之全部只有单病共定位、 部分脱靶表型数很高(IL6R 71、IL7R 59),不建议作为主要发现陈述


三、怎么读这张网络图

network_integrated.png(600dpi)+ .pdf(矢量,可 Illustrator 编辑):

图元含义
圆形节点蛋白(节点越大 = PheWAS 脱靶表型越多 = 越可疑
方形节点疾病
红线Risk(OR>1)→ 靶点方向为抑制
蓝线Protective(OR<1)→ 靶点方向为增强
实线A 级候选靶点
虚线B 级(高多效 / 方向矛盾)

图里只画共定位支持的边(C 级仅 MR 的边不画)——所以这张图上的每条线都已经过了共定位这一关。


四、输出文件

文件内容
network_edges_candidate.csvA 级候选靶点的边,直接可用于写作
network_edges_all.csv全部 MR 边 + 三关判定列(coloc_support/dir_conflict_disease/pleiotropy_flag/tier
target_list.csv每个蛋白一行:方向、脱靶数、级别
network_integrated.png / .pdf整合网络图

五、局限与注意

写作时必须说明

  1. A 级 ≠ 板上钉钉。它只是"MR + 共定位 + 方向 + 多效"四道关都没被否掉,仍需功能实验验证。
  2. PILRA/PILRB 是同一位点的两个蛋白,别当成两个独立证据。
  3. n_offtarget > 100 这条线是本流水线定的经验阈值(不是文献标准),换课题可在 analysis/06_network.RPLEIO_MAX 调。
  4. 单工具的固有局限仍在:cis-pQTL 多为单 SNP,做不了 Egger/LOO,可信度靠共定位 + PheWAS 两根支柱支撑(跨结局一致性只是支持性观察,不作独立验证)。
  5. OR 数值不可直译(单工具外推,见 从零读懂 MR §3.3),只读方向与显著性。

环境坑:图的红蓝配色曾被静默丢弃

ggplot2 4.x + ggraph 2.2.2scale_edge_colour_manual() 会失效——边全部渲染成灰色,且不报错。本流水线已改用 scale_edge_colour_identity()(把十六进制色直接写进数据列)绕开。

这个坑很隐蔽:装 hyprcoloc 时连带把 ggplot2 升到了 4.x,导致同样的代码在升级前出的是彩色图、升级后出的是灰图analysis/02_visualize.Ranalysis/06_network.R 都已修,图重新可复现。

相关:下游分析 · 结果怎么看 · 批量筛查 · 方法引擎 10-下游分析脚本

个人科研与运维文档 · 内容持续修订