很多有意思的靶点没有实验结构。AlphaFold 让「先预测再设计」成为常规路径——但预测结构用于药物设计有一系列必须注意的地方,直接拿来对接常常得到误导性的结果。
第一步:先查 AlphaFold DB
# DeepMind 已预测了 2 亿多个蛋白结构并免费开放
# 常见物种的天然蛋白很可能已有现成结果,不需要自己跑
curl -s "https://alphafold.ebi.ac.uk/api/prediction/P00533" | python -m json.tool
# 直接下载
wget https://alphafold.ebi.ac.uk/files/AF-P00533-F1-model_v4.pdb
wget https://alphafold.ebi.ac.uk/files/AF-P00533-F1-predicted_aligned_error_v4.json
import requests
def fetch_alphafold(uniprot_id):
r = requests.get(f"https://alphafold.ebi.ac.uk/api/prediction/{uniprot_id}")
if not r.ok or not r.json():
return None
entry = r.json()[0]
pdb = requests.get(entry["pdbUrl"]).text
open(f"{uniprot_id}_af.pdb", "w").write(pdb)
pae = requests.get(entry["paeDocUrl"]).json()
return {"pdb": f"{uniprot_id}_af.pdb", "pae": pae,
"version": entry.get("latestVersion")}
info = fetch_alphafold("P00533")
选择预测服务
| 需求 | 方案 | 注意 |
|---|---|---|
| 已知天然蛋白 | AlphaFold DB | 免费,直接下载 |
| 学术研究、含配体 | AlphaFold Server(见 290《AlphaFold Server》) | 限非商业用途;配体限预定义列表 |
| 商业项目 | Boltz(见 192《Boltz》) | MIT 许可,可本地部署 |
| 需实验约束 | Chai-1(见 193《Chai-1》) | 许可需核对 |
| 快速批量单链 | ESMFold(见 195《ESMFold》) | 秒级,精度略低 |
| 敏感序列 | 本地部署任意开源实现 | 数据不出内网 |
商业项目务必注意许可:AlphaFold Server 的服务条款限非商业使用,AlphaFold 官方权重也带非商业限制。做药物研发项目应改用 Boltz 等许可明确的方案。
置信度判读:最关键的一步
from Bio.PDB import PDBParser
import numpy as np, json
# pLDDT 存在 B-factor 列
parser = PDBParser(QUIET=True)
st = parser.get_structure("af", "P00533_af.pdb")
plddt = {}
for res in st[0]["A"]:
ca = res["CA"] if "CA" in res else None
if ca is not None:
plddt[res.id[1]] = ca.get_bfactor()
vals = np.array(list(plddt.values()))
print(f"平均 pLDDT: {vals.mean():.1f}")
print(f"很可信 (>90): {(vals>90).mean():.1%}")
print(f"较可信 (70~90): {((vals>=70)&(vals<=90)).mean():.1%}")
print(f"低可信 (<70): {(vals<70).mean():.1%}")
# 找出低置信度区域(通常是无序区或柔性 loop)
low = [r for r, v in plddt.items() if v < 70]
print(f"低置信残基数: {len(low)}")
| pLDDT | 含义 | 能否用于药物设计 |
|---|---|---|
| > 90 | 很可信,接近实验精度 | 可以 |
| 70~90 | 骨架大致正确,侧链可能不准 | 谨慎,需精修 |
| 50~70 | 低可信 | 不建议 |
| < 50 | 常为内在无序区 | 不能用(但这个信息本身有价值) |
PAE:判断域间取向
import json, numpy as np
import matplotlib.pyplot as plt
pae_data = json.load(open("AF-P00533-F1-predicted_aligned_error_v4.json"))
pae = np.array(pae_data[0]["predicted_aligned_error"])
plt.imshow(pae, cmap="viridis_r", vmin=0, vmax=30)
plt.colorbar(label="PAE (Å)")
plt.xlabel("Residue"); plt.ylabel("Residue")
# 解读:
# 块状低 PAE 区域 = 一个刚性结构域
# 块之间高 PAE = 域间相对取向不可信
#
# 关键:各域 pLDDT 都很高,但域间 PAE 差,
# 说明每个域预测得好,但它们的排布不可信。
# 这时不应把全长结构当整体使用,应按域处理。
预测结构用于对接的注意事项
- 侧链构象是「无配体状态」的。这是最关键的一点。AlphaFold 预测的是 apo 样构象,而真实的结合口袋会因诱导契合而调整。用预测结构直接对接,成功率明显低于用共晶结构。
- 口袋可能是关闭的:某些口袋只在配体结合时打开,预测结构中可能看不到。
- 应对策略:
- 用集合对接:结合 MD 或弹性网络模型(见 209《ProDy》)生成构象集合;
- 允许侧链柔性对接;
- 用同源蛋白的共晶结构做模板叠合,参考其口袋构象;
- 只取高 pLDDT 的结构域做对接。
- 务必做结构准备:预测结构同样需要加氢、定质子化态、能量最小化(见 340《用 PDBFixer 修复蛋白结构》)。
- 用同源蛋白验证流程:如果该家族有共晶结构,先在那上面做重对接验证,确认流程可靠。
# 检查预测结构的口袋是否存在
# 用 fpocket 检测并评估可成药性
fpocket -f P00533_af.pdb
# 查看 P00533_af_out/P00533_af_info.txt
# 关注:口袋体积、疏水性、druggability score
# 如果预测结构中检测不到合理口袋,
# 可能是构象问题,需要用采样方法探索
常见坑与提示
- 先查 AlphaFold DB,常见蛋白很可能已有现成结果;
- 商业项目注意许可,AlphaFold Server 限非商业使用;
- 各域 pLDDT 高但 PAE 差 = 域间取向不可信,应按域处理;
- 预测结构是 apo 样构象,直接对接成功率低,需用集合对接或侧链柔性。