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 + 多模型一致性,而非单看一个数;
- 高分不等于真实相互作用——模型不知道两个蛋白是否在同一时空共存;
- 把它当作排序工具与假设生成器,结论必须有实验验证。
延伸资源
- ColabFold:118《ColabFold》;AlphaFold2:112《AlphaFold2 论文精读》;
- PPI 靶点:382《PPI 抑制剂》;降解剂三元复合物:356《PROTAC 是什么》。