主题
共定位方法选型:为什么只用 coloc.abf
日期:2026-08-07 结论:第 5 步只用 coloc.abf;HyPrColoc 与 SuSiE 本轮不做; 不纳入 T1D/T2D 对照臂。
本页记录选型过程中逐条查证的事实与被推翻的说法,供写 Methods 与回应审稿直接引用。
一、文献底本(全部核实到精确出处)
| # | 文献 | 方法 | 出处 |
|---|---|---|---|
| L1 | Giambartolomei C, Vukcevic D, Schadt EE, Franke L, Hingorani AD, Wallace C, Plagnol V. Bayesian test for colocalisation between pairs of genetic association studies using summary statistics. | coloc(abf) | PLoS Genet 2014;10(5):e1004383 · PMID 24830394 · PMC4022491 · doi 10.1371/journal.pgen.1004383 |
| L2 | Foley CN, Staley JR, Breen PG, Sun BB, Kirk PDW, Burgess S, Howson JMM. A fast and efficient colocalization algorithm for identifying shared genetic risk factors across multiple traits. | HyPrColoc | Nat Commun 2021;12:764 · PMID 33536417 · PMC7858636 · doi 10.1038/s41467-020-20885-8 |
| L3 | Wallace C. A more accurate method for colocalisation analysis allowing for multiple causal variants. | coloc + SuSiE | PLoS Genet 2021;17(9):e1009440 · PMID 34587156 · PMC8504726 · doi 10.1371/journal.pgen.1009440 |
| L4 | Hwang S, Pullin J, Wallace C, Whittaker J, Burgess S. Systematic comparison of colocalization methods using protein quantitative trait loci. | 四法基准(pQTL) | bioRxiv 2025-11-07 · doi 10.1101/2025.11.07.686776 |
| L5 | Zhao JH, et al. Genetics of circulating inflammatory proteins identifies drivers of immune-mediated disease risk and therapeutic targets. | PP4 ≥ 0.8 的用法 | Nat Immunol 2023 · PMC10457199 |
L4 只读到摘要
bioRxiv 反复返回 429 / Cloudflare 1015,全文未获取。本页引用 L4 的内容全部出自摘要, 已逐句核对。引用时须标注这一点。
★★ L4 是本次选型最有分量的依据
作者阵容含 coloc 原作者 Wallace 与 MR 方法学的 Burgess。设计是用 pQTL 数据构造「本该共定位」的场景再看四种方法(coloc、coloc-SuSiE、prop-coloc、colocPropTest)认不认。摘要原文:
"In the baseline scenario, all methods report colocalization for the majority of proteins. In other scenarios, methods do not consistently report colocalization, they often report non-colocalization, and they often disagree. In the worst-case scenario, colocalization was only agreed by all four methods for 20% of proteins, despite our experiment being constructed to select for cases where colocalization is expected. This suggests caution in performing and interpreting colocalization analyses is warranted."
它开篇提的正是我们要回答的问题:
"it is unclear whether a non-colocalization result should be taken as a definitive sign that two traits do not share a genetic cause in the region of interest, or merely as suggestive evidence."
→ 「不共定位」不能当作「不共享因果变异」的定论。 这就是 v4 把共定位定为措辞升级关卡而非否决点的直接依据。
★ 另注:L4 明确把「同一蛋白但换平台 / 换人群」列为方法不一致的高发场景 —— 这与我们第 4a/4c 步的观察一致,可交叉引用。
二、逐条问答(问题来自用户,答案均经实测)
Q1:共定位是用 HyPrColoc 那个吗?
本课题此前的定论(2026-07-29)原文:
本课题共定位层的最终判据改为:PP.H4 ≥ 0.8(coloc.abf,主)+ 蛋白必须在 HyPrColoc 簇内 (辅,用于回答跨病共享)。两条同时满足的 19 对 / 10 个蛋白即为共定位支持的候选。
SuSiE 的定位(2026-07-31)原文:
正文只放 HyPrColoc + coloc.abf;SuSiE 连同其一致性参数与收敛率写进补充材料的方法学局限, 不作判据。
实测依据:SuSiE 32 对尝试、12 对两侧收敛、只有 8 对(25%)给出 PP.H4。
Q2:只有 1 个结局的 14 个蛋白,能跑 HyPrColoc 吗?是不是必然不在簇内?
能跑,而且全跑了。 脚本里 MIN_DIS <- 1,性状 = 蛋白 + 它自己的显著结局; 单结局时是 2 个性状,满足 HyPrColoc 下限。
旧仓实测这 14 个的判定:
| 判定 | 蛋白 |
|---|---|
| 支持(蛋白与疾病共定位) | ERMAP · GALNT3 · IFNAR1 · WARS |
| 证据不足(蛋白进簇但 PP 未过阈) | ACRBP · IL7R · PAM · TPPP3 |
| 不支持(未检出共享簇) | AIF1 · AOC1 · LACTB2 · VWC2L |
| 不支持(仅疾病成簇,蛋白未进簇) | BTN3A2 · NUDT5 |
→ 「单结局 ⇒ 必然不在簇内」不成立,4 个拿到支持。
Q3:「仅疾病成簇、蛋白未进簇」是什么原因?是 HyPrColoc 不适用吗?
不是方法失效,恰恰是方法在起作用。 看 NUDT5 的原始输出:
n_traits = 3
簇 = "Retinopathy, T2D_mahajan" posterior_prob = 0.947
protein_in_cluster = FALSE candidate_snp = 10:12265895含义:两个疾病之间共享一个因果变异,而 NUDT5 的 cis-pQTL 是另一个变异 —— 等价于 coloc 的 H3(两个不同因果变异),即「MR 关联可能是 LD 巧合」的直接证据。
对照 IFNAR1(干净的共定位):
n_traits = 2
簇 = "IFNAR1, Maculopathy" posterior_prob = 0.837
protein_in_cluster = TRUE candidate_snp = 21:33353501★★ 但由此发现:旧的 HyPrColoc 判定不可移植到本轮
NUDT5 那个簇是 Retinopathy + T2D_mahajan —— T2D_mahajan 是对照臂,不是并发症。 旧仓把 T1D/T2D 也当「疾病」喂进了 HyPrColoc。
而本轮口径只有五个并发症。在本轮里 NUDT5 只有 Retinopathy, 性状 = {NUDT5, Retinopathy} = 2 个 → 「疾病成簇而蛋白不在簇内」在逻辑上不可能出现。 BTN3A2 同理。
→ 旧的四类标签一个都不能当本轮的预期。
★ 另一实情:对单结局蛋白,HyPrColoc 只有 2 个性状,聚簇机制没派上用场, 基本退化成又一次两两共定位,不应被表述为「多性状共享证据」。
Q4:HyPrColoc 有 PP.H4 吗?
没有。它不输出 PP.H0–H4 中的任何一个。
| 方法 | 原始输出列 |
|---|---|
| coloc.abf | PP.H0 PP.H1 PP.H2 PP.H3 PP.H4 |
| HyPrColoc | traits posterior_prob regional_prob candidate_snp posterior_explained_by_snp dropped_trait |
PP.H0–H4 是 L1(coloc)特有的框架 —— 对一对性状穷举 5 个互斥假设 (H0 都无信号/H1 只 A/H2 只 B/H3 两者信号但因果变异不同/H4 共享同一因果变异)。
L2(HyPrColoc)不走这个框架:它是多性状的确定性贝叶斯分裂聚类, posterior_prob 是簇层的量。
实测三条差异:
- 数值不同:19 对两法都有值的,无一相等(差值中位 0.086、最大 0.2)
- ★ 分析单元不同:
APOE的四个疾病PP.H4各不相同(0.9175 / 0.9982 / 0.9999 / 0.9992), 但posterior_prob四个全是 0.9133 —— 因为它们同属一个簇。 多疾病蛋白中posterior_prob100% 组内相同,PP.H40% 组内相同 - 覆盖率差极远:142 对里
posterior_prob有 123 对是 NA(蛋白没进簇 / 没形成簇), 其中 13 对PP.H4 ≥ 0.8在 HyPrColoc 侧是 NA (NUDT50.977 ·PAM0.959 ·SIGLEC50.887 ·ACRBP0.867 ·LACTB20.800 …)
因此「两条同时满足」的实质要写准
它不是「两个 PP.H4 都 ≥ 0.8」,而是 「PP.H4 ≥ 0.8 且 蛋白与该疾病落在同一 HyPrColoc 簇内」。 而且它是把 NA 当成不通过 —— 而 NA 混合了「有信息的不共享」与「簇根本没形成」两种情形。
Q5:T1D / T2D 对照臂要不要纳入共定位?
不纳入。 三条理由:
理由一:共定位证明不了「糖尿病驱动」
若某蛋白在同一位点既与糖网共定位、又与 T2D 共定位,可能是 ①蛋白→糖尿病→糖网(中介)②蛋白分别独立影响两者 ③三者共享上游机制。 共定位对这三种情形给出的结果完全一样 —— 它只回答「是不是同一个因果变异」, 不回答「是不是经由糖尿病中介」。
→ 正确工具是 MVMR / 两步中介(已在待办清单)。
理由二:反向推理同样不成立
「与糖网共定位、但不与 T2D 共定位 ⇒ 并发症特异」——不能这么推。 按 L4,即便在本该共定位的构造场景里,最坏情形四法全体一致也只有 20%; 「非共定位」结果普遍出现且方法间常不一致。
→ 阳性推不出中介、阴性推不出特异,做出来是一张不能支持任何结论的表, 而它摆在正文里读者会自然按「糖尿病驱动」去读。
理由三:口径与流程
第 5 步在 v4 里的职责是并发症候选的措辞升级关卡;对照臂不是候选、不参与升级。 纳入会把漏斗从 52 对变成 70 对,与前面每一步都对不上。
这条更正了我先前的建议
我曾建议「对照臂单独成表,作为糖尿病驱动的位点级证据,比 MR 效应量对比更强」。 那是 overclaim —— 共定位无法建立中介关系。已作废。
Q6:HyPrColoc 没有 PP.H4,为什么 C1R 还写「PPH4 = 0.86」?
查证:C1R 全文只提 hyprcoloc R package,从头到尾没有 coloc.abf、 没有 Giambartolomei、没有 PP.H0/H1/H2/H3。Methods 原文:
"multi-trait colocalization analysis using HyPrColoc method30 was performed … Colocalization analysis was performed using the hyprcoloc R package69"
答案:他们用 HyPrColoc,却借用了「PPH4」这个词。
为什么说得通:HyPrColoc 簇层后验的含义,他们 Methods 自己写的是 "the probability that both the protein and associated diseases share a single causal variant" —— 这恰好等于 coloc 的 H4 假设。对只有 2 个性状的情形,两者概念上确实对应。
但严格说不规范:PP.H4 是 coloc 的 H0–H4 体系里的一项,HyPrColoc 没有那个体系。
★ 对我们的直接后果
我们的 PP.H4 ≥ 0.8 不能说「依据 C1R」 —— C1R 的 0.8 是 HyPrColoc 簇层后验的阈值。 必须挂 Zhao 2023 Nat Immunol(L5) 或 coloc 原文(L1)。
Q7:那我们到底用哪个?
用 coloc.abf。理由不是「哪个方法更好」,而是两个研究问的问题不同:
| C1R | 本课题 | |
|---|---|---|
| 研究对象 | 共病 —— 蛋白天然关联 ≥2 个病 | 糖尿病并发症,28 个蛋白中 14 个只关联 1 个结局 |
| 分析单元 | 多性状簇 | 蛋白 × 结局 的对(整条漏斗按对数走:57→52) |
| 多性状聚簇 | 有东西可聚 | 对那 14 个蛋白只有 2 个性状,聚簇机制空转 |
HyPrColoc 是为多性状设计的;我们一半候选只有 1 个结局, 用它等于拿多性状工具做两两分析 —— 能跑,但用不上它的长处。
coloc.abf 恰好匹配:两两、给 PP.H0–H4 全谱、分析单元与漏斗一致、 阈值有独立文献支撑(L5)。
HyPrColoc 有一件 coloc.abf 做不了的事 —— 留作后续描述性分析
对有 ≥2 结局的那 14 个蛋白,它能回答 「这几个并发症是共享蛋白的那个变异,还是它们自己共享另一个变异?」 (即 NUDT5 那种「疾病成簇、蛋白不在簇内」)。
→ 建议后续对这 14 个蛋白单独跑,回答并发症之间是否共享, 不作判据、不在第 5 步做。
Q8:coloc.abf 要不要求「蛋白进簇」?这里有官方定义吗?
不要求 —— 因为 coloc.abf 里根本没有「簇」这个概念。
coloc 官方文档(包作者 Wallace)明确两点:coloc.abf 比较 "exactly two datasets", 且 "makes the simplifying assumption that each trait has at most one causal variant in the region"。
我们的调用就是两个数据集:
r
coloc::coloc.abf(d_prot, d_dis, p1 = P1, p2 = P2, p12 = P12)蛋白是两个性状之一,按构造永远在里面,不存在被剔出去的可能。
官方定义就是 H0–H4 这五条(coloc 官方文档 / L1 原始设定):
| 原文定义 | |
|---|---|
| H0 | neither trait has a genetic association in the region |
| H1 | only trait 1 has a genetic association in the region |
| H2 | only trait 2 has a genetic association in the region |
| H3 | both traits are associated, but with different causal variants |
| H4 | both traits are associated and share a single causal variant |
★★ 两个方法的对应关系
| HyPrColoc | coloc.abf |
|---|---|
| 蛋白在簇内、簇后验高 | PP.H4 高 |
| 蛋白不在簇内,疾病自己成簇 | PP.H3 高(两性状都有关联但变异不同) |
| 蛋白没关联 | PP.H1 / PP.H2 |
差别在信息编码的位置,这决定了误读风险:
- coloc.abf:
PP.H4一个数字已经把「蛋白是否共享」编码进去,无需再查成员资格 - HyPrColoc:
posterior_prob是簇层的,只说「簇内共享得多强」; 「哪些性状在簇里」是另一条独立信息(traits列)—— 两条必须一起看
Q9:怎么正确读别人跑的 HyPrColoc 产物?(F:\project\12)
一份此前由他人用同一批数据跑的 HyPrColoc 结果(sum_plot.csv / bin.csv, 覆盖 20 个蛋白、4 个并发症 + T1D/T2D)。实测三个坑:
坑 1:posterior_prob 单看几乎全过
| 指标 | 数值 |
|---|---|
posterior_prob ≥ 0.8 的行 | 98 / 104 = 94.2% |
| 这样会判阳性的蛋白 | 19 / 20 |
| 其中蛋白根本没进簇的行 | 77 |
被虚假计入的 11 个:AGER AIF1 ATP6V1G2 BCL2L15 BTN2A1 BTN3A2CFB HCG22 LTB TNXB TRIM40。
→ 这个读法没有鉴别力:MHC 区并发症彼此本就强烈共享信号,簇后验自然贴近 1,与蛋白无关。
坑 2:bin.csv 编码的是输入组合,不是簇成员
| 检验 | 结果 |
|---|---|
bin 的 1 == 输入的疾病组合 | 100% |
bin 的 1 == 实际簇成员 | 仅 48.5% |
而且 bin.csv 没有蛋白那一列 —— 用它根本无从判断蛋白进没进簇。例:
AGER 输入 {黄斑, 神经, 视网膜} bin 三个全标 1
实际簇 {黄斑, 神经} ← 视网膜被剔除,bin 里看不出来坑 3:dropped_trait 列 104 行全是 NA
被剔除的性状没有被记录,只能靠比对 traits 与 disease_combination 才能发现。
正确读法只有一条
看 sum_plot.csv 的 traits 列,确认里面有没有字面值 protein。 该文件把蛋白这个性状就命名为 protein。
★★ 「蛋白必须进簇」的官方依据(三条)
这不是额外判据,是 HyPrColoc 自己对「共定位」的定义。
① HyPrColoc 原文(L2 · Foley 2021 · PMC7858636)
"each cluster comprises traits sharing a causal variant"
★ "a trait is deemed not [to] colocalize with any other trait in the sample" —— 当它在聚类后仍单独留下时
原文同时确认假设:"at most one causal variant in the genomic region for each trait"。
② HyPrColoc 官方 vignette
"HyPrColoc is Bayesian divisive clustering algorithm for identifying clusters of traits which colocalize at distinct causal variants in a genomic region."
traits 列 = "a cluster of putatively colocalized traits"; 文档并有 "trait 6 is dropped from this cluster" 的示例。
③ C1R 自己的 Methods(第 387–388 行)
"This approach estimates the probability that both the protein and associated diseases share a single causal variant"
→ 估计量里明写包含蛋白。
一句实话
没有任何文献写「用 HyPrColoc 做 pQTL–疾病共定位时必须核对蛋白是否在簇内」这样的操作说明 —— 因为这不是操作步骤,而是定义本身。traits 列直接告诉你哪些性状共定位; 蛋白不在其中,方法就已经回答了「不共定位」。
准确表述应为:「蛋白进簇」不是额外判据,而是读懂 HyPrColoc 输出的必要条件。
实证:LTB
traits = "retinopathy, nephropathy" 0.9997
traits = "diabete1, nephropathy" 0.9938
traits = "diabete1, retinopathy" 0.9948
候选变异 6_31737349_G_A(chr6:31.74Mb,经典 MHC 内)8 行没有一行含 protein。 0.9997 说的是「视网膜病变与肾病共享同一因果变异」, LTB 蛋白被排除在簇外 —— 不是蛋白–疾病共定位。
Q10:★★ 两个方法的全表对账
按正确读法(蛋白进簇 + 后验 ≥ 0.8),两边都跑了的 19 个蛋白:
| 类别 | 数量 | 蛋白 |
|---|---|---|
| 完全一致 | 7 | APOE NUDT5 ERMAP WARS PAM GALNT3 IFNAR1 |
| 分歧(可解释) | 2 | APOL1(他们 0.81 合格;我们 4X 因表位伪影否决)· NOTCH2(他们 0.776 差一点,我们 0.897) |
| 蛋白未进簇 → 我们 weak | 10 | AGER AIF1 ATP6V1G2 BCL2L15 BTN3A2 CFB HCG22 LTB TNXB TRIM40 |
| 蛋白未进簇 → 我们 medium | 1 | BTN2A1(0.635,擦边) |
HyPrColoc 侧合格的 8 个及其后验:APOE 0.9997 · NUDT5 0.9337 · ERMAP 0.8989 · WARS 0.8943 · PAM 0.8913 · GALNT3 0.8437 · IFNAR1 0.8370 · APOL1 0.8106。
→ 不同软件、不同人、不同时间跑出来,排序几乎相同。 这是第 5 步一次有分量的旁证。
APOL1 的启示
它共定位 0.81 却是表位伪影 —— 共定位识别不出表位问题。 两者查的是不同的东西,不能互相替代。
Q11:MHC 区能不能做共定位?
能跑,但结果不可直接解释。
coloc.abf 与 HyPrColoc 都假设「每个性状在该区域至多一个因果变异」。 MHC 有大量独立信号、LD 可延伸数 Mb —— 前提在事实上不成立。 前提垮了,后验被推向 H3,而这可能只是「区域内不止一个信号」造成的。
文献里的标准做法是排除:Zheng 2020 Nat Genet 在工具选择阶段就把 chr6:26–34 Mb 的 SNP 和蛋白一起剔除。我们 v4 决定不排除,是为了保住 CFB(已上市药靶 iptacopan)与 AGER —— 代价就是共定位这一层对它们判不了。
真能处理 MHC 的三条路:
- 条件分析(COJO)剥离主信号后再 coloc
- coloc-SuSiE(允许多个因果变异)—— 但我们实测 LD 面板失配导致整体降级(
s中位 0.827) - HLA 等位基因层面共定位
★ 措辞修正
原先写「MHC 是 coloc.abf 方法失效」。现在看到第二个方法(HyPrColoc)也把这些蛋白排除在簇外, 应改写为「两种共享同一假设的方法一致提示蛋白与疾病信号不同,待条件分析核验」。
但这不构成独立确证 —— 两法共享同一假设,可能以同样方式失效。
★ 另注:C1R 全文与 HyPrColoc 原文(L2)都一次没提过 MHC 或 HLA(均已全文核查), 而 C1R 还把 chr6:26.1 Mb 的 BTN2A1 当共定位结果报出。 这一区的处理在两篇里都是空白,不可援引为先例。
案例:LTB 很可能是 HLA 信号的搭车者
LTB 位于 chr6:31.58 Mb,糖尿病对照臂 T1D 的 OR = 3.387, 比三个并发症(2.908 / 2.328 / 1.919)都大。 而 HyPrColoc 的簇是 {T1D, 肾病} 0.9938、{T1D, 视网膜} 0.9948, 候选变异 chr6:31.74 Mb —— T1D 与并发症在 MHC 内共享同一变异,蛋白不在其中。
T1D 最强的遗传信号就是 HLA。 合起来读:LTB 与并发症的 MR 关联 很可能是被 LD 上的 HLA-T1D 信号带出来的。⚠️ 仍非定论,理由同上。
Q12:★ 更正 —— C1R 的「moderate」我读错过
我曾说「C1R 明文纳入 moderate,可映射为 0.5 ≤ PP.H4 < 0.8」。这是错的,撤回。
事实:其 Methods 确有 "supported by high or moderate colocalization probabilities" 一句, 但从未给出 moderate 的数值定义,且四个优先候选是 0.86 / 0.99 / 0.86 / 0.94,全部 > 0.8。 把 moderate 映射到 0.5–0.8 是我自己编的。
从原文能站住的只剩两条:
- 共定位的动词是 prioritize,不是 exclude
- 方向相反的
BTN2A1/FGF5被报告而非删除(Supplementary Figure 1)
另算一笔账:9 个共定位达标 = 4 个优先 + 2 个方向相反 + 3 个正文完全没交代去向。
三、最终选型
| 项 | 定 | 依据 |
|---|---|---|
| 方法 | 只用 coloc.abf | L1;输出 PP.H0–H4,两两、可解释、审稿人最熟 |
| HyPrColoc | 不做 | 给的是簇层量、无 PP.H4(Q4);旧判定不可移植(Q3) |
| SuSiE | 不做 | 出结果率仅 25%(2026-07-31 定论);L4 亦显示其与 coloc 常不一致 |
| 输入 | 52 对 / 28 蛋白,不含对照臂 | Q5 |
| 判据 | PP.H4 ≥ 0.8 升级措辞;0.5–0.8 仅进补充表 | L5 |
| 否决权 | ★ 无 | L4:非共定位不能当定论 |
| MHC 29 对 | 照常算照常报,但不单独升级 | v4;单因果假设在该区不成立 |
★ 2026-08-08 用户拍板:下游深挖的输入集
| 决定 | 内容 |
|---|---|
| 第 6 步输入集 | ★ 只用共定位支持的 11 个蛋白(PP.H4 ≥ 0.8,全部非 MHC) |
MHC 且 PP.H4 < 0.8 | ★ 不进入后续分析,改走「MHC 专用核验」(条件分析 + HLA 等位基因层面) |
| 依据 | 与 C1R 同口径(对优先候选做下游注释);且本轮 HyPrColoc 对账 7/8 一致(Q10) |
采用该口径必须同时做到三件事,否则站不住
① 报分母 —— C1R 写的是 "Of the 40 proteins, nine showed…"。 我们对应写「52 对 / 28 蛋白中,13 对 / 11 蛋白 PP.H4 ≥ 0.8」。分母不能消失。
② 落选者照样报告并注明类别 —— C1R 把 BTN2A1/FGF5 放进补充图并给了解释。 我们的补充表须逐个标明属于:MHC 假设不成立(11)/ H4 主导但未达线(4)/ 提示不同变异(2)。
③ 必须写 MHC 那一段 —— 否则 CFB(已上市药靶 iptacopan)与 AGER(经典靶点) 在外部复制稳健的情况下掉出深挖名单,无法向审稿人交代。建议措辞:
该区域内 coloc.abf 与 HyPrColoc 均假设每性状至多一个因果变异,此假设在 MHC 不成立; 两法一致提示蛋白与疾病信号不同,但因共享同一假设不构成独立确证。 故这些候选单列报告,其判定待条件分析与 HLA 等位基因层面核验。
写进去,它们就是「已知待核验」而非「被悄悄丢掉」。
写 Methods 时必须带上的三句
- 共定位用 coloc.abf(L1),先验
p1=p2=1e-4、p12=1e-5,区域 ±500 kb - 共定位不用于排除候选;依据 L4,非共定位结果不足以断定不共享因果变异
- 本轮未使用 HyPrColoc 与 coloc-SuSiE,理由与局限见 Limitations