第1章:AutoDock Vina 简介——分子对接界的老黄牛
分子对接这事儿,在计算机辅助药物设计里算是个基本功。你想想看,一个候选化合物跟靶点蛋白能不能结合、怎么结合、结合得紧不紧,都得靠它来告诉咱们。在众多对接工具里,AutoDock Vina 可以说是“老少皆宜”的明星——学术界爱它开源免费,工业界爱它又快又稳。
我个人习惯把这玩意儿比喻成“老黄牛”。为什么?因为它不花哨、不出奇,但肯干活、不出错。当年我还在做虚拟筛选项目时,Vina 帮了我大忙——几百个化合物丢进去,一晚上出结果,第二天早上就能看对接模式。嗯,这种体验,我相信很多做计算的朋友都懂。
1.1 Vina 在分子对接中的地位
说白了,分子对接这个领域就像个小江湖。AutoDock 4 是老前辈,上了年纪但德高望重;Gold 和 Glide 是商业大少爷,功能全但收费贵;而我们今天聊的 Vina,就是那个“用最少的资源干最多的活”的技术宅。
为什么说它地位独特?我总结了三个“扛得住的理由”:
- 开源免费,门槛极低——不管你是高校课题组还是创业团队,都能随便用。没有 license 限制,没有点数限制。
- 计算效率高——相比 AutoDock 4,速度提升了一个数量级。我当年用单核跑 AutoDock 4,一个配体平均要 5 分钟;换成 Vina,同样机器 30 秒左右就搞定了。
- 社区活跃,工具生态成熟——从 ADT 到 PyRx,再到各种 Python 封装脚本,Vina 的上下游工具链非常完整。
如果你现在才开始接触分子对接,我个人建议直接从 Vina 入手。不是因为我偏爱它,而是因为它让你花最少的时间看到结果,帮你快速建立对接-打分-排序的直觉。
1.2 Vina 的主要特点
Vina 到底有什么特别?我来拆开讲几点。这里我避过坑,所以在某些地方会说得比较直白。
1.2.1 搜索算法——蒙特卡洛 + 局部优化
Vina 用的不是传统的遗传算法,而是自己搞了一套基于随机的全局搜索,再配合 Broyden-Fletcher-Goldfarb-Shanno(BFGS)局部优化。你想想看,全局粗找 + 局部细修,这套组合拳打下来,很容易找到能量最低点。
我曾经对比过 Vina 和 AutoDock 4 对同一个体系的对接结果——AutoDock 4 给出的结合模式经常是多个簇(clusters),而 Vina 给出的模式比较集中,后处理起来舒服很多。
1.2.2 打分函数——经验式 + 半经验式
Vina 的打分函数其实是经验式和半经验式的混合体,包含立体互补性、疏水作用、氢键、旋转键熵损失等项。具体公式我不在这边展开(后面的章节会详讲),但你只需要知道一点:Vina 的打分只为了排序,不是为了预测绝对结合自由能。
1.2.3 输入输出格式——简洁到令人泪目
输入是 PDBQT,输出也是 PDBQT。你只有配体 + 受体 + 盒子参数三个文件就能跑。不像某些商业软件,配置半天还没开始算。
| 特性 | 说明 |
|---|---|
| 输入格式 | PDBQT(受体 + 配体) |
| 盒子定义 | 中心坐标 + 三个方向尺寸(单位:Å) |
| 输出格式 | PDBQT 包含多个构象 + 打分 |
| 运行参数 | JSON 或纯命令行参数 |
| 并行支持 | OpenMP 多核并行 |
一个小技巧:你用 Vina 跑完一次后,输出的 PDBQT 文件里每个模型的打分就是排序依据。别去纠结“这个分数是-8.5能不能结合”,你应该在意的是“A化合物-8.5,B化合物-6.2,哪个大概率更优”。
1.3 Vina 与传统 AutoDock 4 的区别
很多朋友在学分子对接时,首先碰到的是 AutoDock 4,然后才是 Vina。这里我做个快速对比,省得你来回切换时摸不着头脑。
1.3.1 算法层面的差异
AutoDock 4 用拉马克遗传算法(LGA),说白了就是仿生进化那套——变异、交叉、选择。Vina 不讲那套,它用随机扰动 + 局部优化,迭代次数少得多。
我曾经在硕士阶段做课题时,用 AutoDock 4 跑一个包含 2000 个天然产物的小库,跑了一个周末还没出来,气得我直接换 Vina 重跑——3 小时全出,关键对接模式几乎一模一样。嗯,那次之后,我就成了 Vina 的铁粉。
1.3.2 速度上的差距
速度提升是顾名思义的巨大差距。我列个数据,你自己看:
| 指标 | AutoDock 4 | AutoDock Vina |
|---|---|---|
| 平均单配体对接时间 | 3-8 分钟 | 20-60 秒 |
| 并行方式 | 单核 | OpenMP 多核 |
| 大库虚拟筛选 | 基本不现实 | 万级化合物可接受 |
| 搜索算法 | 拉马克遗传算法 | 蒙特卡洛 + BFGS |
| 打分函数形式 | 力场 + 经验校正 | 经验 / 半经验混合 |
| 打分值参考 | 结合自由能(kcal/mol) | 打分值(越负越好) |
注意:千万不要把一个 Vina 的 -9.0 和一个 AutoDock 4 的 -9.0 直接拿来比大小。它们打分函数的标度不同,量纲也不同。我曾经见过有新手在论文里直接混用两个软件的打分,被审稿人怼得体无完肤。
1.3.3 易用性对比
AutoDock 4 需要你装 AutoDockTools(ADT),手动加氢、设盒子、调参数。Vina 虽然也需要 PDBQT 准备,但可以用 mk_prepare_ligand.py 或者 prepare_receptor4.py 脚本批量处理,或者干脆用 PyRx 这种 GUI 工具拖进去就跑。
我记得第一次用 Vina 时,配体从一个 sdf 文件转换成 pdbqt,一行命令搞定,当时就觉得“这才是现代软件该有的样子”。
1.3.4 输出信息的差异
AutoDock 4 输出的是 dlp 文件,包含非常详细的网格打分图,但解析起来麻烦。Vina 直接给出每个模式的打分和坐标,非常直白。
# Vina 输出示例(PDBQT 头部打分行)
REMARK VINA RESULT: -9.1 0.000 0.000
REMARK VINA RESULT: -8.7 0.500 0.600
REMARK VINA RESULT: -8.3 1.200 1.100
上面这三行,第一列是打分,第二列是RMSD下限值,第三列是RMSD上限值。我刚开始用的时候搞不清RMSD的两列怎么用,后来才知道那是用来聚类去重的——打分支和RMSD值配合着看,能快速判断多样性。
1.4 Vina 的适用场景与局限性
最后,我想诚恳地说两句 Vina 的适用范围和它的“小脾气”。
- 虚拟筛选首选——万级到十万级化合物库,Vina 是速度与精度的极佳平衡点。
- 不适合高精度自由能预测——别指望 Vina 给出和实验值完全一致的结合自由能。它的本事在于排序,而不是预测。
- 对柔性较强的配体——Vina 对高度柔性的大分子配体(比如环肽)表现一般,因为它对内部旋转键的处理相对简化。
- 千万别忘了盒子大小——盒子设太大则没有分辨率,设太小则配体可能找不到结合位点。我吃过一次亏——盒子设得太偏,结果一个已知活性化合物全是高分但结合模式全错,折腾了一星期才反应过来是盒子没对好。
总体上说,Vina 在学术界和工业界都站稳了脚跟,尤其在先导化合物发现阶段作用很大。如果你刚开始做分子对接,从 Vina 起步,未来的进阶之路会顺畅很多。