343

用 AlphaFold Server 预测无结构靶点

靶点没有实验结构时,用 AlphaFold 预测结构再做设计。这篇给出使用路径、置信度判读,以及预测结构做对接的注意事项。

很多有意思的靶点没有实验结构。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 样构象,直接对接成功率低,需用集合对接或侧链柔性。

延伸资源