主题
06 · 共定位
对应模块:R/08_coloc_abf.R(两两)、R/09_hyprcoloc.R(多性状) 参考:Giambartolomei 2014(coloc);Foley 2021(hyprcoloc)
作用
MR 显著只说明"有因果效应",但可能是连锁不平衡(LD)把两个不同的因果变异连在了一起(混杂)。共定位独立检验暴露与结局在该位点是否共享同一因果变异——这是 cis-MR 排除 LD 混杂的关键正交证据。cis 模式强制做,genome_wide 可选。
两种引擎
coloc.abf(两两,08_coloc_abf.R)
对"暴露 × 单个结局"用 coloc::coloc.abf 做贝叶斯共定位,输出五个后验概率假设:
| 假设 | 含义 |
|---|---|
| PP.H0 | 两性状都无关联 |
| PP.H1 / PP.H2 | 只有暴露 / 只有结局有信号 |
| PP.H3 | 两者有信号但不同因果变异(LD 混杂) |
| PP.H4 | 两者共享同一因果变异(共定位) |
判定:PP.H4 > pp_h4_threshold(默认 0.8)判为共享因果变异。先验 p1 = p2 = 1e-4、p12 = 1e-5。coloc.abf 基于 Z²,对等位定向不敏感。
hyprcoloc(多性状,09_hyprcoloc.R)
一次评估"暴露 + 多个结局"是否落入同一 colocalization 簇(Foley 2021)。只需 β 与 se,二分类结局用 log-odds。给出每个结局是否与暴露共定位、后验概率与候选 SNP。阈值 reg.thresh = align.thresh = 0.5。
等位定向对齐
hyprcoloc 对符号敏感,所以 harmonise_region_to_ref() 先把各结局区域的 β 按 rsID 对齐到暴露的参考等位:一致的保留、相反的翻转符号、模糊的丢弃。
区域数据与"数据不足"守卫
共定位需要位点附近成百上千个 SNP 的区域级数据,而不是只有几个入选 IV:
- 结局(
tsv全量 sumstats):load_region()自动按 cis 窗口流式切出区域; - 暴露若是
instrument_table(只有工具 SNP):需在该暴露下填region_file指向该基因位点的全量 summary stats;不填则区域 SNP 不足。
守卫:区域重叠 SNP < min_region_snps(默认 50)时,跳过并标注 insufficient_data,绝不用几个 SNP 硬跑出误导性的共定位结论。MAF 缺失时同样返回"数据不足"。
对应 config 字段
yaml
coloc:
engines: ["coloc_abf", "hyprcoloc"]
enabled_cis: true
enabled_genome_wide: false
min_region_snps: 50 # 区域重叠 SNP 守卫
pp_h4_threshold: 0.8 # coloc.abf 判共享阈值
prior_p1: 1.0e-4
prior_p2: 1.0e-4
prior_p12: 1.0e-5
hyprcoloc_reg_thresh: 0.5
hyprcoloc_align_thresh: 0.5输出
- coloc.abf:
status / PP.H0..H4 / shared_causal(PP.H4>阈值) / n_overlap; - hyprcoloc:每结局
colocalizes / posterior_prob / candidate_snp。
这两个结果与 MR 结果在下一步做证据整合。
下一步:跨对 多重检验与证据整合。