Skip to content

方案 C 执行结果(2026-07-29)

这页干什么

记录 T1D 换源 + 双零重叠敏感性 + 四项方法学增补 的完整执行与结果。 所有数字均为本地实测,脚本与产物路径逐条给出,可复核。

一、方案 C 三个目标全部达成

目标结果
T1D 换源 → GCST90824163✅ 工具覆盖 96.8%,显著关联 57 条
rg(T1D, T2D)0.886 → 0.087(验收线 < 0.2)
T2D 加 MVP 敏感性✅ 方向 100% 一致
(新增)T1D 零重叠复制✅ 84.6% 同向

换源后 rg 的整体结构才讲得通:

性状对旧源新源
T1D – T2D0.8860.087
视网膜病变 – T1D0.7810.453
黄斑 – T1D0.7700.454
糖肾 – T1D0.7690.433
神经 – T1D0.7720.359

旧源下 T1D 与四个并发症的 rg 齐整地落在 0.77–0.78,那是"糖尿病"的信号;换源后分化开(0.36–0.45),且一律低于 T2D 的 0.59–0.74,符合 FinnGen 并发症以 2 型为主的事实。

二、三组数据源对照

判据分四档,避免"复制成功"被含糊使用:covered(对照数据里有该工具;没有的判定不了,不算失败)→ 同向 → 同向 p<0.05 → 同向 FDR<0.05

对照主分析显著覆盖同向同向 p05同向 FDR05
T1D 新 vs (GCST90475661)575534 (61.8%)1010
T1D 新 vs Crouch(零重叠)573933 (84.6%)2519
T2D Mahajan vs MVP(零重叠)282727 (100%)2422
  • 与旧源有 21 条方向完全相反(KLK1、MOG、CDSN、VEGFB、OSM、APOH、FGF21、CD80…)。两份数据若测同一表型不可能近四成翻转,与位点层证据(TCF7L2 p=9.5e-66 → p=0.67)一致
  • UKB 重叠不是结论的驱动因素:完全不含 UKB 的数据里 84.6% 同向、近半 FDR 显著。未覆盖的 18 条正是 MHC 那批
  • T2D 主结果方向零翻转;唯一未覆盖的是 ABO

产物:results/source_compare/

三、★糖尿病易感性对照

动机FinnGen 端点对照定义问题:并发症端点的对照是一般人群,估计目标是"糖尿病 + 并发症"的复合效应。

做法:同一工具变异下,比较蛋白对并发症与对 T1D/T2D 的效应量。

统计说明(须写进方法)

并发症估计与糖尿病估计共享暴露工具、且共享 FinnGen 对照池,两者正相关: Var(b_c − b_d) = v_c + v_d − 2covcov > 0。 我们按独立计算方差(用 v_c + v_d),这会高估差值方差 → z 偏小 → 更难判为"并发症特异"。 这是保守的一侧,不会夸大特异性主张。

57 条显著关联 / 31 个蛋白的归类:

分类关联数MHC 区非 MHC
糖尿病驱动35 (61%)AIF1, ATP6V1G2, CFB, LTB, MICB/MICA, TNXB, SIGLEC5, TRIM40AOC1, APOE, BCL2L15, IL7R, ITGB7, LACTB2, NOTCH2, NUDT5, PAM, TIGIT, TPPP3, WARS
并发症增强11AGER, HCG22ACRBP, CLPS
并发症特异10BTN2A1, BTN3A2APOL1, ERMAP, IFNAR1, VWC2L
方向背离1GALNT3

超过一半的显著关联,本质是"这个蛋白让人更容易得糖尿病",不是并发症特异机制。

对既有候选的修正

APOE、PAM、NOTCH2 被判为糖尿病驱动——而这三个此前是共定位支持的候选。 它们对糖网的"因果效应"很可能经由"更容易得糖尿病",而非视网膜特异机制。 这不是分析出错,是此前没做这层对照所以看不出来;同类文献(含 C1R 那篇与 baseline)均未处理。

一个独立的内部互证

共定位簇的成分印证了同一分类:

APOE    簇 = APOE, 黄斑, 糖肾, 视网膜病变, T2D    ← 糖尿病在簇内
NOTCH2  簇 = NOTCH2, 黄斑, 视网膜病变, T1D, T2D   ← 糖尿病在簇内
APOL1   簇 = APOL1, 黄斑                           ← 只有并发症
ERMAP   簇 = ERMAP, 黄斑
IFNAR1  簇 = IFNAR1, 黄斑

"效应量比值"与"哪些性状进同一个簇"是两个互相独立的判据,结论一致 —— 说明这个分类是数据里本来就有的结构。

产物:results/diabetes_contrast/,脚本 analysis/27_diabetes_contrast.R

四、候选靶点决策表

四道过滤(共定位支持 + 非 MHC + 糖尿病对照 + PheWAS 多效性)收敛为 A 级 3 个,全部指向糖尿病黄斑病变

蛋白共定位 PP糖尿病对照PheWAS 脱靶性状数
ERMAP0.899并发症特异6
IFNAR10.837并发症特异4
APOL10.815并发症特异2

对照组的多效性:APOE 642 个脱靶性状、AGER 322、BTN2A1 248、AIF1 235、BTN3A2 195 —— 全部归为"高多效,成药需谨慎"(对标 C1R 那篇对 ABO 关联 63 个性状的处理)。

跨病方向一致性:15 个跨 ≥2 个并发症的蛋白无一方向相反(不同于 C1R 那篇的 BTN2A1/FGF5)。

产物:results/targets/target_decision_table.csv,脚本 analysis/32_targets_table.R

五、★通路富集必须按 MHC 分组

走 g:Profiler REST API(clusterProfiler 在本机 R 4.3 需源码编译,放弃)。

分组头号富集项
全部 31 个蛋白immune response,p = 7.2e-07
仅 MHC 区(11)immune response p = 4.6e-04;Butyrophilin (BTN) family interactions
仅非 MHC(20)免疫信号消失(最好仅 p = 0.047),改为脂蛋白颗粒相关

结论

"免疫机制驱动糖尿病并发症"这个看似漂亮的结论,完全由 MHC 那一块撑着。 不拆开跑就会写出一个由 LD 结构造成的假机制。

产物:results/enrichment/enrichment_gprofiler.csv,脚本 analysis/29_enrichment.R + tools/enrich_win.py

六、代码改动

文件改动
analysis/_region_io.Rgcst_beta 分支;两类 GCST 按列名解析列号;缓存键加入文件签名
analysis/05_hyprcoloc.RFMT_MAP 扩为三分支
analysis/04_ldsc.R修断点续跑缺陷(见下)
analysis/27,29,31,32新增四个脚本

修掉的一个静默错误

04_ldsc.R 原本以「.sumstats.gz 文件是否存在」决定是否跳过 munge。 换数据源后它照样 skip munge(已存在)复用旧源的 munge 产物, rg 仍报 0.886 —— 换源等于没换,且不报任何错

已改为指纹判据:源文件(名/大小/mtime)+ N + fmt 任一变化即作废重算; 指纹在 munge 成功之后才落盘,中途失败下次会重算,不会留下"看似有效"的产物。

为什么必须按列名解析列号

实测 GCST90824163rsid第 9 列GCST90013791第 10 列。 写死列号会读到错误的列且完全静默(区域读到 0 行 → 该位点被跳过,不报错)。

七、两个环境坑

1. 大文件下载必须走 Windows 侧

WSL 在 NAT 模式下够不到 Windows 的 127.0.0.1 代理(每条 wsl 命令开头的警告即此),裸连 EBI 约 26 KB/s; Windows 侧的 Git Bash 有 HTTP_PROXY/HTTPS_PROXY/ALL_PROXY = 127.0.0.1:10808,curl 自动读取,约 8.8 MB/s —— 差约 300 倍。 g:Profiler 等外部 API 同理,也必须从 Windows 侧调。

2. curl -C - 会把已完整的文件越续越大

本地文件达到或超过远端 Content-Length 时,续传会继续往末尾追加,产生比远端还大的坏文件,且每轮 md5 都不同。 "重试到 md5 匹配"的循环反而在持续破坏文件。

正确做法:续传前先比对 Content-Length;或直接下到临时文件,校验通过后才替换(坏文件改名保留,不删)。

八、配图

四项新增分析的配图(沿用项目统一规范:英文标注 + theme_mr + PNG 600dpi 与矢量 PDF 双份):

路径说明
diabetes_contrast_scatterresults/diabetes_contrast/figures/并发症效应 vs 糖尿病效应散点;对角线上方=对并发症作用更强;形状区分 MHC
diabetes_contrast_stacked同上各结局的四类构成堆叠条
source_replicationresults/source_compare/figures/三组数据源对照的四档判据条形图
enrichment_by_mhcresults/enrichment/figures/按 MHC 分组的通路富集——免疫信号在非 MHC 组消失
target_pleiotropyresults/targets/figures/候选靶点的 PheWAS 脱靶负担(对数轴),按分层着色

脚本 analysis/33_figures_new.R。F 盘另存一份 PNG 便于查看:F:\project\mr-pipeline-r9\results_key\figures\

出图时踩的坑

首版图例与脚注被右边缘截断(项目此前也踩过)。已用 guide_legend(nrow = 2) 把图例排成两行、 caption 手动插入换行、并加宽画布解决。出图后必须实际看一眼渲染结果ggsave 不会因为文字超出边界而报错。

九、数据清单

文件(D:\mrdata\outcome\用途
GCST90824163.h.tsv.gz外部 T1D 主分析(McGrail 2026)
GCST90013791.h.tsv.gzT1D 零重叠复制(Crouch 2025)
GCST90475667.tsv.gzT2D 零重叠敏感性(MVP),md5 f7dcf901…
GCST90475661.tsv.gz旧 T1D,已退役保留

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