当前位置: 首页 > news >正文

分子对接实战:用AutoDock Vina从零跑通第一个药物结合案例的完整教程

分子对接实战:用AutoDock Vina从零跑通第一个药物结合案例的完整教程

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

拿到一个蛋白质的结构文件,手头还有几个候选药物分子,你想知道它们会不会结合、以什么姿势结合——这是做药物设计的人几乎都会卡在的第一步。AutoDock Vina 正是为解决这个问题而生的开源分子对接引擎:给它一个受体、一个配体和一个搜索区域,它就能预测两者最可能的结合方式并给出结合亲和力分数。本文不堆参数,也不背概念,而是带你从零开始,完整跑通一个真实案例,并学会排查最常见的报错。

AutoDock Vina 由 Scripps 研究所开发,Apache 2.0 协议开源,是当前学术界和工业界使用最广泛的对接引擎之一。它有四个特别打动我的特点:计算速度快(比老一代工具明显更省时间)、完全免费、内置 Vina 与 AutoDock4.2 两套打分函数、还支持大环分子、水合对接、批量虚拟筛选以及 Python 3 脚本调用。下面我们就一步步把它"跑起来"。

为什么我选了 AutoDock Vina 而不是别的对接软件

先别急着装软件,花两分钟想清楚"选谁"的问题。市面上能做分子对接的工具不少,但 AutoDock Vina 对新手格外友好,原因有三个:

维度AutoDock Vina 的表现
上手成本一条命令就能跑,配置文件用纯文本即可
计算速度梯度优化 + 多线程,比传统算法快很多
生态配套官方文档、示例案例、Python 接口一应俱全

从工作流程图里你也能看到,一次完整对接由三步组成:结构预处理 → 对接输入准备 → 对接计算与结果导出。预处理环节靠 Meeko 工具包完成,真正的计算则交给 Vina 引擎。这个分工很清晰,我们后面就按这个顺序走。

打个比方,对接就像帮两个陌生人找到最舒服的"牵手姿势":受体是那个不太动弹的人,配体是主动凑上去的那位,Vina 负责在给定范围内反复尝试各种角度和位置,最后把"最不别扭、能量最低"的几种姿势排好队递给你。

装好三样东西,十分钟完成环境准备

在开始之前,你需要三样东西:Python 3AutoDock Vina 本体、以及负责文件格式转换的Meeko工具包。推荐用虚拟环境安装,避免污染系统自带的 Python。

如果你用 pip,一条命令就能装齐:

pip install -U numpy scipy rdkit vina meeko gemmi prody

如果你习惯用 conda,可以专门建一个叫vina的环境:

conda create -n vina python=3 conda activate vina conda config --env --add channels conda-forge conda install -c conda-forge numpy scipy rdkit vina meeko gemmi autogrid

安装成功后,在终端输入下面三个命令,应该都能找到它们:

mk_prepare_ligand.py --help mk_prepare_receptor.py --help vina --version

然后获取官方示例数据。项目仓库里已经帮你准备好了全套输入文件、配置文件甚至预期输出,直接拿来练手:

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

克隆下来的项目结构大致是这样,example/目录是咱们今天的"训练场":

AutoDock-Vina/ ├── docs/ # 完整官方文档 ├── example/ # 各类对接示例 │ ├── basic_docking/ # 基础对接(本文主角) │ ├── flexible_docking/ # 柔性侧链对接 │ ├── hydrated_docking/ # 水合对接 │ └── python_scripting/ # Python 脚本示例 ├── src/ # C++ 源代码 └── data/ # 力场参数文件

第一个实战:把抗癌药分子对接到 c-Abl 蛋白里

今天我们要复现的是官方文档 docs/source/docking_basic.rst 里的经典案例:把抗癌药伊马替尼(imatinib,Gleevec)对接到 c-Abl 激酶结构域上。c-Abl 是慢性粒细胞白血病治疗的重要靶点,这个例子数据完整、结果可预期,特别适合第一次上手。

先进入示例目录:

cd example/basic_docking/data

你会看到两个文件:1iep_receptorH.pdb(含氢原子的受体)和1iep_ligand.sdf(配体 3D 结构)。所有步骤的预期输出都在solution/子目录里,跑完可以对照。

第一步:把受体收拾成 Vina 认识的格式

Vina 计算时用的是 PDBQT 格式,它比 PDB 多了原子类型和电荷信息。用 Meeko 的受体准备脚本一步到位:

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:同时生成对接盒子文件(后面要用的配置文件);
  • --box_size/--box_center:以埃(Å)为单位指定搜索盒子的长宽高和中心坐标。

第二步:给配体也拍一张"证件照"

配体同样要转成 PDBQT。注意文档里有个贴心提醒:小分子尽量别用 PDB 格式当输入,因为它不含化学键连接信息,容易出错。我们用的是 SDF 格式:

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

做完这两步,你的目录下应该出现了1iep_receptor.pdbqt1iep_ligand.pdbqt两个文件。

第三步:用配置文件圈出"活动场地"

对接不能在整个蛋白上瞎找,你得先圈出配体可能结合的活性口袋。刚才-v参数已经生成了一个现成的配置文件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

翻译成人话就是:以坐标 (15.190, 53.903, 16.917) 为中心,划一个 20×20×20 Å 的立方体作为搜索区域。盒子划得越小越精准,但千万别把真正的作用位点划出去。

第四步:运行对接并等待结果

材料齐了,正式开工。用 Vina 力场(默认)跑一次对接:

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 会得到更稳定的结果,代价是耗时变长。屏幕上会出现一条进度条,跑完后结果就写进了1iep_ligand_vina_out.pdbqt

如果你的受体之前已经生成了 AutoGrid 的亲和力图(那些.map.maps.fld文件),也可以换用 AutoDock4 打分函数,命令几乎一样,只是把输入换成 maps、加上--scoring ad4

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

三分钟看懂对接结果:那一串数字到底在说什么

打开终端输出,你会看到类似下面这样的表格:

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:第几个结合构象,1 号是分数最好的;
  • affinity:预测的结合亲和力,单位 kcal/mol。负值代表能结合,数值越小(负得越多)表示结合越强
  • rmsd:不同构象之间相差多大,帮你判断它们是不是同一个"姿势"的微小抖动。

按照官方文档的说明,用 Vina 力场跑这个案例,最佳分数应该在-13 kcal/mol 左右;如果刚才用的是 AutoDock4 力场,则约为-14 kcal/mol。这里有个新手常踩的坑:两套打分函数的分数不能互相比较,所以汇报结果时一定要注明用的哪套力场。

另外,想把结果拿到 PyMOL、ChimeraX 里做可视化,或者交给下游软件处理时,最好把 PDBQT 转回 SDF 格式,这样键级和电荷信息才不会丢:

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

到这里,你已经完整跑通了人生第一次分子对接。接下来看看这个工具还能玩出什么花样。

四个进阶玩法:批量筛选、柔性侧链、水分子和大环

玩法一:批量虚拟筛选。手里有一堆候选分子要逐个测试时,配合配置文件循环调用即可:

for ligand_file in *.pdbqt; do vina --receptor receptor.pdbqt --ligand $ligand_file \ --config config.txt --out results_${ligand_file} done

玩法二:柔性对接。真实场景里蛋白的侧链也会动。Vina 允许你把受体拆成"刚体部分 + 柔性侧链",在 example/flexible_docking 里就有把 Thr315 设为柔性残基的完整案例,准备受体时加一个参数:

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

对接时把柔性文件用--flex传进去:

vina --receptor 1fpu_receptor_rigid.pdbqt --flex 1fpu_receptor_flex.pdbqt \ --ligand 1iep_ligand.pdbqt --config ... --out ...

玩法三:水合对接。水分子有时是结合的关键"配角"。参考 example/hydrated_docking 的案例,可以在对接中显式考虑水分子的影响,流程和基础对接一致,只是输入结构里多带了水。

玩法四:大环分子。大环配体的环状骨架不能按普通可旋转键处理,Vina 从 1.2 版本起专门支持柔性大环,示例见 example/docking_with_macrocycles。

隐藏彩蛋:Python 脚本。如果你会一点 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]) print('Score before minimization: %.3f (kcal/mol)' % v.score()[0]) v.optimize() v.dock(exhaustiveness=32, n_poses=20) v.write_poses('1iep_ligand_vina_out.pdbqt', n_poses=5, overwrite=True)

这意味着你可以把对接放进自动化流程里,批量处理、批量打分,官方文档见 docs/source/docking_python.rst。

新手最容易翻车的六个坑,我替你踩过了

以下是 docs/source/faq.rst 里被问得最多的问题,加上我自己的血泪教训:

  1. 报错 "can not open conf.txt",文件明明存在?多半是文件被命名成了conf.txt.txt(系统隐藏了扩展名),或者你不在文件所在目录。用ls确认一下。
  2. 提示搜索空间超过 27000 ų?这是把单位搞错了——Vina 的盒子尺寸单位是,不是 AutoDock4 里的"格点"(1 格点 = 0.375 Å)。
  3. 对接结果不对、和教程对不上?对接算法本质是随机的,每次结果都可能略有不同。想要可复现,就在命令里手动指定同一个--seed
  4. 配体没有质子化?成功与否常常就悬在一个氢原子上。输入结构里氢的数量和位置会影响氢键供体/受体的判定,务必先检查质子化状态。
  5. 用了旧教程的命令报 usage error?老版本里的--all已经被--out取代了,跟着新文档走。
  6. 在集群上报 "boost thread resource" 错误?这是运行环境禁止了多线程,属于服务器配置问题,找管理员解决,不是你的命令写错了。

给你的一道动手挑战题 + 延伸阅读

理论知识到此为止,是时候自己动手了。给你留一个 15 分钟的小挑战:

example/basic_docking/data/里的1iep_ligand.sdf换成你自己的一个小分子(比如从 PubChem 下载的 SDF),重新走一遍"受体准备 → 配体准备 → 配置盒子 → 运行对接"的流程,看看分数和姿势有什么变化。盒子中心坐标可以从原配体所在位置推测,也可以用其他口袋预测工具辅助确定。

想继续深入,官方文档都在docs/source/目录下:安装细节看 docs/source/installation.rst,基础对接看 docs/source/docking_basic.rst,柔性、水合、批量对接各有独立章节。C++ 源码在src/里,比如src/lib/scoring_function.h定义了打分函数,src/main/main.cpp是命令行入口,好奇的同学可以翻一翻。

下一期我会带大家做一次真实的虚拟筛选实战:准备一个包含几十个配体的化合物库,用 Vina 批量对接后按分数排序,并教你如何结合 RMSD 与已知活性数据评估筛选质量。

核心要点速览

环节关键命令/文件一句话要点
安装pip install vina meeko用虚拟环境安装最省心
受体准备mk_prepare_receptor.py输出 PDBQT,可顺带生成盒子配置
配体准备mk_prepare_ligand.py别用 PDB 格式当小分子输入
搜索盒子config.txt的 center/size单位是埃,不是格点
运行对接vina --receptor --ligand --configexhaustiveness 32结果更稳
结果解读affinity(kcal/mol)负得越多结合越强,ad4 与 vina 分数不可比
结果导出mk_export.py转 SDF 保键级,方便可视化
进阶flexible / hydrated / batch / Python所有示例都在example/目录

分子对接是一门"越跑越熟"的手艺,最好的学习方式就是把你手头那个分子丢进 Vina 里跑一次。现在就去试试吧,跑通了记得回来对照 solution 目录,看看你离官方结果有多近。

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

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

http://www.cnnetsun.cn/news/4041586.html

相关文章:

  • 一站式桌面共享利器:DesktopSharing 让低延迟实时推流如此简单
  • gRPC负载均衡(客户端负载均衡)
  • 低压变频器哪个好——2025年主流品牌选型深度解析
  • 几百页扫描PDF不能搜索复制?Umi-OCR双层PDF实测记录
  • LosslessCut 无损剪辑指南:3分钟完成传统软件半小时的切割活
  • SQL注入高级技巧:布尔盲注与WAF绕过实战解析
  • AI Agent 面试题 393:如何设计Agent的记忆重要性评分机制?
  • 技术拆解(五):残差连接到底在“残”什么?HC、MHC和注意力残差,一张图根治困惑
  • 数据的存储
  • 免费开源的桌面围栏工具NoFences:3分钟让图标各归其位
  • 微信聊天记录存哪里才安心?WeChatMsg 本地留档实操手册
  • 面试官:Workflow 和 Agent 有什么区别?如何选型?
  • 一篇搞定 OneNote 笔记迁移:onenote-md-exporter 完整使用指南
  • AIGC无限画布前端实现:从Canvas架构到性能优化全解析
  • QQ空间备份三步走:用QQ空间导出助手免费永久保存十年青春
  • OpenClaw:AI Agent如何重塑测试自动化,从脚本执行到智能决策
  • 利用GPT-5.6模拟国自然评审的评分思路:把淘汰项改成加分项
  • 三分钟装好开源番茄钟:把macOS菜单栏变成你的专注控制台
  • 02.01.02.泛微OA Ecology10 (开发环境搭建idea安装配置)
  • Dell XPS 13 (2026)评测:预算Windows笔记本新标杆,能否击败MacBook Neo?
  • 暗黑2角色存档修改完整教程:用Diablo Edit2免费修改角色、装备与任务进度
  • 米哈游扫码登录器上手指南:如何用 3 分钟搭好你的自动抢码工具
  • 满足各类环境测试需求大阵列芯片测试座-测试良率高
  • OpenProject容器化部署完整实操:排掉三个高频坑,半小时把项目管理平台跑起来
  • Agent 能不能上线,关键看评估能不能真正控制业务流程
  • Knowledge Graph Augmented Large Language Models for Disease Prediction
  • AgentScope 2.0:专为托管AI智能体打造的企业级云原生平台
  • ColabFold 批量处理实战:一次跑完几百条序列的蛋白质结构预测完整流程
  • 微信公众号数据采集完整指南:3个实战场景玩转搜狗微信搜索爬虫
  • JPEXS Free Flash Decompiler 实战指南:一条命令跑通 SWF 反编译、修复与资源提取全流程