主题
我们 vs 原始实现 · 方法与数据差异对照
本页系统对比我们的流水线与原始实现(
MR code/里的 8 个.Rmd+ 脚本)在架构、数据、方法、结果上的异同,供审阅与论文写作时查证。 每项标注:✅验证相同(独立复现出原始实现精确结果)· ≈等价(同方法、结果性质相同)· ➕扩展(我们做得更多)· 🆕新增(原始实现没有)· ⏳待做。
一、总览:原始实现 8 步 → 我们的对应
| 原始文件 | 分析 | 我们的实现 | 判定 |
|---|---|---|---|
| 1_r9_mr_diabetes | cis-pQTL MR 打并发症 | analysis/01_screen.R / legacy/batch_screen.R | ✅ 验证相同 + ➕扩展 |
| 2_diabete_validation | T1D/T2D 验证 | outcome_manifest.csv(GCST/Mahajan) | ✅ 验证相同 |
| 3_r9_upsetR | UpSet 重叠 | analysis/02_visualize.R | ≈ 等价 |
| 4_r9_hyprcoloc | HyPrColoc 共定位 | 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_phewas | PheWAS 多效性 | analysis/03_phewas.R | ≈ 等价(自动化) |
| 7_network | 蛋白-疾病网络 | 阶段三:analysis/02_visualize.R(仅MR)· ➕ 阶段六:analysis/06_network.R(MR∩共定位∩PheWAS 整合靶点网络) | ≈等价 + ➕扩展 |
| 8_sensitivity_AMD | AMD 敏感性 + LDSC | AMD 结局 + analysis/04_ldsc.R | ≈ 等价 + ➕扩展 |
二、架构差异(组织方式)
| 原始实现 | 我们 | |
|---|---|---|
| 组织 | 8 个编号 .Rmd 全平铺,各自独立 | 引擎(R/) + 驱动(根目录) 两层 |
| 路径 | 硬编码绝对路径(/Users/yicongliu/...) | 相对路径 + config.yaml 配置驱动 |
| 复用 | 换课题需逐个改 .Rmd | 换课题只改配置,引擎不动 |
| 风格 | 分析笔记本 | 软件流水线 |
🆕 我们多了一层可复用引擎(原始实现没有),这是"换课题只改 config"的基础。
三、数据差异(最重要)
3.1 结局范围 ➕扩展
| 原始实现 | 我们 | |
|---|---|---|
| 并发症数 | ~5 个(糖网/黄斑/新生血管青光眼/肾病/神经) | R9 23 个 + R13 14 个(含基础病/验证/复制结局) |
| FinnGen 版本 | 仅 R9 | R9 + R13 双版本 |
| 新增眼病 | — | 🆕 增殖性DR、视网膜NOS、视网膜动/静脉阻塞、玻璃体积血、AMD(+湿/干亚型) |
| 新增全身 | — | 🆕 自主/单/多神经病变、外周血管、酮症酸中毒、低血糖、多并发症合并 |
3.2 T1D/T2D 数据源 ✅相同
| 原始实现 | 我们 | |
|---|---|---|
| T2D | Mahajan noUKBB(hg37 位置匹配) | ✅ 相同 |
| T1D | GCST90475661 | ✅ 相同 |
| 🆕 额外 | — | 🆕 加跑 FinnGen 自己的 T1D/T2D 作对照(发现其广义定义致显著数虚高) |
3.3 病例数来源 ➕更严谨
- 原始实现:脚本里硬编码病例数
- 我们:➕ 从官方 FinnGen manifest 提取(
outcome_manifest.csv),GCST/Mahajan 经文献核实(Mahajan 55,005/400,308;T1D 现为GCST9082416320,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,557(discovery 队列)——因工具表取的是 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 浮点噪声):
| 结局 | 原始实现 | 我们 |
|---|---|---|
| 糖网 Retinopathy | 24 | 24 ✅ |
| 肾病 Nephropathy | 9 | 9 ✅ |
| 神经 Neuropathy | 5 | 5 ✅ |
| 新生血管青光眼 | 0 | 0 ✅ |
| T1D (GCST) | 21 | 21 ✅ |
| T2D (Mahajan) | 7 | 7 ✅ |
5.2 ⚠️ 有 1 处小差异(已定性,非 bug)
| 结局 | 原始实现 | 我们 | 原因 |
|---|---|---|---|
| 黄斑 Maculopathy | 18 | 19 | 多 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(每蛋白一行判决)。详见 下游分析。
六、我们额外做的(原始实现没有)🆕
- R13 版本全并发症分析(病例数比 R9 多 30-50%,功效更强)
- 发文章级汇总表(
SUMMARY_publication.csv:每结局 病例/对照/工具数/minF/medianF/显著数) - 图片 600dpi + 矢量 PDF(原始实现 300dpi PNG)——可 Illustrator 编辑
- 断点续跑(删/加结局快速重分析)
- 人群祖先防呆 + 配置驱动可复用引擎
- 完整文档站(本站 14+ 页)
七、一句话总结
凡是直接复现的核心分析(MR、T1D/T2D 验证),结果与原始实现逐行相同,证明方法正确无误; 其余为"同方法、我们做得更多"(结局更全、双版本、LDSC 全矩阵、HyPrColoc 判定升级、系统化 PheWAS、IAMDGC 独立复制、发表级输出)。全链已跑通,无实质待办。黄斑差 1 个是 FDR 临界抖动,非错误。