- 生物信息学
- 科学计算
- 科研
【免费下载链接】AutoDock-Vina
AutoDock Vina
AutoDock Vina 不仅支持单配体对接,还可以在一次对接任务中同时对接多个配体,这一能力为片段药物设计(fragment-based drug design)中多个小片段分子在同一结合口袋内的协同排布与打分提供了直接支持。本文以 PDE 蛋白与两个立体异构抑制剂(PDB 条目 5x72)为例,完整演示多配体对接的受体/配体准备、可选 AutoDock4 亲和力图生成、双力场对接运行与结果解读,并结合仓库源码剖析多配体对接的底层实现与命令行约束。
为什么要"同时"对接多个配体
常规的批量对接(batch docking)是对多个配体逐个、串行地对接,每次只考虑一个配体与受体的相互作用;而 AutoDock Vina 的多配体对接(multiple ligands docking)则是在同一次搜索中同时排布并打分多个配体,配体与配体之间、配体与受体之间都参与能量评估。
这种模式特别适合片段药物设计场景:当两个(或多个)小分子片段分别结合同一靶标的相邻子口袋时,把它们放在同一个对接盒中同时对接,可以考察多个片段能否同时、协调地占据结合位点,为后续将片段生长、连接或组合为更高亲和力的大分子提供构象与能量依据。
本教程使用的案例是 PDE 蛋白与其两个抑制剂的复合物晶体结构(PDB 条目5x72)。结构中的两个抑制剂互为立体异构体,其中只有 R 异构体能够结合口袋中的特定区域,而 R 与 S 异构体都可以结合第二个位置——这正是验证"多配体同时对接能否重现真实结合模式"的理想系统。
需要特别区分:多配体同时对接与 批量对接教程 描述的--batch串行对接是两种不同的功能,后者面向虚拟筛选场景,前者才是本篇文章的主题。
系统与软件要求
这是一篇命令行实战教程,可在 macOS、Linux 以及 Windows Subsystem for Linux(WSL)中完成。
- 受体与配体准备依赖 Python 包Meeko(提供
mk_prepare_receptor.py与mk_prepare_ligand.py命令行脚本),请先安装 Meeko 及其依赖; - 配体质子化使用 Molscrub 包中的
scrub.py; - **AutoDock4 力场(可选部分)**需要
autogrid4生成亲和力图; - 运行对接本体使用 AutoDock Vina 的
vina可执行文件。
教程的全部输入与预期输出文件都收录在仓库的 example/mulitple_ligands_docking 目录下:
- 输入(
data/):5x72.pdb(原始 PDB 结构)、5x72_receptorH.pdb(含氢受体)、5x72_ligand_p59.sdf 与 5x72_ligand_p69.sdf(两个配体); - 预期输出(
solution/):受体 PDBQT、两个配体的 PDBQT、GPF 与全部 map 文件、两种力场的对接输出 PDBQT 等。
1. 准备受体
与基础对接教程一致,多配体对接同样要求提供包含全部氢原子的受体坐标文件。仓库已提供 5x72_receptorH.pdb:它是从data/5x72.pdb中手动抽取受体坐标(使用文本编辑器)、再用reduce工具补氢得到的。
接下来使用 Meeko 的mk_prepare_receptor.py一步生成受体 PDBQT 与对接盒 TXT 配置文件:
$ mk_prepare_receptor.py -i 5x72_receptorH.pdb -o 5x72_receptor -p -v \ --box_center -15.000 15.000 129.000 --box_size 30 24 24 \ --default_altloc A -a各参数含义如下:
| 参数 | 作用 |
|---|---|
-i 5x72_receptorH.pdb | 指定输入受体文件(含全部氢原子) |
-o 5x72_receptor | 输出文件的 basename(会生成5x72_receptor.pdbqt、5x72_receptor.box.txt、5x72_receptor.box.pdb等) |
-p | 生成受体 PDBQT 文件 |
-v | 同时生成描述对接盒的 TXT 文件与可视化的 box PDB 文件 |
--box_center -15.000 15.000 129.000 | 对接盒中心坐标(Å),对应 5x72 的结合口袋 |
--box_size 30 24 24 | 对接盒在 X/Y/Z 三个维度的大小(Å) |
--default_altloc A | 存在多套交替坐标(altloc)时,默认选用 A 套坐标 |
-a | 忽略部分解析的残基(本案例中为 A 链的 LYS29) |
其中-a用于忽略部分解析的残基 LYS29(chain A)。如果你更希望显式删除它,也可以改用--delete_residues A:29,效果等价。
生成后:
5x72_receptor.pdbqt:对接用的受体文件;5x72_receptor.box.txt:可直接作为 Vina 的--config配置文件;5x72_receptor.box.pdb:对接盒的可视化文件,可在 PyMOL 等程序中叠加到受体结构上查看。
2. 准备两个配体
多配体对接与单配体对接在准备环节的唯一区别是:需要为每一个配体分别准备 PDBQT 文件。本教程从data目录中的 SDF 文件出发:
- 5x72_ligand_p59.sdf
- 5x72_ligand_p69.sdf
这两个配体文件来自 PDB 条目5x72(对应晶体中的 P59 与 P69 分子)。由于 SDF 中没有氢原子,先用 Molscrub 的scrub.py补氢(生成*H.sdf),再用mk_prepare_ligand.py转成 PDBQT:
$ scrub.py 5x72_ligand_p59.sdf -o 5x72_ligand_p59H.sdf $ mk_prepare_ligand.py -i 5x72_ligand_p59H.sdf -o 5x72_ligand_p59.pdbqt $ scrub.py 5x72_ligand_p69.sdf -o 5x72_ligand_p69H.sdf $ mk_prepare_ligand.py -i 5x72_ligand_p69H.sdf -o 5x72_ligand_p69.pdbqt完成之后你会得到5x72_ligand_p59.pdbqt与5x72_ligand_p69.pdbqt两个配体文件,它们将同时出现在后面的 Vina 命令行中。
3.(可选)为 AutoDock4 力场生成亲和力图
如果你打算使用AutoDock4 力场(--scoring ad4)进行对接,需要先用 AutoGrid4 预计算每个原子类型的亲和力图(affinity map)。若使用 Vina 或 Vinardo 力场,Vina 会在对接前内部自行计算这些图,可跳过本节。
生成 GPF 的方式很简单:重新运行mk_prepare_receptor.py并附加-g选项即可开启 GPF 文件的写出:
$ mk_prepare_receptor.py -i 5x72_receptorH.pdb -o 5x72_receptor -p -v -g \ --box_center -15.000 15.000 129.000 --box_size 30 24 24 \ --default_altloc A -a生成的 5x72_receptor.gpf 内容如下(受体为5x72_receptor.pdbqt):
parameter_file boron-silicon-atom_par.dat npts 80 64 64 gridfld 5x72_receptor.maps.fld spacing 0.375 receptor_types HD C A N NA OA F P SA S Cl Br I Mg Ca Mn Fe Zn ligand_types HD C A N NA OA F P SA S Cl CL Br BR I Si B receptor 5x72_receptor.pdbqt gridcenter -15.000 15.000 129.000 smooth 0.500 map 5x72_receptor.HD.map map 5x72_receptor.C.map map 5x72_receptor.A.map map 5x72_receptor.N.map map 5x72_receptor.NA.map map 5x72_receptor.OA.map map 5x72_receptor.F.map map 5x72_receptor.P.map map 5x72_receptor.SA.map map 5x72_receptor.S.map map 5x72_receptor.Cl.map map 5x72_receptor.CL.map map 5x72_receptor.Br.map map 5x72_receptor.BR.map map 5x72_receptor.I.map map 5x72_receptor.Si.map map 5x72_receptor.B.map elecmap 5x72_receptor.e.map dsolvmap 5x72_receptor.d.map dielectric -42.000GPF 关键字段速览:
parameter_file:AutoGrid4 使用的原子参数文件(仓库data/下的AD4_parameters.dat、AD4Zn.dat即同类参数数据);npts 80 64 64:网格点数,由--box_size 30 24 24与spacing 0.375(默认网格间距 0.375 Å)共同决定;receptor_types/ligand_types:受体与配体中出现的原子类型集合,两类都要覆盖 HD、C、A(芳香碳)、N、NA、OA、F、P、SA、S、Cl、Br、I、Si、B 等,以保证每个配体原子类型都有对应 map;gridcenter:与--box_center一致的网格中心;map ...:逐条指定每个原子类型要写出的.map文件;elecmap/dsolvmap:静电势图与去溶剂化图;dielectric:介电常数(-42.000 为 AutoDock4 的隐含溶剂参数)。
随后用autogrid4按 GPF 计算所有 map:
$ autogrid4 -p 5x72_receptor.gpf -l 5x72_receptor_rigid.glg命令执行完成后应得到以下文件(solution/目录中均有对应成品):
5x72_receptor.maps.fld # grid data file 5x72_receptor.*.map # affinity maps for A, C, HD, NA, N, OA atom types 5x72_receptor.d.map # desolvation map 5x72_receptor.e.map # electrostatic map其中5x72_receptor.maps.fld是网格数据主文件,运行 Vina 时只需把--maps指向 basename5x72_receptor。
4. 运行 AutoDock Vina 进行多配体对接
多配体对接的命令行核心差异在于:在--ligand后一次性列出多个配体 PDBQT 文件(空格分隔),Vina 会把它们作为一个整体同时放入搜索空间。
从入口源码可以看到,--ligand参数被定义为multitoken()的字符串向量,天然支持一次传入多个文件;--scoring的合法取值为ad4、vina、vinardo,默认值是vina。
4.a 使用 AutoDock4 力场
使用 AutoDock4 力场时,只需提供亲和力图与配体,并通过--scoring ad4显式声明:
$ vina --ligand 5x72_ligand_p59.pdbqt 5x72_ligand_p69.pdbqt --maps 5x72_receptor \ --scoring ad4 --exhaustiveness 32 --out 5x72_ligand_ad4_out.pdbqt--maps 5x72_receptor:指向第 3 步生成的.maps.fld及配套 map(前缀名);--scoring ad4:使用 AutoDock4 打分函数,此时不再需要--receptor;--out:必须显式指定输出文件——这一点与单配体对接不同。源码中明确检查:当传入多个配体且未给出--out时,会直接报错ERROR: Output name must be defined when docking simultaneously multiple ligands.(见 src/main/main.cpp),因为此时无法像单配体那样依据配体文件名自动推导输出名。
4.b 使用 Vina 力场
与 AutoDock4 相反,使用 Vina 力场不需要autogrid4预计算亲和力图——Vina 会在对接前根据搜索盒内部自动计算所需的图(对应源码中compute_vina_maps的调用,见 src/main/main.cpp)。
如果你在受体准备步骤没有生成 box 文件,可以新建一个 TXT 配置来指定搜索盒的中心与尺寸(单位 Å)。需要说明的是:教程正文中给出的示例配置片段沿用了基础教程的坐标(15.190 / 53.903 / 16.917),而本仓库 solution/5x72_receptor.box.txt 中 5x72 案例的实际正确坐标应与--box_center -15 15 129、--box_size 30 24 24保持一致,即:
center_x = -15.000 center_y = 15.000 center_z = 129.000 size_x = 30.000 size_y = 24.000 size_z = 24.000然后运行对接:
$ vina --receptor 5x72_receptor.pdbqt --ligand 5x72_ligand_p59.pdbqt 5x72_ligand_p69.pdbqt \ --config 5x72_receptor.box.txt \ --exhaustiveness=32 --out 5x72_ligand_vina_out.pdbqt--receptor 5x72_receptor.pdbqt:刚性受体;--config 5x72_receptor.box.txt:从配置文件读取center_*/size_*,避免在命令行重复书写;--exhaustiveness=32:控制全局搜索的计算量(默认值为8)。5x72 这类双配体体系坐标空间更大、更易陷入局部最优,32能给出更稳定的结果;--out 5x72_ligand_vina_out.pdbqt:多配体对接时同样必须显式指定。
提示:也可以改用 Vinardo 力场,只需追加
--scoring vinardo选项。Vinardo 与 Vina 一样无需预计算 map,Vina 会在内部处理。
运行完成后,Vina 会写出包含全部构象(binding mode)的 PDBQT 文件:本教程中为5x72_ligand_vina_out.pdbqt(使用 Vina 力场)与5x72_ligand_ad4_out.pdbqt(使用 AutoDock4 力场)。
5. 结果解读
警告:AutoDock4 与 Vina 两种力场给出的能量分数不可相互比较,请只在同一力场内部比较构象优劣。
5.a AutoDock4 力场结果
使用 AutoDock4 打分函数时,与晶体构象接近的 pose 的预测结合自由能应接近-18 kcal/mol。需要注意:使用 AD4 打分时,前两组 pose(top 2)都要检查,才能看到与晶体构象的良好重叠。
Scoring function : ad4 Ligands: - 5x72_ligand_p59.pdbqt - 5x72_ligand_p69.pdbqt Exhaustiveness: 32 CPU: 0 Verbosity: 1 Reading AD4.2 maps ... done. Performing docking (random seed: -1370364650) ... 0% 10 20 30 40 50 60 70 80 90 100% |----|----|----|----|----|----|----|----|----|----| *************************************************** mode | affinity | dist from best mode | (kcal/mol) | rmsd l.b.| rmsd u.b. -----+------------+----------+---------- 1 -17.67 0 0 2 -17.61 1.124 3.731 3 -17.45 1.837 3.718 4 -17.41 1.981 9.343 5 -17.17 1.242 3.802 6 -17.17 1.436 9.123 7 -17.11 1.478 5.26 8 -17.1 1.62 8.954 9 -17 1.669 9.66仓库中的 5x72_ligand_ad4_out.pdbqt 即该运行的完整输出:文件内共 9 个MODEL,且第 1 个模型的REMARK VINA RESULT: -17.674 0.000 0.000与上面表格中的 mode 1 能量(-17.67 kcal/mol)一致,可作为结果复现的对照基准。
5.b Vina 力场结果
使用 Vina 力场时,最佳分数约为-19 kcal/mol;与 AD4 不同,Vina 打分下最佳 pose(top 1)就与其中一个异构体的晶体坐标表现出优秀重叠。
Scoring function : vina Rigid receptor: 5x72_receptor.pdbqt Ligands: - 5x72_ligand_p59.pdbqt - 5x72_ligand_p69.pdbqt Grid center: X -15 Y 15 Z 129 Grid size : X 30 Y 24 Z 24 Grid space : 0.375 Exhaustiveness: 32 CPU: 0 Verbosity: 1 Computing Vina grid ... done. Performing docking (random seed: -1632509975) ... 0% 10 20 30 40 50 60 70 80 90 100% |----|----|----|----|----|----|----|----|----|----| *************************************************** mode | affinity | dist from best mode | (kcal/mol) | rmsd l.b.| rmsd u.b. -----+------------+----------+---------- 1 -19.04 0 0 2 -18.33 1.22 3.81 3 -17.27 1.247 3.007 4 -17.22 1.432 3.286 5 -16.45 1.099 3.717 6 -16.35 1.7 4.839 7 -16.24 1.335 5.195 8 -16 2.332 9.449 9 -15.29 7.079 13.5仓库中的 5x72_ligand_vina_out.pdbqt 含 7 个MODEL,首模型的REMARK VINA RESULT: -19.040 ...同样与上表 mode 1 对应。注意rmsd l.b. / rmsd u.b.列是相对于最佳 mode的 RMSD,用于衡量各 pose 之间的差异,而不是与晶体结构的 RMSD——判断构象重现质量时,应额外用 PyMOL 等工具将输出 pose 与晶体配体叠加比较。
从源码理解多配体对接的实现
多配体对接并非简单的多次单配体对接,其实现集中在入口 src/main/main.cpp 与 Vina 核心类 src/lib/vina.cpp:
- 命令行解析:
--ligand声明为value<std::vector<std::string>>(...)->multitoken()(main.cpp L182),因此--ligand a.pdbqt b.pdbqt会被解析成一个配体文件列表;--batch是另一套互斥参数(二者同时出现会报错)。 - 输出名强制校验:当配体数量大于 1 且未提供
--out时程序直接退出并提示必须定义输出名(main.cpp L350-L357),这是多配体模式最典型的约束。 - 配体装载:命令行通过
v.set_ligand_from_file(ligand_names)(main.cpp L419)把整个向量交给 Vina 对象;对应的向量重载在 vina.cpp L187-L194 中逐个读取文件内容后合并为一个多配体模型,接口声明见 vina.h L119-L120。 - 力场分流:
--scoring ad4时走v.load_maps(maps)加载预计算图;vina/vinardo时若未给--maps,则调用compute_vina_maps(...)内部生成网格(main.cpp L421-L437)。 - 搜索与输出:最终调用
global_search(exhaustiveness, num_modes, min_rmsd, max_evals)完成全局搜索,并用write_poses(out_name, num_modes, energy_range)写出多个 mode(main.cpp L455-L457)。其中num_modes默认 9、energy_range默认 3.0 kcal/mol、min_rmsd默认 1.0 Å、网格间距spacing默认 0.375 Å——这些默认值解释了上面终端输出中"mode 1~9、能量跨度约 3 kcal/mol"的呈现方式。
实操要点小结
- 配体数量:
--ligand后可跟任意多个 PDBQT 文件,它们被同时优化;多配体模式必须显式--out; - 力场选择:
ad4需要autogrid4预先生成 map;vina/vinardo无需预计算,Vina 内部完成; - 搜索盒一致性:Vina 力场下配置文件的
center_*/size_*应与受体准备时的--box_center/--box_size保持一致(5x72 案例为 center (-15, 15, 129)、size (30, 24, 24)),否则对接盒会偏离真实结合位点; - exhaustiveness:默认 8,多配体体系建议提升到 32 以获得更稳健的全局搜索结果;
- 打分不可跨力场比较:AD4 与 Vina/Vinardo 的能量体系不同,对比构象时须在同一力场内进行;
- 结果验证:可将输出 PDBQT 与晶体配体坐标叠加,关注 top 1(Vina)或 top 2(AD4)pose 与晶体构象的重叠度,而非仅看能量数字。
- 生物信息学
- 科学计算
- 科研
【免费下载链接】AutoDock-Vina
AutoDock Vina
相关推荐
AutoDock-Vina多配体同时对接的技术要点解析
AutoDock Vina多配体同时对接的技术要点解析 AutoDock Vina作为一款广泛使用的分子对接软件,在药物发现和分子相互作用研究中发挥着重要作用。
生物信息学科学计算科研AutoDock-Vina中顺序对接多个配体的技术指南
AutoDock Vina中顺序对接多个配体的技术指南 概述 在分子对接研究中,有时需要将多个配体依次对接至同一个蛋白口袋中。AutoDock Vina作为广泛
生物信息学科学计算科研AutoDock-Vina中多配体顺序对接的技术实现
AutoDock Vina中多配体顺序对接的技术实现 在分子对接研究中,有时需要处理多个配体分子与受体的相互作用。本文针对AutoDock Vina项目中多配体
生物信息学科学计算科研
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考