Skip to content

我们 vs 原始实现 · 方法与数据差异对照

本页系统对比我们的流水线原始实现MR code/ 里的 8 个 .Rmd + 脚本)在架构、数据、方法、结果上的异同,供审阅与论文写作时查证。 每项标注:✅验证相同(独立复现出原始实现精确结果)· ≈等价(同方法、结果性质相同)· ➕扩展(我们做得更多)· 🆕新增(原始实现没有)· ⏳待做


一、总览:原始实现 8 步 → 我们的对应

原始文件分析我们的实现判定
1_r9_mr_diabetescis-pQTL MR 打并发症analysis/01_screen.R / legacy/batch_screen.R✅ 验证相同 + ➕扩展
2_diabete_validationT1D/T2D 验证outcome_manifest.csv(GCST/Mahajan)✅ 验证相同
3_r9_upsetRUpSet 重叠analysis/02_visualize.R≈ 等价
4_r9_hyprcolocHyPrColoc 共定位analysis/05_hyprcoloc.R(引擎 R/09_hyprcoloc.R已完成(R9 23 / R13 31 蛋白)
5_r9_data_clean清洗 hyprcoloc 输出已并入 analysis/05_hyprcoloc.R 的汇总(hyprcoloc_verdict.csv✅ 完成
6_r9_phewasPheWAS 多效性analysis/03_phewas.R≈ 等价(自动化)
7_network蛋白-疾病网络阶段三:analysis/02_visualize.R(仅MR)· ➕ 阶段六:analysis/06_network.R(MR∩共定位∩PheWAS 整合靶点网络)≈等价 + ➕扩展
8_sensitivity_AMDAMD 敏感性 + LDSCAMD 结局 + analysis/04_ldsc.R≈ 等价 + ➕扩展

二、架构差异(组织方式)

原始实现我们
组织8 个编号 .Rmd 全平铺,各自独立引擎(R/) + 驱动(根目录) 两层
路径硬编码绝对路径(/Users/yicongliu/...相对路径 + config.yaml 配置驱动
复用换课题需逐个改 .Rmd换课题只改配置,引擎不动
风格分析笔记本软件流水线

🆕 我们多了一层可复用引擎(原始实现没有),这是"换课题只改 config"的基础。


三、数据差异(最重要)

3.1 结局范围 ➕扩展

原始实现我们
并发症数~5 个(糖网/黄斑/新生血管青光眼/肾病/神经)R9 23 个 + R13 14 个(含基础病/验证/复制结局)
FinnGen 版本仅 R9R9 + R13 双版本
新增眼病🆕 增殖性DR、视网膜NOS、视网膜动/静脉阻塞、玻璃体积血、AMD(+湿/干亚型)
新增全身🆕 自主/单/多神经病变、外周血管、酮症酸中毒、低血糖、多并发症合并

3.2 T1D/T2D 数据源 ✅相同

原始实现我们
T2DMahajan noUKBB(hg37 位置匹配)✅ 相同
T1DGCST90475661✅ 相同
🆕 额外🆕 加跑 FinnGen 自己的 T1D/T2D 作对照(发现其广义定义致显著数虚高)

3.3 病例数来源 ➕更严谨

  • 原始实现:脚本里硬编码病例数
  • 我们:➕ 从官方 FinnGen manifest 提取(outcome_manifest.csv),GCST/Mahajan 经文献核实(Mahajan 55,005/400,308;T1D 现为 GCST90824163 20,355/797,363

2026-07-27 更正:此处原写的 T1D「18,942/501,638」是 Chiou 2021(GCST90014023)的样本量,而实际下载到的文件是 GCST90475661(16,971/418,767),且该数据集经标志位点核验实为 T2D 主导。现已换源为 GCST90824163。详见外部 T1D 数据源问题


四、方法差异

分析方法一致?差异说明
MR 估计✅ 相同单 SNP Wald ratio + per-outcome FDR,harmonise_data(action=2)
暴露样本量 N🔧 我们修正原始实现用 54,219(UKB-PPP 全队列);我们改为 34,557discovery 队列)——因工具表取的是 discovery 效应量列(BETA/SE/A1FREQ/log10p discovery),N 须与之匹配。仅影响 R²;F≈β²/se² 与 N 无关,MR 效应估计、显著蛋白集均不变(实测逐列验证)
T2D 位置匹配✅ 相同hg37 chr:pos:A0:A1 键匹配(复现原始实现 clean_variant 逻辑)
F 统计量🆕 新增我们在筛查输出里每工具都算 F/R²(原始实现主 MR 有、批量筛查我们补齐)
人群祖先校验🆕 新增我们加了 LD 面板↔暴露祖先一致性断言(防非欧数据误用 EUR 面板)
PheWAS✅ 相同都用 OpenGWAS;原始实现手动查存 csv,我们用 ieugwasr::phewas + token 自动化
LDSC✅ 相同都用 GenomicSEM munge+ldsc + eur_w_ld_chr
HyPrColoc✅ 引擎相同hyprcoloc() 多性状共定位;判定 PP>0.7 且蛋白在簇内(阈值写在 config)

五、结果差异

5.1 ✅ 已验证逐行相同(核心 MR)

R9 独立复现原始实现精确结果(beta 差 ≈ 1e-16 浮点噪声):

结局原始实现我们
糖网 Retinopathy2424
肾病 Nephropathy99
神经 Neuropathy55
新生血管青光眼00
T1D (GCST)2121
T2D (Mahajan)77

5.2 ⚠️ 有 1 处小差异(已定性,非 bug)

结局原始实现我们原因
黄斑 Maculopathy1819多 1 个 BCL2L15(FDR=0.0489,卡在 0.05 边界)。同一输入文件,差异来自进入 BH-FDR 的检验数微小不同 → 临界抖动,非方法错误

5.3 ≈ 同方法但非逐字节相同

  • PheWAS:我们用 token 重新查(22,473 关联/243 SNP,查询日期 2026-07-18;OpenGWAS 实时库重查会变动),非照抄原始实现 csv;OpenGWAS 库版本/查询时间可能有别,但性质与结论一致(识别 APOE/ABO/HLA 等高多效工具)
  • LDSC:➕ 我们做 8 病遗传相关全矩阵,原始实现只做 AMD↔DME;方法相同,非 1:1 对比

5.4 ✅ HyPrColoc + 结果清洗(已完成)

  • HyPrColoc(原始实现 4_hyprcoloc)+ 结果清洗(原始实现 5_data_clean):已完成,R9 23 蛋白 / R13 31 蛋白。判定升级为两条件PP>0.7 且蛋白自己在簇内),并入 analysis/05_hyprcoloc.R 一步出 hyprcoloc_verdict.csv(每蛋白一行判决)。详见 下游分析

六、我们额外做的(原始实现没有)🆕

  1. R13 版本全并发症分析(病例数比 R9 多 30-50%,功效更强)
  2. 发文章级汇总表SUMMARY_publication.csv:每结局 病例/对照/工具数/minF/medianF/显著数)
  3. 图片 600dpi + 矢量 PDF(原始实现 300dpi PNG)——可 Illustrator 编辑
  4. 断点续跑(删/加结局快速重分析)
  5. 人群祖先防呆 + 配置驱动可复用引擎
  6. 完整文档站(本站 14+ 页)

七、一句话总结

凡是直接复现的核心分析(MR、T1D/T2D 验证),结果与原始实现逐行相同,证明方法正确无误; 其余为"同方法、我们做得更多"(结局更全、双版本、LDSC 全矩阵、HyPrColoc 判定升级、系统化 PheWAS、IAMDGC 独立复制、发表级输出)。全链已跑通,无实质待办。黄斑差 1 个是 FDR 临界抖动,非错误。

相关:下游分析 · 批量筛查 · R9 并发症清单

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