Skip to content

09 · 第 4X 步 · 表位 / PAV 调查

状态:✅ 完成§0–§6 写于运行之前,§7 为运行后回填权限:★★ 全流程唯一否决点(另一个是第 3 步)

本步是唯一能「杀掉」候选的地方

v4 定死:4a / 4b / 4c 只分流不否决,第 5 步共定位只升降措辞。 只有 4X 判为「表位伪影」才行使否决权。 其余归因一律保留 + 写清楚


〇、只查 5 对 —— 以及必须先说清的盲区

4X 不是对第 3 步存活的 29 蛋白 / 53 对全跑,只查被 4a / 4b 报警的 5 对

来源蛋白结局报警证据路由
4aAPOL1Maculopathyrs136168 +0.420 → deCODE −0.353(FDR 4.9e-05)表位
4aMICB_MICAMaculopathyrs3132467 +0.108 → −0.562(FDR 6.3e-06)表位
4aMICB_MICANephropathyrs3132467 +0.092 → −0.475(FDR 2.5e-05)表位
4aAOC1Retinopathyrs1049742 −0.212 → +0.286(FDR 2.9e-04)表位
4bTRIM40Retinopathyrs3815079 OR 0.71 → MVP +0.229(FDR 8.7e-04)结局异质性

★ 路由铁律(v4 §6),违反即判错

4a / 4c 报警 → 查表位(暴露侧换了平台)。 4b 报警 → 查结局侧异质性(暴露工具压根没换,表位效应会在每个结局队列里同样「复制成功」,4b 根本抓不到它)。

TRIM40 绝不能当表位问题查。

★★ 盲区:27 对「没查成」不等于「查过了干净」

4a 里有 27 对判为不可评估(deCODE 无数据或无 cis 工具)。 它们没有被表位检验过,只是缺数据。

★ 现已知这个盲区补不上:ARIC 与 deCODE 覆盖的蛋白完全相同 (见 08 页 §8.3), 所以换 ARIC 一个都补不回来

必须写进 Limitations:本研究的表位排查只覆盖了 有第二个亲和平台数据的那部分候选,其余候选的表位风险未经检验。 不许写成「已排除表位伪影」。


一、先查文献(v4 要求,动手前必做)

C1R 原文(Li et al. medRxiv 2026.07.14)没有这一步 —— 它做到「剔除方向相反者」为止。 所以 4X 的判据必须另找依据,不许自创后挂靠

1.1 判据的核心依据:r² > 0.8 + PAV

Zhao JH, et al. Nat Immunol 2023(SCALLOP,PMC10457199)——已读原文

"A further 10 sentinel variants were in high linkage disequilibrium (LD; r² > 0.8) with a protein-altering variant (all missense). Of these, seven were variants in the gene encoding the target protein itself and three in another nearby gene."

★★ 同一段还有一句,直接约束我们不能把 PAV 等同于伪影

"PAVs can result in false-positive cis-pQTL signals by altering protein epitopes recognized by antibodies used in proteomic assays. However, they can also impact the abundance of plasma proteins through several mechanisms, including protein translation, secretion into the circulation, enzymatic cleavage of pre-proteins and protein clearance and degradation."

「哨兵挂着 PAV」是必要条件,不是充分条件。 判据必须再加跨平台方向证据。

1.2 流行率与「不都是伪影」:≤12%

Kuliesius J, et al. bioRxiv 2025(doi 10.1101/2025.06.20.660695) 《Epitope Effect Prevalence in Affinity-based pQTL studies》

★ 只读到摘要,全文未获取

bioRxiv 反复返回 429 / Cloudflare 1015,服务器 IP 被限。 下列数字全部出自摘要,其 LD 阈值与判据细节的原文定义我没有读到。 引用时必须标注这一点,不许把我们自定的阈值说成是它的

摘要要点(逐字核对):5,817 个蛋白靶标中,914 个在两个平台都有 cis-pQTL, 其中 301 个(33%)与一个 missense 变异相连37 个蛋白在两平台上对同一 missense pQTL 方向相反,85 个只在一个平台显著; 部分分歧反映 isoform / proteoform 靶向差异而非伪影; missense cis-pQTL 更容易在表面可及残基上被检出; 总体结论:表位效应只影响少数(≤12%)cis-pQTL 结果

1.3 ★ 直接命中我们阳性对照的一篇

Wang QS, et al. iScience 2026;29(3):114953(PMID 41767276,PMC12936488) 《Platform-dependent effects of genetic variants on plasma APOL1》——已读正文、Table 1/2、讨论与局限

它的设计正是 4X 该有的样子:

它做了什么结果
精细定位找因果变异欧洲人群定位到 V1 = rs2239785(E150K,missense,PIP 0.75)V2 = rs6000220(5'UTR)
跨平台比方向V1:Olink +0.32 / SomaLogic(deCODE) −0.38 —— 方向相反
★ 设了平台内阴性对照V2(非编码)在两个平台方向一致 → 证明分歧是氨基酸改变造成的,不是位点或调控生物学
★★ 用丰度无关手段仲裁质谱(Health ABC)测不到该效应;Olink vs MS 效应量异质性 p = 7.7e-3(V1)、3.5e-3(G1/G2)
排除功效解释MS 样本(n=390)大于 Olink 样本(n=194)
结构佐证AlphaFold:V1 与 G1/G2 在三维结构上邻近

★ 它的局限里有一句必须写进我们的措辞规范:

"apparent proteomic discrepancies should not be dismissed as technical artifacts but instead must be carefully investigated and recognized as potential indicators of biologically meaningful variation."

→ 所以否决时不能写「技术噪音」。正确表述是: 该工具不指示血浆丰度,因而「丰度→疾病」的因果解读不成立。至于它是否反映构象等真实生物学,本研究不作判断。

1.4 术语来源

Suhre K 等,Nat Commun 2024(PMID 38307861)以质谱定义 PAV / MS-PAV。 其方法需自有质谱数据,我们没有,不采用,仅借其术语。


二、方法

2.1 4X-A:表位 / PAV 调查(4a 来的 4 对)

对每个哨兵:
1. 取 cis 区(±500kb)内与哨兵 r² > 0.8 的全部变异   [plink1.9 + 1000G EUR]
2. 对这些变异做 VEP 注释                              [Ensembl VEP REST]
3. 判定 PAV:missense / stop_gained / stop_lost / start_lost /
            frameshift / inframe_indel / splice_acceptor / splice_donor
4. 按 Zhao 2023 分两类:PAV 在**靶蛋白自身基因**内 vs 在**邻近其他基因**内
5. 与 4a 已有的跨平台方向证据合并判定

★★ 判据绝不能写成「哨兵自身是不是 PAV」

实测:APOL1 哨兵 rs136168 的注释是 intron_variant、CADD 1.056、SIFT/PolyPhen 空。

若只看哨兵自身,APOL1 会被判成干净的 —— 全流程唯一的阳性对照当场漏掉。

真实情况:rs136168(22:36,264,796)与 rs2239785(22:36,265,284)相距 488 bp, 在 ARIC 里频率 0.1957 vs 0.1985、效应 −0.4616 vs −0.4635 —— 几乎是同一个信号, 而后者正是 iScience 那篇定位的 E150K missense

判据必须建立在「与 PAV 的 LD」之上,这也正是 Zhao 2023 的写法。

2.2 判定分类(只有第一类否决

归因需要满足处置
epitope_artifact靶基因内 PAV 且 r²>0.8 跨平台方向相反 有丰度无关证据(外部质谱/已发表)否决
pav_present_abundance_plausible有 PAV、有方向分歧,但缺丰度无关证据保留 + Limitations(Zhao 2023:PAV 也可真改丰度)
probe_target_ambiguity分歧可归因于探针测的是不同 isoform / 不同蛋白保留 + 说明
outcome_heterogeneity走 4b 路由者保留 + Limitations
not_assessable缺 LD / 缺注释 / 缺第二平台保留,不否决

2.3 4X-B:结局异质性(TRIM40

比对 FinnGen R9 Retinopathy 与 MVP 的表型定义、对照构成、病例数。 ★ 无否决权,产出写进 Limitations。

2.4 已知的方法学困难

  • MHCMICB_MICATRIM40 都在 MHC 区(MHC=1)。该区 LD 极强且长程, r²>0.8 会圈进大量变异,PAV 命中率天然偏高,不能按非 MHC 的直觉解读。
  • 我们没有自己的质谱数据。5 对里只有 APOL1 有已发表的质谱仲裁。 → 其余三对很可能只能判到 pav_present_abundance_plausible不否决
  • 表面可及性(Kuliesius 摘要提到的结构维度)本步不做,只用 SIFT/PolyPhen,写进局限。

三、★ 预期(本节写于运行之前

3.1 写作时已知的输入特征(实测,非预测)

蛋白哨兵自身注释MHCSIFT / PolyPhencis 基因字段
AOC1rs1049742missense_variant0D,D,D,T,D / Probably DamagingAOC1
APOL1rs136168intron_variant0APOL1
MICB_MICArs3132467intron_variant1MICB,MICA(两个基因)
TRIM40rs3815079intron_variant1TRIM40

参照:全部 1,955 条 cis 记录里 347 条(17.8%)是 missense

3.2 逐对预测(跑完必须逐条对账

预测归因理由
APOL1 × Macuepitope_artifact → 否决三条齐全:靶基因内 PAV(rs2239785 E150K)、跨平台方向相反、已发表质谱仲裁
MICB_MICA × Macuprobe_target_ambiguity(非经典表位)Olink 是合并探针、SomaScan 分开测;cis 基因字段写着 MICB,MICA;★ ARIC 内部同一变异 MICA −0.847 vs MICB +0.249 方向相反
MICB_MICA × Neph同上同一暴露工具,预期与 Macu 一致
AOC1 × Retipav_present_abundance_plausible哨兵自身即 missense 且预测有害,但无丰度无关证据;且 4b 复制成功
TRIM40 × Retioutcome_heterogeneity4b 路由,不进表位调查

预计最终否决 1 对(APOL1 × Maculopathy),其余 4 对保留。

这个预测若被推翻,说明什么

  • APOL1 被判为 epitope_artifact规则失效,不是新发现(见 §3.3 A1)
  • AOC1 被判为 epitope_artifact → 必须检查是不是把「有 PAV」直接当成了伪影(Zhao 2023 明确反对)
  • MICB_MICA 被判为经典表位 → 需解释为何 ARIC 内部两条适配体方向相反

3.3 ★★ 验收断言(抓不到即 stop()

#断言为什么是它
A1APOL1 × Maculopathy 必须判为 epitope_artifact全流程唯一阳性对照
A2APOL1 的连锁 PAV 清单里必须出现 rs2239785,且注释为 missense、位于 APOL1★ 证明规则走的是「与 PAV 的 LD」而不是「哨兵自身注释」——这是本步最容易犯的错
A3rs6000220(V2,5'UTR)不得被判为 PAV借用 iScience 的平台内阴性对照;若它也被判 PAV,说明 PAV 定义过宽
A4TRIM40 不得出现在表位调查的输入里路由铁律
A5AOC1 哨兵自身的 missense_variant 必须被识别到防止只查 LD 却漏掉哨兵自己就是 PAV 的情形
A6epitope_artifact 外,任何归因都不得否决任何一对v4:4X 是唯一否决点,但只有这一类有否决权
A7产物取值全 ASCII、无内部流程编号(4a/4X/step3产物三约定

A1 + A2 是一对:只有 A1 会被「碰巧蒙对」(比如把所有报警都判成伪影), A2 才真正检验规则的机制是否正确。两条都必须过。


四、产物(预期)

产物路径
LD + PAV 明细results/external_replication/pav_ld_annotation.csv
归因判定表results/external_replication/artifact_investigation.csv
结局异质性比对results/external_replication/outcome_heterogeneity_trim40.csv
脚本analysis/43_epitope_pav.R

判定表须含:protein outcome sentinel linked_pav r2 pav_gene pav_consequencecross_platform_direction abundance_independent_evidence artifact_verdict vetoed


五、局限(先写下,防止跑完淡化)

  1. 只查了 5 对,27 对因缺第二平台数据未经表位检验,且 ARIC 补不上(§0)
  2. 没有自有质谱,5 对里只有 1 对有丰度无关仲裁
  3. 不做表面可及性/结构分析,仅用 SIFT/PolyPhen
  4. MHC 区 LD 极强r²>0.8 圈定范围偏大,PAV 命中率不可与非 MHC 直接比较
  5. r² > 0.8 阈值取自 Zhao 2023 原文;Kuliesius 2025 的原文阈值我没读到,不挂靠

六、待运行

⬜ 写 analysis/43_epitope_pav.R(含 A1–A7 断言) ⬜ 跑 LD + VEP ⬜ TRIM40 结局异质性比对 ⬜ 回填 §8 并逐条对账 §3.2


六之二、★ 2026-08-07 追加:改为对 4a/4b/4c 三路输入跑一次

这是在修我自己的顺序错误

v4 流程图上 4X 应在 4a/4b/4c 全部跑完之后跑一次。 我第一轮把 4X 跑在了 4c 之前,导致 4c 报出 TNXB×Retinopathy 后又要补一轮。

→ 现改为单趟处理三路输入。第一轮的 5 对判定不受影响 (4X 判据不依赖 4c),新增的只有 TNXB×Retinopathy 这一对。

6.2.1 新增输入

来源报警证据
4cTNXB × RetinopathydeCODE 工具 rs150043706:4a +0.137 → 4c −0.082(FDR 2.1e-04)

★ 它与 4a/4b 来的报警性质不同:4a 报警是「同一个 SNP 换平台后反向」, 而这一条是「换了一个不同的 SNP」——rs9267797rs150043706

6.2.2 ★ 预期(写于运行之前;判据已在 10 页 §7.3 预先声明)

不能默认走表位。必须先看两个变异之间的 LD。

预测r²(rs9267797, rs150043706) < 0.2,因而判为 distinct_cis_signals(同基因两个独立信号)而非表位伪影,不否决

理由不是猜测,是频率上界rs150043706 在 deCODE 的 eaf = 0.0141(MAF 1.4%), 而发现哨兵 rs9267797 是常见变异。 一个罕见变异与一个常见变异之间的 r² 有数学上界,不可能高。

6.2.3 新增判据与断言

新增一类归因(无否决权):

归因触发处置
distinct_cis_signals报警来自 4c 且两个工具 r² < 0.2保留,写进 Limitations

阈值 r² < 0.2 为自定(与 PAV 连锁判定用的 r² > 0.8 是两个不同用途的阈值), 写 Methods 时须声明自定,不许挂靠文献。

#新增断言
A8TNXB×Retinopathy 必须得到明确归因,且不得被否决(除非判为 epitope_artifact
A9预测校验:r²(rs9267797, rs150043706) < 0.2 —— 不成立说明我的频率上界推理错了,须停下来查
A10第一轮的 5 对判定逐字不变(4X 判据不依赖 4c)

七、运行结果

执行日期:2026-08-07 状态:✅ 完成 脚本analysis/43_epitope_pav.R(表位支)· analysis/44_outcome_heterogeneity.R(结局支) 结果否决 1 对APOL1 × Maculopathy),其余 4 对保留

7.1 ★ 预测 vs 实际:5/5 全中

§3.2 预测实际
APOL1 × Macuepitope_artifact → 否决epitope_artifact,已否决
MICB_MICA × Macuprobe_target_ambiguityprobe_target_ambiguity
MICB_MICA × Neph同上probe_target_ambiguity
AOC1 × Retipav_present_abundance_plausiblepav_present_abundance_plausible
TRIM40 × Retioutcome_heterogeneityoutcome_heterogeneity,不否决

★ 判据是看到结果之前定死的,五条预测全中 —— 这与 4a 那四轮「跑完看结果顺不顺眼再调规则」是相反的做法。

7.2 验收断言:A1–A7 全 PASS,B1–B5 全 PASS

7.3 证据明细

APOL1(否决) —— 靶基因内 4 个 missense,全部 r² = 1.000

PAV基因PolyPhen
rs2239785(论文的 V1 = E150K)1.000APOL1possibly/probably damaging
rs1361751.000APOL1benign
rs1361761.000APOL1benign
rs1361771.000APOL1probably damaging

★★ 哨兵 rs136168 自身是 intron_variant,却坐在一个含 4 个错义变异的完美连锁单倍型块上。 「看哨兵自身注释」这条路在这里彻底失效 —— A2 就是为此设的。

MICB_MICA(探针指向不明,不否决) —— 归因链闭合:

  • 连锁 PAV 6 个全部在 MICA、没有一个在 MICB(r²=0.995), 含一个 splice_acceptor_variantrs1051792——Zhao 2023 明确把 splice acceptor 计入 PAV
  • 工具表的 cis 基因字段写着 MICB,MICA,生信注释基因是 MICA
  • ★ ARIC 里同一队列、同一平台MICA 适配体 −0.847(F=3035)vs MICB 适配体 +0.249(F=190)

→ 单一试剂的表位效应解释不了同队列两条适配体互相矛盾; 更可能是 Olink 复合探针与 SomaScan 分测探针测的不是同一个蛋白

AOC1(有 PAV 但丰度解释仍成立,不否决) —— 唯一 PAV 就是哨兵自己 (rs1049742,missense,SIFT deleterious / PolyPhen possibly damaging)。 缺丰度无关证据,按 Zhao 2023「PAV 也可真改丰度」保留。

邻近其他基因的 PAV:0 个(Zhao 2023 区分的第二类为空)。

★ MHC 的 LD 范围肉眼可见:MICB_MICA(MHC)连锁变异 116 个, 而 APOL1 28 个、AOC1 8 个 —— 与 §2.4 的预判一致。

7.4 TRIM40:结局侧异质性(不否决)

先证伪了一个更省事的解释:手工复算 MVP 对 T 等位的 β = −ln(1.065) = −0.063,除以暴露侧 −0.275 得 +0.229, 与 b_repl 分毫不差 → 谐化没错,方向翻转是真的

FinnGen R9(发现)MVP(复制)
人群芬兰(遗传隔离群)美国退伍军人 · 欧洲裔
表型定义DM_RETINOPATHY_EXMORE(宽)PheCode 250.7
病例 / 对照10,413 / 308,63329,668 / 402,541
病例占比3.26%6.86%(2.1 倍)
对照定义一般人群,未限定糖尿病人phecode 对照
效应(对齐到 T)+0.094(p=1.7e-09)−0.063(p=8.3e-05)
频率(对齐到 T)0.2840.227(差 0.057

TRIM40MHC 区。→ 保留 + 写进 Limitations,不否决。

7.5 ★★ 跑中查出的三个缺陷(两个足以让整步作废)

#缺陷后果抓住它的是谁
1VEP 的 POST 静默失败(180 个/批必超时,实测 2 个/批仅 1.4s)注释 0 条,但下游照常产出一份看着合理的判定表discordance_unexplained / probe_target_ambiguity否决 0 对)。★ 没有断言的话,这就是一次「跑通了、结论也说得过去」的运行,APOL1 直接溜掉A1 / A2 / A5
2A3 空洞通过什么都没注释时,「阴性对照未被判为 PAV」照样 PASS —— 断言本身失效了人工复核
3结局侧频率比较没对齐等位FinnGen 报 T=0.284、MVP 报 A=0.773,脚本打印出 0.489 的「巨大人群差异」。对齐后实际只差 0.057我自查(两数相加≈1 不合常理)

修法: 1 → 批次 180→25、超时 120→180s、重试 3 次、仍失败即 stop(),   并新增 A0:注释覆盖率必须 100%,挡在判定之前 2 → 把阴性对照 rs6000220 强制纳入注释集,断言改为「已注释且非 PAV」 3 → 显式读等位列 + align_af(),新增 B4(原始频率之和≈1 且差值大 = 比错了等位)   与 B5(对齐后差值须 <0.20)

★ 第 3 条正是记忆里那条铁律的复发:跨组比效应量或频率之前必须先对齐参照等位。 这次是我自己写的诊断代码犯的,没有外部迹象,只能靠「0.284+0.773≈1」这个反常识数字察觉。

7.5b ★ 三路单趟重跑结果(2026-08-07 追加,见 §6.2)

改为对 4a/4b/4c 三路输入跑一次后,A1–A10 全 PASS,否决数仍为 1 对

新增对两工具 r²归因否决
TNXB × Retinopathy0.000351distinct_cis_signals

§6.2.2 的预测被证实rs150043706(MAF 1.4%)与 rs9267797 的 r² 几乎为零, 正如频率上界所推。→ 它们是 TNXB 基因上的两个独立信号, 「方向不同」是遗传结构问题,与表位无关

A10 实测通过:第一轮 4 对(4a 来源)的判定一字未变 —— 证实 4X 的判据确实不依赖 4c,我此前的顺序错误没有污染结果。

7.6 漏斗更新

第3步存活 29 蛋白 / 53 对
  → 4a 送 4 对、4b 送 1 对 进 4X
  → 4X 否决 1 对(APOL1 x Maculopathy)
  → 存活 52 对

APOL1 仍保留在其他结局上(本步只否决了 Maculopathy 这一对)。

7.7 产物

文件内容
results/external_replication/pav_ld_annotation.csv21 行,连锁 PAV 明细
results/external_replication/artifact_investigation.csv5 行,归因判定
results/external_replication/outcome_heterogeneity.csvTRIM40 结局侧比对
results/external_replication/outcome_cohort_metadata.csv两队列结构对比
results/external_replication/_vep_cache.rdsVEP 注释缓存(153 变异)

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