Skip to content

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-4p12 = 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 结果在下一步做证据整合

下一步:跨对 多重检验与证据整合

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