跳到主要内容 Boltz-2 安装及用法:结构与亲和力预测模型 | 极客日志
Python AI 算法
Boltz-2 安装及用法:结构与亲和力预测模型 Boltz-2 是由麻省理工学院与 Recursion 开发的开源 AI 模型,用于蛋白质、DNA、RNA 及配体的全原子共折叠结构预测与结合亲和力计算。相比传统 FEP 方法,其速度提升约 1000 倍。模型背景、核心优势、安装步骤(Conda/Pip)、YAML 输入格式配置、推理命令参数详解以及输出文件结构解析。适用于苗头化合物发现、先导化合物优化及从头生成等药物研发场景。
橘子海 发布于 2026/3/28 更新于 2026/4/16 2 浏览Boltz-2 介绍
该 AI 模型由麻省理工学院计算机科学与人工智能实验室与上市 AI 制药公司 Recursion 共同开发,在 Boltz-1 基础上改进拓展而来。
简单来说,Boltz 与 AlphaFold3 一样,是一种全原子共折叠模型,将蛋白质折叠或结构预测的概念扩展到 DNA、RNA、配体中。该模型不仅可以预测分子相互作用的 3D 结构,还可用于分子设计等下游任务。Boltz-2 将亲和力预测与结构建模相结合,提高了预测结构的物理真实感。
Boltz-2 在一个大型数据集上进行了训练,该数据集结合了 500 万个结合亲和力测量值、分子动力学模拟和蒸馏数据,显著提高了预测结构的物理真实感。
在标准 FEP+ 亲和力基准测试中,Boltz-2 实现了 0.62 的平均 Pearson 相关系数,能够与可开源 FEP 流程 OpenFE 相媲美。但在速度方面,Boltz-2 只需 20 秒即可计算出结合亲和值,比当前 FEP 预测快 1000 倍!
在表示学习方面,亲和力预测建立在驱动共折叠过程的潜在表示之上。这种表示本质上编码了关于生物分子相互作用的丰富信息。因此,Boltz-2 在结合亲和力预测方面的改进是由结构建模的进步所推动的。这些进步源于:(1)扩展训练数据,超越静态结构,包括实验和分子动力学集合;(2)显著扩大多样模态下的蒸馏数据集;(3)通过基于实验方法、用户定义的距离约束和多链模板集成来增强用户控制。
Boltz-2 药物发现的重要场景
Boltz-2 对亲和力的准确预测,使得它可用于药物发现的重要场景:
苗头化合物发现(Hit discovery) :该模型在高通量筛选中区分结合剂(binders)与诱饵(decoys),并在 MF-PCBA 基准测试中实现了显著的富集增益,其表现优于对接(docking)和机器学习(ML)方法。
苗头化合物到先导化合物以及先导化合物优化(Hit-to-lead and lead optimization) :这是药物发现和开发过程中的两个关键阶段。首先'Hit-to-lead'指的是在初期筛选中找到具有活性的化合物,然后通过进一步的化学修饰和生物学测试,将这些'hit'转化为更具潜力和选择性的候选分子,即'lead'。接下来,'lead optimization'是对这些先导化合物进行优化的过程,通过对化合物的结构进行调整,提高其药效、选择性、代谢稳定性等特性。
从头生成(de-novo Generation) :De-novo Generation 与生成模型相结合,Boltz-2 能够发现新的结合剂。在针对 TYK2 靶点的前瞻性筛选中,该流程能够生成多样化、可合成的高亲和力结合剂,这一点通过绝对结合自由能 (ABFE) 模拟估算得出。
Boltz-2 的改进及对比优势
与 Boltz-1 相比,Boltz-2 在跨模态的晶体结构预测方面有所改进,特别是在抗体 - 抗原复合物等具有挑战性的目标上表现尤为突出。当与分子动力学模拟进行基准比较时,Boltz-2 在预测关键动态特性(如均方根波动 RMSF)方面的性能可以与近期的专用模型(例如 AlphaFlow 和 BioEmu)相媲美。
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Figure 3: Evaluation of the performance of Boltz-2 against existing co-folding models on a diverse set of unseen complexes. Error bars indicate 95% confidence intervals.
安装及应用
安装 conda create -n boltz-2 python=3.12
方法 1: 创建一个新的 python 环境(比如使用 conda),使用 pip 安装:
git clone https://github.com/jwohlwend/boltz.git
cd boltz; pip install -e .
使用推理 boltz predict input_path --use_msa_server
input_path 应指向一个 YAML 文件,或用于批量处理的 YAML 文件目录,描述您想要建模的生物分子及其预测的属性(例如亲和力)。要查看所有可用选项:boltz predict --help。
YAML 格式更加灵活,允许更复杂的输入,尤其是共价键相关的输入。YAML 的架构如下:
sequences:
- ENTITY_TYPE: protein
id: CHAIN_ID
sequence: SEQUENCE
msa: MSA_PATH
- ENTITY_TYPE: ligand
id: CHAIN_ID
smiles: 'SMILES'
ccd: CCD
modifications:
- position: RES_IDX
ccd: CCD
cyclic: false
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/ATOM_NAME ]]
max_distance: DIST_ANGSTROM
- contact:
token1: [CHAIN_ID , RES_IDX/ATOM_NAME ]
token2: [CHAIN_ID , RES_IDX/ATOM_NAME ]
max_distance: DIST_ANGSTROM
templates:
- cif: CIF_PATH
chain_id: CHAIN_ID
templates_id: [TEMPLATE_CHAIN_ID ]
properties:
- affinity:
binder: CHAIN_ID
sequences 输入中每个唯一的链/分子都有一个条目。每个聚合物实体都表示为 ENTITY_TYPE(protein、dna 或 rna)并具有一个 sequence 属性。非聚合物实体用 ENTITY_TYPE 等于 ligand,并具有 smiles 或 ccd 属性。
对于蛋白质,msa 默认情况下需要键,但可以通过传递 --use_msa_server 标志来省略,该标志将使用 mmseqs2 服务器自动生成 MSA。如果您希望使用预先计算的 MSA,请使用 msa 属性,该属性 MSA_PATH 指示包含该蛋白质 MSA 的文件的路径。
字段 modifications 为可选字段,用于指定聚合物中的修饰残基。position 字段指定残基的索引(从 1 开始),ccd 为修饰残基的 CCD 代码。此字段目前仅支持 CCD 配体。标志 cyclic 应用于指定环状聚合物链。
constraints 是一个可选字段,允许您指定有关输入结构的附加信息。
该 bond 约束指定两个原子之间的共价键。
约束 pocket 指定与配体结合的残基。
templates 是一个可选字段,允许您为预测指定结构模板。您至少必须提供结构模板的路径,该路径必须以 CIF 文件的形式提供。
properties 是一个可选字段,用于指定是否要计算亲和力。如果启用,您还必须提供与要计算亲和力的小分子对应的 chain_id。
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'
例如,要使用 10 个回收步骤和 25 个样本(AlphaFold3 的默认参数)预测结构,请使用:
boltz predict input_path --recycling_steps 10 --diffusion_samples 25
选项 类型 默认 描述 --out_dir PATH ./ 保存预测的路径。 --cache PATH ~/.boltz 下载数据和模型的目录。如果设置 BOLTZ_CACHE,将使用环境变量作为绝对路径 --checkpoint PATH 无 可选检查点。默认使用提供的 Boltz-2 模型。 --devices INTEGER 1 用于预测的设备数量。 --accelerator [gpu,cpu,tpu] gpu 用于预测的加速器。 --recycling_steps INTEGER 3 用于预测的回收步骤数。 --sampling_steps INTEGER 200 用于预测的采样步骤数。 --diffusion_samples INTEGER 1 用于预测的扩散样本的数量。 --max_parallel_samples INTEGER 5 并行预测的最大样本数。 --step_scale FLOAT 1.638 步长与扩散过程采样分布的温度有关。步长越低,样本间的多样性越高(建议在 1 到 2 之间)。 --output_format [pdb,mmcif] mmcif 用于预测的输出格式。 --num_workers INTEGER 2 用于预测的数据加载器工作者的数量。 --method 字符串 无 用于预测的方法。 --preprocessing-threads INTEGER multiprocessing.cpu_count() 用于预处理的线程数。 --affinity_mw_correction FLAG FALSE 是否将分子量校正添加到亲和力值头。 --sampling_steps_affinity INTEGER 200 用于亲和力预测的采样步骤数。 --diffusion_samples_affinity INTEGER 5 用于亲和力预测的扩散样本数量。 --affinity_checkpoint PATH 无 可选的亲和性检查点。默认使用提供的 Boltz-2 模型。 --max_msa_seqs INTEGER 8192 用于预测的 MSA 序列的最大数量。 --subsample_msa FLAG FALSE 是否对 MSA 进行子采样。 --num_subsampled_msa INTEGER 1024 要进行子采样的 MSA 序列的数量。 --no_trifast FLAG FALSE 是否不使用 trifast 内核进行三角更新。 --override FLAG FALSE 如果发现,是否覆盖现有预测。 --use_msa_server FLAG FALSE 是否使用 msa 服务器生成 msa。 --msa_server_url 字符串 https://api.colabfold.com MSA 服务器 URL。仅当设置了 --use_msa_server 时使用。 --msa_pairing_strategy 字符串 greedy 使用的配对策略。仅当设置了 --use_msa_server 时才使用。选项包括"greedy"和"complete"。 --use_potentials FLAG FALSE 是否使用推理时间潜力运行原始 Boltz-2 模型。 --write_full_pae FLAG FALSE 是否将完整的 PAE 矩阵保存为文件。 --write_full_pde FLAG FALSE 是否将完整的 PDE 矩阵保存为文件。
输出解析 亲和力输出中有两个主要预测:affinity_pred_value 和 affinity_probability_binary。它们在截然不同的数据集上进行训练,并采用不同的监督方法,因此应在不同的情况下使用。
affinity_probability_binary 字段应用于从诱饵中检测结合剂,例如在发现目标化合物阶段。其值范围为 0 到 1,表示预测配体为结合剂的概率。
affinity_pred_value 旨在测量不同结合剂的特定亲和力,以及这种亲和力如何随着分子的细微修改而变化。这应该用于配体优化阶段,例如从目标化合物到先导化合物和先导化合物优化。它将结合亲和力值报告为 log(IC50),该值源自以 μM 为单位测量的 IC50。
out_dir/
├── lightning_logs/
├── predictions/
│ ├── [input_file1] /
│ │ ├── [input_file1] _model_0.cif
│ │ ├── confidence_[input_file1] _model_0.json
│ │ ├── affinity_[input_file1] .json
│ │ ├── pae_[input_file1] _model_0.npz
│ │ ├── pde_[input_file1] _model_0.npz
│ │ └── ...
│ └── [input_file2] /
└── processed/
输出置信度 .json 文件包含特定样本的各种聚合置信度得分。文件结构如下:
{
"confidence_score" : 0.8367 ,
"ptm" : 0.8425 ,
"iptm" : 0.8225 ,
"ligand_iptm" : 0.0 ,
"protein_iptm" : 0.8225 ,
"complex_plddt" : 0.8402 ,
"complex_iplddt" : 0.8241 ,
"complex_pde" : 0.8912 ,
"complex_ipde" : 5.1650 ,
"chains_ptm" : { "0" : 0.8533 , "1" : 0.8330 } ,
"pair_chains_iptm" : { "0" : { "0" : 0.8533 , "1" : 0.8090 } , "1" : { "0" : 0.8225 , "1" : 0.8330 } }
}
confidence_score,ptm 分数 plddt(及其界面和单个链类似物)的范围是 [0, 1],其中值越高表示置信度越高。pde 分数的单位是埃,其中值越低表示置信度越高。
{
"affinity_pred_value" : 0.8367 ,
"affinity_probability_binary" : 0.8425 ,
"affinity_pred_value1" : 0.8225 ,
"affinity_probability_binary1" : 0.0 ,
"affinity_pred_value2" : 0.8225 ,
"affinity_probability_binary2" : 0.8402
}
affinity_pred_value 报告的结合亲和力值为 log(IC50),源自于 IC50 测量的 μM。值越低,预测的结合力越强,例如:
IC50 10^-9M ⟶ 我们的模型输出 -3(强亲和力分子)
IC50 10^-6M ⟶ 我们的模型输出 0(中等亲和力分子)
IC50 10^-4M ⟶ 我们的模型输出 2(弱亲和力)
您可以使用 y --> (6 - y) * 1.364 将模型的输出转换为 pIC50。
使用示例 git clone https://github.com/jwohlwend/boltz.git
使用 examples 中的 affinity 计算实例:
cd boltz
boltz predict ./examples/affinity.yaml --use_msa_server
初次运行,会下载解压 CCD data,在 /home/user/.boltz/mols 目录下,大小 1.8G,包含 45227 个 mol 文件。
然后会下载 Boltz-2 weights,在 /home/user/.boltz 目录下,名称为 boltz2_conf.ckpt,大小 2.3G。
Affinity 预测,首次会下载 affinity weights 在 /home/user/.boltz 目录下,名称 boltz2_aff.ckpt,大小 2.1G。
错误提示 1:RuntimeError: PytorchStreamReader failed
原因主要是 weights 文件不完整,可以提前下载放在 /home/user/.boltz 下。下载 URL 在 /boltz/src/boltz/main.py 文件中:
CCD_URL = "https://huggingface.co/boltz-community/boltz-1/resolve/main/ccd.pkl"
MOL_URL = "https://huggingface.co/boltz-community/boltz-2/resolve/main/mols.tar"
BOLTZ1_URL_WITH_FALLBACK = [
"https://model-gateway.boltz.bio/boltz1_conf.ckpt" ,
"https://huggingface.co/boltz-community/boltz-1/resolve/main/boltz1_conf.ckpt" ,
]
BOLTZ2_URL_WITH_FALLBACK = [
"https://model-gateway.boltz.bio/boltz2_conf.ckpt" ,
"https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_conf.ckpt" ,
]
BOLTZ2_AFFINITY_URL_WITH_FALLBACK = [
"https://model-gateway.boltz.bio/boltz2_aff.ckpt" ,
"https://huggingface.co/boltz-community/boltz-2/resolve/main/boltz2_aff.ckpt" ,
]
结果文件夹名称为:boltz_results_affinity。
结果在 affinity_affinity.json 文件中,可以看到,亲和力以 log(IC50) 为单位,等于 6-2.5=3.5,大致等于 300μM,是一个弱的 binder。
复合物结构文件为 affinity_model_0.cif,使用 pymol 打开:
pymol /boltz_results_affinity/predictions/affinity/affinity_model_0.cif
又一例,如下是 EGFR 抑制剂吉非替尼的亲和力计算文件:
version: 1
sequences:
- protein:
id: A
sequence: GAMGEAPNQALLRILKETEFKKIKVLGSGAFGTVYKGLWIPEGEKVKIPVAIKELREATSPKANKEILDEAYVMASVDNPHVCRLLGICLTSTVQLITQLMPFGCLLDYVREHKDNIGSQYLLNWCVQIAKGMNYLEDRRLVHRDLAARNVLVKTPQHVKITDFGLAKLLGAEEKEYHAEGGKVPIKWMALESILHRIYTHQSDVWSYGVTVWELMTFGSKPYDGIPASEISSILEKGERLPQPPICTIDVYMIMVKCWMIDADSRPKFRELIIEFSKMARDPQRYLVIQGDERMHLPSPTDSNFYRALMDEEDMDDVVDADEYLIPQQG
- ligand:
id: B
smiles: 'Clc1c(F)ccc(Nc2ncnc3c2cc(OCCCN2CCOCC2)c(OC)c3)c1'
properties:
- affinity:
binder: B
预测结果显示,预测的复合物结构与吉非替尼-EGFR 复合物的 PDB 结构(PDBID: 4WKQ)非常接近,RMSD=0.267。
吉非替尼的亲和力为 -6.56 log(IC50),低于 1 μM,属于比较强的结合,与实际情况符合。
参考文献