AutoDock Vina 新手上手指南:6 个关卡跑通你的第一次分子对接
AutoDock Vina 新手上手指南:6 个关卡跑通你的第一次分子对接
【免费下载链接】AutoDock-VinaAutoDock Vina项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina
你听说过 AutoDock Vina 吗?它是目前全球使用最广、速度最快的开源分子对接引擎之一。简单说,它能预测一个小分子药物(配体)会怎样"钻进"蛋白质(受体)的口袋里并稳定地待住——这正是药物发现中最关键的一步。这篇文章不打算给你一本冷冰冰的操作手册,而是把它设计成一条闯关路线:6 个关卡 + 1 个隐藏副本 + 1 个补给站,每关都有看得见的成果。跟着走完,你就拥有了一份属于自己的、真实可复现的分子对接实验记录。
先给你一张"全程地图",让你心里有数——分子对接从分子结构到最终结果,大致要走完下面三个环节:
为什么人人都想跑一次分子对接?
把药物找出来这件事,可以理解成一场"找钥匙开锁"的游戏:蛋白质是锁,小分子是钥匙。一把钥匙能不能插进锁孔、插得够不够紧,决定了它有没有成为候选药物的潜力。但蛋白质和药物分子都有几十到上千个原子,理论上的"插法"数以百万计,挨个试根本不现实。
AutoDock Vina 的价值就在于:它用一套精心设计的打分函数(scoring function)快速评估"这把钥匙配这把锁大概有多合适",再用梯度优化算法在海量可能性中快速搜索。同样的任务,它比上一代 AutoDock 4 可以快上最多两个数量级,而且是 Apache 2.0 协议的开源软件,随便用、随便改。先记住它的几个核心卖点:
| 核心优势 | 具体说明 |
|---|---|
| ⚡ 极速搜索 | 相比 AutoDock 4 最高可提速约 100 倍 |
| 🆓 完全开源 | Apache 2.0 许可,商用学习皆可 |
| 🔬 多打分函数 | 内置 vina / vinardo / ad4 三种选择 |
| 🧬 特种分子支持 | 大环分子、水合对接、多配体同时对接 |
| 🐍 Python 绑定 | 支持 Python 3,可编程批量筛选 |
光看介绍没感觉,我们直接开局。
关卡一:先认识三个"主角"——受体、配体与 PDBQT
动手之前,有三个词你必须先混个脸熟,否则后面每一步都会卡壳。
- 受体(Receptor):通常是蛋白质,也就是那把"锁"。文件里记录的是它的三维原子坐标,常见后缀是
.pdb。 - 配体(Ligand):小分子化合物,也就是那把"钥匙",常见后缀是
.sdf、.mol2。 - PDBQT 格式:AutoDock 家族统一的"通行证"格式。它比普通 PDB 多记录了每个原子的部分电荷(partial charge)和原子类型,以及分子的可旋转键信息。对接前,受体和配体都必须先转换成 PDBQT,这是所有 AutoDock 系软件的地基。
转换工作一般交给一个叫Meeko的 Python 包来完成。它的命令行脚本mk_prepare_ligand.py和mk_prepare_receptor.py会帮你处理质子化、加电荷、标定可旋转键这些繁琐但决定成败的细节。
记住一个忠告:配体文件尽量不要用 PDB 格式,因为它不包含化学键的连接信息;也不要用二维平面结构直接去对接。多一个氢、少一个氢,都可能直接改变对接结果。
这一关的成果:你能说出"PDBQT 是干什么的、谁来生成它"。
关卡二:5 分钟搭好对接工作台
好消息是,Vina 的"工作台"只需要两条命令就能搭好。推荐在 conda 或 venv 虚拟环境里安装,避免污染系统 Python:
pip install -U numpy scipy rdkit vina meeko gemmi prody这条命令同时装了三类东西:vina(Vina 的 Python 绑定)、meeko(配体受体预处理工具)、rdkit/numpy(分子与数值计算底层)。装完可以用这个命令确认工具是否就位:
mk_prepare_ligand.py --help如果你想直接拿到 Vina 的可执行文件vina(而不是只在 Python 里调用它),有两个途径:
- 下载预编译版本:从官方 release 页面按系统与架构(macOS / Linux / Windows)下载对应二进制文件,解压后即可运行。
- 从源码编译(只建议想折腾或需要魔改的用户):
git clone https://gitcode.com/gh_mirrors/au/AutoDock-Vina cd AutoDock-Vina/build/linux/release make编译前记得装好 C++ 编译器和 Boost 库(macOS 用brew install boost swig,Ubuntu/Debian 用apt install libboost-all-dev swig)。普通用户直接走路径 1 就好,源码方式在官方文档里也明确标注了"not meant to be done by regular users"。
这一关的成果:终端里能敲出vina --help或顺利导入from vina import Vina。
关卡三:动手跑通第一个对接示例
光说不练假把式。项目仓库里已经给你准备了一套完整的基础对接案例(真实分子是抗癌药伊马替尼 imatinib 与 c-Abl 激酶,正是电影《我不是药神》里那个"格列卫"的靶点)。先把示例数据复制出来:
cp -r example/basic_docking/data/ .第一步:准备受体文件
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指定输入受体,-p表示要生成受体 PDBQT,-v表示同时输出对接盒子(box)的尺寸文件。后面那两对参数是对接盒子的中心和边长——相当于你在告诉 Vina:"别满世界乱找,就在这个 20×20×20 Å 的立方体里搜。" 它对应蛋白质的活性口袋位置,单位是埃(Å)。
第二步:准备配体文件
mk_prepare_ligand.py -i 1iep_ligand.sdf -o 1iep_ligand.pdbqt第三步:写下你的"点菜清单"——配置文件
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第四步:启动对接!
vina --receptor 1iep_receptor.pdbqt --ligand 1iep_ligand.pdbqt \ --config 1iep_receptor.box.txt \ --exhaustiveness 32 --out 1iep_ligand_vina_out.pdbqt
--exhaustiveness是"努力程度"参数,默认 8;这个案例里官方建议调到 32 以获得更稳定的结果。--out指定结果输出文件。
几秒钟到几十秒后,终端会打印出进度条和一张结果表,结果文件1iep_ligand_vina_out.pdbqt里保存了所有找到的结合构象。🎉 恭喜你,第一次分子对接已经跑通了!
这一关的成果:一个真实系统的对接结果文件。
关卡四:这一关看结果——affinity、RMSD 与 mode 表
跑通不难,看懂才算入门。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逐列解释:
- mode:结合模式编号,从好到差排列。
- affinity(结合亲和力):预测的结合自由能,单位 kcal/mol。负值表示能结合,越负表示结合越强。这个案例中 vina 打分函数下最优解大约在 -13 kcal/mol 附近。
- rmsd l.b. / rmsd u.b.:各模式相对最优模式的原子位置差异(RMSD,均方根偏差),用来衡量"这两种摆法差别有多大"。0 表示和最优模式完全一致。
需要提醒你:vina 和 ad4 两套打分函数算出的能量不能互相比较,它们是两种不同的"尺子"。
拿到 PDBQT 结果后,如果要在 PyMOL、ChimeraX 里可视化,或者转给其他软件分析,建议用 Meeko 转成 SDF 格式——因为 PDBQT 不记录化学键级,而 Meeko 能从文件头部的 SMILES 信息重建正确的键连关系:
mk_export.py 1iep_ligand_vina_out.pdbqt -s 1iep_ligand_vina_out.sdf这一关的成果:能独立解读一张 mode 表,并说出"分数越负越好"。
关卡五:为什么我的结果和别人不一样?
你可能很快会撞上一个困惑:同样一条命令,多跑几次,结果却有细微差别;或者和教程里的截图对不上。别慌,这不是你装错了——Vina 的搜索算法是随机性的。
它的原理可以理解为:每次对接由若干次"独立探索"组成,每次从随机初始构象出发,经过随机扰动 + 局部优化的迭代,最后把各次探索中有希望的结果合并、聚类、排序。每次探索的起点不同,结果自然有波动。
那么怎么让结果更稳定、更可信?三招:
- 加大
--exhaustiveness:它控制的正是"独立探索的次数"。8 是省电模式,32 是认真模式,结果更稳定,代价是更久的运行时间。 - 控制搜索空间:盒子越大,搜索难度越高。官方建议尽量不要超过 30×30×30 Å(体积超过 27000 ų 会收到警告)。记住:Vina 的盒子单位是 Å,不是 AutoDock 4 里的"格点数"——这是从 AD4 转过来的人最常踩的坑。
- 固定随机种子:
--seed参数可以指定随机种子,两次用同一个种子,输入不变时结果完全一致。想要"可复现"的实验记录,这一招很关键。
另外,输出构象里氢原子的位置是"随意"的:Vina 用的是联合原子打分,只考虑重原子。但输入文件里的氢仍然重要,因为它决定哪些原子是氢键供体/受体——所以正确质子化永远是第一优先级。
这一关的成果:你会调参数,也理解了结果的随机性从何而来。
关卡六:从单个分子到批量虚拟筛选
单个分子对接只是热身,现实中更常见的是一次筛几百上千个化合物。Vina 支持两种批量玩法:
玩法 A:命令行 + 循环脚本。把多个配体各自准备成 PDBQT,写个小循环逐个对接:
for ligand in ligs/*.pdbqt; do vina --receptor receptor.pdbqt --ligand "$ligand" \ --config box.txt --out out/$(basename "$ligand") done玩法 B: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() # 先给当前构象打分 energy_minimized = v.optimize() # 再做个局部能量最小化 v.write_pose('1iep_ligand_minimized.pdbqt', overwrite=True) v.dock(exhaustiveness=32, n_poses=20) # 正式对接 v.write_poses('1iep_ligand_vina_out.pdbqt', n_poses=5, overwrite=True)切换到ad4或vinardo打分函数,只需把sf_name='vina'改掉。跑法也很简单:
cd example/python_scripting python first_example.py这一关的成果:你拥有了"批量筛 + 编程控"的组合拳。
隐藏副本:四个值得玩味的进阶玩法
打通主线后,仓库的example/目录还藏着几套"隐藏关卡",每个都对应一个真实科研场景:
| 玩法 | 场景 | 示例目录 |
|---|---|---|
| 柔性对接 | 蛋白质结合时会变形,允许指定残基侧链运动 | example/flexible_docking/ |
| 水合对接 | 显式考虑水分子对结合的影响 | example/hydrated_docking/ |
| 大环分子对接 | 处理环状大分子(如 BACE-1 抑制剂) | example/docking_with_macrocycles/ |
| 锌金属蛋白 | 针对含金属离子的靶点,配合 AD4Zn 参数 | example/docking_with_zinc_metalloproteins/ |
每个目录下都有data/(输入)和solution/(参考答案),你可以先猜结果再对照,非常适合自学。想用 AutoDock4 力场的话,加上--scoring ad4并传入预先算好的亲和图(需要autogrid4配合 GPF 文件)即可。
途中补给站:新手高频翻车现场与避坑手册
- "can not open conf.txt" 但文件明明存在?多半是系统隐藏了扩展名,你建的文件其实叫
conf.txt.txt。在终端用ls确认一下真实文件名。 - 怎么验证装好了?运行
vina --help看有没有正常输出,或python -c "from vina import Vina"检查 Python 绑定。 --out是什么?它取代了老教程里的--all,旧教程的命令照抄会报 usage error。- 为什么
--num_modes 20只输出了 9 个模式?它只是输出数量的上限,实际输出还受内部搜索和--energy_range限制。 - 改了电荷怎么结果没变化?正常,Vina 有自己处理静电的方式,忽略用户提供的部分电荷。
- 结果解不开就反复跑?先检查:盒子单位是不是写错了、分子有没有正确质子化、搜索空间是不是太大。搞不清就按官方 FAQ 的思路逐条排查。
更多问题与解答集中在官方文档 docs/source/faq.rst,建议通读一遍,能帮你省下大量踩坑时间。
通关之后:给你的学习路径与下一步建议
如果你一路闯到这里,恭喜,你已经完成了从"听说过分子对接"到"能独立完成并解读一次对接实验"的跨越。接下来可以这样规划:
- 第一周 · 打牢基本功:把基础对接、结果解读、参数调优各练三遍,直到不看文档也能默写出整条命令。
- 第二周 · 处理真实数据:去 PDB 数据库下载一个感兴趣的蛋白,自己从"去水、加氢、定盒子"开始走完整流程。
- 第三周 · 玩转批量:用 Python 绑定写一个自己的小脚本,对一组配体做虚拟筛选,并对结果排序。
- 第四周 · 挑战进阶玩法:挑一个隐藏副本(推荐从水合对接入手),体会"考虑越多,模型越接近真实"的乐趣。
更深度的材料都在项目里:基础教程见 docs/source/docking_basic.rst,Python 编程见 docs/source/docking_python.rst,完整文档目录在 docs/source/,所有示例在 example/。每次实验记得记录参数、保存日志、统一命名——好习惯会随着你的实验越做越复杂而越来越值钱。
分子对接不是一门"看书就能会"的技术,它是练出来的手感。从最简单的钥匙锁孔开始,一次一次地试,你的判断力会肉眼可见地增长。钥匙与锁的故事每天都在真实的药物研发里上演,而你,已经拿到了入场券。
🚀 现在,去跑通属于你的第一个分子对接实验吧!
【免费下载链接】AutoDock-VinaAutoDock Vina项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考