主题
R9 复现重跑(2026-07-29)
这页干什么
记录 用本流水线复现导师 Whole story line.docx 的 R9 方案 这一轮的完整过程:数据核查 → 备份 → 隔离环境 → 改动清单 → 运行 → 结果对照。 每一步都可复核。运行中的部分会随进度更新。
一、缘起与目标
主线分析已迁到 FinnGen R13(见 分家重跑定稿)。本轮回到 R9,目的是用我们的流水线复现导师原方案,形成 R9 与 R13 的逐条对照。
选定路线:A —— 走我们的流水线跑 R9(而非用导师原始 .Rmd 逐数字复刻)。理由见下方第六节"预期差异"。
二、先核查:docx 到底用了哪些数据
Whole story line.docx 正文没有写任何数据集编号(Methods 全为描述性文字)。实际数据源是从同批次代码 F:\project\MR code\ 的读盘路径反推的:
| 层 | 实际用的数据 | 代码位置 |
|---|---|---|
| 暴露 | UKB-PPP cis-pQTL,protein_info.csv,hg37,samplesize=54219,只留 cis/trans=="cis" | 1_r9_mr_diabetes.Rmd:26,58 |
| 糖网 | finngen_R9_DM_RETINOPATHY_EXMORE.gz | :72 |
| 黄斑病变 | finngen_R9_DM_MACULOPATHY_EXMORE.gz | :182 |
| 新生血管性青光眼 | finngen_R9_DM_NEOVASCULAR_GLAUCOMA.gz | :267 |
| 糖尿病肾病 | finngen_R9_DM_NEPHROPATHY_EXMORE.gz | :352 |
| 糖尿病神经病变 | finngen_R9_DM_NEUROPATHY.gz | :435 |
| T1D | GCST90475661.tsv.gz(外部) | 2_diabete_validation.Rmd:186 |
| T2D | Mahajan.NatGenet2018b.T2D-noUKBB.European.txt(外部) | 2_diabete_validation.Rmd:81 |
| AMD(敏感性支线) | finngen_R9_H7_AMD.gz | 8_sensitivity_AMD.Rmd:72 |
| 下游 | UpSetR / HyPrColoc(±500kb, PP≥0.7) / PheWAS 用 GWAS Atlas / 网络 | 3_ 4_ 6_ 7_ |
核查中发现的三个问题
docx 的 Table 1 病例数与它实际分析的文件对不上。 docx 写 T1D 4,526 / T2D 49,101 / DR 12,681 / 新青光眼 1,353;R9 官方 manifest 实测为 T1D 4,196 / T2D 57,698 / DR 10,413 / 新青光眼 1,100。 代码注释里出现的是
r7.risteys.finngen.fi(其中 T2D_WIDE 恰为 49,101)→ Table 1 数字抄自 R7 Risteys 页面,而分析读的是 R9 文件。且 T1D/T2D 的 MR 实际用外部 GCST/Mahajan,Table 1 给的却是 FinnGen 的数。 ➡️ 本轮输出的表格按真正读入的文件重出。docx 的 T1D 用
GCST90475661,已证实不是干净的 1 型糖尿病(MVP phecode,TCF7L2 p=9.5e-66,与 T2D 的 rg=0.886)。详见 外部 T1D 数据源问题。 ➡️ 本轮照原样使用(目的就是复现原方案),但结果中 T1D 一列会显式标注"不可按 1 型糖尿病解读"。docx 自身前后不一致:正文称共定位 36 个显著,图注 Fig2 写 20 个;"maculopathy 5 unique" 与 "maculopathy (6)" 重复矛盾。 ➡️ 以本轮实际结果为准。
三、备份(前置动作,已完成)
| 检查项 | 结果 |
|---|---|
| 打包 | results/(R13 全部结果)13G → 5.46GB |
| gzip 完整性校验 | ✅ 通过 |
| 归档条目数 | 632 |
| WSL 内副本 | /home/research/backups/results_R13_full_20260729.tgz |
| D 盘副本 | D:\mrdata\results_R13_full_20260729.tgz(5,459,327,126 字节,与源同尺寸) |
原 results/ | 未改动 |
四、隔离环境
R9 这一轮跑在独立工作副本 /home/research/mr-pipeline-r9/,与 R13 主线 /home/research/mr-pipeline/ 完全隔离,results/ 互不覆盖。副本只复制代码(804K),数据经软链指向 /mnt/d/mrdata/,不重复占盘。
为什么必须建副本
流水线只有 01/02/04/05/06/12/13/14 认 release 参数;07(可成药性)/10(eQTL共定位)/11(单细胞)/17–21 里 R13_dm、R13_amd 是写死的,而 03(PheWAS) 会扫描所有 screen_* 目录并覆盖 results/phewas。直接在原目录跑 R9 会污染 R13 的下游产物。
五、本轮结局清单(7 个,单一 FDR 家族 R9_dm)
| # | 数据文件 | 病例 / 对照 | 说明 |
|---|---|---|---|
| 1 | finngen_R9_DM_RETINOPATHY_EXMORE.gz | 10,413 / 308,633 | docx 原样 |
| 2 | finngen_R9_DM_MACULOPATHY_EXMORE.gz | 3,572 / 308,547 | docx 原样 |
| 3 | finngen_R9_DM_NEOVASCULAR_GLAUCOMA.gz | 1,100 / 366,206 | docx 原样 |
| 4 | finngen_R9_DM_NEPHROPATHY_EXMORE.gz | 4,111 / 308,539 | docx 原样 |
| 5 | finngen_R9_DM_NEUROPATHY.gz | 2,843 / 271,817 | docx 原样 |
| 6 | GCST90475661.tsv.gz | 16,971 / 418,767 | 外部 T1D(已知污染,标注) |
| 7 | Mahajan.NatGenet2018b.T2D-noUKBB.European.txt | 55,005 / 400,308 | 外部 T2D |
暴露:UKB-PPP cis-pQTL 1,954 蛋白(N=54,219),见 暴露端核查。
不含 AMD → 本轮无 AMD 家族,不跑 08(IAMDGC 复制)、10(视网膜 eQTL 共定位)、18–21(湿实验 shortlist)。
六、⚠️ 预期差异:复现 ≠ 数字全等
我们的实现有三处刻意不同于导师原版,改回去等于把已知错误再犯一遍:
| # | 差异 | 后果 |
|---|---|---|
| 1 | T2D(Mahajan) 匹配键:导师用 chr:pos:NEA:EA 固定顺序键,实测漏掉 700/1,656 个工具(42%);我们用等位排序键,方向交给 harmonise | 我们的 T2D 可检验蛋白数接近翻倍,显著数会明显不同 |
| 2 | 11 个共用哨兵 SNP(如 rs1859788 = PILRA+PILRB):导师那版两个蛋白用了同一个暴露 β;我们按各自真实 β 校正 | p 值/FDR/显著性不受影响,只有 OR/CI 变;其中 2 组方向会翻转 |
| 3 | Steiger 定向过滤 + F 统计量:我们在批量筛查中真正执行 | 实测剔除 0 个 SNP,保留该步是为方法学可核 |
因此本轮结果与 docx 的数字不会逐个相同,差异均可解释、且方向是"更正确"。
七、代码改动清单(都在副本内,主线未动)
| 文件 | 改动 |
|---|---|
outcome_manifest.csv | 上述 7 行 release: R9 → R9_dm;其余 R9 行改 R9_unused 不参与 |
analysis/04_ldsc.R | KEEP 新增 R9_dm(新青光眼 1,100 例太小不入 LDSC,与 R13_dm 口径一致) |
analysis/05_hyprcoloc.R | COMPL 新增 R9_dm = 5 个并发症(含新青光眼) |
analysis/07_druggability.py | 靶点来源 network_R13_* → network_R9_dm |
analysis/_singlecell_io.py | 候选基因来源同上 |
analysis/17_replicate_external.R | OUT2REPL 增 Retinopathy="DR_mvp"(R9 的 DR 叫 Retinopathy 而非 RetinopathyStrict);只跑 do_family("R9_dm") |
run_pipeline.sh | 改写为单家族编排,去掉 AMD 专属阶段 |
八、运行的阶段
跑:01 筛查 → 02 可视化 → 03 PheWAS → 04 LDSC → 05 HyPrColoc(PP>0.7) → 06 网络 → 07 可成药性 → 09 汇总 → 11 单细胞 → 12/13/14/15 出图 → 17 外部复制 → 16 汇总
覆盖 docx 的全部五步(MR → 共定位 → PheWAS → 网络 → 药靶方向),另加 LDSC、外部队列复制、单细胞定位 三层增量。
外部复制映射:Retinopathy → MVP DR (GCST90475689)、Neuropathy → MVP 神经 (GCST90475676)、Nephropathy → Salem2019 糖肾 DN。
启动时间:2026-07-29 08:30(./run_pipeline.sh force,从零重算,不复用任何缓存)
九、结果
9.1 筛查层(阶段 01,已完成)
| 结局 | 病例/对照 | 可检验蛋白 | minF | 中位F | FDR<0.05 显著 |
|---|---|---|---|---|---|
| Retinopathy(糖网) | 10,413 / 308,633 | 1,587 | 43.8 | 784 | 24 |
| Maculopathy(黄斑病变) | 3,572 / 308,547 | 1,587 | 43.8 | 784 | 19 |
| NeovascGlaucoma(新青光眼) | 1,100 / 366,206 | 1,587 | 43.8 | 784 | 0 |
| Neuropathy(神经病变) | 2,843 / 271,817 | 1,587 | 43.8 | 784 | 5 |
| Nephropathy(糖肾) | 4,111 / 308,539 | 1,587 | 43.8 | 784 | 9 |
| T1D_gcst(外部 T1D)⚠️ | 16,971 / 418,767 | 1,687 | 40.6 | 768.5 | 21 |
| T2D_mahajan(外部 T2D) | 55,005 / 400,308 | 1,614 | 43.9 | 780.5 | 28 |
所有工具 F 统计量最小 40.6,远高于弱工具门槛 10,相关性假设满足。
⚠️ T1D_gcst 一行不可按 1 型糖尿病解读(MVP phecode,实为 T2D 主导),见 外部 T1D 数据源问题。
9.2 与历史 R9 记录的一致性核对
五个 FinnGen 结局 + 外部 T1D 的显著数与既有 R9 endpoint 清单逐个吻合(DR 24 / 黄斑 19 / 新青光眼 0 / 神经 5 / 糖肾 9 / T1D 21),说明本轮从零重算复现了历史结果,流水线行为稳定。
唯一不同的是 T2D(Mahajan):本轮 28,旧记录 7。 这正是第六节预告的差异 #1 —— 旧数字出自"固定顺序等位键"实现(漏掉 42% 工具),修复为等位排序键后可检验蛋白从约 950 涨到 1,614,显著数随之从 7 涨到 28。旧的 7 是缺陷产物,28 是修正后的正确值。
9.3 与 R13 主线的覆盖率对照
| R9(本轮) | R13(主线) | |
|---|---|---|
| FinnGen 结局可检验蛋白 | 1,587 | 1,659 |
| 外部 T1D | 1,687 | 1,722(换源后为 GCST90824163) |
| 外部 T2D(Mahajan) | 1,614 | 1,614 |
R13 覆盖率略高(+72 蛋白),与其更新的填补面板一致。暴露端起点两者相同,均为 1,954。
9.4 遗传相关(阶段 04 LDSC)
纳入 6 个性状(新青光眼 1,100 例太小,h2 估计不可靠,不入矩阵):
| rg | 糖网 | 黄斑 | 神经 | 糖肾 | T1D_gcst | T2D_mahajan |
|---|---|---|---|---|---|---|
| 糖网 | 1 | 0.946 | 0.734 | 0.966 | 0.781 | 0.744 |
| 黄斑 | 0.946 | 1 | 0.601 | 0.942 | 0.770 | 0.680 |
| 神经 | 0.734 | 0.601 | 1 | 0.751 | 0.772 | 0.591 |
| 糖肾 | 0.966 | 0.942 | 0.751 | 1 | 0.769 | 0.693 |
| T1D_gcst | 0.781 | 0.770 | 0.772 | 0.769 | 1 | 0.886 |
| T2D_mahajan | 0.744 | 0.680 | 0.591 | 0.693 | 0.886 | 1 |
观察尺度 h2:糖网 0.188 · 黄斑 0.305 · 神经 0.279 · 糖肾 0.272 · T1D 0.171 · T2D 0.122,z 全部 ≥5.85。
本轮独立复现了 GCST90475661 的污染判据
rg(T1D_gcst, T2D_mahajan) = 0.886 (SE 0.046),与 2026-07-27 在 R13 数据上的实测值一致。真 T1D 与 T2D 的遗传相关文献值约 0.1。在 R9 数据上独立复现同一异常值,为该数据源实为 T2D 主导的结论再加一层证据。
9.5 共定位(阶段 05 HyPrColoc,PP>0.70)
30 个蛋白进入多性状共定位:
| 判定 | 数量 |
|---|---|
| 支持(蛋白与疾病共定位) | 8 |
| 不支持(仅疾病成簇,蛋白未进簇 → 疑 LD 巧合) | 11 |
| 不支持(未检出共享簇) | 5 |
| 证据不足(蛋白进簇但 PP 未过阈) | 6 |
共定位支持的 8 个蛋白:
| 蛋白 | 染色体 | 簇内最佳 PP | 共定位疾病 |
|---|---|---|---|
| NUDT5 | 10 | 0.934 | 糖网 |
| ERMAP | 1 | 0.899 | 黄斑病变 |
| WARS | 14 | 0.894 | 糖网 |
| PAM | 5 | 0.891 | 糖网 |
| APOE | 19 | 0.869 | 黄斑病变 + 糖肾 + 糖网(跨 3 病) |
| GALNT3 | 2 | 0.844 | 糖网 |
| IFNAR1 | 21 | 0.837 | 黄斑病变 |
| APOL1 | 22 | 0.815 | 黄斑病变 |
APOL1 共定位的是黄斑病变,不是糖肾。 这与 2026-07-27 全量核查得出的"APOL1 指向应为黄斑病变而非糖肾"完全一致,本轮在 R9 上再次独立验证。
9.6 整合网络与候选靶点(阶段 06)
MR 显著边 57 条(31 蛋白 × 4 结局),共定位支持 10 对。
| 层级 | 边数 |
|---|---|
| A1 候选靶点(跨病共定位) | 3 |
| A2 候选靶点(单病共定位) | 7 |
| C 仅 MR(共定位不支持) | 47 |
A 级候选靶点 8 个蛋白 / 10 条边(A1 跨病 1 个 = APOE;A2 单病 7 个),方向冲突全为 FALSE:
| 蛋白 | 干预方向 | 共定位疾病数 | 脱靶表型数 | 备注 |
|---|---|---|---|---|
| APOE | 抑制 | 3 | 656 | ⚠️ 高多效,作药靶需谨慎 |
| PAM | 增强 | 1 | 30 | |
| WARS | 抑制 | 1 | 26 | |
| NUDT5 | 抑制 | 1 | 25 | |
| ERMAP | 增强 | 1 | 6 | |
| IFNAR1 | 增强 | 1 | 4 | |
| APOL1 | 抑制 | 1 | 2 | |
| GALNT3 | 增强 | 1 | 2 |
与上一轮 R9(A1 1 + A2 12)的差别是分母不同,不是结果不稳
上一轮 R9 跑的是全部 21 个终点(含 AMD、增殖性 DR、酮症酸中毒等),本轮按 docx 只跑 5 个并发症 → 能产生 A2 的结局本来就少。结局范围不同导致的差异,不构成前后矛盾。
9.7 可成药性(阶段 07,Open Targets)
8 个靶点全部解析成功。IFNAR1 是唯一有现成药可谈重定位的:已有 12 个在研/上市药物,且方向一致(MR 提示需"增强",现有药物方向吻合)。其余 7 个 phase 0:APOE/PAM/APOL1 小分子与抗体两条路均可及;WARS/NUDT5 仅小分子;ERMAP/GALNT3 仅抗体。
9.8 视网膜单细胞定位(阶段 11,HRCA 图谱)
| 蛋白 | 表达最高的细胞类型(均值,表达比例) |
|---|---|
| APOE | Müller 细胞(3.67,92%)→ 定位极明确 |
| PAM | 视网膜节细胞 parasol(1.32,99%)/ 无长突细胞 |
| WARS | 视网膜节细胞(0.35,76%) |
| NUDT5 | 视网膜节细胞(0.33,70%) |
| IFNAR1 | 视网膜节细胞(0.33,74%) |
| GALNT3 | Müller 细胞(0.22,17%) |
| ERMAP | 视锥细胞(0.16,9%) |
| APOL1 | 几乎不表达(小胶质 1%、RPE 1%) |
APOL1 的组织落位不支持视网膜局部作用
遗传学信号有、共定位过阈,但视网膜里几乎测不到表达 → 更可能通过系统性(肾/循环)途径影响,写作时不能当成视网膜局部靶点。
9.9 外部队列独立复制(阶段 17)
显著命中 106 行,其中有外部队列可判 38 行,复制成功(方向一致 且 p<0.05)12 行:
| 结局 | 复制队列 | 可判 | 复制成功 |
|---|---|---|---|
| 糖网 | MVP DR (GCST90475689) | 24 | 10 |
| 神经病变 | MVP 神经 (GCST90475676) | 5 | 1 |
| 糖尿病肾病 | Salem2019 糖肾 DN | 9 | 1 |
复制成功明细:
| 结局 | 蛋白 | 发现集 OR | 复制集 p |
|---|---|---|---|
| 糖网 | PAM | 0.888 | 2.22e-17 |
| 糖网 | APOE | 1.139 | 3.61e-11 |
| 糖网 | NUDT5 | 3.080 | 5.56e-07 |
| 糖网 | NOTCH2 | 0.598 | 3.08e-07 |
| 糖网 | AOC1 | 0.809 | 2.24e-04 |
| 糖网 | LTB | 1.919 | 5.91e-04 |
| 糖网 | TNXB | 1.309 | 4.95e-03 |
| 糖网 | AIF1 | 0.622 | 1.34e-02 |
| 糖网 | GALNT3 | 0.846 | 3.19e-02 |
| 糖网 | HCG22 | 0.682 | 3.78e-02 |
| 糖肾 | BTN2A1 | 1.807 | 8.71e-03 |
| 神经 | AGER | 0.146 | 2.63e-02 |
糖网 24 个显著蛋白里 10 个在 MVP 独立队列复制成功(42%),其中 PAM、APOE、NUDT5、GALNT3 同时也是共定位支持的 A 级候选 —— MR + 共定位 + 外部复制三层同时过关,是本轮证据最强的一组。
Salem2019 糖肾队列的 sumstats 不含样本量,Steiger 定向过滤无法计算,脚本已显式记录并跳过(不影响方向一致性与 p 判定)。此为既有待办,非本轮新问题。
9.10 产出清单
- 图 19 张(600dpi PNG + 矢量 PDF 双份):筛查火山图/UpSet/森林图/效应热图、8 张区域共定位图、LDSC h2 与 rg 热图、PheWAS 多效性图 2 张、整合网络图、单细胞点图
- 汇总 Excel:
results/REPORT/MR_publication_tables.xlsx,含 7 个结局汇总 + 106 条显著关联 + 10 张下游表 - 运行时长:08:30 → 09:16,约 46 分钟(含一次汇总层返工)
九·补、对齐导师口径:把外部 T1D/T2D 纳入共定位家族
导师原方案(hypco_new.tiff / PPT Slide 2)的共定位 UpSet 里含 diabetetp1/diabetetp2,其"20 个共定位显著"包含蛋白与糖尿病本身共定位的部分;我们首轮只把 5 个并发症放进簇,所以是 8 个。为使两边可直接比较,把外部 T1D/T2D 也加入共定位家族重跑。
仅并发症版本另存于 results/hyprcoloc_R9_dm_complonly/ 与 network_R9_dm_complonly/,两版并存可比。
加进去之前发现的两个真障碍
| 问题 | 表现 | 处理 |
|---|---|---|
| ① Mahajan 是 GRCh37 | 共定位按 chr:pos 合并,基准是 GRCh38(UKB-PPP 蛋白区域 + FinnGen)。直接挂进来会全表失配且静默(区域读到 0 行 → 跳过,不报错) | 新建 tools/lift_mahajan_hg38.R,经 rsID 桥接转成 hg38 |
| ② 区域读取器按 FinnGen 列布局写死 | $1 chrom $2 pos … $9 beta $10 sebeta;而 GCST90475661 是 OR + CI 且 standard_error 列全是 `#NA`` | _region_io.R 加格式分派(finngen / gcst_or),后者 β=log(OR)、SE=(log CI上−log CI下)/3.92 |
另修:05 里 match_mode=="rsid" 的过滤会把 position 模式的 Mahajan 静默剔掉,已放开。
Mahajan hg37 → hg38 的桥接方法
不用 liftover 链文件,改用两跳实测坐标表(对不上的直接丢弃,不做插值):
Mahajan chr:pos(hg37) --[1000G EUR.bim]--> rsID --[FinnGen R9]--> chr:pos(hg38)| 步骤 | 数量 |
|---|---|
| 1000G EUR.bim(hg37,带 rsID) | 8,539,903 |
| FinnGen R9(hg38,带 rsID) | 18,708,460 |
| 两侧都命中,构成映射表 | 7,737,656(占 bim 90.6%) |
| Mahajan 原始行 | 21,508,698 |
| 成功映射到 hg38 | 7,359,770(34.2%) |
覆盖率 34.2% 必须如实报告
桥接只能覆盖 1000G EUR 面板里的 854 万个 SNP,Mahajan 其余变异无 rsID 可依。但对共定位无实质影响:每个 ±500kb 区域仍剩一两千个 SNP,远超本流水线的区域下限(50)。 自检:rs7903146(TCF7L2) 转换后落在 hg38 10:112998590,与 FinnGen 实测一致,β 保持 0.300。
对齐后的结果
| 仅并发症(首轮) | 含 T1D/T2D(对齐版) | |
|---|---|---|
| 进入共定位的蛋白 | 30 | 40 |
| 共定位支持 | 8 | 10 |
| 蛋白-疾病对 | 10 | 19 |
| A 级候选靶点 | 8(A1 1 + A2 7) | 9(A1 3 + A2 6) |
每个结局的共定位蛋白数:糖网 6 · 黄斑 5 · T2D 4 · T1D 3 · 糖肾 1
新增进 A 级的是 NOTCH2(与糖网 + T1D + T2D 三性状共定位,脱靶 21)。ABO 也获得共定位支持,但只与基础病共定位、在并发症上无 MR 显著边,故不进候选清单。
跨病共定位从 1 个升到 3 个(APOE、NOTCH2、PAM),这正是纳入基础病后应有的变化——它反映的是"蛋白同时作用于糖尿病本身与并发症",解释时不能说成"跨并发症共享"。
新靶点 NOTCH2 的下游信息(下游各层已同步重跑)
| 层 | 结果 |
|---|---|
| 共定位 | 糖网 + T1D + T2D 三性状同簇,PP=0.755 |
| MR 方向 | 糖网 OR=0.598(保护)→ 干预方向为增强 |
| 外部复制 | MVP 糖网复制成功,p=3.08e-07 |
| 可成药性 | 小分子/抗体均可及;已有 1 个 phase 2 药物,但方向相反/不明——不是可直接重定位的对象 |
| 视网膜表达 | 星形胶质细胞(0.48, 32%) / Müller 细胞(0.42, 32%) / RPE(0.37, 25%)——胶质与 RPE 均有表达 |
NOTCH2 同时满足 MR + 共定位 + 外部复制三层,是本轮对齐后新增的、证据完整的候选。
对齐后 A 级 9 个靶点的可成药性:IFNAR1 仍是唯一"有药且方向一致"的(12 个药物);NOTCH2 有药但方向不符;其余 7 个 phase 0。
九·补二、新增两张对标导师 PPT 的图
| 导师 | 我们新增 | 状态 |
|---|---|---|
| PPT Slide 2 共定位 UpSet | analysis/22_figure_coloc_upset.R → hyprcoloc_R9_dm/figures/coloc_upset.{png,pdf} + 出图矩阵 CSV 供核对 | ✅ 已完成 |
| PPT Slide 4/5 PheWAS 域分类散点 | analysis/23_figure_phewas_domain.R | ⚠️ 受限,见下 |
PheWAS 域分类图:改用 GWAS Catalog EFO 父类,已可用
第一版失败的原因:导师那张图的横轴(Activities / Body Structures / Cardiovascular / …)是 GWAS ATLAS 独有的 Domain 分类,他的 PheWAS 是逐 SNP 从 ATLAS 网页手工导出、文件自带 Domain 列。我们走 OpenGWAS API,实测其元数据:
subcategory对主力数据集普遍为空:ebi-a4,529 条、ukb2,719 条全部无值(占 66%)category只有 Continuous/Binary/Risk factor/Metabolites,是数据类型不是生理域- 结果 92.2%(10,118/10,976)落入 Unclassified,图无信息量
解决方案(2026-07-29):改用 GWAS Catalog 的 EFO 父类目录——官方策展、可引用,且比 ATLAS(停在 2019 年)更新。两个官方文件一次性下载到 /mnt/d/mrdata/gwascatalog/:
| 文件 | 来源 | 内容 |
|---|---|---|
trait_mappings.tsv | ebi.ac.uk/gwas/api/search/downloads/trait_mappings | 110,339 行;EFO URI → Parent term |
studies.tsv | …/downloads/studies_alternative | 89,982 研究;GCST + PUBMEDID + MAPPED_TRAIT_URI |
映射链(三级,无猜测):
ebi-a-GCSTxxxxx→ 直接取 GCST 号 →studies.tsv的 EFO URI → 父类- 其余数据集 → OpenGWAS 元数据的
pmid→studies.tsv的 PUBMEDID → 父类 - 取不到 → 标
Unclassified,覆盖率在图注里显式披露
| 来源 | 关联条数 |
|---|---|
| GWAS Catalog(GCST 直连) | 3,628 |
| GWAS Catalog(PMID 回连) | 2,172 |
| 未分类 | 5,176 |
| 覆盖率 | 全部关联 52.8% · Bonferroni 显著关联 51.9% |
两个刻意的取舍
① 不用 OpenGWAS subcategory 兜底。 混用会让图上同时出现 Immune system disorder(GWAS Catalog) 与 Immune system(OpenGWAS)、Anthropometric 这类同义不同名的域 —— 两套分类体系混在一张图里,发表时是硬伤。宁可标 Unclassified 并如实披露(兜底只能多覆盖 238 条,2.2%)。 ② Unclassified 一律排到横轴最后一位。 它是条数最多的一栏,排首位会误导读图。
未覆盖的 47% 主要是 ukb-b-*(Neale lab UKB GWAS,多数无 PMID,2,719 条)、ubm-*(脑影像)、eqtl-*。要继续提高覆盖率需再接 UKB showcase 字段树,属下一步可选项。
图已符合本课题作图规范(全英文 + DejaVu Sans + theme_minimal + PNG/PDF 双份),每个域标注最强的 1 条关联,图注写明覆盖率与 P 值封顶(1e-300)。
九·补三、加跑 coloc.abf(PP.H4),两法交叉验证
为什么加
本课题此前只有 HyPrColoc。HyPrColoc 给的是"性状簇",不给两两 PP.H4,而 PP.H4 是子刊药靶文章最通用的判据(Nat Immunol 2023 SCALLOP 用 PP4 ≥ 0.8)。导师原实现也只跑了 HyPrColoc(library(coloc) 加载了但零调用),所以这是两边共同的缺口。
新增 analysis/24_coloc_abf.R + analysis/25_coloc_compare.R,复用 05 的区域缓存。数据集构造:
- 蛋白:
type="quant", sdY=1(UKB-PPP 蛋白水平经秩逆正态变换,效应量即 SD 单位) - 疾病:
type="cc", s=ncase/(ncase+ncontrol), N=ncase+ncontrol - 先验沿用 config:p1=p2=1e-4, p12=1e-5;coloc.abf 基于 Z²,等位定向不敏感
结果:83 对,两法高度一致
| 对数 | 蛋白数 | |
|---|---|---|
| PP.H4 ≥ 0.8 | 23 | 14 |
| PP.H4 ≥ 0.7 | 31 | 20 |
| 两法一致性 | 对数 |
|---|---|
| 两法都支持 | 19 |
| 仅 coloc.abf 支持 | 4 |
| 仅 HyPrColoc 支持 | 0 |
| 两法都不支持 | 60 |
HyPrColoc 判阳的 19 对,coloc.abf 的 PP.H4 全部 ≥ 0.896,无一例外:
| 蛋白 | 疾病 | HyPrColoc PP | coloc.abf PP.H4 | PP.H3 | 区域 SNP |
|---|---|---|---|---|---|
| APOE | 糖网 | 0.917 | 1.000 | 0.000 | 4,523 |
| APOE | T2D | 0.917 | 0.999 | 0.001 | 2,812 |
| ABO | T2D | 0.996 | 0.998 | 0.002 | 3,231 |
| APOE | 糖肾 | 0.917 | 0.998 | 0.001 | 4,523 |
| APOE | T1D | 0.917 | 0.982 | 0.012 | 4,702 |
| PAM | T1D | 0.739 | 0.980 | 0.020 | 4,203 |
| NUDT5 | 糖网 | 0.945 | 0.977 | 0.014 | 5,327 |
| ERMAP | 黄斑 | 0.899 | 0.967 | 0.019 | 3,978 |
| PAM | 糖网 | 0.739 | 0.959 | 0.036 | 4,086 |
| WARS | 糖网 | 0.894 | 0.956 | 0.043 | 4,195 |
| NOTCH2 | T1D | 0.755 | 0.953 | 0.046 | 2,605 |
| NOTCH2 | T2D | 0.755 | 0.952 | 0.048 | 1,387 |
| GALNT3 | 糖网 | 0.844 | 0.948 | 0.022 | 4,134 |
| IFNAR1 | 黄斑 | 0.837 | 0.940 | 0.046 | 3,854 |
| APOL1 | 黄斑 | 0.815 | 0.926 | 0.062 | 4,515 |
| PAM | T2D | 0.739 | 0.924 | 0.076 | 2,031 |
| APOE | 黄斑 | 0.917 | 0.917 | 0.044 | 4,523 |
| NOTCH2 | 黄斑 | 0.755 | 0.897 | 0.092 | 2,504 |
| NOTCH2 | 糖网 | 0.755 | 0.896 | 0.104 | 2,504 |
仅 coloc.abf 支持的 4 对(HyPrColoc 未检出任何簇):SIGLEC5–黄斑 0.887 · ACRBP–糖网 0.867 · TSPAN8–T2D 0.839 · LACTB2–糖网 0.800。这 4 个是新增候选线索,需单独评估。
★ 关键交叉验证:导师那 11 个"蛋白从未进簇"的蛋白
对 AGER、AIF1、ATP6V1G2、BCL2L15、BTN2A1、BTN3A2、CFB、HCG22、LTB、TNXB、TRIM40 共 38 个蛋白-疾病对跑 coloc.abf:
| 结果 | 数量 |
|---|---|
| PP.H4 ≥ 0.8 | 0 / 38 |
| PP.H3 = 1.000(两个不同的因果变异) | 37 / 38 |
PP.H3 = 1.0 的含义就是"蛋白与疾病在该区域是两个不同的因果变异",即 LD 巧合。两个独立方法(HyPrColoc 的簇成员判定、coloc.abf 的 H3/H4 分解)给出完全一致的结论。
原因也很清楚:
| MHC 区(chr6)占比 | |
|---|---|
| 11 个"从未进簇"蛋白 | 10 / 11(仅 BCL2L15 在 chr1) |
| 10 个共定位成功蛋白 | 0 / 10 |
MHC 的长程 LD 让多个疾病在该区域共享 HLA 信号而聚成一簇,但蛋白的 cis-pQTL 是另一个因果变异 —— 这正是 MHC 区为什么是假阳性雷区 说的情形,这次拿到了两法互证的定量证据。
定论
本课题共定位层的最终判据改为:PP.H4 ≥ 0.8(coloc.abf,主)+ 蛋白必须在 HyPrColoc 簇内(辅,用于回答跨病共享)。两条同时满足的 19 对 / 10 个蛋白即为共定位支持的候选。
十、过程中修掉的一个问题
首次汇总(阶段 09/16)输出 显著关联总数: 0。原因是 analysis/09_report.py 里家族名同样写死为 R13_dm/R13_amd,第七节改动清单遗漏了这一处。已改为 R9_dm 并重跑阶段 16,修复后为 106 条显著关联 + 10 张下游表。
教训:本流水线的"写死 R13"分布在 07/09/10/11/17/18–21 多个脚本里,换 release 时需逐个排查,仅靠
run_pipeline.sh传参不够。
十一、隔离验证
| 目录 | 大小 | 内容 |
|---|---|---|
/home/research/mr-pipeline/results(R13 主线) | 13G | screen_R13_dm screen_R13_amd hyprcoloc_R13_* eqtl_coloc shortlist … 完好未动 |
/home/research/mr-pipeline-r9/results(本轮) | 4.0G | screen_R9_dm hyprcoloc_R9_dm ldsc_R9_dm network_R9_dm … |
两者无任何文件重叠,R13 主线结果与备份包三重可回滚。