分子对接新手速通指南:用AutoDock Vina在Mac上完成第一次虚拟筛选实战

发布时间:2026/8/16 10:26:59
分子对接新手速通指南:用AutoDock Vina在Mac上完成第一次虚拟筛选实战 分子对接新手速通指南用AutoDock Vina在Mac上完成第一次虚拟筛选实战【免费下载链接】AutoDock-VinaAutoDock Vina项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina读完本文你将能在Mac上完成从「拿到一份配体小分子」到「得到一份带打分结果的对接构象文件」的完整流程并初步掌握批量虚拟筛选与Python脚本化对接。AutoDock Vina是一款免费开源的分子对接引擎也是目前药物发现领域应用最广的虚拟筛选工具之一。接下来我们会用「闯关」的方式一步步带你跑通这套Mac分子对接工具链。为什么你需要一件分子锁匠工具做药物设计的人经常面临一个尴尬场景手上有一个目标蛋白比如某个激酶的活性口袋还有一抽屉的候选小分子老板问你哪个最有可能结合上去。靠实验一个个试动辄数月、成本惊人。这时候你就需要一个能在电脑上先筛一遍的工具——它就是分子对接。对接的本质可以理解成给一把锁蛋白试各种钥匙小分子看哪把钥匙能插进去且插得最稳。AutoDock Vina就是这个试钥匙的自动化机器它每秒能评估海量结合姿势最后按结合能给你排一个名次。在我实测过的几款开源对接引擎里Vina的优势非常直观对比维度AutoDock VinaAutoDock 4其他商业/学术引擎如Glide开源免费✅ Apache 2.0✅❌ 多数需授权对接速度⚡ 较快多核并行较慢中输出格式PDBQT生态成熟PDBQT私有格式力场内置Vina/AD4/Vinardo三种仅AD4需预生成网格专有Mac支持✅ 有官方二进制与pip包✅参差不齐上手难度低命令行配置文件中中高一句话总结Vina是开箱即用 免费 速度快的组合拳特别适合作为新手的第一台分子对接引擎。先把家当备齐Mac上30分钟装好全套工具在动手之前先把环境搭好。我用的是Python环境 Meeko辅助工具的组合这套方案在macOS上最省心Intel和M系列芯片都适用。# 1. 创建并激活专用虚拟环境强烈建议避免污染系统Python python3 -m venv vina_env source vina_env/bin/activate # 2. 一条命令装齐Vina本体 Meeko配体/受体准备工具 RDKit化学工具包 pip install -U numpy scipy rdkit vina meeko安装完成后验证一下关键命令是否可用vina --version mk_prepare_ligand.py --help | head -5 我在实测中发现把vina和meeko装进同一个虚拟环境是性价比最高的做法——前者负责跑对接后者负责把分子文件翻译成Vina认识的语言PDBQT。如果你偏好源码编译Mac上先装好Xcode Command Line Toolsxcode-select --install再用brew install boost cmake补依赖然后编译build/目录下的源码即可但普通用户通常不需要走这条路。关卡一5分钟跑通你的第一个对接案例新手上路最忌讳从零开始。项目仓库里已经准备好了全套示例数据我们直接用现成的来跑第一单。拿到测试数据克隆仓库后进入基础对接示例目录git clone https://gitcode.com/gh_mirrors/au/AutoDock-Vina.git cd AutoDock-Vina/example/basic_docking/data目录里有三个关键文件1iep_receptorH.pdb—— 受体蛋白c-Abl激酶结构域已加氢1iep_ligand.sdf—— 配体抗癌药伊马替尼以及我们稍后要生成的PBDQT格式文件什么是PDBQT它是PDB格式的对接专用变体多出了原子类型和可旋转键信息。Vina只认这个格式所以配体和受体都要先转成它。把分子文件翻译成PDBQT# 受体准备-p 生成PDBQT-v 顺便生成盒子坐标文件box.txt 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 # 配体准备SDF - PDBQT mk_prepare_ligand.py -i 1iep_ligand.sdf -o 1iep_ligand.pdbqt执行后你会看到生成了1iep_receptor.pdbqt、1iep_receptor.box.txt等文件。其中box.txt已经写好了对接盒子的中心与尺寸可以直接当配置文件用。运行对接vina --receptor 1iep_receptor.pdbqt \ --ligand 1iep_ligand.pdbqt \ --config 1iep_receptor.box.txt \ --exhaustiveness 32 \ --out 1iep_ligand_vina_out.pdbqt终端会吐出一张结果表这应该是你第一次见到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 ...怎么看这张表affinity是预测结合自由能越负表示结合越强mode 1就是Vina认为最可能的结合姿势。对这个案例最优打分在-13 kcal/mol左右属于正常水平说明对接成功。✍️ 动手练习 1换个力场再跑一次把命令末尾加上--scoring ad4AutoDock4力场但注意此时不能用--receptor而要改用预生成的亲和力网格图。仓库的solution目录里已经放好了所有地图文件你可以试试vina --ligand 1iep_ligand.pdbqt \ --maps 1iep_receptor --scoring ad4 \ --exhaustiveness 32 --out 1iep_ligand_ad4_out.pdbqt预期结果AD4力场给出的最优打分会出现在-14 kcal/mol附近。如果你发现两种力场的分数不同——完全正常两个力场的能量尺度本来就不一样不要直接跨力场比较分数。关卡二看懂对接盒子和关键参数别再盲调很多新手一上来就乱改参数结果越改越差。我先帮你把最关键的三个旋钮讲透对接盒子 给分子划地盘Vina只会在你指定的三维盒子范围内搜索配体的结合姿势。盒子太小会漏掉真实结合位点太大则搜索难度陡增。实测经验把盒子中心对准实验结构里的共晶配体位置尺寸设在20~30 Å比较稳妥。盒子超过30×30×30 Å时Vina会主动警告——这时要么缩小盒子要么加大穷举度。穷举度 搜索的精细程度--exhaustiveness决定独立随机搜索的轮数默认值是8。可以类比成出门找钥匙时翻遍每个抽屉的次数次数越多越可能找到那把最合适的钥匙但花的时间也越长。参数默认值推荐场景建议取值exhaustiveness8快速预览8~16exhaustiveness—正式对接/发表级结果32~64cpu0全部核心日常留1~2核给系统num_modes9看多个候选姿势9~20energy_range3 (kcal/mol)想让输出姿势更多可调高到5seed随机想复现实验固定一个整数随机性为什么两次结果不一样Vina的搜索是随机起点的所以每次运行结果会有细微差别。这不是bug而是算法特性。想让实验可复现就固定随机种子vina --receptor 1iep_receptor.pdbqt --ligand 1iep_ligand.pdbqt \ --config 1iep_receptor.box.txt --seed 42 --out reproducible.pdbqt✍️ 动手练习 2验证穷举度的影响分别用--exhaustiveness 8和--exhaustiveness 64各跑一次固定相同seed对比两次输出表里 mode 1 的分数和rmsd差异。你通常会发现低穷举度时mode 2、mode 3 与 mode 1 的分数差距很小甚至会出现首尾颠倒的姿势提高穷举度后最优姿势会更稳定地收敛。关卡三让流程自动化——批量筛选与Python脚本单个分子对接只是热身。虚拟筛选的真实场景往往是几百个配体打一个受体这时候就要上批量模式了。方式一命令行批量对接假设你有一个ligands/目录里面放满了准备号PDBQT格式的候选配体vina --receptor 1iep_receptor.pdbqt \ --batch ligands/*.pdbqt \ --config 1iep_receptor.box.txt \ --dir poses所有结果会输出到poses/目录每个配体对应一个xxx_out.pdbqt文件。--dir指定输出目录Vina会自动处理重名问题。⚠️ 注意--batch和--ligand不能同时使用。如果你还需要遍历多个受体用Shell循环包一层即可。方式二Python脚本化推荐进阶仓库的example/python_scripting/first_example.py是一个非常好的起点它演示了评分、局部优化、对接的完整流程。我在实测中把它精简成了下面这段——对同一个受体批量打分多个配体正是虚拟筛选的标准姿势from vina import Vina # 初始化Vina对象指定力场 v Vina(sf_namevina, cpu4) # 载入受体并预计算网格只算一次后续配体全部复用 v.set_receptor(1iep_receptor.pdbqt) v.compute_vina_maps(center[15.190, 53.903, 16.917], box_size[20, 20, 20]) # 批量循环对接 ligands [lig1.pdbqt, lig2.pdbqt, lig3.pdbqt] for name in ligands: v.set_ligand_from_file(name) v.dock(exhaustiveness32, n_poses5) v.write_poses(f{name}_out.pdbqt, n_poses1, overwriteTrue) print(f{name} 完成对接)执行方式python batch_dock.py预期输出是一行行ligN.pdbqt 完成对接然后你就可以写个小脚本把所有_out.pdbqt里的affinity字段提取出来汇总成打分表了。这就是虚拟筛选最朴素也最实用的形态。✍️ 动手练习 3写一个打分汇总脚本用你熟悉的语言Python即可遍历poses/目录下所有*_out.pdbqt用正则提取每个文件中mode 1那行的affinity值按分数升序输出配体名 → 分数的排行表。这个表格就是你和导师/同事汇报我筛出了哪几个苗头化合物的原材料。关卡四结果解读与可视化——从数字到长什么样分数好看是一回事姿势合理是另一回事。我见过太多人只看打分不看构象最后把明显撞在一起的姿势当成最优结果。转换格式给可视化软件看PDBQT格式在PyMOL等软件里显示不一定友好先用Meeko把它转回更通用的SDFmk_export.py 1iep_ligand_vina_out.pdbqt -s 1iep_ligand_vina_out.sdf然后就能在PyMOL、ChimeraX里把受体和配体叠在一起检查配体是否真的坐进了口袋、有没有明显原子冲突。评估姿势的三个检查点RMSD对照如果你有共晶结构实验测定的真实结合姿势算一下预测姿势与晶体姿势的重原子RMSD一般 2 Å 视为预测成功。分数区间对小分子配体-6 ~ -8 kcal/mol属于弱结合-9 以下才算有竞争力但要记住分数绝对值本身意义有限横向比较更重要。相互作用在可视化软件里看氢键、疏水接触是否落在合理残基上。数字靠得住的前提是化学直觉说得通。一张图看懂完整工作流Vina的官方文档里有一张非常完整的流程图从分子预处理一路画到结果导出我强烈建议你把它当成全局地图来用——上面这张图里每个环节我们在前三个关卡里都已经亲手跑过了最终挑战搭建一套可复用的对接工作流模板闯关到最后是时候把零散命令沉淀成你自己的工厂流水线了。我建议的目录骨架长这样my_screen/ ├── 00_raw/ # 原始分子文件SDF/MOL2 ├── 01_prepared/ # PDBQT配体 受体文件 ├── 02_poses/ # 对接输出 ├── 03_summary/ # 打分汇总表 ├── config.txt # 对接参数配置 └── run_screen.sh # 一键执行脚本config.txt是Vina支持的统一参数入口把常用参数都写进去命令行只留变化的部分receptor 1iep_receptor.pdbqt center_x 15.190 center_y 53.903 center_z 16.917 size_x 20.0 size_y 20.0 size_z 20.0 exhaustiveness 32 cpu 4配套的一键脚本run_screen.shMac上直接跑#!/bin/bash # 一键虚拟筛选配体准备 - 批量对接 - 结果汇总 mkdir -p 01_prepared 02_poses 03_summary for f in 00_raw/*.sdf; do base$(basename $f .sdf) mk_prepare_ligand.py -i $f -o 01_prepared/${base}.pdbqt done vina --receptor 01_prepared/1iep_receptor.pdbqt \ --batch 01_prepared/*.pdbqt \ --config config.txt --dir 02_poses # 汇总打分提取每个输出文件中最优affinity for f in 02_poses/*_out.pdbqt; do score$(grep -m1 1 $f | awk {print $2}) echo $(basename $f) $score 03_summary/scores.tsv done sort -k2 -n 03_summary/scores.tsv预期输出一个按打分从好到差排好序的scores.tsv表格。到这里你已经拥有了一套属于自己的、可以反复使用的Mac分子对接/虚拟筛选工作流。避坑手册新手最常栽的5个跟头把项目FAQ和我的实测经验揉在一起这五个坑出现频率最高坑典型症状解决办法盒子尺寸用了格点数收到27000 ų体积警告Vina的盒子单位是Å不是AutoDock 4的格点(0.375Å)配体质子化状态不对对接姿势合理但氢键全错对接前检查pH下的质子化必要时用工具加氢用PDB格式直接备配体键连信息丢失结果诡异配体请用SDF/MOL2等含键连信息的格式不同力场分数互比觉得AD4和Vina打分差1个数量级牢记力场间分数不可直接比较低穷举度撞大运跑几次结果漂移大正式结果把穷举度提到32以上并固定seed复现结语从跑通到跑好的下一步到了这一步你已经完成了从什么是分子对接到搭建自己的虚拟筛选流水线的完整跨越。接下来值得探索的方向仓库里也都备好了现成的例子柔性对接example/flexible_docking让部分侧链动起来适合诱导契合明显的体系水合对接example/hydrated_docking显式考虑水分子桥接作用对片段类药物尤其重要大环分子对接example/docking_with_macrocycles处理环状大分子配体的柔性多配体同时对接example/mulitple_ligands_docking一个口袋塞多个配体的场景我最后想分享的一点体会是分子对接是个越用越准的工具——不是软件本身会变聪明而是你越来越懂得在什么体系、什么参数下它能给你可信的答案。动手把上面的关卡跑一遍比读十篇教程都有用。祝你第一单对接顺利提示跑通上述示例所需的全部输入数据与预期输出都可以在仓库的example/目录含data/与solution/子目录中找到完整的官方文档则在docs/source/下遇到具体问题可直接查阅。【免费下载链接】AutoDock-VinaAutoDock Vina项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考