020

Boltz 教程:新一代生物分子结构预测工具怎么用

Boltz 是开源可商用的 AF3 级结构预测工具。这篇给出安装、YAML 配置、约束用法与结果判读。

Boltz 是 MIT 许可的开放结构预测模型,能力对标 AlphaFold3。对产业用户而言,它的关键优势是「可以商用」——而且支持任意 SMILES 配体与口袋约束,这两点是 AlphaFold Server 做不到的。

安装与最简用法

pip install boltz
# GPU 推荐(CPU 也能跑但很慢)

# ---- 最简的输入:YAML ----
# input.yaml:
#   version: 1
#   sequences:
#     - protein:
#         id: A
#         sequence: MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQ

boltz predict input.yaml --use_msa_server --out_dir results/

# --use_msa_server: 用远程 MMseqs2 搜 MSA
#   【敏感序列不要用】—— 序列会发到外部

# ---- 蛋白 + 小分子配体 ----
# input.yaml:
#   version: 1
#   sequences:
#     - protein:
#         id: A
#         sequence: MKTAYIAK...
#     - ligand:
#         id: L
#         smiles: "CC(=O)Nc1ccc(O)cc1"
#
# 【任意 SMILES 都可以】—— 这是相对 AF Server 的关键优势

# ---- 常用参数 ----
boltz predict input.yaml \
  --use_msa_server \
  --recycling_steps 5 \
  --diffusion_samples 5 \
  --sampling_steps 200 \
  --output_format mmcif \
  --out_dir results/

# --diffusion_samples: 【采样多个结构看一致性】
# --recycling_steps:   循环回收次数,增大可能提升质量

口袋约束:显著提升质量的功能

# 【如果已知结合位点,务必使用】
#
# input.yaml:
#   version: 1
#   sequences:
#     - protein:
#         id: A
#         sequence: MKTAYIAK...
#     - ligand:
#         id: L
#         smiles: "CC(=O)Nc1ccc(O)cc1"
#   constraints:
#     - pocket:
#         binder: L
#         contacts: [[A, 45], [A, 78], [A, 123]]
#
# 【为什么重要】:
#   实际场景中口袋位置通常是已知的
#   (从共晶结构、突变实验或同源蛋白得知)
#   → 不用这个信息是浪费
#   → 【加约束后姿势预测质量明显提升】
#
# 【怎么确定 contacts 残基】:
#   - 从同一靶点的共晶结构中提取(用 PLIP,见 108)
#   - 从同源蛋白的结合位点映射
#   - 从突变实验数据
#   - 从口袋检测工具(fpocket)的结果

# ---- 共价连接(共价抑制剂建模)----
#   constraints:
#     - bond:
#         atom1: [A, 797, SG]      # Cys797 的硫原子
#         atom2: [L, 1, C2]        # 配体的迈克尔受体碳
#
# ---- 修饰残基 ----
#   sequences:
#     - protein:
#         id: A
#         sequence: MKTAYSAKQRQ
#         modifications:
#           - position: 6
#             ccd: SEP             # 磷酸丝氨酸
#
# ---- 多链复合物 ----
#   sequences:
#     - protein: {id: A, sequence: MKTAY...}
#     - protein: {id: B, sequence: MSKGE...}
#     - ligand:  {id: L, smiles: "CCO"}
#
# ---- 核酸 ----
#   sequences:
#     - protein: {id: A, sequence: MKTAY...}
#     - dna:     {id: D, sequence: ATGCATGC}

结果判读

import json
import numpy as np

with open("results/predictions/x/confidence_x_model_0.json") as f:
    conf = json.load(f)

print("综合置信度:", conf["confidence_score"])
print("pTM:", conf["ptm"])
print("ipTM:", conf["iptm"])
print("配体界面 ipTM:", conf.get("ligand_iptm"))
print("复合物 pLDDT:", conf["complex_plddt"])

# 【判读要点】:
#   ligand_iptm 是判断配体姿势可信度的核心指标
#   但【高 ligand_iptm 不保证姿势物理合理】
#   → 仍需 PoseBusters 检查

# ---- 多次采样的一致性检验(最实用的判据)----
from rdkit import Chem
from rdkit.Chem import rdMolAlign
import glob

def consistency_check(pred_dir, threshold=2.0):
    """比较多次采样中配体位置的一致性"""
    ligs = []
    for path in sorted(glob.glob(f"{pred_dir}/*_model_*.cif")):
        # 从 cif 中提取配体(实际需要按 chain id 筛选)
        # 这里示意用 SDF 导出后比较
        pass
    # 计算两两 RMSD,一致性高则可信

# 【建议流程】:
#   --diffusion_samples 5
#   → 比较 5 个结构中配体位置的 RMSD
#   → 两两 RMSD < 2 Å 的比例 > 70% = 可信
#   → 分散 = 该体系不可靠,不应据此做设计决策

后处理:必需的验证

# 与所有深度学习结构预测方法一样,必须验证

# ---- 1) 物理有效性 ----
from posebusters import PoseBusters
buster = PoseBusters(config="dock")
df = buster.bust(["ligand.sdf"], None, "protein.pdb")
# 【不通过的姿势不应用于设计】

# ---- 2) 局部优化修正 ----
# smina -r protein.pdb -l ligand.sdf --minimize -o refined.sdf

# ---- 3) 独立打分 ----
# smina -r protein.pdb -l refined.sdf --score_only
# 【Boltz 不给亲和力,需要独立评估】

# ---- 4) 相互作用核对 ----
# 用 PLIP 分析,与已知的关键相互作用比较(见 108)

# ---- 5) 与传统对接交叉验证 ----
# 与 Vina/GNINA 的姿势比较(见 346)
# 【原理不同的方法一致 → 可信度显著提高】

# ---- 6) 与已知共晶结构比较(如果有)----
# 用该靶点的已知配体测试:能否复现晶体姿势?
# 【这是最有说服力的验证】

Boltz-1 与 Boltz-2 的差异

Boltz-1 Boltz-2
结构预测
亲和力预测
许可 MIT MIT
速度 相近
# Boltz-2 的亲和力预测
# input.yaml:
#   ...
#   properties:
#     - affinity:
#         binder: L
#
# 输出中会多出:
#   affinity_pred_value
#   affinity_probability_binary
#
# 【重要提醒】:
#   输出的尺度需要在自家已知数据上【校准】
#   不要直接当作 pIC50 使用(见 121)

实用建议

  • 已知口袋务必用 pocket 约束:这是最能提升质量的单一措施;
  • 多次采样看一致性--diffusion_samples 5 起步;
  • 敏感序列不要用 --use_msa_server:可以预先用本地 MMseqs2 生成 MSA 并在 YAML 中指定;
  • 固定版本:不同版本的结果可能不同,生产流程中要锁定;
  • 与 Chai-1 交叉验证:两者训练细节不同,结果一致时可信度显著提高(见 021《Chai-1 教程》);
  • 不要跳过物理检查:这是所有此类方法的共同要求。

关键要点

  • MIT 许可 + 任意 SMILES 配体是它相对 AlphaFold Server 的两个关键优势;
  • 已知口袋时务必用 pocket 约束——这是最能提升姿势质量的单一措施;
  • 支持共价连接与修饰残基的显式建模;
  • 多次采样看一致性 + PoseBusters 检查 + 与传统对接交叉验证,缺一不可。

延伸资源