jwohlwend/boltz · 上手攻略

  • 仓库:jwohlwend/boltz
  • 链接:https://github.com/jwohlwend/boltz
  • 分类:engineering / 生物分子相互作用预测(结构 + 亲和力)
  • 作者:spark
  • 更新:2026-11-05

资料核对说明:本篇基于 2026-11-05 抓取的 GitHub README 与 docs/prediction.md 原文撰写,仓库最近提交 2026-05-29,Stars 4292,MIT 许可。README 中 Boltz-2 尚未提供更新版评测代码与训练代码(两处均标注 "Coming soon"),本篇如实标注该状态。模型权重、评测数值、1000× 加速等说法均为作者/论文自述,本篇未独立复现实验。pip install boltz[cuda] -U 为 README 推荐的安装方式,具体最新 PyPI 版本号本轮未逐位核对。

一、它是什么

Boltz 是 MIT(Regina Barzilay 组,与 Recursion 等合作)开源的生物分子相互作用预测模型族,也是目前第一个完全开源且接近 AlphaFold3 精度的模型。

仓库现在包含两代:

  • Boltz-1(2024):首个完全开源、逼近 AlphaFold3 精度的模型,主打复合物结构预测。
  • Boltz-2(2025):新一代生物分子基础模型,在结构预测之上联合建模复合物结构与结合亲和力(binding affinity)。

Boltz-2 是真正的重头戏。README 里的说法很克制但力度很大:它是第一个接近基于物理的自由能微扰(FEP)方法精度、同时运行速度快 1000 倍的深度学习模型——这意味着早期药物发现阶段的 in silico 筛选真正变得可负担。

许可:代码与权重全部 MIT,学术与商业使用都免费。这是它相对 AlphaFold3 / Chai-1 的最大结构性优势——商业可用、无 API 限制、无算力绑定。

硬加速支持:在较新的 NVIDIA GPU 上使用 NVIDIA cuEquivariance kernel;另有一个社区 fork 支持 Tenstorrent 硬件(moritztng/tt-boltz)。

二、它解决什么问题

蛋白-配体相互作用研究里有两道长期卡着科研者的关卡:

第一关:结构预测。 知道一个蛋白和一个小分子会不会结合、结合成什么形状。AlphaFold3 把结构预测推到了新高度,但它是闭源、需申请、受限的。有 AlphaFold2 经验的人都知道,改造一个复合物结构、批量跑几十个突变体,门槛和成本都很高。

第二关:亲和力预测——真正难的那关。 结构对了不等于能结合,也不等于结合得紧。传统的 FEP 方法物理上严谨、精度高,但慢到不可用于大规模筛选。这是虚拟筛选几十年来的核心瓶颈。

Boltz 的解法是:一个模型同时输出结构和亲和力,用深度学习逼近 FEP 级别的亲和力精度,同时把速度提上来三个数量级。README 提到 Boltz-2 还加入了「实验方法条件化(experimental method conditioning)、距离约束、多链模板整合」等可控性特性。

配套的邦德亲和力输出有两个关键字段,用途完全不同——这是最容易踩坑的地方,下一节展开。

三、快速安装

pip install boltz[cuda] -U

方式 B:从 GitHub 装(获取每日更新)

git clone https://github.com/jwohlwend/boltz.git
cd boltz
pip install -e .[cuda]

重要注意

README 原文强调:"we recommend installing boltz in a fresh python environment"——务必在全新的 Python 环境里装。这套依赖(PyTorch + RDKit + CUDA 栈)冲突的概率不低,装进已有环境容易把已有项目搞坏。

CPU / 非 CUDA GPU:把命令里的 [cuda] 去掉:

pip install boltz -U

但 README 明确警告:"the CPU version is significantly slower than the GPU version"——差距是「显著」级别,不是「慢一点」。跑蛋白复合物建议直接上 GPU。

四、核心用法

4.1 跑一次预测

boltz predict input_path --use_msa_server
  • input_path 可以是一个 YAML 文件,也可以是一个目录(目录里的所有 .yaml / .fasta 都会批量跑)
  • --use_msa_server:自动通过 mmseqs2 服务器生成 MSA(不需要这个 flag 就必须自己提供预计算的 MSA)
  • 默认运行最新版本模型(即 Boltz-2),可用 --checkpoint 指定别的权重

看全部选项:

boltz predict --help

4.2 输入 YAML 格式

这是使用 Boltz 的核心。完整 schema(来自 docs/prediction.md):

sequences:
    - protein:                    # 或 dna / rna
        id: [A, B]                # 多个相同实体用列表
        sequence: SEQUENCE
        msa: ./examples/msa/seq1.a3m   # --use_msa_server 时可省略
    - ligand:
        id: [C, D]
        smiles: 'SMILES'          # 与 ccd 二选一,不可同时给
        # ccd: SAH
    - ligand:
        id: E
        ccd: SAH
constraints:
    - bond:
        atom1: [CHAIN_ID, RES_IDX, ATOM_NAME]
        atom2: [CHAIN_ID, RES_IDX, ATOM_NAME]
    - pocket:
        binder: CHAIN_ID
        contacts: [[CHAIN_ID, RES_IDX], [CHAIN_ID, RES_IDX]]
        max_distance: 6          # 4-20 Å,默认 6 Å
        force: false
    - contact:
        token1: [CHAIN_ID, RES_IDX/ATOM_NAME]
        token2: [CHAIN_ID, RES_IDX/ATOM_NAME]
        max_distance: 6
        force: false
templates:
    - cif: CIF_PATH
      force: true
      threshold: DISTANCE_THRESHOLD
    - pdb: PDB_PATH
      chain_id: [CHAIN_ID]
      template_id: [TEMPLATE_CHAIN_ID]
properties:
    - affinity:
        binder: CHAIN_ID         # 要算亲和力的小分子链

关键字段说明:

  • ENTITY_TYPE:protein / dna / rna(给 sequence)或 ligand(给 smiles 或 ccd,二者互斥)
  • id:链标识;多个相同实体写成列表 [A, B]
  • msa:默认必须提供。用 --use_msa_server 则可省略;用预计算 MSA 指到 .a3m 文件;多链蛋白要用 CSV 格式(两列 sequence + key,同 key 的行相互对齐)
  • msa: empty:强制单序列模式——README 明确写了 "not recommended, as it reduces accuracy"
  • modifications:修饰残基,position 从 1 开始计数
  • cyclic:聚合物链是否为环状(配体不适用)

4.3 一个完整可跑的最小例子

README 里给的例子结构:

version: 1
sequences:
  - protein:
      id: [A, B]
      sequence: MVTPEGNVSLVDESLLVGVTDEDRAVRSAHQFYERLIGLWAPAVMEAAHELGVFAALAEAPADSGELARRLDCDARAMRVLLDALYAYDVIDRIHDTNGFRYLLSAEARECLLPGTLFSLVGKFMHDINVAWPAWRNLAEVVRHGARDTSGAESPNGIAQEDYESLVGGINFWAPPIVTTLSRKLRASGRSGDATASVLDVGCGTGLYSQLLLREFPRWTATGLDVERIATLANAQALRLGVEERFATRAGDFWRGGWGTGYDLVLFANIFHLQTPASAVRLMRHAAACLAPDGLVAVVDQIVDADREPKTPQDRFALLFAASMTNTGGGDAYTFQEYEEWFTAAGLQRIETLDTPMHRILLARRATEPSAVPEGQASENLYFQ
      msa: ./examples/msa/seq1.a3m
  - ligand:
      id: [C, D]
      ccd: SAH
  - ligand:
      id: [E, F]
      smiles: 'N[C@@H](Cc1ccc(O)cc1)C(=O)O'

要算亲和力,就在 properties 里加 affinity: { binder: <小分子链 id> }。

4.4 亲和力输出的两个字段(最重要的一段)

README 专门用一段强调这两个字段「trained on largely different datasets, with different supervisions, and should be used in different contexts」:

字段 范围/单位 用途
affinity_probability_binary 0 到 1 判定 binder 与 decoy,即「这个分子到底结合不结合」。典型场景:hit discovery(苗头发现)阶段的命中筛选
affinity_pred_value log10(IC50),源自 μM 测量的 IC50 衡量不同 binder 之间的亲和力差异,以及小改动带来的变化。典型场景:hit-to-lead、lead-optimization(先导优化)

用错字段的后果:拿 affinity_pred_value 做「是不是 binder」的二分类判断,或者拿 affinity_probability_binary 去比较不同分子的亲和力强弱——两种都是概念错误,结果不可用。

4.5 常用选项

选项 类型 默认 说明
--out_dir PATH ./ 预测结果保存路径
--cache PATH ~/.boltz 模型与数据下载缓存目录;环境变量 BOLTZ_CACHE 可覆盖(须为绝对路径)
--checkpoint PATH None 指定 checkpoint,默认用 Boltz-2
--devices INTEGER 1 使用的设备数
--accelerator [gpu,cpu,tpu] gpu 加速器类型
--use_msa_server flag — 通过 mmseqs2 服务器自动生成 MSA
--use_potentials flag — 推理时施加 potential,提升 pose 的物理合理性
--override flag — 忽略缓存,从头重跑。改了参数或复合物细节但没换输出目录时必须加
--recycling_steps 10 --diffusion_samples 25 — — 对齐 AlphaFold3 的默认参数(10 步 recycling、25 个 diffusion 样本),耗时显著增加

4.6 MSA 服务器需要鉴权时

README 提到 --use_msa_server 配合需要认证的服务器时,凭证有两种提供方式,细节在 docs/prediction.md 里。

五、典型适用场景

  1. 早期虚拟筛选:几十到几百个小分子对同一蛋白靶点批量跑,替代慢速 FEP 做第一轮淘汰。这是 Boltz-2 最被期待的用法。
  2. 先导优化(lead optimization):对一个已知 binder 做小分子改动,用 affinity_pred_value 看亲和力怎么变。
  3. 苗头发现(hit discovery):用 affinity_probability_binary 从 decoy 库里挑 binder。
  4. 蛋白-蛋白复合物结构预测:只需要结构的话,Boltz-1 时代就是 AlphaFold3 的开源替代品。
  5. 商业场景结构预测:MIT 许可 + 本地推理,没有 API 配额、没有数据出境顾虑。
  6. 可控生成:有已知的口袋位置或接触关系时,用 pocket / contact / templates 约束把 pose 拉向预期构象。

不适合:CPU 环境下的大批量任务(慢到不可用);需要蛋白-蛋白亲和力预测(Boltz-2 目前只支持小分子对蛋白靶点);需要严格 FEP 级别物理精度做最终决策的场合。

六、坑与注意

  1. 亲和力只用小分子对蛋白靶点。README 明确写了:如果跑 RNA/DNA/辅因子靶点,代码不会崩,但输出不可靠(unreliable)。不崩这一点很危险——你不会收到报错,只会拿到看起来正常的数字。
  2. 配体原子数有硬限制:亲和力模块要求配体最多 128 个原子(按 RDKit RemoveHs 计数,含保留的氢),但 README 明确不推荐超过 56 个原子(训练时的限制设在 56)。小分子配体很容易越界。
  3. smiles 与 ccd 互斥,同时给会出错。
  4. 缓存会咬人:默认会复用输出目录里已存在的预处理文件和预测结果。改了参数或复合物细节却没加 --override,你可能拿到的是旧结果而不报错。加 --override 重跑。
  5. msa: empty(单序列模式)会降低精度,README 直接标注 not recommended。预算允许就别省这一步。
  6. 多链蛋白的 MSA 要用 CSV,不是 .a3m——CSV 需要 sequence + key 两列,同 key 的行相互对齐。
  7. RES_IDX 从 1 开始计数(不是 0);max_distance 支持范围 4-20 Å,默认 6 Å;ATOM_NAME 用标准化原子名,可在 RCSB 该组分的 CIF 文件里核对。
  8. RNA/DNA 亲和力不可信(见第 1 条),且 Boltz-2 论文提到的「可控生成」里的 protein-protein affinity 预测尚未落地——外部报道指出团队正扩展该能力,当前版本仍只有小分子-蛋白。
  9. 评测代码和训练代码都还没跟上。README 两处标注 "⚠️ Coming soon":更新版评测代码(Boltz-2 / Boltz-1 / Chai-1 / AlphaFold3 的测试基准结构预测,以及 FEP+、CASP16、MF-PCBA 基准上的亲和力预测)和 Boltz-2 训练代码。目前训练只能用于 Boltz-1。这意味着你想横向对比多个模型、或想复现论文数值,现阶段做不了。
  10. 别装进已有 Python 环境(README 明确建议 fresh environment)。
  11. CPU 版慢得超出预期(README 用词是 "significantly slower")。
  12. --use_potentials 会改结果。它会施加推理时 potential 提升 pose 物理质量,和你在论文里看到的默认数值可能对不上——对比实验时必须确认双方设置一致。
  13. 引用别忘了 MSA 那篇:用了自动 MSA 生成,必须一并引用 ColabFold 论文(Mirdita et al., Nature Methods, 2022, doi: 10.1038/s41592-022-01615-2)。

七、与同类对比

维度 Boltz-2 AlphaFold3 Chai-1 RoseTTAFold All-Atom 传统 FEP
开源 ✅ 代码+权重 MIT ❌ 闭源,需申请 ✅ 开源(研究许可) ✅ 开源 商业软件
结构精度 接近 AF3(Boltz-1 时代即宣称) 基准最高 接近 AF3 略低 不产结构
亲和力 ✅ 主打能力 ❌ 部分支持 ❌ ✅ 物理级精度
速度 比 FEP 快约 1000× 慢 慢 中 极慢
商业使用 ✅ MIT 允许 受限 受限 ✅ 需商业许可
本地可跑 ✅ ❌(需服务器) ✅ ✅ ✅
硬件 GPU 优先,cuEquivariance 加速;社区支持 Tenstorrent 需 A100 级 GPU GPU 大量 GPU + 集群
可控性 ✅ pocket/contact/templates/约束 有限 有限 有限 —

选型建议:

  • 要结构和亲和力一体 + 商用友好 → Boltz-2
  • 只追求最高结构精度基准分、且能申请到 → AlphaFold3
  • 想要多模型交叉验证(但注意第 9 条:官方对比代码尚未发布) → Boltz + Chai 双跑
  • 需要物理可解释、严格精度做最终决策 → 仍需 FEP,但可以用 Boltz 做前置粗筛

八、一句话推荐结论

推荐:如果你是结构生物学/药物发现方向的科研者或小团队,Boltz-2 是目前开源界对 AlphaFold3 之后结构+亲和力一体化最完整的答案——MIT 许可、可本地跑、比 FEP 快三个数量级,批量虚拟筛选真的可行。

但要清醒:亲和力模块只在小分子-蛋白靶点上有意义,配体原子数别超 56;官方评测与训练代码尚在 Coming soon,现阶段无法复现论文横向对比数。把它当粗筛与先导优化的加速器,不要当最终决策依据。

九、参考来源

  • 仓库 README:https://github.com/jwohlwend/boltz —— 2026-11-05 抓取
  • 预测文档 docs/prediction.md:https://raw.githubusercontent.com/jwohlwend/boltz/main/docs/prediction.md —— 2026-11-05 抓取(YAML schema、选项表、原子数限制均来自此文件)
  • 技术报告(README 引用,本篇未逐篇读原文):
  • Boltz-2: Passaro et al., Boltz-2: Towards Accurate and Efficient Binding Affinity Prediction, bioRxiv, doi:10.1101/2025.06.14.659707
  • Boltz-1: Wohlwend et al., Boltz-1: Democratizing Biomolecular Interaction Modeling, bioRxiv, doi:10.1101/2024.11.19.624167
  • ColabFold: Mirdita et al., Nature Methods, 2022
  • 关联资源(README 提及,未独立抓取):Slack https://boltz.bio/join-slack ;Tenstorrent fork https://github.com/moritztng/tt-boltz
  • 仓库仓库卡片:organized/repo_cards/4881-jwohlwend-boltz.md