Skip to content

R9 方法学核查与共定位补齐(2026-07-30)

承接 R9 复现重跑(2026-07-29)。 本轮做了两件事:① 对全链路做一次彻底的方法学核查,查出 12 类缺陷; ② 从 Synapse 补下 49 个缺失的 UKB-PPP 区域文件,把共定位覆盖率从 48% 提到 100%

结论层面几乎没有变化——这正是本轮最有价值的产出:原先的候选靶点不是靠数据缺失撑出来的。

一、最终结果(补齐数据后)

补数据前补齐后
共定位评估蛋白数46 / 95(48%)95 / 95(100%)
共定位支持蛋白1013
两法对照对数90142
两法都支持1619
仅 coloc.abf 支持1013
仅 HyPrColoc 支持00
SuSiE 复核 / 两侧收敛 / 支持26 / 9 / 332 / 12 / 4
靶点分层 A / B / C / D3 / 4 / 11 / 133 / 4 / 11 / 13(完全相同)
A 级候选ERMAP、IFNAR1、APOL1ERMAP、IFNAR1、APOL1(无变化)
complonly 支持蛋白88(无变化)

原有 10 个共定位支持蛋白无一掉出,PP 值与性状集合逐字节一致。 新增三个:

新增簇 PP共定位对象
MINDY10.9906T2D
KIT0.9089T1D
ERI10.7809T2D

三个新增全部指向糖尿病本身,无一指向并发症——这解释了为什么 A 级候选没有变动: A 级的门槛是「并发症特异 + 糖尿病端无信号」,而新增的三个正好相反。

二、数据补齐

  • 缺失清单:missing_tars_20260730.csv(49 个蛋白的文件名 + Synapse ID)
  • 下载脚本:tools/dl_missing_tars.py(先落 .part,下完才原子改名;已有的自动跳过,可反复运行)
  • 实测:46 + 3 成功,0 失败,44.2 分钟,本地 tar 从 97 增至 146 个(50 GB → 75 GB)
  • 重跑脚本:tools/rerun_coloc_after_tars.sh(共定位 + 全部 11 个下游一条命令跑完)

为什么补数据不需要手动清缓存

.skip 标记的指纹里带了暴露 tar 的身份(文件名 + 大小):未下载时是 nofile:xxx.tar, 下载后变成 xxx.tar:549447680,指纹一变标记自动失效、自动重算。 这是刻意设计的——把失败永久固化成"这个蛋白没结果",正是本项目反复踩过的坑。

三、查出的 12 类缺陷

3.1 影响了已有数字的(4 类)

#缺陷后果
124/26 的结局格式分派缺 gcst_beta 分支GWAS-SSF 源被按 FinnGen 列位解析:beta 取到 rsid 列、se 取到样本量列、等位对调 → 区域静默读成 0 行。直接后果:NOTCH2×T1D 被记成"仅HyPrColoc"的假分歧,coloc.abf 漏掉 10 对 T1D
213_figure_locus.R 完全没传 fmt_map同上,且报了"未读到内容"仍继续出图(locus_NOTCH2.png 即如此产生)
305 断点续跑指纹不含数据文件身份T1D 换源后指纹一字未变,11 个蛋白复用了退役源算出的旧结果(NOTCH2 的 5 性状簇即由此而来)
4X 染色体编码不一致:protein_info.csv23,tar 内文件名用 chrXgrep 'chr23_' 永远落空,全库 39 个 cis 位于 X 的蛋白(ACE2、CD40LG、F9、GLA、IDS…)从未进入过共定位,一律被静默判为"暴露区域不足"

R13 家族需同步复核

第 4 条是代码层缺陷,不限于 R9。R13 家族的共定位结果同样漏掉了这 39 个蛋白, 将来重跑 R13 时必须按相同流程复核。

3.2 未影响数字但必须修的(8 类)

#缺陷修法
5_region_io.R 读空返回 0 行空表而非 NULL调用方 is.null() 判空全失效,空表流进 merge 后炸在 b_d * flip。两条路径(含 use_cache=FALSE)统一归一为 NULL
626 只在脚本末尾写一次盘崩溃时 24 对、约 1 小时计算全丢。改为逐对落盘 + 断点复用 + 跳过原因入表
705 汇总用 Sys.glob(_parts/*.csv)目标集合变化后孤儿分片仍被扫入。本轮处置:_parts 清空从零重算
8complonly 无代码路径全仓只有一行注释,靠手改向量临时跑再改回。已加正式 R9_dm_complonly 键 + 家族别名
9rel 正则在 05 内写两份(rel / NTEST放宽时漏改一处 → R9_dm_complonly 被当成数字参数报错。抽成 REL_PAT 常量
10rel 正则在 13 内写两份(rel / ONLY同上
1124 的对照表代码引用 best_pp_in_clu(该列只在 verdict 里,不在 shared 里)一直在报错,只因旧链条用 ; 串联忽略返回值、25 随后覆盖出正确结果才没被发现。已删除该重复实现,对照表由 25 独占
12gene→tar 解析在 _region_io.R05 各一份只给前者加了兜底,导致 MICB_MICA 下载后仍被跳过。抽成公共函数 resolve_tar()

3.3 病根:同一段逻辑存在多份副本

12 类里有 5 类(1、2、9、10、12)是同一个模式:同一段逻辑在多个脚本里各存一份副本,改一处漏一处。 本轮的系统性处置是把它们抽成公共函数:

  • make_fmt_map(MAN) —— 结局格式分派,05/13/24/26 四处共用
  • resolve_tar(idx, prot) —— 蛋白名 → tar 文件名,make_prot_reader05EXP_SIG 共用
  • REL_PAT —— 家族名正则,05/13 内部两处共用

重构后做了等价性验证:9 个家族逐一比对 + 全表 identical() == TRUE, 并端到端重跑确认 hyprcoloc_shared / hyprcoloc_results / hyprcoloc_verdict / coloc_susie_pairs 四个产物 md5 逐字节相同

四、三法共定位一致性

新增 analysis/34_figure_coloc_consistency.R,产出两张图与一张合表:

  • coloc_method_tiles.{png,pdf} —— 对 × 方法 的状态瓦片图,格内为各法后验概率
  • coloc_method_agreement.{png,pdf} —— 按「被哪几种方法支持」分组计数
  • coloc_three_method.csv —— 142 对的三法合表

SuSiE 只能作敏感性检查

32 对进入 SuSiE 复核,两侧均收敛仅 12 对(38%),24 对因外部 1000G EUR LD 面板 与实际样本失配而无法判定。文献共识是使用 in-sample LD,而 UKB-PPP / FinnGen 的样本内 LD 我们拿不到。

因此 SuSiE 不能作为与 HyPrColoc / coloc.abf 并列的第三重独立证据, 更不能把「未收敛」计入阴性——75% 的无法判定率会把结论完全带偏。 图与表中均将其单列为 Undetermined 状态。

五、环境坑(会导致误判,务必知悉)

$? 在本环境不可信

通过工具层执行 wsl bash -lc '...; echo "退出码=$?"' 时,$? 会被外层吞掉并给出 假的 0。本轮两次因此误报"已完成",实际脚本早已 Execution halted

判定成败一律改用日志内容:检查结束标记(如 RERUN DONE)是否出现、 Execution halted 计数是否为 0。同理,命令中的 $(...)$VAR、awk 的 $1 也会被吞, 需要时写成脚本文件再执行。

六、本轮产物

类型位置
完整备份(重跑前)backups/results_R9_planC_20260730.tar(6.35 GB)
结果快照(补数据前)results/_snapshot_before_tars_20260730/(8 张关键表)
缺失 tar 清单missing_tars_20260730.csv
三法合表results/hyprcoloc_R9_dm/coloc_three_method.csv
新图coloc_method_tilescoloc_method_agreement
汇报 PPTF:\project\汇报PPT\R9复现_糖尿病并发症MR.pptx(33 页)
归档(均未删除)_parts_stale_v1_20260730/_stale_skips_20260730/hyprcoloc_R9_dm_complonly_ADHOC_20260729/

七、下一步建议

  1. 多变量 MR(MVMR)——优先级最高。条件于糖尿病易感性 / HbA1c 直接估计并发症特异效应。 现有的「糖尿病对照」只是描述性比较,不是正式 MVMR;该领域文献普遍用 MVMR 处理同一问题。 当前管线无 MVMR 实现,需新增。
  2. 蛋白改变变异 / 表位注释——Olink 为亲和力平台,cis-pQTL 落在抗体结合表位会产生平台特异偏倚。 已有 deCODE(SomaScan)跨平台复制作三角验证,但缺逐候选的 PAV 标注,给 A 级三个候选补注释成本很低。
  3. R13 家族的 X 染色体复核——见 3.1 第 4 条。
  4. 视网膜 / RPE 组织 eQTL——受 EGA 数据准入限制,不宜排进关键路径。

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