098

AutoDock Vina 1.2:新版本改进了什么

AutoDock Vina 1.2 带来了多打分函数与 Python API。这篇讲清新版本的改进及其实际影响。

AutoDock Vina 1.2(2021)是 Vina 发布十余年后的重要更新。它的改进主要在工程可用性而非算法核心——但这些改进对实际工作流的影响很大。

主要改进

改进 意义
多打分函数 vinavinardoad4 可选
Python API 可嵌入 Python 流程,无需子进程调用
大环支持 可处理大环化合物的柔性
批量对接 一次处理多个配体,复用格点
水分子模型 支持部分显式水(AD4 打分时)
改进的输出 更详细的能量分解

Python API:最实用的改进

from vina import Vina

v = Vina(sf_name="vina", cpu=8, seed=42, verbosity=1)
v.set_receptor("receptor.pdbqt")

# 计算格点(只需一次,可复用于多个配体)
v.compute_vina_maps(center=[11.2, 23.4, -5.7], box_size=[22, 22, 22])

# 批量对接
results = []
for name, ligand_path in ligands:
    v.set_ligand_from_file(ligand_path)

    # 可选:先做局部优化
    energy_before = v.score()
    v.optimize()

    v.dock(exhaustiveness=16, n_poses=5)
    energies = v.energies()
    results.append({"name": name, "score": float(energies[0][0])})

    v.write_poses(f"out/{name}.pdbqt", n_poses=3, overwrite=True)

# 关键优势:
#   1) 格点只算一次,批量对接时省下大量时间
#   2) 无需启动子进程,减少 I/O 开销
#   3) 可以在内存中处理,便于集成到生成模型的打分循环(见 351)
#   4) 能直接拿到能量分解

「格点复用」是批量筛选的关键优化:命令行版本每次调用都要重算格点,而 API 版本可以算一次用于所有配体——对十万级筛选,这个差异很可观

三种打分函数的对比

打分函数 特点 建议
vina 原始的经验打分 默认选择
vinardo 重新参数化,项更少 某些体系上富集更好,值得试
ad4 AutoDock 4 的力场打分 需要预计算格点;含金属参数
# 命令行切换
vina --scoring vinardo --receptor rec.pdbqt --ligand lig.pdbqt ...

# Python API
v = Vina(sf_name="vinardo")

# 实践建议:
#   在自家体系上用已知活性/非活性分子测试三种打分函数,
#   比较富集因子(EF@1%),选表现最好的
#   → 不同靶点上的最优选择可能不同
#
# Vinardo 的设计思路:
#   比 Vina 项更少(去掉了一个高斯项),
#   重新在更新的数据上拟合
#   → 在某些基准上姿势预测与富集都有改善

大环支持

  • 问题:大环的环内键在传统对接中被当作刚性,因为处理环的柔性需要特殊算法;
  • Vina 1.2 的方案:配合 Meeko 的 --macrocycle 选项,把大环临时「打开」成柔性链,对接后再闭合;
  • 意义:大环化合物(见 373《大环化合物 Macrocycle》)是重要的药物模态,之前的对接工具处理它们时会严重低估柔性;
  • 使用mk_prepare_ligand.py -i macrocycle.sdf -o out.pdbqt --macrocycle(见 106《Meeko》)。

能量分解的用途

v.set_ligand_from_file("ligand.pdbqt")
v.dock(exhaustiveness=32)

# 获取详细的能量项
energies = v.energies()
# 返回每个姿势的:
#   [总分, 内部能量, 各项贡献...]

# 用途:
#   1) 诊断异常高分
#      如果某个分子分数极好,看是哪一项贡献的
#      → 全靠疏水项 = 可能是「大而油」的假阳性
#
#   2) 比较不同分子的结合模式差异
#      氢键项 vs 疏水项的比例,反映结合的性质
#
#   3) 内部能量检查
#      配体的内部能量过高 = 处于扭曲的高能构象
#      → 该姿势可能不合理

版本迁移的注意事项

  • 结果可能与 1.1 不同:算法细节有调整,历史数据与新数据不应直接混合比较;
  • PDBQT 准备工具变更:官方推荐用 Meeko(见 106《Meeko》)替代旧的 MGLTools 脚本(后者依赖 Python 2);
  • 固定 seed 仍然必要:搜索仍有随机成分;
  • 锁定版本:在生产流程中固定 Vina 版本,保证结果可复现。

实际的选型建议

场景 建议
大规模批量筛选 Python API + 格点复用
嵌入生成模型打分 Python API(见 351《在分子生成中加入 Docking Score 约束》
需要 CNN 重打分 GNINA(见 099《GNINA 论文精读》
需要自定义打分项 smina(见 100《Smina》
大环化合物 Vina 1.2 + Meeko --macrocycle
金属蛋白 ad4 打分函数

关键要点

  • Python API 与格点复用是批量筛选最实用的改进;
  • 三种打分函数应在自家体系上用已知活性分子比较富集因子后选择;
  • 大环化合物必须配合 Meeko 的 --macrocycle 才能正确处理柔性;
  • 能量分解可用于诊断「全靠疏水项」的假阳性。

延伸资源