AutoDock Vina搜索范围参数设置技巧 - 第1节

1.1 软件背景:它是怎么来的

AutoDock Vina,说白了就是做分子对接的。你给一个蛋白质受体,再给一个小分子配体,它帮你算两者能不能结合、结合得紧不紧。

我最早接触这软件是2012年,那时候还在折腾AutoDock 4。后来发现Vina算得更快,精度也不差,果断切换了。到现在十多年,项目里80%的对接任务我都用Vina搞定。

它的前身是Scripps研究所开发的AutoDock系列。Vina是第二代,由Oleg Trott博士在2010年发布。核心算法用了迭代局部搜索+经验打分函数,比AutoDock 4的遗传算法快不少。

为什么用Vina?因为免费、开源、跨平台。Linux、Windows、macOS都能跑。命令行一把梭,脚本批量处理特别方便。

特性AutoDock 4AutoDock Vina
算法拉马克遗传算法迭代局部搜索
速度慢(单次对接数分钟)快(单次对接数十秒到数分钟)
打分函数半经验力场经验打分函数
操作系统Windows/Linux/macOS全平台+命令行
并行单核多核(OpenMP)

我个人习惯:新手用Vina入门,后期搞定制化对接才去碰AutoDock 4。Vina的参数调起来更直观。

1.2 应用场景:谁在用,用来干啥

Vina的应用场景很广。我简单梳理几个我碰过的实际项目——

  • 药物虚拟筛选:从几十万个化合物里先筛出可能结合的先导分子。我做过一个激酶靶点筛选,跑了20万个小分子,Vina用了三天搞定。
  • 蛋白-配体结合模式分析:已知某个药物有效,但不知道它怎么跟靶点结合。用Vina对接一下,看pose和关键氨基酸。
  • 突变体对接:靶点蛋白出现点突变,药效变差了?把突变蛋白建模,再对接原配体,看看结合能变化。
  • 逆向对接:想找一个已知药物的新靶点,把药物分子对接到多个蛋白上,找结合能低的。
  • 化合物优化:已有骨架,换几个取代基,Vina算结合能,挑最优的合成。

你想想看,做药物设计的,做生物信息学的,甚至做材料模拟的,都能用上它。

核心价值:Vina解决的是“算得快+够准”这两件事。大筛选用它,精度要求高再用更贵的工具(如Glide、GOLD)验证。

1.3 基本流程:从拿到结构到出结果

Vina的基本流程不复杂。一共六个步骤,我当年踩过不少坑,这次一并说清楚。

1.3.1 准备受体文件

你需要一个蛋白质结构,通常从PDB数据库下载。但Vina要求PDBQT格式,不是原始PDB。

# 用ADT或OpenBabel准备受体
# 去掉水分子、添加氢、计算电荷、合并非极性氢
# 输出:receptor.pdbqt

避坑:我曾经直接用PDB文件跑Vina……结果报错“unrecognized atom type”。后来发现必须转成PDBQT,氢原子和原子类型都得对。

1.3.2 准备配体文件

配体分子通常来自ZINC、ChEMBL或者自己画的SDF。同样要转成PDBQT。

# 用OpenBabel转换
obabel ligand.sdf -O ligand.pdbqt --gen3d

注意:配体要加氢、分配电荷,并且设置可旋转键。Vina会在对接时自动处理柔性键。

1.3.3 定义搜索范围

这是本课程的核心——设置盒子。Vina只在这个盒子里搜索配体的位置和构象。盒子设偏了,结果全废。

# 配置文件config.txt示例
receptor = receptor.pdbqt
ligand = ligand.pdbqt
center_x = 15.0
center_y = 20.0
center_z = -5.0
size_x = 20
size_y = 20
size_z = 20
exhaustiveness = 8
num_modes = 9

注意:中心坐标和盒子大小必须覆盖整个结合位点。如果只框住一半,算出来的最低能量构象很可能是错的。我见过一个同学把盒子顶在蛋白外面,对接结果依然有分数,但毫无意义。

1.3.4 运行对接

准备好所有文件,执行命令。

vina --config config.txt --log log.txt

Vina会自动启动多线程计算。你可以在log里看到进度。

1.3.5 分析结果

输出文件是output.pdbqt,包含多个构象(mode)。每个mode都有一个估计的自由能变(Affinity kcal/mol)。

通常选亲和力最低的那个作为最佳pose。但别只看分数,还得结合结合模式、氢键、疏水作用等综合评价。

我的做法:会用PyMOL或Discovery Studio可视化,看看配体是否真的嵌入到结合位点里。分数低但位姿离谱的,多半是盒子没框对。

1.3.6 批量处理

做虚拟筛选时,配体可能有几千上万个。写个shell脚本循环跑就行。

for lig in ligands/*.pdbqt; do
  vina --receptor receptor.pdbqt --ligand $lig \
       --center_x 15 --center_y 20 --center_z -5 \
       --size_x 20 --size_y 20 --size_z 20 \
       --exhaustiveness 8 --out results/$(basename $lig)
done

1.4 知识体系:一张图看懂

下面这张SVG图概括了本章的核心:Vina从背景到流程的完整脉络。你记住这张图,后续章节就会围绕搜索范围这个关键点展开。

AutoDock Vina知识体系总览 AutoDock Vina 知识体系总览(第1章) 软件背景 Scripps研究所 · 开源免费 应用场景 虚拟筛选 · 结合模式分析 · 突变对接 基本流程 6步标准流程 ① 受体准备 ② 配体准备 ③ 定义搜索范围 ★ ④ 运行对接 ⑤ 结果分析 ⑥ 批量处理 药物虚拟筛选 结合模式分析 突变体对接 逆向对接 化合物优化 Attention 本课程核心: 搜索范围参数设置技巧

本章重点:Vina整体流程中,搜索范围的设置(第三步)直接决定对接成败。后续29章都会围绕如何正确设定这个盒子展开。你先把这张图印在脑子里,后面的内容会反复用到。