019

AlphaFold Server 教程:如何快速预测蛋白结构和复合物

AlphaFold Server 让蛋白与复合物结构预测变得零门槛。这篇讲清使用流程、结果判读与限制。

AlphaFold Server 提供了 AlphaFold3 能力的网页界面:无需安装、无需 GPU、粘贴序列即可预测蛋白、复合物、核酸与配体的结构。它是最快获得结构假设的途径——但许可限制与结果判读需要特别注意

能做什么

类型 支持 说明
单链蛋白 基础功能
蛋白复合物 多条链
DNA / RNA 核酸结合蛋白
小分子配体 有限 只能从预定义列表中选
离子 常见的金属离子
翻译后修饰 部分 磷酸化、糖基化等

「配体只能从预定义列表选」是最大的功能限制不能输入任意 SMILES——这意味着它无法用于自己设计的化合物的结合模式预测。需要任意配体时,应该用 Boltz 或 Chai-1(见 020《Boltz 教程》021《Chai-1 教程》)。

使用流程

# 1) 访问 alphafoldserver.com,用 Google 账号登录
#
# 2) 新建任务,添加实体:
#    - Protein: 粘贴氨基酸序列(单字母)
#    - DNA/RNA: 粘贴核酸序列
#    - Ligand: 从下拉列表选择(如 ATP、NAD、血红素)
#    - Ion: 选择离子类型
#
# 3) 设置拷贝数(同源多聚体时)
#
# 4) 提交,等待(通常几分钟到几十分钟)
#
# 5) 下载结果:
#    - .cif 结构文件(含 pLDDT 在 B 因子列)
#    - 置信度 JSON(pTM、ipTM、PAE)
#
# 【使用限制】:
#   - 每日提交次数有限
#   - 【仅限非商业用途】
#   - 序列会上传到 Google 的服务器
#     → 【专有序列应谨慎】

# ---- 读取结果 ----
import json
import numpy as np
from Bio.PDB import MMCIFParser

# 置信度
with open("fold_xxx_full_data_0.json") as f:
    data = json.load(f)
print("pTM:", data.get("ptm"))
print("ipTM:", data.get("iptm"))
pae = np.array(data["pae"])

# 结构与 pLDDT
structure = MMCIFParser(QUIET=True).get_structure("pred", "model_0.cif")
plddt = np.array([a.get_bfactor() for a in structure.get_atoms()
                  if a.get_id() == "CA"])
print(f"平均 pLDDT: {plddt.mean():.1f}")
print(f"高置信度残基比例: {(plddt > 90).mean():.1%}")
print(f"可能无序的比例: {(plddt < 50).mean():.1%}")

结果判读:三个指标

# ---- pLDDT(逐残基置信度,0~100)----
#   > 90     很高,主链与侧链都可靠
#   70 ~ 90  可信的主链
#   50 ~ 70  低,谨慎
#   < 50     【很可能是无序区,而非「预测错了」】
#
#   【重要区分】:
#     低 pLDDT 常常是【有信息的】——
#     它提示该区域本身就没有固定结构
#     不要试图「修复」这些区域

# ---- PAE(预测的对齐误差矩阵)----
#   读法:以残基 i 对齐时,残基 j 的位置误差
#
#   【最重要的用途】:判断结构域之间的相对取向
#     - 两个域各自 pLDDT 很高
#     - 但域间 PAE 很大
#     → 【各域的结构可信,但它们的相对摆放不可信】
#     → 【这是最常被忽略的判读】
#
#   对多链复合物:
#     链间 PAE 是判断界面可信度的核心

def analyze_pae(pae, domain_boundaries):
    """分析域内与域间的 PAE"""
    for i, (s1, e1) in enumerate(domain_boundaries):
        intra = pae[s1:e1, s1:e1].mean()
        print(f"域 {i+1} 内部平均 PAE: {intra:.1f} Å")
        for j, (s2, e2) in enumerate(domain_boundaries):
            if j <= i:
                continue
            inter = pae[s1:e1, s2:e2].mean()
            print(f"  域 {i+1} - 域 {j+1} 间 PAE: {inter:.1f} Å "
                  f"{'【相对取向不可信】' if inter > 15 else ''}")

# ---- ipTM(界面置信度)----
#   > 0.8   界面很可能正确
#   0.6~0.8 不确定
#   < 0.6   【界面预测不可靠】
#
#   多链预测的核心指标

用于药物发现时的注意事项

  • 预测的是 apo 样构象:配体诱导形成的口袋可能看不到(见 112《AlphaFold2 论文精读》);
  • 侧链取向不可靠:即使 pLDDT > 90,结合位点侧链的具体朝向可能与配体结合态不同——而对接对侧链位置极其敏感
  • 直接用于对接需谨慎:多项研究发现,用预测结构对接的成功率明显低于用共晶结构
  • 应对措施
    • 优先用实验结构,哪怕是同源蛋白的;
    • 用 MD 或侧链采样生成构象集合,做集合对接;
    • 验证:能否复现该靶点已知配体的结合模式
    • 用 Boltz-2/Chai-1 直接预测复合物(见 020《Boltz 教程》021《Chai-1 教程》)。
  • 抗体-抗原界面仍是难点:成功率明显低于一般蛋白界面(见 364《抗体结构预测》)。

与其它方案的选择

需求 推荐
已知蛋白的结构 先查 AlphaFold DB(已有 2 亿+ 预测)
数据库中没有的序列 ColabFold(见 118《ColabFold》)或 AF Server
蛋白复合物(学术) AlphaFold Server
任意小分子配体 Boltz-2 / Chai-1(见 020《Boltz 教程》021《Chai-1 教程》
商业用途 Boltz-2(MIT 许可)
敏感序列 本地部署,不要用在线服务
大批量预测 本地 ColabFold 或 ESMFold(见 116《ESMFold 论文精读》

提高可靠性的做法

# 1) 【多次预测看一致性】
#    同一序列多次提交(如果配额允许)
#    → 结果差异大 = 该体系不可靠
#
# 2) 【与其它方法交叉验证】
#    ColabFold(AF2)、ESMFold、Boltz
#    → 多个方法一致 = 更可信
#
# 3) 【与实验数据比对】
#    - 已知的二级结构(CD 光谱)
#    - 交联质谱的距离约束
#    - HDX-MS 的溶剂暴露信息
#    - 突变实验的功能数据
#    → 【任何实验约束都能提高判断的把握】
#
# 4) 【检查同源结构】
#    PDB 中有没有近缘蛋白的实验结构?
#    → 预测结果应该与之大体一致
#
# 5) 【关注低置信度区域】
#    它们往往是柔性 loop 或无序区
#    → 不要基于它们做设计决策
#
# 【核心心态】:
#   预测结构是【高质量的假设】,不是【测定的事实】
#   关键决策仍需实验结构支持

关键要点

  • 配体只能从预定义列表选,不能输入任意 SMILES——这是最大的功能限制;
  • 域内 pLDDT 高不代表域间相对取向可信——必须看 PAE,这是最常被忽略的判读;
  • 预测的是 apo 样构象、侧链取向不可靠,直接用于对接需谨慎验证
  • 仅限非商业用途,且序列会上传外部服务器——专有序列应用本地方案。

延伸资源