AutoDock-Vina 分子对接从零到出结果:照着敲就能跑通的第一份实验

发布时间:2026/8/13 12:03:40
AutoDock-Vina 分子对接从零到出结果:照着敲就能跑通的第一份实验 AutoDock-Vina 分子对接从零到出结果照着敲就能跑通的第一份实验【免费下载链接】AutoDock-VinaAutoDock Vina项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-VinaAutoDock-Vina 是一款开源的分子对接引擎用来预测小分子药物与蛋白质靶点之间的结合方式和结合强度。读完本文你不需要任何对接基础就能在 10 分钟内装好工具、跑完一次完整的受体-配体对接并看懂终端里那张打分表。上图把整条链路画得很清楚左侧先准备配体和受体的结构文件中间用 Meeko 生成 PDBQT 输入右侧交给 Vina 计算并导出结果。接下来你要做的事就是把这条链亲手走一遍。一个新手最容易卡住的真实场景想象你第一次接触对接下载了软件兴冲冲输入一条命令结果终端吐出一行can not open conf.txt而文件明明就在眼前。你开始怀疑是不是下载错了版本、敲错了参数甚至怀疑自己不适合干这行。别急这几乎是每个人都会踩的坑——原因往往很简单文件浏览器默认隐藏了扩展名你以为的conf.txt实际叫conf.txt.txt。这种事遇多了你就会发现分子对接真正的难点不在跑起来而在搞懂每一步在做什么。本文就带你绕开这些坑用最短路径把第一个结果跑出来。先把四个行话用大白话讲明白在动手之前先认识四个高频词。每个词解释完我会立刻告诉你它对应哪条命令。受体Receptor就是你要研究的蛋白质相当于锁。对接前它要被预处理成带极性氢和部分电荷的 PDBQT 文件这一步对应mk_prepare_receptor.py。配体Ligand就是候选小分子相当于钥匙。它同样要转成 PDBQT对应mk_prepare_ligand.py。这里有个关键提醒尽量别用 PDB 格式准备小分子因为它不含键连接信息结果会失真。对接盒子Docking Box你在受体上圈出的一块三维空间告诉软件钥匙只可能在锁芯附近试。盒子设小了找不到结合位点设大了搜索效率暴跌。它对应配置文件里的center_*和size_*参数。结合能Binding Energy输出的核心指标单位是 kcal/mol。负值越大代表结合越稳定一般 -6 到 -12 算是有戏的范围。它是两个力场打分下面会细说。十分钟跑通全流程先看这条最短链路最短路径只有四步装环境 → 准备两个输入文件 → 写盒子配置 → 运行 Vina。先用最快方式装好工具# 创建独立环境避免依赖互相打架强烈建议不要装进 base 环境 conda create -n vina python3 conda activate vina # 加 conda-forge 频道然后装 vina 和准备工具 meeko conda config --env --add channels conda-forge conda install -c conda-forge numpy swig boost-cpp libboost pip install vina meeko装完输入vina --version能打印版本号就说明引擎就位了。老手也可以直接pip install -U numpy vina meeko但新手请优先走 conda 路线省下的排错时间远超安装耗时。为什么非要装 meeko因为 Vina 只认 PDBQT 格式而把普通结构文件转成 PDBQT 这件事官方教程就是用 meeko 的工具链完成的。一步一步拆解从蛋白质到打分表下面的每一步都以项目自带的示例为准文件都在example/basic_docking/里。我们用一个真实案例抗癌药伊马替尼imatinib对接 c-Abl 激酶PDB 条目 1iep。第一步让受体先带上装备目标把1iep_receptorH.pdb转成对接用的 PDBQT同时生成盒子配置文件。# -i 指定输入 PDB-o 指定输出文件前缀-p 生成受体 PDBQT # -v 附带生成盒子信息--box_size 和 --box_center 定义搜索空间 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观察结果时注意这一步会生成三个文件——1iep_receptor.pdbqt对接用、1iep_receptor.box.txt盒子配置可直接当 Vina 的 config 用、1iep_receptor.box.pdb用于在 PyMOL 里可视化盒子。如果实验结构里带水分子、辅因子等干扰物可以用--delete_residues把它们剔掉。第二步给配体补全信息目标把配体从 SDF 转成 PDBQT。# SDF 格式含键连接信息是配体准备的推荐起点 mk_prepare_ligand.py -i 1iep_ligand.sdf -o 1iep_ligand.pdbqt观察结果时注意这一步别跳过直接拿原始小分子文件去对接会报错或结果离谱。尤其要检查质子化状态——有的对接失败就差在一个氢原子上。第三步圈出配体可能待的地方目标写一个盒子配置文件。刚才mk_prepare_receptor.py已经帮你生成了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观察结果时注意如果终端提示搜索空间体积超过 27000 立方埃多半是你在用 AutoDock 4 的习惯填格点数0.375 埃/格而 Vina 里尺寸单位直接就是埃。盒子尽量小到刚好包住活性位点搜索越省力结果越稳定。第四步正式开跑对接目标用 Vina 力场完成对接产出含多个构象的 PDBQT 文件。# Vina 力场会在内部自动计算亲和能图谱无需预计算地图文件 # --config 指定盒子配置--exhaustiveness 控制搜索力度32 比默认 8 稳得多 vina --receptor 1iep_receptor.pdbqt --ligand 1iep_ligand.pdbqt \ --config 1iep_receptor.box.txt \ --exhaustiveness32 --out 1iep_ligand_vina_out.pdbqt观察结果时注意终端会出现一条进度条然后是mode | affinity | rmsd l.b. | rmsd u.b.的打分表。为什么要把 exhaustiveness 从 8 提到 32因为它决定独立随机搜索的轮数轮数越多越不容易漏掉真正的最优构象——伊马替尼这个体系默认参数下就经常翻车。第五步把结果转成能看的格式目标PDBQT 转 SDF方便在 PyMOL、Chimera 里查看。# PDBQT 不含键级信息meeko 借助文件头的 SMILES 还原正确键级和形式电荷 mk_export.py 1iep_ligand_vina_out.pdbqt -s 1iep_ligand_vina_out.sdf观察结果时注意别用 OpenBabel 之类靠猜键级的工具转某些分子会猜错。打开输出文件你该看什么对接结果写在 PDBQT 末尾的 REMARK 里终端也会打印。核心看三列mode是构象编号affinity是结合能rmsd用来衡量构象间差异。按本项目文档这个示例体系在 Vina 力场下预期最佳得分约为-13 kcal/mol如果用 AutoDock4 力场需要先用autogrid4 -p 1iep_receptor.gpf -l 1iep_receptor.glg预计算亲和图谱再用vina --scoring ad4对接预期约-14 kcal/mol。这里有个特别提醒两个力场的分数不能互相比较它们衡量方式不同。想用 AutoDock4 力场时命令长这样# 先用 AutoGrid4 根据 GPF 文件预计算各原子类型的亲和能图谱 autogrid4 -p 1iep_receptor.gpf -l 1iep_receptor.glg # 指定 --scoring ad4 走 AutoDock4 力场 vina --ligand 1iep_ligand.pdbqt --maps 1iep_receptor --scoring ad4 \ --exhaustiveness 32 --out 1iep_ligand_ad4_out.pdbqt五个高频翻车现场与排查清单现象 1报错can not open conf.txt但文件明明存在。原因文件浏览器隐藏了扩展名实际文件叫conf.txt.txt。 解决在终端用ls看真实文件名或关闭隐藏已知文件扩展名选项。现象 2盒子体积警告超过 27000 立方埃。原因你按 AutoDock 4 的习惯填了格点数。 解决Vina 的尺寸单位是埃直接填埃即可若确实需要大盒子请同步调高 exhaustiveness。现象 3同样的输入两次跑出来的构象不一样。原因Vina 的搜索算法是随机优化的天然非确定性。 解决多次运行取稳定结果或用相同随机种子复现。现象 4结果分数很高但结合构象明显不对。原因很可能是配体或受体质子化状态错误尤其是组氨酸、天冬氨酸这类残基。 解决回到准备步骤检查氢原子这是新手最常忽略、影响却最大的环节。现象 5输出的构象数总比--num_modes指定的少。原因--num_modes是上限实际输出还受energy_range约束。 解决需要更多构象时适当调大 energy_range。更进一步的玩法柔性侧链与脚本批量跑通一次刚性对接后你可以按兴趣挑方向进阶柔性对接让受体里个别侧链动起来更贴近真实诱导契合。准备时给mk_prepare_receptor.py加-f A:315 -a会生成 rigid 和 flex 两份 PDBQT对接时用--flex指定柔性部分即可。特殊场景项目还支持水合对接、大环化合物对接、多配体同时对接示例分别在example/hydrated_docking/、example/docking_with_macrocycles/、example/mulitple_ligands_docking/。脚本批量装好 Python 绑定后几十行代码就能批量对接做虚拟筛选的核心逻辑就在这from vina import Vina v Vina(sf_namevina) # 选用 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]) v.dock(exhaustiveness32, n_poses20) # 搜索并保留 20 个构象 v.write_poses(output.pdbqt, n_poses5) # 输出排名前 5 的构象完整可运行脚本在example/python_scripting/first_example.py改改文件路径就能直接用。读完本文你应该掌握的清单清楚受体、配体、对接盒子、PDBQT 四个概念分别对应哪条命令会用 meeko 把 PDB 和 SDF 转成 PDBQT并用盒子 TXT 驱动对接能读懂终端输出的打分表知道 -13/-14 kcal/mol 这类数值的含义遇到文件找不到盒子太大结果不稳定时能自己定位原因知道柔性对接和 Python 脚本这两条进阶路径的入口接下来想深入优先看这几处基础对接全文在 docs/source/docking_basic.rst安装细节在 docs/source/installation.rst疑难杂症都在 docs/source/faq.rst而 example/basic_docking/ 里的 solution 目录放着每一步的预期输出可以拿来对照验证。跑通一遍之后你就可以换自己的分子了。【免费下载链接】AutoDock-VinaAutoDock Vina项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考