Skip to content

修复前后对比(2026-07-27 全量核查修复轮)

这页干什么

本轮全量核查(7 轮,54 项问题)后的修复,哪些数字变了、哪些没变、为什么。 凡是变了的都给出「旧值 → 新值 + 变化原因」,便于回看与写作时引用。 完整依据见 F:\project\MR全量核查-20260727.md(§0–§15)。

一、结论层面:什么没变(重要)

先说没变的——这决定了旧结论哪些还能直接用:

说明
各并发症显著蛋白数糖网 10、黄斑 9、新青 0、神经 4、糖肾 6FDR 为 by_outcome 分组,删基础病不影响其余结局
AMD 家族显著蛋白数AMD 33、湿 26、干 25同上
AMD 共定位支持候选9 个(TNFRSF10A/APOE/PILRA/PILRB/CASP10/CSF2/TGFB1/SPRY2/WARS)阈值仍是 PP>0.7,未变
A1 / A2 分层AMD 6 A1 + 3 A2;DM 0 A1 + 1 A2(APOL1)见下方「APOE 为什么仍是 A1」
IAMDGC 复制59/81 ≈ 73%(AMD 23/32、干 17/24、湿 19/25)修正样本量后结果不变(Steiger 实测剔 0 个)
外部复制(DM 家族)糖网 4/10、神经 1/4、糖肾 1/6未变
并发症之间的 LDSC rg糖网–黄斑 0.855、糖网–糖肾 0.617、神经–糖肾 0.748…换 LDSC 锚不波及它们,一个数没变
deCODE 平台复制136 配对、方向一致 79.4%、两平台都显著同向 83.6%未变
SCALLOP 对照共测 740、方向一致 81/82/81/81%未变

二、变了的数字

2.1 ★ 外部 T1D 数据源整体更换

AccessionGCST90475661GCST90824163
出处Verma Science 2024(MVP,2068 个 phecode 批量 GWAS)Nat Genet 2026-04-30, PMID 42062540
欧洲人 病例/对照16,971 / 418,76720,355 / 797,363
格式OR + ci_upper/lower(standard_error 全为 #NAGWAS-SSF v1.0 harmonised:beta + standard_error 直给
buildGRCh38GRCh38

换源原因:旧数据经实测不是干净的 T1D,遗传结构以 T2D 为主。详见 外部 T1D 数据源问题

新旧数据在标志位点上的对照(同一套检验,最有说服力的一张表)

位点属性新 GCST90824163旧 MVP GCST90475661
rs9273363 (HLA-DQB1)T1D 头号β=1.646 → OR 5.19,p=5×10⁻³²⁴OR 0.770(倒数 1.30)
rs2187668 (HLA-DQA1)T1Dβ=1.015 → OR 2.76,p=7.3×10⁻⁴³OR 0.764(倒数 1.31)
rs689 (INS)T1D 第二强β=0.733 → OR 2.08,p=2.8×10⁻³⁰⁵OR 0.942(几乎无效)
rs2476601 (PTPN22 R620W)T1D 头号非 HLAOR 1.90(倒数),p=5.8×10⁻¹⁸⁴OR 1.133
rs7903146 (TCF7L2)T2D 头号p=0.67(完全无效)p=9.5×10⁻⁶⁶
rs1801282 (PPARG)T2Dp=0.061(无效)✅p=7.0×10⁻⁵ ❌
rs13266634 (SLC30A8)T2Dp=0.072(无效)✅p=8.9×10⁻⁸ ❌
chr6 MHC 最强OR 2.23–3.56,p=5×10⁻³²⁴OR 0.782(倒数 1.28)

新数据的 PTPN22 OR 1.90 与文献值完全吻合、HLA-DQ 达 5.19、T2D 三个标志位点全部无效 ——这是教科书级的 T1D 遗传特征。扫描 56,442,443 行,全基因组 top10 全落在 chr6:31.4–31.5 Mb(MHC I 类区)。

2.2 ★ LDSC 锚换成外部严格定义 → 结论比原版更强

本轮 LDSC 锚点走过三个版本,全部实测记录如下(糖网 STRICT 那一行):

锚来源糖网×T1D糖网×T2D倍差rg(T1D, T2D)
① FinnGen T1D_WIDE / T2D(原用)0.7950.06612×(未算)
② MVP GCST90475661 / Mahajan(中间态)0.2730.0318.8×0.886 ❌ 生物学不可能
GCST90824163 / Mahajan(定稿)0.627(SE 0.075)0.03120×0.087(SE 0.034)✅

版本 ② 是发现问题的关键:把 MVP 那份 phecode「T1D」当锚时, rg(T1D, T2D) = 0.886(SE 仅 0.046)——T1D 与 T2D 遗传上应基本独立(文献 ~0.1 量级), 0.886 不可能。顺此线索查出该数据实为 T2D 主导,于是换到版本 ③。

版本 ③ 的完整矩阵

糖网STRICT黄斑神经糖肾T1DT2D
糖网 STRICT1.0000.8550.2510.6170.6270.031
黄斑0.8551.0000.2050.7170.6630.250
神经0.2510.2051.0000.7480.4560.094
糖肾0.6170.7170.7481.0000.4850.233
T1D0.6270.6630.4560.4851.0000.087
T2D0.0310.2500.0940.2330.0871.000

结论反而更强,而且更难反驳

  • 糖网 × T1D = 0.627 vs × T2D = 0.031相差 20 倍(原 FinnGen 版是 12 倍)
  • 关键是:现在两个锚都是外部严格定义的数据,不再有「FinnGen 宽登记定义把 rg 抬高」这个质疑
  • 并发症之间的 rg(0.855 / 0.617 / 0.748 / 0.205 / 0.251 / 0.717)三个版本一个数都没变, 证明换锚只影响锚那一列,不波及并发症间关系

措辞:可以讲「糖网与 T1D 中度遗传相关(rg 0.63)、与 T2D 近乎无关(0.03),相差 20 倍, 明确指向 T1D 样自免/微血管机制」。原表述「中高」在版本 ① 下勉强、在版本 ③ 下用「中度」更准。

FinnGen 宽定义的偏差仍是可写的论证

FinnGen 宽登记定义同时抬高了 rg 与显著蛋白数: T2D_finngen 103 个显著 vs T2D_mahajan 28 个。这是同一现象的两个面, 支持「T1D/T2D 只用外部数据」这个决定。

2.3 h² 变化

性状旧(FinnGen 锚)新(外部锚,定稿)
4 个并发症0.1157 / 0.0737 / 0.0651 / 0.0935完全不变
T1D 锚T1D_WIDE 0.2382T1D_gcst 0.1682(SE 0.0150, z=11.19)
T2D 锚T2D 0.1621T2D_mahajan 0.1222(SE 0.0069, z=17.72)

2.3b 外部 T1D 的显著蛋白数:21 → 57

换源后 T1D_gcst 的 MR 显著蛋白由 21 个增至 57 个,工具数 1,687 → 1,722。 原因:新数据对照多 90%(797,363 vs 418,767)且表型干净,功效大幅提升。 R13_dm 家族显著关联总数因此由 78 → 114 条(并发症那 5 个结局的数值一个未变)。

2.4 共享蛋白森林图:17 → 5

「跨 ≥3 病」蛋白数17 个5 个
名单含 MANSC4/NOTCH2/APOE/ATP6V1G2/LTA/NCAN/NUDT5/PAM/SIGLEC5/TNXB/TRIM40/TSPAN8 等 12 个靠 T1D/T2D 凑数HCG22 / AGER / BTN2A1 / CFB / LTB

原因:02_visualize.R 原先把 overlap_matrix.csv全部列一视同仁, 而该矩阵含 T1D/T2D 基础病列,标题却写 "shared across >=3 diabetic complications"。 现在森林图与网络图只数并发症列(UpSet 仍保留全部结局,但标题标明含参照列)。

网络图同理:旧图边数并发症侧 29 条、基础病侧 195 条(87% 的边不是并发症),现只连并发症。

2.5 PheWAS 脱靶负担:从「全 0」到真实值

target_list.csvn_offtarget 此前全部为 0(因 06_network.R 早于 03_phewas.R 生成 3.5 小时):

蛋白
APOE0692
PILRA / PILRB047
TGFB1035
WARS026
CSF2018
CASP10014
TNFRSF10A07
SPRY200
APOL102

2.6 ★ APOE 为什么仍是 A1(而不是被降级)

修 H1 后 APOE 的脱靶负担变成 692(> PLEIO_MAX=100),按原逻辑它会被自动降为 B-高多效 并被四个下游脚本剔除。但同时修了 H11

原代码第 27 行注释写的是「高多效标记(不自动剔除,仅标记)」, 而 tier 判定链却把 pleiotropy_flag 放在 A1/A2 之前,一旦为真就永远到不了 A 级 ——代码与自身注释矛盾

且文献惯例是把 PheWAS 脱靶负担当作安全性注释 / 备选适应症线索,不是自动排除门槛 (Cell Genomics 全球生物库 proteome-wide MR;Alz Res Ther 2025 里 APOE2 仍是高优先靶点、 跨人群效应「最强且最稳定」)。PLEIO_MAX=100 也是本流水线自定的经验阈值 (docs 阶段六 §174 早已注明「不是文献标准」)。

修法:把多效性从 tier 链移出,改为 pleiotropy_flag + pleiotropy_note 两个独立列。 结果:

  • APOE 保持 A1,但带上「⚠高多效: 工具SNP在692个性状上Bonferroni显著」注释
  • AMD 仍是 6 A1 + 3 A2 = 9 个候选,与 PPT 的「9 个共定位支持候选」一致,PPT 不用改
  • 四个下游(08_replicate_iamdgc / 10_eqtl_coloc / 07_druggability / _singlecell_io) 的候选池经比对完全一致 → 无需重跑,省掉数小时与两次实时 API 调用

2.7 IAMDGC 样本量订正

manifest + 17_replicate_external.R16,144 / 17,832(= Fritsche 2016 IAMDGC 1.015,616 / 16,723(IAMDGC 2.0,文件表头实测)
复制结果59/8159/81(不变)

docs 与 PPT 在 2026-07-27 已订正为 2.0,但代码与 manifest 漏了。 另:真正在用的 6.47 GB 全量文件 IAMDGC_lateAMD_related_EUR_annotated.txt 此前从未进 manifest(数据溯源链断裂),现已入册为 AMD_iamdgc_full

2.8 其他数字订正

依据
deCODE 适配体数38 条36 条(★2026-08-03 查明真因:不是"只有 36 条",而是 4549_78_FUT57655_11_NT-proBNP 两个文件下载截断损坏、被静默跳过;且多适配体基因实为 APOL1、NPPB、TNFSF14,原写"仅 APOL1、TNFSF14"有误。两文件已重下修复,但复制层数值仍待重跑更新)decode_rep_mr_allaptamers.csv 实测
AGER×糖网 deCODE FDR7.9×10⁻⁶⁰1.91×10⁻⁵⁹旧值是核心-14 靶点版的 BH 分母(56/4);扩到全 34 靶点后应为 136/4
DR 单细胞「其他细胞类型」7%2.2–8.6%,均值 5.4%实测六类细胞阳性率
SMR 命中(DR 侧)「只有 TNXB」AGER + TNXB(均在 chr6 MHC 区)smr_robust_hits.csv × 13 靶点交集
SMR 命中(AMD 侧)「三个」五个(APOE/CASP10/TNFRSF10A/AGER/TNXB),扣除 MHC 后可用三个同上
ieugwasr 版本1.1.01.1.0.9000(开发版)phewas_provenance.csv
代谢物样本量619,372 与 599,249 混用论文 619,372|实际所用 EUR meta 599,249两个都对,但要分清
多组学矩阵 pQTL 层阈值PP ≥ 0.8PP ≥ 0.7(读 config)主链定稿值即 0.7;UKB-PPP 原文整合 pQTL×eQTL 亦用 PP≥0.7。影响:TGFB1(0.7604)、SPRY2(0.7395) 由黄格转绿格

三、新增的披露(原先没说的)

内容
Strunz 2020 数据源三性状共定位(pQTL+视网膜eQTL+疾病)实际用的是 Strunz,而它此前完全没出现在 PPT 的数据来源页与参考文献里;且「三性状共定位 0 个」与「EGA METR N=183/176」是两个不同分析,原先被缝成一句
CFH 视网膜层不复制视网膜 eQTL CFH×AMD b=+0.030 FDR 0.0099;同一工具在 IAMDGC 上 b=−0.006 FDR 0.757 —— 不显著且方向相反
DR 单细胞混入非糖尿病样本GSE165784 六例是 5 例 PDR + 1 例 RRD,代码建了 disease 列但 CellChat/Slingshot/定位全部混算;RRD 单样本贡献 32.6% 的小胶质细胞
AMD 单细胞 40.4% 分组未知GSE230348 的 50,723 细胞里 Unknown 组占 20,503(RPE 的 48.7%);「36 份→22 份入选」主因是分组未知被排除,不只是细胞数 <20
两层全阴性但从未报Chen 2023 Metabolon 专项代谢物(15 检验 FDR 全 >0.05,最小 0.209);Advani 视网膜 meQTL(13 靶点仅 1 个 CpG 拿到工具,p 全 >0.37)
PheWAS SNP 池口径183 个工具 SNP 中 128 个只因 T1D/T2D 显著。基础病退出主跑后未重跑 PheWAS(避免重查实时库改动已核对数字),故分母偏大、Bonferroni 判定偏保守,如实披露
组织定位为配对设计EGA METR 同一供体同时贡献 NSR + RPE(183+176=359 份),原按非配对分析;现改用 duplicateCorrelation(block=donor),logFC 方向量级不变、P 值更准
run_all.R 从未在真实数据上跑过config 的 demo 暴露/结局原是 tests 的玩具夹具(1,251 / 1,123 字节、假 rsID)→ 全套敏感性(Q/Egger/PRESSO/LOO/I²_GX/E-value)、双向 MR、STROBE-MR 报告、coloc.abf 在本课题从未产出。已改指真实数据。但单工具 cis-MR 数学上不适用多工具敏感性检验,这是设计使然,须在方法学中如实说明

四、相关


五、E 类(单细胞层)执行结果 — 含一处结论撤回

5.1 ⚠ MERTK「活化态丢失」这一层证据已撤下(六层 → 五层)

这是本轮最重要的变更。原先报的是 Slingshot 伪时序 ρ = −0.31,MERTK 随小胶质活化而下降。 按疾病分层重跑后发现,这个数字是两个人为因素叠加的产物:

  1. 混入了非糖尿病样本 —— GSE165784 的 6 例是 5 例 PDR + 1 例 PVR/RRD, 而 RRD 单例贡献了 32.6% 的小胶质细胞,原代码把它们一起算进了「DR 小胶质活化轨迹」。
  2. 任取了第 1 条支线 —— PDR 分层后 Slingshot 给出 6 条支线, 原脚本硬编码 pt[, 1],只报第 1 条。

逐支线方向自校验(稳态标记 P2RY12/CX3CR1/TMEM119 应随伪时序↓、 活化标记 SPP1/LGALS3/APOE/TREM2/GPNMB/CD68 应↑):

支线细胞数稳态↓ (/3)活化↑ (/6)方向可解释MERTK ρ
Lineage13,12631−0.178
Lineage23,07930−0.224
Lineage33,19631−0.217
Lineage42,78034−0.040
Lineage51,88634+0.121
Lineage61,53334+0.171

只有在轨迹方向讲不通的支线上 MERTK 才是下降的。 方向自校验通过的三条支线里, MERTK 的 ρ 是 −0.04 / +0.12 / +0.17,全部不为负。据此主动撤下该证据层, MERTK 由「六层收敛」改为「五层收敛」:遗传提名 → 表达↓ → 小胶质定位 → GAS6/PROS1 胞葬轴 → 双组织表达。

代码已改为输出全支线 ρ 矩阵(gene_pseudotime_rho_ALL_lineages.csv) 与方向自校验表(lineage_direction_check.csv),两份都进补充材料。

5.2 DR 单细胞:定位与通讯改为 PDR-only

聚类整合仍用全部 6 例(保证整合稳定),但定位 / 通讯 / 轨迹三项下游一律只在 5 例 PDR 内做; RRD 单例另出描述性对照表,n=1 不作任何推断

旧(混合 6 例)新(PDR only,5 例 7,145 细胞)
MERTK 小胶质平均表达0.710.98
MERTK 小胶质阳性率25%34.5%
其余细胞类型阳性率六类 2.2–8.6%,均值 5.4%五类 1.4–9.7%,均值 5.5%
CellChat 显著通路6973
CellChat 显著 L-R 对655701
TAM 轴 L-R46(GAS6/PROS1 → MERTK/AXL)

RRD 描述性对照(n=1,2,929 细胞):仅 4 个细胞类型、24 条通路 —— 与 PDR 不可比,仅存档。

5.3 AMD 单细胞:Unknown 组 20,503 → 0

根因是两层,都不是「元数据缺失」:

  1. 本地 amd_manifest.csv 只有 56 个样本,GEO 官方有 75 个
  2. 补齐后仍剩 4 个样本对不上 —— GEO 自身元数据不一致GSM7441367 的样本标题是 22-12359-mRPE,但其补充文件名为 GSM7441367_23-12359-mRPE_*(供体前缀 22 vs 23)。 同类问题见 GSM7441369 / GSM7441371 / GSM7441373,官方标注均为 Intermediate AMD。

修复:改用 GSM 号做主键(标题名仅作回退),并加硬自检 —— 任何样本匹配不到官方标注即 stop(),不再允许静默产生 Unknown 组。

AMD 细胞13,12132,453
正常细胞17,09918,270
Unknown20,5030
伪 bulk 入选样本22(AMD 10 / 正常 12)34(AMD 21 / 正常 13)
MERTK CPM 中位(AMD / 正常)19.9 / 17.632.5 / 16.4
Wilcoxon p0.820.076
log2FC+0.71(AMD 侧偏高)

方向要如实讲:样本量翻倍后 MERTK 仍未达显著(p=0.076), 但方向是 AMD 侧偏高,与「MERTK 功能丧失导致 AMD」的假说相反; 这与因果遗传层 MERTK 共定位 H4 仅 0.01、遗传不支持的结论是一致的。

5.4 对照口径(E5 / E6,Risteys 官方定义)

  • E5:我先前的担忧被证伪。 DM_RETINOPATHY_STRICTDM_NEPHROPATHY_EXMORE都是糖尿病人群内对照(对照须有 DIABETES_FG),差别只在排除范围。无需改动
  • E6:确认口径不同。 DM_NEOVASCULAR_GLAUCOMA 对照是一般人群(不要求 DIABETES_FG)。 该终点 0 个显著蛋白,保留并披露 —— 看到阴性结果再删终点属于选择性结局报告,不可做。

5.5 一处过程性问题(如实记录)

四个项目在 WSL 里都是 git cloneorigin = /mnt/f/project/<项目>)而非符号链接。 在 F 盘改脚本、在 WSL 跑 R,跑的是旧代码。实测比对:mr-pipelinedecode-rep 差异为 0 (→ 本轮 MR 主链重跑结果有效),multiomics-mr 差 1 个、dr-amd-targets 差 4 个, 均已同步并重跑。改完代码必须先同步再跑,已写入核查记录。


六、PPT 成品逐页核查(2026-07-28)

上面所有修复做完后,又对生成出来的两份 .pptx 二进制做了一次独立核查 (读 slide 文字与讲稿备注,把数字逐条对回 results/ 下的文件),查出 5 处问题,均已修

6.1 ⚠ 本轮重跑的 11 张图,一张都没进 PPT

这是最严重的一处。02_visualize / 04_ldsc / 06_network / 03_phewas 在 2026-07-27 21:32–21:58 重新生成了图,但 PPT 取图的目录 docs-site/docs/public/ 里对应文件仍是 07-22 的旧版——也就是说文字已经改成新数值、图还是旧的。 最典型:LDSC 热图文字写"糖网×T1D rg=0.63"(换锚后),图却是换锚前的 0.795。

命名在两侧不一致(volcano_allpqtl_volcano_dmforest_sharedpqtl_forest_amdldsc_rg_heatmapldsc_rg_dm),历史上是手工改名同步的、没有脚本。 本次同步前用 PNG 像素尺寸逐张比对确认了映射关系(5 组全部尺寸一致),不是靠文件名猜:

public 里的文件← results 里的来源尺寸校验
mrpipe/pqtl_volcano_dm.pngscreen_R13_dm/figures/volcano_all.png8400×6600 一致
mrpipe/pqtl_volcano_amd.pngscreen_R13_amd/figures/volcano_all.png8400×6600 一致
mrpipe/pqtl_forest_amd.pngscreen_R13_amd/figures/forest_shared.png5400×4200 一致
mrpipe/ldsc_rg_dm.pngldsc_R13_dm/figures/ldsc_rg_heatmap.png5400×4800 一致
mrpipe/ldsc_rg_amd.pngldsc_R13_amd/figures/ldsc_rg_heatmap.png5400×4800 一致

共同步 18 个文件(含新增 pqtl_forest_dm.pngldsc_h2_*network_*upset_*effect_heatmap_* 与 4 张 PheWAS 图)。

6.2 DR 分册缺"共享蛋白森林图"页

AMD 分册有森林图页,DR 分册没有 —— 意味着 H4 修复(共享蛋白 17 → 5)的成果 在 PPT 里完全看不见。已补为 DR 分册第 14 页(火山图之后,与 AMD 分册对称)。

6.3 两处页间自相矛盾

位置原文改为
DR 第 30 页结论带"活化沿伪时序连续展开""右图伪时序仅作细胞状态展示(该轨迹的活化方向解读已撤下,见下页)"
DR PheWAS 页讲稿"数据集计数用的是返回结果里的数据集数…阈值偏松"改为订正后口径(50,164、阈值净严 6.5 倍),并补上"脱靶扫描阈值越严越可能漏掉隐患"的方向提示

第二处尤其要紧:同一页的图注已经写了"已订正为 50,164",讲稿却还在念旧口径

6.4 "正文 vs 补充材料"页跟进

Fig2 补上森林图;补充材料加入"Slingshot 逐支线校验表"; "Steiger/F/敏感性"改为如实表述(单工具 cis-MR 数学上不适用多工具敏感性检验)。

6.5 一次自己造成的返工(记录在案)

第一次插入新页时把 figure_slide 写在源码中间,导致其后所有 slide 的创建索引 +1, 而 reorder() 里的索引还是旧的 → 整个 DR 分册页序错乱(背景页跑到第 9 页、 参考文献插到第 28 页)。已改为"在末尾创建、由 reorder 定位",与文件中既有的 "补齐的结果图(创建索引 35..39)"写法保持一致。

6.6 核对通过、未作改动的部分

PPTresults/ 实测
并发症显著数糖网10/黄斑9/神经4/糖肾6/青光眼0一致
AMD 家族33 / 湿 26 / 干 25一致
外部基础病T1D 57 / T2D 28一致
PheWASAGER 427/321、TNFRSF10A 7/6、CASP10 21/14一致
共享蛋白5 个≥3 个并发症的正好 5 个
LDSC0.63 / 0.03一致
图号顺序1→16 递增一致(且图号在渲染出的 PPT 里不显示,仅为源码标签;可见的 Fig1–Fig5 是投稿正文图编号,另一套体系)

仍未复核的:各图内部的点位标注(只核了生成时间、尺寸映射与配套数字); SCALLOP 81%、deCODE 79.4%/83.6% 为上一轮核对结果、本轮未重算; 50,164 会随 OpenGWAS 增长变化,临投稿须再查一次。

6.7 顺带查实:跨并发症"共享蛋白"全部位于 MHC

EUR.bim(GRCh37)对 117 个工具 SNP 查坐标, ≥3 个并发症的 5 个共享蛋白无一例外落在 MHC / 扩展 MHC (AGER 6:32.16 Mb、HCG22 6:31.02 Mb、CFB 6:31.91 Mb、LTB 6:31.24 Mb 在经典 MHC; BTN2A1 6:26.50 Mb 在扩展 MHC)。全部 119 个显著蛋白中有 18 个在 MHC。

→ 这个"共享"不能读成"5 个蛋白同时驱动多种并发症", 详见新增页MHC 区为什么是假阳性雷区

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