154_蛋白质互作预测¶
一句话概述¶
蛋白质复合物结构预测利用AlphaFold-Multimer、ColabFold和HDOCK等工具,从蛋白质序列出发预测多链复合物的三维结构和互作界面,是结构生物学和药物设计的重要计算手段。
核心知识点总览¶
| 知识点 | 说明 |
|---|---|
| AlphaFold-Multimer | DeepMind开发的多链蛋白复合物结构预测方法 |
| ColabFold | 基于MMseqs2加速的AlphaFold前端,支持Colab/本地 |
| HDOCK | 基于模板和自由对接的混合蛋白对接服务器 |
| MSA生成 | 多序列比对是结构预测的关键输入 |
| pLDDT/PAE | 预测质量评估指标(局部置信度/残基对误差) |
| iPTM/pTM | 多链复合物的模型质量评分 |
| 互作界面分析 | 接触残基、结合面积、氢键网络分析 |
| 分子对接 | 利用已知结构做刚体/柔性对接预测复合物 |
各步骤详解¶
第一步:蛋白质互作预测方法概览¶
白话解释: 蛋白质在细胞里很少"单打独斗"——它们经常结合在一起形成复合物来执行功能。预测两个或多个蛋白质如何结合(互作界面在哪里、结合构象是什么样)是结构生物学的核心问题。现在主要有两大类方法:(1) AI预测(AlphaFold-Multimer)——从序列直接预测;(2) 分子对接(HDOCK等)——已知单体结构后搜索最优结合模式。
方法对比: | 方法 | 输入 | 适用场景 | 优势 | 局限 | |------|------|---------|------|------| | AlphaFold-Multimer | 蛋白序列 | 稳定复合物 | 端到端预测 | 计算资源大 | | ColabFold | 蛋白序列 | 快速预测 | 免GPU/快速MSA | 同AF2-Multi | | HDOCK | 单体结构/序列 | 蛋白-蛋白/核酸对接 | 网页服务器 | 需要初始结构 | | ClusPro | 单体结构 | 刚体对接 | 免费在线 | 无柔性 | | HADDOCK | 结构+实验约束 | 数据驱动对接 | 整合实验信息 | 需要先验信息 |
第二步:AlphaFold-Multimer本地运行¶
白话解释: AlphaFold-Multimer是AlphaFold2的多链扩展版。给它两个(或多个)蛋白质的序列,它就能预测它们结合在一起时的3D结构。准确度在很多情况下接近实验结果。
技术原理: - 输入:多条蛋白链的序列(用":"分隔) - MSA生成:对每条链独立搜索MSA,然后配对(paired MSA) - 模型推断:Evoformer处理配对MSA + 结构模块预测坐标 - 评分:iPTM(interface predicted TM-score)评估界面质量
代码示例:
# === AlphaFold-Multimer 本地安装 ===
# 需要: NVIDIA GPU (A100推荐), ~2TB磁盘(数据库), Docker
# 1. 克隆AlphaFold仓库
git clone https://github.com/google-deepmind/alphafold.git
cd alphafold
# 2. 下载数据库 (约2.6TB)
bash scripts/download_all_data.sh /path/to/databases/
# 3. 准备输入FASTA文件 (多链用">"分隔)
cat > complex.fasta << 'EOF'
>ChainA
MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSH
GSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLL
>ChainB
MVHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLST
PDAVMGNPKVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPE
EOF
# 4. 运行AlphaFold-Multimer
python run_alphafold.py \
--fasta_paths=complex.fasta \
--model_preset=multimer \
--data_dir=/path/to/databases/ \
--output_dir=output/ \
--max_template_date=2024-01-01 \
--db_preset=full_dbs \
--use_gpu_relax=True
# 输出文件:
# output/complex/
# ranked_0.pdb : 最佳模型
# ranked_1.pdb : 次佳模型
# ...
# ranking_debug.json : 排名分数
# result_model_*.pkl : 包含pLDDT, PAE等信息
第三步:ColabFold快速预测¶
白话解释: ColabFold让你不需要2TB数据库就能用AlphaFold-Multimer。它用MMseqs2在线搜索MSA(比jackhmmer快40倍),可以在Google Colab免费GPU上运行,或在本地用colabfold_batch命令运行。
代码示例:
# === 安装ColabFold本地版 ===
pip install colabfold[alphafold]
# 或使用conda
conda install -c conda-forge -c bioconda colabfold
# === 运行ColabFold预测复合物 ===
# 多链序列用":"分隔写在一个条目中
cat > complex.fasta << 'EOF'
>complex_AB
MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSH:MVHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLST
EOF
# 使用colabfold_batch
colabfold_batch \
complex.fasta \
output_dir/ \
--num-recycle 3 \
--num-models 5 \
--amber \
--use-gpu-relax \
--model-type alphafold2_multimer_v3
# 参数说明:
# --num-recycle: recycling次数(提高准确度, 默认3)
# --num-models: 使用的模型数(1-5)
# --amber: 是否做AMBER力场relaxation
# --model-type: 模型类型(multimer_v3最新)
# === 结果文件 ===
# output_dir/
# complex_AB_unrelaxed_rank_001.pdb : 最佳未松弛模型
# complex_AB_relaxed_rank_001.pdb : AMBER松弛后模型
# complex_AB_scores_rank_001.json : 分数(pLDDT, PAE, iPTM)
# complex_AB_coverage.png : MSA覆盖度图
# complex_AB_pae.png : PAE热图
# complex_AB_plddt.png : pLDDT分布图
# === 使用MMseqs2 API (最快方式) ===
# ColabFold默认使用MMseqs2服务器进行MSA搜索
# 如需本地MSA搜索:
colabfold_search \
complex.fasta \
/path/to/colabfold_db/ \
msas/ \
--threads 16
colabfold_batch \
msas/ \
output_dir/ \
--num-models 5
第四步:HDOCK蛋白对接¶
白话解释: HDOCK是一个综合性的分子对接工具。当你已经有蛋白质的单体结构(来自实验或AlphaFold)时,HDOCK可以预测两个蛋白如何结合。它的特色是结合了模板搜索和自由对接。
技术原理: - 先搜索PDB中的同源复合物模板(template-based) - 同时进行FFT-based的自由对接(template-free) - 综合两种结果输出最佳对接模型 - 支持蛋白-蛋白、蛋白-核酸、蛋白-小分子
代码示例:
# === HDOCK 网页版使用 ===
# 网址: http://hdock.phys.hust.edu.cn/
# === HDOCK 本地版 ===
# 下载: http://hdock.phys.hust.edu.cn/software.php
# 需要申请license
# 1. 准备输入文件
# receptor.pdb : 受体蛋白结构
# ligand.pdb : 配体蛋白结构
# 2. 运行HDOCK
hdock receptor.pdb ligand.pdb \
-out hdock_output \
-nout 100 \
-angle 15
# 参数:
# -out: 输出前缀
# -nout: 输出模型数量
# -angle: 旋转角度步长(度)
# 3. 输出
# hdock_output_*.pdb : 对接模型
# Hdock.out : 评分文件
# === 使用约束信息 ===
# 如果知道某些残基在界面上, 可以加约束
# restraint.txt 格式:
# RES A 45 50 (受体A链45-50号残基)
# RES B 100 110 (配体B链100-110号残基)
hdock receptor.pdb ligand.pdb \
-out hdock_output \
-rest restraint.txt
第五步:结果质量评估与界面分析¶
白话解释: 预测出复合物结构后,需要评估结果是否可靠,并分析互作界面——哪些残基参与结合、有多少氢键、结合面积多大。
代码示例:
import json
import numpy as np
from Bio.PDB import PDBParser, NeighborSearch, Selection
import matplotlib.pyplot as plt
# === 1. AlphaFold质量评估 ===
# 读取scores
with open("output/complex_AB_scores_rank_001.json") as f:
scores = json.load(f)
# 关键指标
print(f"pTM: {scores['ptm']:.3f}") # 单链TM-score预测
print(f"iPTM: {scores['iptm']:.3f}") # 界面TM-score预测 (>0.8 = 高置信)
print(f"Ranking confidence: {0.8*scores['iptm'] + 0.2*scores['ptm']:.3f}")
# pLDDT分析
plddt = np.array(scores['plddt'])
print(f"Mean pLDDT: {plddt.mean():.1f}")
print(f"pLDDT > 70 fraction: {(plddt > 70).sum() / len(plddt):.2%}")
# PAE热图
pae = np.array(scores['pae'])
plt.figure(figsize=(8, 6))
plt.imshow(pae, cmap='Greens_r', vmin=0, vmax=30)
plt.colorbar(label='PAE (Å)')
plt.xlabel('Residue index (scored)')
plt.ylabel('Residue index (aligned)')
plt.title('Predicted Aligned Error')
plt.savefig('pae_heatmap.png', dpi=150)
# === 2. 界面分析 ===
parser = PDBParser(QUIET=True)
structure = parser.get_structure("complex", "complex_AB_relaxed_rank_001.pdb")
model = structure[0]
# 定义链
chain_A = model['A']
chain_B = model['B']
# 找界面残基 (距离 < 5Å)
atoms_A = Selection.unfold_entities(chain_A, 'A')
atoms_B = Selection.unfold_entities(chain_B, 'A')
ns = NeighborSearch(list(atoms_B))
interface_residues_A = set()
interface_residues_B = set()
for atom in atoms_A:
close_atoms = ns.search(atom.get_vector().get_array(), 5.0)
if close_atoms:
interface_residues_A.add(atom.get_parent().get_id()[1])
for ca in close_atoms:
interface_residues_B.add(ca.get_parent().get_id()[1])
print(f"Interface residues in chain A: {len(interface_residues_A)}")
print(f"Interface residues in chain B: {len(interface_residues_B)}")
# === 3. 使用PRODIGY估计结合亲和力 ===
# pip install prodigy
# prodigy complex.pdb --selection A B
# PRODIGY结合亲和力预测
pip install prodigy-prot
prodigy complex_relaxed.pdb --selection A B
# 输出: 预测的Kd和ΔG
# PISA界面分析 (PDBePISA web服务)
# https://www.ebi.ac.uk/pdbe/pisa/
# PyMOL可视化界面
pymol -c << 'EOF'
load complex_relaxed.pdb
select interface_A, chain A and (chain B around 5)
select interface_B, chain B and (chain A around 5)
show sticks, interface_A or interface_B
color red, interface_A
color blue, interface_B
find_pairs interface_A, interface_B, mode=2, cutoff=3.5
save interface_view.png, ray=1
EOF
第六步:高通量互作筛查¶
代码示例:
# === 批量预测蛋白互作 ===
import subprocess
import os
from itertools import combinations
# 蛋白序列列表
proteins = {
"ProtA": "MVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSH",
"ProtB": "MVHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLST",
"ProtC": "MNIFEMLRIDEGLRLKIYKDTEGYYTIGIGHLLTKSPSLNAAKSELDKAIGRN",
"ProtD": "MKWVTFISLLFLFSSAYSRGVFRRDAHKSEVAHRFKDLGEENFKALVLIA"
}
# 生成所有成对组合
pairs = list(combinations(proteins.keys(), 2))
# 为每对生成FASTA并运行ColabFold
for p1, p2 in pairs:
fasta_content = f">{p1}_{p2}\n{proteins[p1]}:{proteins[p2]}\n"
fasta_file = f"pairs/{p1}_{p2}.fasta"
os.makedirs("pairs", exist_ok=True)
with open(fasta_file, 'w') as f:
f.write(fasta_content)
# 批量运行
subprocess.run([
"colabfold_batch",
"pairs/",
"results/",
"--num-recycle", "3",
"--num-models", "1", # 快速筛查用1个模型
"--model-type", "alphafold2_multimer_v3"
])
# === 解析结果, 按iPTM排序 ===
import glob
results = []
for json_file in glob.glob("results/*scores*.json"):
with open(json_file) as f:
data = json.load(f)
pair_name = os.path.basename(json_file).split("_scores")[0]
results.append({
"pair": pair_name,
"iPTM": data["iptm"],
"pTM": data["ptm"],
"confidence": 0.8 * data["iptm"] + 0.2 * data["ptm"]
})
results.sort(key=lambda x: x["confidence"], reverse=True)
for r in results:
print(f"{r['pair']}: iPTM={r['iPTM']:.3f}, confidence={r['confidence']:.3f}")
实战命令¶
# === ColabFold一键安装和运行 ===
pip install colabfold[alphafold]
# 复合物预测
colabfold_batch complex.fasta output/ \
--num-recycle 3 --num-models 5 --amber
# === 本地AlphaFold Multimer ===
python run_alphafold.py \
--fasta_paths=complex.fasta \
--model_preset=multimer \
--data_dir=/data/af2_db/ \
--output_dir=af2_output/ \
--use_gpu_relax
# === HDOCK在线提交 ===
curl -F "receptor=@receptor.pdb" \
-F "ligand=@ligand.pdb" \
http://hdock.phys.hust.edu.cn/api/submit
# === PyMOL结构可视化 ===
pymol -c -d "load ranked_0.pdb; spectrum b, blue_white_red; png output.png, ray=1, dpi=300"
面试常问点¶
Q1:AlphaFold-Multimer如何处理多链蛋白的MSA?¶
A: AlphaFold-Multimer使用"paired MSA"策略:(1) 对每条链独立搜索MSA(使用jackhmmer搜索UniRef和MGnify);(2) 通过物种信息将不同链的MSA序列配对(同一物种的序列配在一起);(3) 生成联合MSA,让模型学习链间共进化信息。这种配对MSA是预测界面接触的关键信息来源。
Q2:iPTM和pTM分别是什么?如何判断预测结果是否可靠?¶
A: pTM(predicted TM-score)评估单链折叠质量,范围0-1。iPTM(interface pTM)专门评估链间界面的预测质量。综合分数 = 0.8×iPTM + 0.2×pTM。判断标准:iPTM > 0.8通常表示高置信度预测;iPTM 0.6-0.8中等置信;iPTM < 0.5不可靠。同时应检查PAE热图——链间区域(off-diagonal blocks)PAE低于5Å表示界面预测可靠。
Q3:什么情况下AlphaFold-Multimer预测不准?¶
A: (1) 瞬时互作/弱相互作用:AF-M主要预测稳定复合物,Kd > μM级的弱互作难以预测;(2) 构象变化大的互作:如变构效应、诱导契合;(3) MSA深度不足:序列保守性低或同源序列少时配对MSA不够丰富;(4) 人工设计的蛋白:缺乏进化信息;(5) 涉及无序区域(IDR)的互作:AF对IDR预测本身不可靠。
Q4:ColabFold比原版AlphaFold快在哪里?¶
A: ColabFold主要加速在MSA搜索步骤:(1) 使用MMseqs2替代jackhmmer进行序列搜索——MMseqs2比jackhmmer快约40-100倍;(2) 使用预计算的ColabFold数据库(比完整UniRef+MGnify小得多);(3) 可以利用MMseqs2 API服务器在线搜索,无需本地存储2TB数据库。模型推断部分速度相同(都需要GPU)。
Q5:HDOCK适合什么场景?与AlphaFold-Multimer怎么选?¶
A: HDOCK适合:(1) 已有实验结构或高质量模型的蛋白对接;(2) 需要考虑配体结合或突变效应时(可以指定约束);(3) 蛋白-核酸对接(AF-M不支持);(4) 计算资源有限时(网页即可)。AlphaFold-Multimer适合:(1) 没有实验结构、从序列开始预测;(2) 需要同时折叠和对接的场景;(3) 多链(>2)复合物。
易错点¶
1. 多链序列格式错误¶
错误: ColabFold中用多个FASTA条目而非":"分隔多链。 正确做法: ColabFold中同一复合物的多条链用":"分隔写在一个条目中:>complex\nSEQA:SEQB:SEQC。每个">"开头是一个独立的预测任务。
2. 忽略同源寡聚体的对称性¶
错误: 预测同源二聚体时只给一条链。 正确做法: 即使是同源二聚体也需要输入两份序列(用":"分隔):>homodimer\nSEQA:SEQA。AF-M需要明确知道有几条链。
3. 过度相信低iPTM的预测结果¶
错误: iPTM=0.4的模型仍用于指导实验。 正确做法: iPTM < 0.5的预测基本不可靠。应尝试:(1) 增加recycling次数(--num-recycle 12);(2) 增加MSA深度;(3) 使用AlphaFold3或替代方法。如果仍然低,说明可能真的不互作或互作模式AF-M无法捕捉。
4. 忽略模型数量对结果的影响¶
错误: 只跑1个模型就下结论。 正确做法: 运行全部5个模型(model_1-5),检查它们的一致性。如果5个模型的界面结构一致(互相superimpose RMSD < 2Å),结果更可靠。如果各模型差异大,说明预测不确定。
5. 大复合物(>2000残基)内存不足¶
错误: 在16GB GPU上预测4000残基的复合物。 正确做法: GPU内存需求大致为 O(N²)。建议:<1000残基用16GB GPU;1000-2000用40GB(A100);>2000考虑用--max-msa或减少model数量,或使用A100 80GB。
补充知识¶
新一代工具¶
- AlphaFold3: 支持蛋白-核酸-小分子-离子的通用复合物预测
- RoseTTAFold2: David Baker团队的替代方法
- Chai-1: 新兴的开源复合物预测工具
- ESMFold: Meta的单序列蛋白结构预测(不做MSA, 超快)
验证手段¶
| 验证方法 | 适用场景 | 分辨率 |
|---|---|---|
| X-ray晶体学 | 稳定复合物 | 原子级 |
| Cryo-EM | 大复合物 | 近原子级 |
| XL-MS(交联质谱) | 验证界面残基距离 | ~30Å |
| HDX-MS | 验证界面区域 | 肽段级 |
| 突变实验 | 验证关键残基 | 残基级 |
计算资源参考¶
| 任务 | GPU | 时间(1000残基复合物) |
|---|---|---|
| ColabFold(在线MSA) | T4 16GB | ~30分钟 |
| ColabFold(本地MSA) | A100 | ~20分钟 |
| AlphaFold2-Multimer完整 | A100 | ~1-2小时(含MSA) |
| HDOCK | CPU | ~5分钟 |