news 2026/8/16 10:34:08

AutoDock Vina分子对接从0到1:完整实战流程、参数解读与避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AutoDock Vina分子对接从0到1:完整实战流程、参数解读与避坑指南

AutoDock Vina分子对接从0到1:完整实战流程、参数解读与避坑指南

【免费下载链接】AutoDock-VinaAutoDock Vina项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina

AutoDock Vina 是计算化学与药物研发领域被引用最广的开源分子对接引擎之一,它的任务可以浓缩成一句话:判断一个候选小分子(配体)会以什么姿态、多大结合亲和力进入蛋白质受体上的口袋。无论你是刚接触结构生物学的学生,还是想搭建虚拟筛选管线的研发人员,本教程都从一张真实运行的“成绩单”倒推整套流程,带你一步步跑通分子对接,并把新手最容易卡住的环节提前拆开讲明白。


一次真实对接的终端输出长什么样:先认识 mode、affinity 与 RMSD

很多人第一次跑通 Vina,盯着终端却不知道自己在看什么。一次对接顺利结束后,屏幕上会出现这样一张表:

mode | affinity | dist from best mode | (kcal/mol) | rmsd l.b.| rmsd u.b. -----+------------+----------+---------- 1 -13.23 0 0 2 -11.29 0.9857 1.681 3 -11.28 3.044 12.41 4 -11.15 3.813 12.24

三个核心名词,先记在脑子里:

名词人话解释
mode算法找到的一个“候选结合姿势”(pose),按得分从好到差排序
affinity预测的结合亲和力,单位 kcal/mol,负值代表结合过程放能,越负通常意味着结合越紧
RMSD该姿势与参考姿势的空间差异(l.b./u.b. 是两种计算口径),单位 Å,mode 1 和它自己比当然是 0

mode 1 通常是所有候选姿势中最优的那个,也是后续做可视化、做分析时最常关注的起点。但请记住:这张表只是终点,难的是走到终点之前的那几步。下面我们倒推一下,拿到这张成绩单需要经历什么。


跑通分子对接的前置准备:工具链、PDBQT 输入文件与搜索盒子

一次对接背后其实是一条流水线:从配体/受体的原始结构出发,经过预处理变成 Vina 认识的格式,再划定搜索区域,最后才轮到引擎上场。整条管线可以用项目仓库里这张流程图一眼看全:

用一条 pip 命令装齐 AutoDock Vina 和 Meeko 预处理工具

Vina 本身负责“算”,但输入文件的准备工作推荐交给配套的 Meeko 工具包。建议在 conda 或 venv 虚拟环境里执行:

pip install -U numpy scipy rdkit vina meeko

这条命令装入了计算引擎(vina)和三个预处理命令行工具(mk_prepare_ligand.pymk_prepare_receptor.pymk_export.py)。装完可以敲一下vina --version确认引擎可用。

想直接看官方示例的话,可以克隆整个项目仓库:

git clone https://gitcode.com/gh_mirrors/au/AutoDock-Vina

仓库里的example/basic_docking/目录自带完整的输入与预期输出,非常适合边看边练。

为什么不能把 PDB 文件直接丢给 Vina

这是新手第一道坎:Vina 的输入格式是 PDBQT,而不是你从数据库下载的 PDB。

  • PDB 文件里没有键连关系,用它描述小分子会丢信息,很多情况下直接导致对接结果不可信。
  • PDBQT 相当于分子界的“统一制服”:它在 PDB 坐标基础上补上了原子类型、部分电荷、可旋转键等信息,Vina 只认这套格式。

一句话总结:预处理省掉的功夫,都会变成结果里的坑。

配体与受体的 PDBQT 制作命令

以仓库自带示例1iep(抗癌药伊马替尼与 c-Abl 激酶)为例,受体准备:

mk_prepare_receptor.py -i 1iep_receptorH.pdb -o 1iep_receptor -p -v \ --box_size 20 20 20 --box_center 15.190 53.903 16.917

这条命令把受体 PDB 转成1iep_receptor.pdbqt-p),同时额外输出一个盒子参数文件(-v加盒子参数)。配体准备:

mk_prepare_ligand.py -i 1iep_ligand.sdf -o 1iep_ligand.pdbqt

注意配体输入推荐用 SDF 而非 PDB——前者自带键连信息。如果你的小分子结构里还没有氢原子,建议先用加氢工具处理后再走这一步,成败有时就差在一个氢原子上。

对接盒子:中心与尺寸怎么定、最容易错在哪

“盒子”就是 Vina 允许配体探索的三维搜索区域,可以理解成用手电筒在黑暗房间里扫一块区域,灯光照不到的地方一概不算。你需要给出中心坐标(--box_center)和三个方向的边长(--box_size,单位是 Å)。

这里有两个经典翻车点,提前打预防针:

  1. 别把格点数当埃用。AutoDock4 时代盒子的尺寸常用格点(0.375 Å/格)表示,Vina 直接按 Å 算,混用会得到一个巨大无比的搜索区。
  2. 盒子不是越大越好。搜索区超过 27000 ų(约 30×30×30)会触发警告,算法要在更大的空间里碰运气,结果反而更不稳定。原则是“刚好罩住结合口袋,不贪大”。

第一次对接的三种启动姿势:直传参数、配置文件与 AutoDock4 力场

输入文件备齐后,启动对接有三种常见姿势,按你的使用习惯任选。

姿势一:所有参数堆在命令行

适合快速试跑,一次性把条件写全:

vina --receptor 1iep_receptor.pdbqt --ligand 1iep_ligand.pdbqt \ --center_x 15.190 --center_y 53.903 --center_z 16.917 \ --size_x 20 --size_y 20 --size_z 20 \ --exhaustiveness 32 --out 1iep_ligand_vina_out.pdbqt

--exhaustiveness控制搜索的“卖力程度”,默认是 8;像伊马替尼这种比较难缠的体系,官方教程建议调到 32,结果会更稳定,代价是更长的计算时间。

姿势二:把条件写进配置文件

参数多的时候,用配置文件更清爽,也好归档复现。新建一个config.txt

receptor = 1iep_receptor.pdbqt ligand = 1iep_ligand.pdbqt center_x = 15.190 center_y = 53.903 center_z = 16.917 size_x = 20 size_y = 20 size_z = 20 exhaustiveness = 32 cpu = 8 out = 1iep_ligand_vina_out.pdbqt

然后一句命令搞定:

vina --config config.txt

姿势三:切换 AutoDock4 力场,走“预生成亲和力图谱”路线

Vina 默认自带 Vina 力场,会内部算好所有图谱;但如果你想用 AutoDock4 力场(例如做水合对接),就得先让 AutoGrid4 预生成亲和力图谱:

autogrid4 -p 1iep_receptor.gpf -l 1iep_receptor.glg

然后带着图谱跑:

vina --ligand 1iep_ligand.pdbqt --maps 1iep_receptor --scoring ad4 \ --exhaustiveness 32 --out 1iep_ligand_ad4_out.pdbqt

提醒:Vina 力场和 AutoDock4 力场的分数没有可比性,别拿两边的能量直接对比,那是拿苹果比橘子。


对接成绩单的读法:能量、RMSD 与“结果对不对”的判断标准

跑完只是第一步,会读结果才是关键能力。

能量怎么读:结合亲和力是负值,越负越好,但这个“好”是有上下文的。在 1iep 这个示例体系里,接近晶体构象的 pose 用 Vina 力场打分大约在 -13 kcal/mol 附近,AutoDock4 力场约 -14 kcal/mol。如果你的体系和教程一致,跑出的分数和这个量级差距很大,就该回头检查输入了。

怎么判断 pose 对没对:最硬核的办法是把对接结果和实验测定的晶体构象叠在一起算 RMSD,通常 < 2 Å 就算复现得不错。如果你有已知活性的配体或天然配体结构,先做一次“回对接”(把已知配体放回原口袋)验证流程,比盲目批量跑要靠谱得多。

结果转格式:PDBQT 不是通用格式,很多可视化软件(比如某些版本的 PyMOL)显示起来很怪。用 Meeko 转成 SDF,能保留正确的键级与形式电荷:

mk_export.py 1iep_ligand_vina_out.pdbqt -s 1iep_ligand_vina_out.sdf

进阶玩家还可以直接调打分函数的权重,例如下面这条命令会把所有氢键的强度翻倍:

vina ... --weight_hydrogen -1.2 ...

进阶玩法一:柔性对接,让指定残基的侧链也动起来

标准对接把受体当成一尊雕像,配体在雕像表面找位置。但真实蛋白在结合时往往会有侧链“让位”,这就是柔性对接想解决的问题——允许口袋里的某几个残基侧链跟着配体一起动

以仓库示例1fpu为例,把第 315 号苏氨酸(链 A)设为柔性残基:

mk_prepare_receptor.py -i 1fpu_receptorH.pdb -o 1fpu_receptor -p -v \ -f A:315 -a --box_size 20 20 20 --box_center 15.190 53.903 16.917

-f A:315就是“指定柔性残基”的关键参数。这条命令会把受体拆成两个文件:

  • 1fpu_receptor_rigid.pdbqt:不动的刚性部分
  • 1fpu_receptor_flex.pdbqt:会动的柔性侧链

对接时把两个文件一起喂给 Vina:

vina --receptor 1fpu_receptor_rigid.pdbqt --flex 1fpu_receptor_flex.pdbqt \ --ligand 1iep_ligand.pdbqt --config 1fpu_receptor.box.txt \ --out 1fpu_ligand_flex_vina_out.pdbqt

注意:柔性残基数量不要贪多,侧链越多搜索空间越复杂,跑得越慢、越容易发散。详细教程在 docs/source/docking_flexible.rst。


进阶玩法二:水合对接,把水分子也摆进结合口袋

蛋白口袋里的水分子不是摆设:有些水被牢牢锁在保守位点,配体结合时未必能把它们全部挤走,这些“钉子户”水会直接影响配体怎么摆。水合对接的思路,是给配体装饰一圈可移动的“假想水”,能放得下就加分,和受体撞了就自动丢弃

实操分三步:

  1. 给配体加氢、加水,生成带水标记的 PDBQT:
scrub.py 1uw6_ligand.sdf -o 1uw6_ligandH.sdf mk_prepare_ligand.py -i 1uw6_ligandH.sdf -o 1uw6_ligand.pdbqt -w

-w是关键:告诉 Vina 配体上带有一圈显式水(W 原子)。

  1. 按 AutoDock4 力场预生成亲和力图谱(水合对接是基于 AutoDock4 力场标定验证的,所以绕不开autogrid4那一步)。

  2. 对接结束后,用仓库example/autodock_scripts/里的辅助脚本收尾:mapwater.py分析水分子在结果中的保留情况,dry.py去掉多余的水并重新打分。

对于片段级小分子(比如碎片药物发现场景),显式考虑水通常能明显改善构象预测。完整的套路见 docs/source/docking_hydrated.rst。


进阶玩法三:用 Python 脚本把对接升级成批量虚拟筛选流水线

单打独斗跑一个配体只是热身,真正的生产力在批量。Vina 提供 Python 绑定,让你在脚本里完成“加载受体 → 算图谱 → 对接 → 导出”的全过程。仓库里的 example/python_scripting/first_example.py 是一个极好的入门模板:

from vina import Vina v = Vina(sf_name='vina', verbosity=1) v.set_receptor('1iep_receptor.pdbqt') v.set_ligand_from_file('1iep_ligand.pdbqt') v.compute_vina_maps(center=[15.190, 53.903, 16.917], box_size=[20, 20, 20]) v.dock(exhaustiveness=32, n_poses=9) v.write_poses('1iep_ligand_py_out.pdbqt', n_poses=5, overwrite=True)

其中sf_name可以换成ad4vinardo来切换力场。想换成optimize()还能做局部能量优化,用来消除手动摆放姿势里的空间冲突很顺手。

批量筛选的窍门:如果先调用compute_vina_maps()再设置配体,Vina 会把 Vina 力场定义的全部 22 种原子类型图谱一次性算好。这样不管后面的配体库里出现什么原子类型,图谱都齐了,不必逐个配体重算——这正是虚拟筛选能跑起来的关键:

import glob from vina import Vina v = Vina(sf_name='vina') v.set_receptor('receptor.pdbqt') v.compute_vina_maps(center=[15.0, 53.0, 16.0], box_size=[20, 20, 20]) for path in glob.glob('library/*.pdbqt'): v.set_ligand_from_file(path) v.dock(exhaustiveness=16, n_poses=1) v.write_poses('results/' + path.split('/')[-1], overwrite=True)

跑完把每个配体的最优得分汇总,就是一张可供排序的初筛榜单。脚本细节的逐步讲解见 docs/source/docking_python.rst。


新手高频翻车点与排查思路速查表

把社区里被问得最多的问题整理成一张速查表,遇到症状直接对号入座:

症状原因药方
报错can not open conf.txt,文件明明存在文件浏览器把扩展名藏了,实际文件名是conf.txt.txt打开“显示文件扩展名”,确认文件名
按老视频教程敲命令报 usage errors老版本选项是--all,新版改成了--out使用vina --help核对当前选项
在集群上报boost thread resource错误集群配置禁止创建线程,Vina 没法并行联系系统管理员,或换一台能开线程的机器
同样参数跑两次,结果不一样搜索算法带随机性,这不是 bug想要复现就固定随机种子(--seed
出现搜索空间超过 27000 ų 的警告你很可能把盒子尺寸按格点(0.375 Å)填了确认尺寸单位是 Å,把盒子改小
改了配体部分电荷,结果毫无变化Vina 用自己内部的静电处理,忽略你喂的电荷想调静电就去改打分权重,改电荷没用
结果构象合理,但氢原子的位置很奇怪Vina 是 united-atom 打分,只关心重原子正常现象;真正要管好的是输入结构的质子化状态
指定了--num_modes 20,输出却不足 20 个输出数量还受energy_range截断限制适当调大energy_range
结果在 PyMOL 里显示得歪七扭八PDBQT 不是标准结构格式mk_export.py转成 SDF 再看

更完整的问题库在 docs/source/faq.rst,遇到罕见报错先去翻一翻,大概率能找到答案。


下一步行动指南:用好项目自带的“教材”目录

学到这,你已经不是对接小白了。接下来的成长路线,项目仓库本身就替你铺好了:

  • 对照练习example/basic_docking/solution/里放着一整套预期输出(PDBQT、图谱、日志),你跑出的结果可以直接和它对答案,这种自带参考答案的练习在开源项目里相当难得。
  • 按需进阶:基础掌握后,按“柔性对接 → 水合对接 → 大环分子 → 锌金属蛋白 → 多配体”的顺序逐个攻破,每个示例都有配套文档和现成数据。
  • 看源码:想知道--exhaustiveness背后到底在干什么,可以去 src/ 源码目录逛一圈,入口在 src/main/main.cpp,搜索算法在monte_carlo.cppquasi_newton.cpp这几个文件里。

最后给你一个可以立刻执行的小任务:克隆仓库,进入example/basic_docking/data/,照着本文的“姿势二”配好config.txt,把exhaustiveness从 8 试到 32,对比两次成绩单的差异。这一步做完,你对“搜索强度”这个概念的理解,会超过绝大多数只看教程不动手的人。

分子对接是一门实践出真知的功夫,理论看得再多,也不如亲手跑通一次对接来得踏实。打开终端,开始你的第一次 Vina 之旅吧。

【免费下载链接】AutoDock-VinaAutoDock Vina项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/16 10:32:21

T-BOX车联网硬件如何支持车辆远程控车功能?

GB/T 32960新国标4G T-BOX终端通过硬件链路、协议交互、安全加密的全流程闭环设计&#xff0c;合规实现车辆远程控车功能&#xff0c;同时满足国标对数据安全、操作可靠性的强制要求。一、远程控车功能实现全流程 ‌指令发起与传输‌ 用户在手机APP端触发远程控车指令&#xff…

作者头像 李华
网站建设 2026/8/16 10:32:19

洛谷 摘月夜星 专辑 第六期-B3953 [GESP202403 一级] 找因数

"少年去找她的月亮" 声明&#xff1a;洛谷 摘月夜星 专辑 我是一个十分普通的中学生&#xff0c;她是一位优秀的班长。 我在市里最好的中学读书&#xff0c;她也是。我是信息和数学的特长生&#xff0c;她是其他科的宠儿。我只是一个普通家庭出来的人&#xff0c;她兴…

作者头像 李华
网站建设 2026/8/16 10:27:17

口碑好的利川智能晾衣架靠谱供应商

2026阳台智能晾衣架横向评测&#xff1a;告别参数迷雾&#xff0c;六款真实品牌选购指南装修买晾衣架&#xff0c;是不是总觉得网上参数眼花缭乱&#xff0c;虚标严重&#xff1f;明明想买个安心&#xff0c;结果却怕交了“智商税”。别急&#xff0c;这篇第三方客观实测横评&a…

作者头像 李华
网站建设 2026/8/16 10:24:41

MySQL 慢查询完整排查

1、开启慢查询日志&#xff08;抓慢 SQL&#xff09; slow_query_logON 开启慢查询日志long_query_time&#xff1a;慢查询阈值&#xff0c;单位秒 普通业务&#xff1a;1~2s金融交易、高并发核心链路&#xff1a;500ms(0.5) slow_query_log_file&#xff1a;慢日志文件路径lo…

作者头像 李华
网站建设 2026/8/16 10:22:42

江浙存量房局部改造品牌对比:牛牛快装服务模式分析

上海及江浙存量房局部改造市场观察&#xff1a;服务模式与品牌对比随着长三角地区城市化进程步入存量更新阶段&#xff0c;老旧小区的居住品质提升需求日益凸显。受限于整体装修的高昂预算和漫长周期&#xff0c;越来越多的家庭倾向于选择厨卫翻新、墙面修复等“微改造”项目。…

作者头像 李华