主题
R9 方法学核查与共定位补齐(2026-07-30)
承接 R9 复现重跑(2026-07-29)。 本轮做了两件事:① 对全链路做一次彻底的方法学核查,查出 12 类缺陷; ② 从 Synapse 补下 49 个缺失的 UKB-PPP 区域文件,把共定位覆盖率从 48% 提到 100%。
结论层面几乎没有变化——这正是本轮最有价值的产出:原先的候选靶点不是靠数据缺失撑出来的。
一、最终结果(补齐数据后)
| 项 | 补数据前 | 补齐后 |
|---|---|---|
| 共定位评估蛋白数 | 46 / 95(48%) | 95 / 95(100%) |
| 共定位支持蛋白 | 10 | 13 |
| 两法对照对数 | 90 | 142 |
| 两法都支持 | 16 | 19 |
| 仅 coloc.abf 支持 | 10 | 13 |
| 仅 HyPrColoc 支持 | 0 | 0 |
| SuSiE 复核 / 两侧收敛 / 支持 | 26 / 9 / 3 | 32 / 12 / 4 |
| 靶点分层 A / B / C / D | 3 / 4 / 11 / 13 | 3 / 4 / 11 / 13(完全相同) |
| A 级候选 | ERMAP、IFNAR1、APOL1 | ERMAP、IFNAR1、APOL1(无变化) |
| complonly 支持蛋白 | 8 | 8(无变化) |
原有 10 个共定位支持蛋白无一掉出,PP 值与性状集合逐字节一致。 新增三个:
| 新增 | 簇 PP | 共定位对象 |
|---|---|---|
| MINDY1 | 0.9906 | T2D |
| KIT | 0.9089 | T1D |
| ERI1 | 0.7809 | T2D |
三个新增全部指向糖尿病本身,无一指向并发症——这解释了为什么 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 类)
| # | 缺陷 | 后果 |
|---|---|---|
| 1 | 24/26 的结局格式分派缺 gcst_beta 分支 | GWAS-SSF 源被按 FinnGen 列位解析:beta 取到 rsid 列、se 取到样本量列、等位对调 → 区域静默读成 0 行。直接后果:NOTCH2×T1D 被记成"仅HyPrColoc"的假分歧,coloc.abf 漏掉 10 对 T1D |
| 2 | 13_figure_locus.R 完全没传 fmt_map | 同上,且报了"未读到内容"仍继续出图(locus_NOTCH2.png 即如此产生) |
| 3 | 05 断点续跑指纹不含数据文件身份 | T1D 换源后指纹一字未变,11 个蛋白复用了退役源算出的旧结果(NOTCH2 的 5 性状簇即由此而来) |
| 4 | X 染色体编码不一致:protein_info.csv 用 23,tar 内文件名用 chrX | grep '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 |
| 6 | 26 只在脚本末尾写一次盘 | 崩溃时 24 对、约 1 小时计算全丢。改为逐对落盘 + 断点复用 + 跳过原因入表 |
| 7 | 05 汇总用 Sys.glob(_parts/*.csv) | 目标集合变化后孤儿分片仍被扫入。本轮处置:_parts 清空从零重算 |
| 8 | complonly 无代码路径 | 全仓只有一行注释,靠手改向量临时跑再改回。已加正式 R9_dm_complonly 键 + 家族别名 |
| 9 | rel 正则在 05 内写两份(rel / NTEST) | 放宽时漏改一处 → R9_dm_complonly 被当成数字参数报错。抽成 REL_PAT 常量 |
| 10 | rel 正则在 13 内写两份(rel / ONLY) | 同上 |
| 11 | 24 的对照表代码引用 best_pp_in_clu(该列只在 verdict 里,不在 shared 里) | 一直在报错,只因旧链条用 ; 串联忽略返回值、25 随后覆盖出正确结果才没被发现。已删除该重复实现,对照表由 25 独占 |
| 12 | gene→tar 解析在 _region_io.R 与 05 各一份 | 只给前者加了兜底,导致 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_reader与05的EXP_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_tiles、coloc_method_agreement |
| 汇报 PPT | F:\project\汇报PPT\R9复现_糖尿病并发症MR.pptx(33 页) |
| 归档(均未删除) | _parts_stale_v1_20260730/、_stale_skips_20260730/、hyprcoloc_R9_dm_complonly_ADHOC_20260729/ |
七、下一步建议
- 多变量 MR(MVMR)——优先级最高。条件于糖尿病易感性 / HbA1c 直接估计并发症特异效应。 现有的「糖尿病对照」只是描述性比较,不是正式 MVMR;该领域文献普遍用 MVMR 处理同一问题。 当前管线无 MVMR 实现,需新增。
- 蛋白改变变异 / 表位注释——Olink 为亲和力平台,cis-pQTL 落在抗体结合表位会产生平台特异偏倚。 已有 deCODE(SomaScan)跨平台复制作三角验证,但缺逐候选的 PAV 标注,给 A 级三个候选补注释成本很低。
- R13 家族的 X 染色体复核——见 3.1 第 4 条。
- 视网膜 / RPE 组织 eQTL——受 EGA 数据准入限制,不宜排进关键路径。