119

AlphaPulldown:蛋白复合物预测的实用工具

AlphaPulldown 把复合物预测变成可批量筛选的流程。这篇讲清它的筛选模式、判据设置与结果解读。

AlphaPulldown(Yu 等,Bioinformatics 2023)把 AlphaFold-Multimer 从「预测一个复合物」变成「批量筛选哪些蛋白对可能相互作用」——相当于用计算做「虚拟的 pull-down 实验」。

解决的问题

# 手工用 AF2-Multimer 预测复合物的麻烦:
#   1) 每对蛋白都要单独准备输入
#   2) MSA 搜索被重复执行(同一蛋白在多个组合中出现)
#   3) 结果分散,难以批量比较
#   4) 没有统一的筛选判据
#
# AlphaPulldown 的做法:
#   1) 【先为每个蛋白单独算一次 MSA 特征并缓存】
#      → 这是最关键的优化
#      → N 个蛋白只需 N 次 MSA 搜索,而非 N² 次
#   2) 组合阶段直接复用缓存的特征
#   3) 批量运行所有组合
#   4) 输出统一的评分表格便于排序
#
# 效率提升:
#   筛选 50 个蛋白的两两组合(1225 对)
#   传统方式:1225 × 2 次 MSA 搜索
#   AlphaPulldown:50 次 MSA 搜索
#   → 【数量级的差异】

三种筛选模式

模式 说明 典型用途
pulldown 一个「诱饵」× 一组「候选」 找某蛋白的相互作用伙伴
all_vs_all 一组蛋白的所有两两组合 构建相互作用网络
homo-oligomer 同一蛋白的多聚体 判断寡聚状态
custom 自定义组合与片段 域级别的相互作用定位

使用流程

pip install alphapulldown

# ---- 第一步:为每个蛋白计算并缓存特征 ----
create_individual_features.py \
  --fasta_paths=all_proteins.fasta \
  --data_dir=/path/to/alphafold_databases \
  --output_dir=features/ \
  --max_template_date=2024-01-01 \
  --skip_existing=True

# 这一步最慢(每个蛋白的 MSA 搜索)
# 但只需做一次,之后所有组合复用

# ---- 第二步:定义要预测的组合 ----
# bait.txt:
#   PROTEIN_A
# candidates.txt:
#   PROTEIN_B
#   PROTEIN_C
#   PROTEIN_D

# custom 模式还可以指定片段:
# custom.txt:
#   PROTEIN_A,1-200;PROTEIN_B      A 的 1-200 区域 与 B
#   PROTEIN_A,201-400;PROTEIN_B    A 的 201-400 区域 与 B
#   → 【这样能定位是哪个域负责相互作用】

# ---- 第三步:批量预测 ----
run_multimer_jobs.py \
  --mode=pulldown \
  --num_cycle=3 \
  --num_predictions_per_model=1 \
  --output_path=predictions/ \
  --data_dir=/path/to/alphafold_databases \
  --protein_lists=bait.txt,candidates.txt \
  --monomer_objects_dir=features/ \
  --job_index=$SLURM_ARRAY_TASK_ID     # 支持集群阵列作业

# ---- 第四步:汇总结果 ----
create_notebook.py --cutoff=5.0 \
  --output_dir=predictions/ \
  --pae_figsize=50

singularity exec --bind $PWD:/mnt \
  alpha-analysis.sif run_get_good_pae.sh \
  --output_dir=/mnt/predictions --cutoff=10

判据:如何判断「可能有相互作用」

# AlphaPulldown 输出的关键指标
#
# 1) ipTM(界面预测的 TM-score)
#    最重要的单一指标
#      > 0.8   高置信度界面
#      0.6~0.8 中等
#      < 0.6   不可靠
#
# 2) pDockQ / mpDockQ
#    综合了 pLDDT 与界面接触数的评分
#      pDockQ > 0.5  较可信
#      pDockQ > 0.23 弱信号
#    对多链体系用 mpDockQ
#
# 3) 界面 PAE
#    两条链之间残基对的 PAE
#    低 PAE 区块 = 该界面的相对位置可信
#    → 【比 ipTM 更直观地显示「哪部分界面可信」】
#
# 4) 界面接触残基数
#    太少(< 10)可能是偶然接触
#
# 5) 多模型/多种子的一致性
#    不同模型是否给出相似的界面
#    → 【这是最实用的判据之一】
#
# 综合判断(建议的筛选流程):
#   ipTM > 0.6 且 pDockQ > 0.23
#   且 界面 PAE 有明显的低值区块
#   且 多个模型的界面一致
#   → 才作为候选进入实验验证

结果解读的重要提醒

  • 高分不等于真实相互作用这是最需要警惕的。AF-Multimer 可能对「结构上兼容但生物学上不会相遇」的蛋白对给出高分——它不知道两个蛋白是否在同一个细胞区室、同一时间表达;
  • 低分不等于没有相互作用弱的、瞬时的相互作用(信号通路中很常见)AF-Multimer 普遍预测不好;翻译后修饰依赖的相互作用也预测不了;
  • 必须结合生物学背景:共定位、共表达、已知通路——计算筛选只是产生假设,不是证据
  • 假阳性率的现实:在大规模筛选中,即使用严格阈值,假阳性仍然不少。把它当作「排序工具」而非「判定工具」
  • 需要实验验证:共免疫沉淀、pull-down、SPR、交联质谱等。

在药物发现中的用途

场景 说明
PPI 靶点的界面表征 为 PPI 抑制剂设计提供结构基础(见 382《PPI 抑制剂》
降解剂的三元复合物 预测 E3 连接酶-降解剂-靶蛋白(见 356《PROTAC 是什么》
靶点通路研究 找靶蛋白的相互作用伙伴
脱靶预测 某蛋白可能与哪些蛋白结合
域级定位 用 custom 模式找出负责结合的具体区域
抗体-抗原 效果有限(见 364《抗体结构预测》

计算成本的现实

  • MSA 阶段:每个蛋白数分钟到数十分钟(用 MMseqs2 可加速,见 118《ColabFold》);
  • 预测阶段:每对复合物在 GPU 上数分钟到数十分钟,取决于总长度;
  • all_vs_all 的组合爆炸:N 个蛋白有 N(N−1)/2 对,50 个蛋白就是 1225 对——需要集群资源;
  • 实际建议:先用 pulldown 模式针对具体假设做小规模筛选,而非盲目做 all_vs_all;
  • 集群支持--job_index 参数支持 SLURM 阵列作业,这是大规模运行的必要条件。

关键要点

  • 核心优化是为每个蛋白缓存一次 MSA 特征——N 个蛋白只需 N 次搜索而非 N² 次;
  • 判据应综合 ipTM + pDockQ + 界面 PAE + 多模型一致性,而非单看一个数;
  • 高分不等于真实相互作用——模型不知道两个蛋白是否在同一时空共存;
  • 把它当作排序工具与假设生成器,结论必须有实验验证。

延伸资源