三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Mac上分子对接快速上手:AutoDock Vina从零跑通实战教程

Mac上分子对接快速上手:AutoDock Vina从零跑通实战教程

Mac上分子对接快速上手:AutoDock Vina从零跑通实战教程

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

深夜十二点,一位做药物筛选的研究生对着空白的对接结果文件发愁——候选分子跑了整整两天,输出却全是乱码。如果你也曾在"分子对接"这条路上栽过跟头,那么本文的主角AutoDock Vina,就是为你准备的救命稻草。这篇文章将带你用最少的时间成本,从安装到跑通第一次分子对接,全程可复制、可执行。

一、新手最容易踩的四个坑,先给你排掉

与其一上来就讲理论,不如先把新手最常见的翻车现场摆出来。你对照自查,中招的请立刻纠正。

坑位❌ 错误做法✅ 正确做法
依赖缺失直接编译,报错后才四处找包先装好 Boost、CMake 再编译
文件格式用 .pdb 格式准备小分子配体用 .sdf 格式配体,保留键连信息
路径含中文/空格把项目放在"我的文档/新建文件夹"里用纯英文无空格路径,如~/dock_work/
结果文件为空不看报错直接打开输出文件先检查终端日志,确认受体配体 PDBQT 是否生成成功

避坑要点:Mac 上建议通过 Homebrew 安装编译依赖:

brew install cmake boost

拿到源码后,克隆并进入项目目录:

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

二、分子对接到底在算什么?一个"鞋楦"的比喻

想理解分子对接,别把它想得太玄。你可以把受体蛋白的活性口袋想象成一只手工皮鞋的鞋楦——它形状凹凸不平、深浅不一。配体小分子则是一只等待打磨的脚。对接的过程,就是不断尝试脚的各种角度、姿态,找到那个最贴合鞋楦、受力最均匀的位置。

AutoDock Vina 做的事情,就是把"脚的姿态"用十几个旋转角和平移量编码,然后反复搜索、打分,找出能量最低的摆放方式。能量越低,结合越稳定,这个姿态就越可能是真实结合构象。算法搜索得越充分(穷举度越高),找到"最合脚姿态"的概率就越大。

三、实战案例:从零跑通一次基础对接

项目自带的example/basic_docking/目录里,有一对现成的测试体系:c-Abl 激酶受体(1iep_receptorH.pdb)与抗癌药伊马替尼配体(1iep_ligand.sdf)。我们用它走完全流程。

第1步:准备测试数据

mkdir -p ~/dock_work cp -r example/basic_docking/data/* ~/dock_work/ cd ~/dock_work

第2步:生成受体与配体的 PDBQT 文件

对接前,受体和配体都要转成 PDBQT 格式(包含原子类型与电荷信息)。这里用 Meeko 工具完成:

pip install meeko # 受体:加极性氢、生成 PDBQT,并同时输出对接盒子参数文件 mk_prepare_receptor.py -i 1iep_receptorH.pdb -o rec -p -v \ --box_size 20 20 20 --box_center 15.190 53.903 16.917 # 配体:SDF 转 PDBQT mk_prepare_ligand.py -i 1iep_ligand.sdf -o lig.pdbqt

命令执行后,你会得到rec.pdbqtlig.pdbqt,以及记录盒子中心与尺寸的rec.box.txt。用 PyMOL 打开rec.box.pdb,可以直观看到搜索区域的三维范围。

第3步:编写对接配置文件

把盒子参数写进一个配置文件conf.txt,好处是参数一目了然、方便复用:

receptor = rec.pdbqt ligand = lig.pdbqt center_x = 15.190 center_y = 53.903 center_z = 16.917 size_x = 20 size_y = 20 size_z = 20 exhaustiveness = 32 num_modes = 9

第4步:执行对接并解读结果

vina --config conf.txt --out result.pdbqt --log run.log

一切顺利的话,终端会输出一张结果表:

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

结果怎么看?

  • affinity:预测结合自由能。负值表示可结合,越负越强。本案例最优结果约 -13 kcal/mol 即属正常。
  • rmsd l.b. / rmsd u.b.:各构象相对最优构象的差异,两列均为 0 的那行就是第一名。
  • 想恢复配体完整的键序和形式电荷,可再用mk_export.py result.pdbqt -s result.sdf导出 SDF。

📌 你可以在example/basic_docking/solution/目录里找到所有预期输出文件,跑完对照一下,结果一致就说明环境没问题。

四、参数调优进阶:把搜索调到"恰到好处"

同样的体系,参数不同,结果天差地别。我用对比实验的方式帮你建立直觉。

实验一:盒子太大 vs 盒子刚好。盒子若把整个蛋白都框进去,搜索空间巨大,Vina 很可能找到一堆远离真实位点的"假阳性"。建议盒子边长设 20–30 Å,恰好覆盖结合口袋,并把中心对准口袋中心。

实验二:穷举度 8 vs 32exhaustiveness表示全局搜索的用力程度,大致与耗时成正比。默认 8 速度最快但可能漏掉正确构象;调到 32 结果更稳定。对精度要求高的项目,甚至可上到 64。

实验三:CPU 核数。不给--cpu参数时,Vina 自动检测并尽量用满全部核心。M 系列芯片性能强劲,可以直接放开:

vina --config conf.txt --cpu $(sysctl -n hw.ncpu) --out best.pdbqt

参数速查表

参数推荐值说明
size_x/y/z20–30 Å搜索盒边长,覆盖口袋即可
exhaustiveness8(快)/ 32(稳)全局搜索强度,近似正比于耗时
num_modes9输出构象数量上限
cpu0(自动)指定线程数,0 表示自动探测
seed随机固定随机种子可复现结果
scoringvina / vinardo / ad4力场选择,ad4 需预先生成亲和力网格

⚠️ 不同力场给出的分数不可相互比较。你只能在同一种力场下横向对比不同配体。

五、高级玩法:柔性侧链、水分子与批量筛选

玩法一:柔性对接。蛋白并非铁板一块,口袋里的关键残基会随配体调整姿态。想让某个残基动起来,在准备受体时加-f A:315指定链与残基号即可,输出会分成刚性部分与柔性侧链两份 PDBQT,对接时一并传入:

vina --receptor rec_rigid.pdbqt --flex rec_flex.pdbqt \ --ligand lig.pdbqt --config conf.txt --out flex_out.pdbqt

完整示例见example/flexible_docking/

玩法二:水合对接。若结合位点有结构水参与关键氢键网络,可保留水分子参与对接,example/hydrated_docking/提供了整套思路与解法文件。

玩法三:批量虚拟筛选。面对几十上百个候选分子,用一个循环搞定:

for lig in ligands/*.pdbqt; do name=$(basename "$lig" .pdbqt) vina --config conf.txt --ligand "$lig" --out "out_${name}.pdbqt" \ --log "log_${name}.txt" done

玩法四:Python 脚本自动化。项目提供 Python 绑定,可编程完成设受体、算网格、打分、对接、导出一整套流程。参考example/python_scripting/first_example.py

from vina import Vina v = Vina(sf_name='vina') v.set_receptor('rec.pdbqt') v.set_ligand_from_file('lig.pdbqt') v.compute_vina_maps(center=[15.190, 53.903, 16.917], box_size=[20, 20, 20]) v.dock(exhaustiveness=32, n_poses=20) v.write_poses('out.pdbqt', n_poses=5, overwrite=True)

六、高频问题排查:三个真实翻车现场

Q: 编译时提示找不到 Boost 头文件怎么办?A: 多半是 Homebrew 的 Boost 路径没被找到。确认安装后再编译,若仍报错,可先用brew install boost指定安装完整版(非仅头文件版),并把-DBOOST_ROOT指到对应目录。

Q: 运行后输出文件存在,但里面一个构象都没有?A: 检查终端日志。常见原因有三:受体或配体 PDBQT 有原子类型不被识别、盒子没覆盖到配体初始位置、--cpu指定超过实际核心数。逐个排查即可。

Q: 两次运行同一参数,结果却不一样?A: Vina 的全局搜索带随机性,属正常现象。想要可复现的结果,在命令中加上--seed 42(任何固定整数均可)。

七、资源导航与下一步行动

  • 官方文档docs/source/下按主题分好了docking_basic.rst(基础)、docking_flexible.rst(柔性)、docking_hydrated.rst(水合)、docking_python.rst(编程)等教程,配合示例目录食用更佳。
  • 示例宝库example/下每个子目录都遵循"data/(输入) +solution/(预期输出)"结构,等于自带标准答案。
  • 对照流程图:下图展示了从结构生成、对接输入准备到对接计算的完整链路,跑流程前先扫一眼,全局尽在掌握。

给你的行动路线:本周只做一件事——把第三节的基础案例亲手跑通,然后换自己的受体和配体试一次。下周再挑战柔性对接或批量筛选。纸上得来终觉浅,分子对接这门手艺,终究是"跑"出来的。现在就打开终端,去完成你的第一次对接吧!🚀


关键词:分子对接、AutoDock Vina、Mac分子对接软件安装、AutoDock Vina参数设置教程、柔性对接与批量虚拟筛选

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

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

← 返回列表