ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

AutoDock Vina分子对接教程:零基础完成第一次对接的6个关键步骤

2026/8/13 11:31:40 拓冰建站 浏览量
AutoDock Vina分子对接教程:零基础完成第一次对接的6个关键步骤

AutoDock Vina分子对接教程:零基础完成第一次对接的6个关键步骤

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

深夜的实验室,一位刚接触计算化学的研究生盯着屏幕上的两个三维结构发呆:左边是刚解析出的靶点蛋白,右边是药化同事递过来的候选分子。他隐约知道两者可能结合,却说不清结合的强度、方式和稳定程度。这正是分子对接要解决的问题——而AutoDock Vina 分子对接工具,就是目前最流行、最快的开源解决方案之一。本文是一份零基础也能跟着做完的 AutoDock Vina 教程,不需要任何计算背景,只要会敲命令,就能在半小时内跑通第一次完整对接。

第一次接到对接任务:先搞懂这件事在做什么

如果把结合过程比作"钥匙配锁",那么受体(Receptor)就是锁——通常是一个蛋白质,等着小分子来"开";配体(Ligand)就是钥匙——通常是一个候选药物分子。分子对接做的事,就是模拟这把"钥匙"在"锁孔"附近的所有可能姿态,然后用打分函数给每种姿态评分,找出结合最稳定、能量最低的那一个。

AutoDock Vina 的过人之处在于三点:

  • :基于简单的打分函数和梯度优化搜索,速度远超传统方法,大规模虚拟筛选也扛得住;
  • 省心:参数极少,一条命令就能完成对接,不需要手动调一堆经验参数;
  • 开源免费:Apache 2.0 协议,学术和商业用途都友好,社区资料丰富。

下图是 AutoDock Vina 官方给出的完整对接工作流程,从分子结构预处理、输入准备到最终对接计算,全程链条清晰,本文接下来的所有步骤都对应这张图。

AutoDock Vina 分子对接的完整工作流程:预处理 → 输入准备(PDBQT 与盒子)→ 对接计算 → 结果导出

对接流程中其实只牵涉两件事:把原料整理成软件认识的格式,以及告诉软件去哪里搜索。搞懂了这两件事,后面所有命令都顺理成章。

认清三种文件格式,别让原料卡住第一步

新手 90% 的报错都出在文件格式上。对接前后,你会反复见到三种格式:

格式是什么用在哪个环节
PDB蛋白质等大分子的三维结构文件,来自实验数据库受体原始原料
SDF小分子结构文件,带键连接信息,适合配体配体原始原料
PDBQTAutoDock 系列专用格式,含坐标、原子类型、部分电荷、可旋转键信息对接计算的唯一输入格式

可以这样记忆:PDB 和 SDF 是"通用简历",而PDBQT 是专门给对接软件看的"职位申请表"——它明确写清了每个原子是哪种类型、带多少电荷、哪些键可以旋转,软件拿到就能直接计算。

⚠️最容易踩的坑:千万别用 PDB 格式直接准备配体。PDB 不包含键连接信息,软件无法判断分子拓扑,结果往往出错。配体请一律从 SDF 格式出发。另一个高频坑是氢原子缺失——对接成败有时就差一个氢,受体必须先加氢、做质子化处理。

安装环境:三条路选一条,新手走最短的那条

AutoDock Vina 提供三种安装方式,难度递增,按需选择:

路线一:Python 绑定(最推荐新手)。一条命令装完,还能顺手用后面的 Python 批量对接:

pip install -U numpy vina

同时建议安装配套的分子准备工具Meeko(负责把 PDB/SDF 转成 PDBQT)和Molscrub(负责给分子加氢):

pip install -U meeko molscrub

路线二:Conda 独立环境(适合怕依赖冲突的读者)。用 Conda 隔离出一个干净环境,互不污染:

conda create -n vina python=3 conda activate vina conda config --env --add channels conda-forge conda install -c conda-forge numpy swig boost-cpp libboost pip install vina

路线三:预编译可执行文件(只想用命令行工具)。直接下载对应系统的vinavina_split可执行文件,解压即用,无需任何依赖。

装完后务必验证环境是否正常:

vina --help python -c "from vina import Vina; print('vina python OK')"

看到版本信息和OK输出,说明环境就绪,可以进入实战了。详细的安装说明可查阅项目文档docs/source/installation.rst

准备受体与配体:让双方用同一种语言出场

下面用项目自带的经典案例完整走一遍流程:抗癌药伊马替尼(Imatinib)对接 c-Abl 激酶结构域(PDB 编号 1iep)。所有输入文件都在example/basic_docking/data/目录下,输出样例在example/basic_docking/solution/里,方便对照验证。

第一步:准备受体。原始受体文件1iep_receptorH.pdb已包含氢原子。用 Meeko 的命令行脚本生成 PDBQT 文件和对接盒子信息:

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

这条命令做了什么?-i指定输入,-o指定输出文件前缀,-p生成受体 PDBQT,-v配合盒子参数生成两个文件:1iep_receptor.box.txt(对接配置,下一节会用)和1iep_receptor.box.pdb(用 PyMOL 等软件可视化盒子位置)。如果后续想用 AutoDock4 力场,只需追加一个-g参数,就会额外生成 AutoGrid 的 GPF 参数文件。

第二步:准备配体。同样用 Meeko 转换:

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

如果配体原始结构没有氢原子,先用 Molscrub 加氢:

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

💡为什么一定要检查质子化状态?氢原子的有无直接决定氢键能否形成,而氢键是打分函数里权重最高的相互作用之一。一个氢的差别,可能让结合能从优秀变成平庸。

这两步做完,你会得到1iep_receptor.pdbqt1iep_ligand.pdbqt,它们就是对接计算的主角。

设置对接盒子:给搜索画一个精准的范围

对接不是把配体扔进整个蛋白质里漫无目的地找——那既慢又容易找到一堆无意义姿态。你需要指定一个搜索区域(docking box),告诉 Vina"只在这个三维空间里找答案"。

把盒子想成探照灯:照得太窄,可能漏掉真正的结合位点;照得太宽,搜索时间暴涨、假阳性增多。最佳实践是让盒子恰好覆盖已知的活性位点,并留出少量余量让配体活动。

上一节生成的1iep_receptor.box.txt就是对接配置文件,内容如下:

center_x = 15.190 center_y = 53.903 center_z = 16.917 size_x = 20.0 size_y = 20.0 size_z = 20.0

center_*是盒子中心坐标(单位 Å),size_*是盒子边长。坐标通常来自实验数据或文献,也可以在 PyMOL 里直接量取活性位点中心。如果你手上没有现成的盒子文件,手写一个同样格式的 TXT 即可,Vina 完全认这个格式。

关于盒子设置的经验法则:

  • 盒子刚好罩住活性位点最理想,20 Å 左右边长是常见起点;
  • 盒子过大时,适当提高搜索强度(下一节的exhaustiveness)来补偿;
  • 1iep_receptor.box.pdb在可视化软件里检查盒子是否真的覆盖了目标残基。

运行对接:读懂输出表才算真正完成

万事俱备,运行第一条对接命令。Vina 力场会自动在内部计算亲和力网格,无需额外准备,最省事:

vina --receptor 1iep_receptor.pdbqt --ligand 1iep_ligand.pdbqt \ --config 1iep_receptor.box.txt --exhaustiveness=32 --out 1iep_ligand_vina_out.pdbqt

如果你更倾向 AutoDock4 力场(经典、有大量历史数据可比对),则需要先预计算亲和力图谱:

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

这里--exhaustiveness搜索强度,默认 8,示例中提高到 32 能让结果更稳定可复现。它大致可以理解为"派多少批搜索粒子同时探索",值越大搜索越充分、耗时越久。对正式研究,32 是一个稳妥的起点。

运行结束后,终端会输出一张结果表,它值得花 30 秒看懂:

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
  • mode:构象编号,按分数从优到劣排序;
  • affinity(结合能):最重要的指标,单位 kcal/mol,负值越大结合越强。这个案例中 Vina 力场预期最佳约 -13 kcal/mol,AutoDock4 力场约 -14 kcal/mol;
  • rmsd l.b. / u.b.:各构象与最优构象的结构差异(RMSD),越小说明越接近最优解。

⚠️注意:Vina 与 AutoDock4 两种力场的分数不能互相比较,它们是两套独立的评分体系。

最后把结果转成 SDF 格式,方便在 PyMOL、Chimera 等软件里做可视化分析(Meeko 会把键序和形式电荷一并写好,比 OpenBabel 的"猜键序"可靠得多):

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

到这里,你已经完成了人生第一次完整的 AutoDock Vina 分子对接!结合能落在 -10 到 -13 kcal/mol 区间,且最优构象与晶体结构接近,就说明流程跑通了。

进阶玩法:从单个分子走向批量筛选

跑通基础对接后,你会发现 AutoDock Vina 的能力远不止于此。项目仓库中example/目录下有多套现成案例,对应不同进阶场景:

场景对应示例目录解决什么问题
柔性对接example/flexible_docking/允许受体侧链柔性移动,模拟诱导契合
水合对接example/hydrated_docking/显式考虑水分子对结合的桥接作用
大环对接example/docking_with_macrocycles/处理环状分子的特殊构象空间
多配体对接example/mulitple_ligands_docking/一次对接多个配体,服务片段药物设计
金属蛋白对接example/docking_with_zinc_metalloproteins/处理含锌等金属离子的活性位点

而当你需要批量处理成百上千个分子(即虚拟筛选)时,Python 绑定就是利器。example/python_scripting/first_example.py提供了一个最小可运行脚本,核心逻辑只有几行:

from vina import Vina v = Vina(sf_name='vina') 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]) energy = v.score() # 给当前姿态打分 print('Score: %.3f (kcal/mol)' % energy[0]) v.dock(exhaustiveness=32, n_poses=20) # 执行对接,保留20个构象 v.write_poses('1iep_ligand_vina_out.pdbqt', n_poses=5, overwrite=True)

跑一下试试:

python first_example.py

同样的接口可以套进循环里,把一组配体逐个喂进去,输出结果存到表格里排序——一个最简版的虚拟筛选管线就成型了。完整 API 说明见项目文档docs/source/docking_python.rst,更细致的参数解释在docs/source/faq.rst

把第一次对接跑完,然后呢?

还记得开头那位对着结构发呆的研究生吗?现在他已经能独立回答那个问题了:配体怎么结合、结合有多强、哪些残基参与了相互作用——这些都是 AutoDock Vina 给出的答案,而他付出的只是几行命令的时间。

你现在和他一样,具备了完整跑通分子对接的能力。接下来建议这样做:

  1. 对照练一遍:把example/basic_docking/完整跑通,用solution/目录下的结果验证自己的输出;
  2. 换个体系试试:从example/的其他场景挑一个,感受不同对接模式的区别;
  3. 深入学习文档docs/source/下的教程(docking_basic.rstdocking_flexible.rstdocking_hydrated.rst)写得非常细致,是进阶的免费教材;
  4. 把 Python 绑定用起来:试着写一个循环,一次筛选十个候选分子。

想要获取全部示例和源码,直接克隆项目仓库即可:

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

分子对接是一门越用越熟的手艺。第一次跑通、第一次读懂输出表、第一次批量筛选,每一次突破都会让下一个实验更顺畅。现在就打开终端,让 AutoDock Vina 帮你算出第一个结合能吧。🚀

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

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