Boltz-2(MIT 团队,2025)在 Boltz-1 的基础上加入了亲和力预测——这是所有 AF3 级模型此前都不做的事。它的主张是:结构与亲和力可以在一个模型中联合学习,而这个能力对药物发现的价值远高于单纯的结构预测。
为什么亲和力预测是关键一步
# AF3 类模型的定位问题:
#
# 它们回答的是「配体在哪里、以什么姿势结合」
# 而药物发现真正需要的是「这个分子结合得有多强」
#
# 一个能给出完美姿势但不知道亲和力的模型,
# 在虚拟筛选与先导优化中的价值有限 ——
# 因为你无法据此排序候选分子
#
# Boltz-2 的主张:
# 结构与亲和力共享底层的物理规律,
# 联合建模能让两个任务互相促进
#
# 实现:
# 在结构预测的表示之上,
# 加一个亲和力预测头
# 用 ChEMBL、BindingDB 等活性数据训练
#
# 报告的能力:
# 在部分基准上,亲和力预测的相关性
# 接近 FEP 类物理方法,
# 而速度快数个数量级
#
# → 【这个对比是它最引人注目的宣称】
如何看待「接近 FEP」的宣称
- 速度对比是真实的:FEP 计算一对分子的相对自由能需要数小时 GPU 时间(见 127《FEP、RBFE 与 ABFE》),而 Boltz-2 是秒级——这个数量级的差异是实在的;
- 准确度对比需要谨慎解读:
- 基准的选择很重要——在与训练数据相似的体系上表现好,不代表在新颖体系上同样好;
- 数据泄漏的风险:训练数据来自公开活性数据库,测试集中的分子或近似物可能已在训练集中(见 238《PDBbind》);
- FEP 的优势在于它不依赖该体系的历史数据——对全新骨架同样适用,而 ML 方法在训练分布外会退化。
- 正确的使用心态:把它当作「快速的初筛与排序工具」,把 FEP 当作「关键决策前的验证」——两者互补而非替代;
- 必做的验证:在自家靶点的历史数据上测试它的排序能力,而非直接采信论文基准。
使用
pip install boltz -U
# 结构 + 亲和力预测
# input.yaml:
# version: 1
# sequences:
# - protein:
# id: A
# sequence: MKTAYIAKQRQISFVKSHFSRQ...
# - ligand:
# id: L
# smiles: "CC(=O)Nc1ccc(O)cc1"
# properties:
# - affinity:
# binder: L
boltz predict input.yaml --use_msa_server --out_dir results/
# 输出中会多出亲和力预测:
# affinity_pred_value 预测的结合亲和力
# affinity_probability_binary 是否结合的概率
import json
with open("results/predictions/x/affinity_x.json") as f:
aff = json.load(f)
print("预测 log(IC50):", aff["affinity_pred_value"])
print("结合概率:", aff["affinity_probability_binary"])
# 注意单位与尺度:
# 输出的尺度定义见官方文档,
# 【不要直接当作 pIC50 使用】—— 先在已知数据上校准
#
# 校准做法:
# 用该靶点的一批已知活性分子跑预测,
# 拟合预测值与实测 pIC50 的关系,
# 得到该体系上的换算与可信区间
批量筛选的实用流程
# 场景:对 500 个候选分子做排序
#
# 直接跑 Boltz-2 的成本:
# 每个分子数分钟 GPU → 500 个约 1~2 天单卡
# → 可接受,但不适合十万级筛选
#
# 分级策略:
# 第 1 级:Vina 对 100 万分子粗筛 → 前 1 万
# 第 2 级:GNINA CNN 重打分 → 前 1000
# 第 3 级:【Boltz-2 结构 + 亲和力】→ 前 100
# 第 4 级:FEP 对最终 20~30 个做精确排序
# 第 5 级:药化人工审查
#
# Boltz-2 填补了「对接」与「FEP」之间的空档:
# 比对接准,比 FEP 快数个数量级
#
# 批量运行
import yaml, subprocess, os
def make_input(protein_seq, smiles, out_path):
cfg = {
"version": 1,
"sequences": [
{"protein": {"id": "A", "sequence": protein_seq}},
{"ligand": {"id": "L", "smiles": smiles}},
],
"properties": [{"affinity": {"binder": "L"}}],
}
with open(out_path, "w") as f:
yaml.safe_dump(cfg, f)
for i, smi in enumerate(candidate_smiles):
make_input(target_seq, smi, f"inputs/lig_{i:04d}.yaml")
# 用同一 MSA 缓存可显著加速(避免重复搜索)
subprocess.run(["boltz", "predict", "inputs/",
"--use_msa_server", "--out_dir", "results/"])
与其它方法的定位
| 方法 | 速度 | 亲和力可靠性 | 适用规模 |
|---|---|---|---|
| 对接打分 | 毫秒~秒 | 低(见 095《Docking Score》) | 百万级 |
| CNN 重打分(GNINA) | 秒 | 低到中 | 十万级 |
| MM/GBSA | 分钟 | 中 | 千级 |
| Boltz-2 | 分钟 | 中到高(体系相关) | 百~千级 |
| FEP / RBFE | 小时 | 高 | 十~百级 |
| 实验测定 | 天~周 | 金标准 | — |
局限与注意
- 训练分布依赖:对与训练数据差异大的靶点或化学类型,可靠性下降。全新靶点上要格外谨慎;
- 不给出误差估计:一个预测值没有配套的不确定度——建议自己用多次采样估计变异性;
- 对细微 SAR 的分辨率:同系列类似物之间的小差异(如一个甲基),预测能否分辨仍需在自家数据上验证;
- 结构预测的问题依然存在:物理有效性需要 PoseBusters 检查,姿势应与传统对接交叉验证;
- 不替代实验:所有计算预测都是排序与优先级工具。
它的真正意义
Boltz-2 的重要性不只在技术,更在于「完全开源 + 可商用 + 结构与亲和力一体」这个组合此前不存在。此前工业界要么用受限的 AF3(不能商用),要么用只给结构的开源模型,要么用昂贵的商业平台。Boltz-2 让中小团队第一次能以零许可成本获得这类能力——这对领域的实际影响可能大于其技术指标。
关键要点
- 首次把结构预测与亲和力预测统一在一个开源可商用模型中;
- 「接近 FEP」的宣称需谨慎解读——FEP 不依赖该体系的历史数据,对新骨架更稳健;
- 它填补了「对接」与「FEP」之间的空档,适合百~千级的中间筛选层;
- 输出尺度需在自家已知数据上校准,不要直接当 pIC50 用。
延伸资源
- Boltz-1:120《Boltz-1 技术报告精读》;Chai-1:122《Chai-1 技术报告精读》;AlphaFold3:113《AlphaFold3 论文精读》;
- FEP:127《FEP、RBFE 与 ABFE》;打分函数:095《Docking Score》;泄漏问题:238《PDBbind》。