Skip to content

口径核查问答(2026-08-04)

本页汇总 2026-08-04 一轮追问中查实的问题。每条都标明实测还是推断, 未能核实的直接写「不知道」。凡涉及数字的均现场从 results/ 重算,未凭记忆书写。

本页最重要的一条

第五节记录了一个已确认、尚未修复的真 bug:外部 T1D 源的等位频率列整列反转。 修复前,T1D 相关的方向结论不可对外使用。技术细节见 谐化与定向过滤 · 第八节


一、导师文档里的「45」是什么?我们是多少?

45 在他自己的文档里就有两处口径

位置写法
正文(段 34)"a total of 45 significant protein–trait associations"
图注(段 79)"Fig 1. MR significant(45 proteins)"

同一个 45,一处是「关联数」、一处是「蛋白数」。 这两个不可能同时成立—— 他下一段自己就写了「Three proteins were shared between T1D and T2D」, 有蛋白跨多个性状显著时,关联数必然大于蛋白数。

附带查出第二处不一致:正文写 "four major diabetic complications: nephropathy, retinopathy, neuropathy, and maculopathy"——只有四个,没有新生血管性青光眼; 但他的代码 1_r9_mr_diabetes.Rmd L267 实际读了 finngen_R9_DM_NEOVASCULAR_GLAUCOMA.gz。 又是文档与代码对不上。

我们的数字(现场重算)

口径关联数唯一蛋白数
他正文所说的 4 个并发症5731
5 个并发症(含青光眼)5731
全部 7 个结局(5 并发症 + T1D + T2D)14295

逐结局:T1D 57、T2D 28、糖网 24、黄斑 19、糖肾 9、神经 5、新生血管性青光眼 0

青光眼零个显著,所以 4 个与 5 个并发症的数字相同——但他正文写「四个」在文字上仍是错的。

为什么差这么多(45 vs 142)

差额主要来自两个基础病而非并发症:我们 T1D 57 + T2D 28 = 85 条。 而他那两支的输入都有问题——T1D 数据源表型标错、T2D 匹配键静默丢 42.3% 工具(见第四节)。

并发症那一支反而是可比的:糖网他 24 个、我们 24 个,逐条吻合到 9.99×10⁻¹⁶。

⚠️ 给合稿的提醒

若 Table 1 要写「45 significant associations」,必须: ① 「45 proteins」与「45 associations」二选一;② 写清分母口径(几个结局、含不含青光眼、T1D 用哪个源)。 否则审稿人对照图注与正文即可发现。


二、其他并发症的结果和导师一样吗?

不知道——没法比。

F:\project\MR code\ 里只有 significant_results_retinopathy.csv 一个结果文件。 其余四个(黄斑、糖肾、神经、新生血管性青光眼)的 significant_results_*.csv 不在目录里, 他的 UpSet 脚本读入过这些文件名,说明本地跑出来过,但没有给我们。

已实测的部分:输入完全相同

结局他实际读的文件他写的例数我们差异
糖网finngen_R9_DM_RETINOPATHY_EXMORE.gz10,41310,413
黄斑病变finngen_R9_DM_MACULOPATHY_EXMORE.gz3,5723,572
新生血管性青光眼finngen_R9_DM_NEOVASCULAR_GLAUCOMA.gz1,1001,100
糖肾finngen_R9_DM_NEPHROPATHY_EXMORE.gz4,1114,111
神经病变finngen_R9_DM_NEUROPATHY.gz2,8432,843

推断(不是实测

其余四个很可能也一致,依据是两条已实测事实:输入相同;实现等价(糖网 24/24 同一 SNP、 β 与 se 最大差 9.99×10⁻¹⁶)。且那个 42.3% 丢工具的问题特定于 T2D(Mahajan)文件, 不影响 FinnGen 端点。

措辞纪律

在拿到他另外四个 CSV 之前,不能对外说「我们和导师的并发症结果完全一致」, 只能说「糖网实测一致,其余因缺其结果文件未能比对」。

行动项:向导师索取那四个 significant_results_*.csv,拿到后按糖网同一套逐条比对 (蛋白集合、工具 SNP、β、se),可把「推断」变成「实测」。


三、为什么 LTB 在我们这里掉出候选?为什么他的共定位里还有 LTB?

LTB 并没有「不显著」

结局βFDR
糖网+0.6529.05×10⁻¹¹显著
黄斑病变+1.0683.45×10⁻¹⁰显著
糖肾+0.8451.07×10⁻⁶显著
神经病变+0.5780.171不显著
新生血管性青光眼−0.4650.936不显著
1 型糖尿病+1.2202.16×10⁻³¹显著
2 型糖尿病未被检验(工具 rs2395470 不在 Mahajan 文件里)

它掉出候选是三道独立过滤的结果

  1. 位于 MHC 区(chr6:31,267,484)→ 分层规则 MHC 一票否决 → C 级
  2. 糖尿病对照臂判为「糖尿病驱动」——它对 T1D 的 β=1.220 大于对任何并发症的效应 (黄斑 1.067、糖肾 0.845、糖网 0.652)
  3. 共定位不支持:判定为「不支持(仅疾病成簇,蛋白未进簇)」

外加 PheWAS 脱靶 125 个性状,标记为「高多效-成药需谨慎」。

为什么他的共定位里有 LTB —— 这是根因 4 最干净的实例

LTB 的 hyprcoloc 原始输出:

protein  traits                     posterior_prob  protein_in_cluster
LTB      Nephropathy, Retinopathy   0.9997          FALSE

喂进去的是 {LTB, 糖肾, 糖网},返回的簇成员是 Nephropathy, Retinopathy——LTB 不在里面。 这是糖肾与糖网之间的共定位(两者 rg=0.966,真实且预期之中),与 LTB 无关。

而他的代码 4_r9_hyprcoloc_newdiabete.Rmd L431–432 无条件贴上 protein = "LTB", 于是这一行看起来就是「LTB,后验 0.9997」,排位还很靠前。

全库统计:后验过阈的 28 行里,15 行蛋白根本不在簇内——超过一半。 这正是「20 个蛋白里 11 个从未进过簇」的产生机制。

详见与导师代码逐条对比 · 第五节


四、「并发症特异 10 条 / 18%」与 UpSet 图的 13 个对不上?

两个数都对,是同名不同义。

表 5-2 的 10UpSet / 一页看全的 13
单位关联条数蛋白个数
分母57 条可比关联31 个并发症显著蛋白
判据同一工具变异在糖尿病端 p ≥ 0.05蛋白在 T1D、T2D 上都未达 FDR 显著
比较对象只跟「信号更强的那一个」糖尿病比跟 T1D 与 T2D
  • 口径 A 的 10 条只涉及 6 个蛋白:BTN2A1(4 条)、BTN3A2(2 条)、ERMAP、APOL1、IFNAR1、VWC2L
  • 口径 B 的 13 个:ACRBP、AOC1、APOL1、BTN2A1、BTN3A2、CLPS、ERMAP、GALNT3、IFNAR1、 LACTB2、TIGIT、TPPP3、VWC2L

差的 7 个是怎么来的

ACRBP、AOC1、CLPS、GALNT3、LACTB2、TIGIT、TPPP3 根本没进那 57 条—— 它们在糖尿病端没有可用工具,被判为「无法判定(糖尿病端缺工具)」。

⚠️ 所以 13 这个数偏宽松:口径 B 把「测不了」当成了「测了没信号」。 这正是本项目反复强调的「『没测』与『测了没发现』是两回事」。

建议改名(把口径写进标签本身)

现称建议
13 个并发症显著且糖尿病端未达显著(含糖尿病端无工具者)——13 个蛋白
10 条同一工具在糖尿病端 p ≥ 0.05——10 条关联 / 6 个蛋白

顺带一个干净的对应关系

口径 A 的 6 个蛋白里,BTN2A1 与 BTN3A2 都在 MHC 区(C 级)。 真正非 MHC 的只有 ERMAP、APOL1、IFNAR1、VWC2L 四个——其中三个正是 A 级候选


五、我们的 MR 方向对吗?

并发症四端点与 T2D:实测通过

tools/verify_harmonise.R 逐结局检查三项(EA 逐条对齐、b == β结局/β暴露、无残留模糊回文):

结局工具数EA 错位b 与 β 之比最大差eaf 相关
糖网1,58703.77×10⁻¹⁵0.9841 ✅
黄斑病变1,58700.9841 ✅
糖肾1,58704.44×10⁻¹⁵0.9841 ✅
神经病变1,58705.11×10⁻¹⁵0.9841 ✅
2 型糖尿病1,61405.55×10⁻¹⁶0.9991 ✅
1 型糖尿病1,72205.77×10⁻¹⁵−0.5931

★T1D 支线:已确认的真 bug,尚未修复

外部 T1D 源 GCST90824163.h.tsv.gzeffect_allele_frequency 整列反转 (以 1000G EUR 为第三方,1,276 个非回文可比位点中 93.7% 判为反转,相关 −0.9922)。

由于 harmonise_data(action=2) 判断回文 SNP 链方向的唯一依据就是等位频率, 喂反的频率导致 220 个回文工具(12.8%)的 β 符号被错误翻转

不受影响:四个并发症端点、T2D、T1D 的显著蛋白集合与 p/FDR(符号翻转不改 |β|、se、p)、 T1D 的 1,502 个非回文工具、三个候选、共定位、跨平台、赢者诅咒、反向 MR、LDSC。

受影响:「方向背离」6 条里 5 条被重判(TRIM40×2、SIGLEC5×2、WARS;GALNT3 不受影响)——★2026-08-05 修复后实测:这 5 条全部翻正并归入「糖尿病驱动」,方向背离由 6 条降为 1 条37%/63% 主句数字可能微调

完整技术细节、证据与修复计划见 谐化与定向过滤 · 第八节


六、MR 结果能反映 LDSC 吗?两者有对应关系吗?

不能,也不应该。 两者问的不是同一个问题。

LDSC 遗传相关cis-pQTL MR
问什么两个性状之间的全基因组遗传共享一个暴露 → 一个结局的因果效应
用多少变异全基因组所有 SNP(且排除 MHC)单个 cis 变异
反映什么多基因背景的重叠某个位点上的局部因果作用

「两个病 rg=0.95」完全不排除「同一个蛋白在两者上效应不同」——rg 是几十万个位点的平均, MR 是一个位点。拿 rg 去校验单个 MR 命中是错配的。

但在本课题里有三处真实对应

① rg 给「本该复制」提供期望值 黄斑与糖网 rg = 0.946,本该高度一致。实际 19 个黄斑显著蛋白里 12 个在糖网端仍 FDR 显著 (符合预期),而三个 A 级候选一个都不显著——个别候选偏离群体基线即为红旗

② rg 直接诊断出数据源错误 T1D↔T2D 现在 rg = 0.087(p=0.011),符合两者病因不同。换源前用 GCST90475661 时是 0.886 ——这个异常高的 rg 正是判定该数据集「标签 T1D、实为 T2D 主导」的关键证据。

③ ★rg 是标题主句的独立佐证(此前未用上)

并发症 ↔ 2 型糖尿病rg
糖网0.744
糖肾0.693
黄斑病变0.680
神经病变0.591

并发症与 T2D 的遗传相关高达 0.59–0.74。若 FinnGen 的并发症端点真的只测 「在糖尿病之上额外得并发症」,rg 不该这么高——它这么高,正因为对照是一般人群、 端点里混着「先得糖尿病」这一段。

对照着看更清楚:并发症之间 rg 0.94–0.97(糖网↔糖肾 0.966、糖网↔黄斑 0.946), 并发症↔T2D 0.59–0.74。两层结构一目了然。

这是完全独立于 MR 的证据,支持「多数关联反映糖尿病易感性」这一主句, 且来自全基因组、不依赖任何单个蛋白或工具变异的假设。

必须同时写的限制

rg 高也可以来自真实的共享病因(糖尿病确实导致并发症), 所以它是佐证而非独立证明。真正定性的仍是探针位点实测 (R9 糖网端 TCF7L2 p=8.7×10⁻²⁹、FTO p=9.6×10⁻⁸)。

建议:把 ③ 写进摘要或 Results 第一节,与糖尿病对照臂那一节挂钩。 现在 LDSC 一节是独立叙述的,挂上之后主句就从「一条 MR 层面的观察」 变成「MR 与全基因组遗传结构两条独立证据指向同一结论」。


相关页面

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