基本命令行使用:Vina的标准调用方式与常用参数概览

命令行——说白了,这是我们和Vina沟通的唯一语言。我记得刚开始用Vina的时候,也是对着黑乎乎的终端发愣。但别担心,掌握了基本调用方式,你会发现这事儿并不复杂。

本章我们聚焦最核心的东西:如何正确敲出第一条vina命令。我会把常用参数掰开揉碎了讲,顺便分享一些我在项目中踩过的坑。

标准调用方式

Vina的基本调用格式非常直接。你只需要告诉它受体、配体、搜索空间和输出位置。来看一个最典型的例子:

vina --receptor receptor.pdbqt \
     --ligand ligand.pdbqt \
     --out output.pdbqt \
     --center_x 20.0 \
     --center_y 15.0 \
     --center_z 10.0 \
     --size_x 25 \
     --size_y 25 \
     --size_z 25 \
     --exhaustiveness 8

这条命令做了什么?

  • --receptor:指定受体文件。必须是pdbqt格式,我之前遇到过有人拿原始pdb直接跑,结果报错半天
  • --ligand:配体文件。同样需要pdbqt格式
  • --out:输出文件。保存对接结果
  • --center_x/y/z:搜索盒的中心坐标。这个值怎么定?从受体pdbqt文件里读,或者用AutoDock Tools的Grid选项查看
  • --size_x/y/z:搜索盒的尺寸。单位是埃,通常覆盖整个结合位点就行
  • --exhaustiveness:搜索彻底程度。数值越高,结果越稳定,但耗时也越长
我的习惯:在初跑一个新体系时,我会先用exhaustiveness=8快速确认搜索盒是否正确。等参数调好了,再加大exhaustiveness做最终计算。

核心参数详解

参数很多,但真正关键的没几个。我按重要性排序,帮你快速抓住重点。

1. exhaustiveness —— 复现性的命门

这个参数控制的是全局搜索的彻底程度。数值越大,Vina会花更多时间去探索不同的构象空间。

我在项目中遇到过这样的情况:同一个配体,exhaustiveness=8时每次跑出的结果都不同;但增大到32之后,结果就稳定了。为什么?因为搜索次数多了,更容易找到全局最优解。

避坑指南:我曾经天真地以为exhaustiveness越大越好。其实不然,超过64后提升效果就不明显了,反而白白浪费时间。建议从8开始,逐步增加到32或64。

2. num_modes —— 输出几个结果

这个参数控制输出多少个不同的结合模式。默认是9个,但我建议你根据实际需求调整。

vina --receptor receptor.pdbqt \
     --ligand ligand.pdbqt \
     --out output.pdbqt \
     --center_x 20.0 \
     --center_y 15.0 \
     --center_z 10.0 \
     --size_x 25 \
     --size_y 25 \
     --size_z 25 \
     --exhaustiveness 16 \
     --num_modes 5

为什么会这样?因为输出太多模式,大多数模式的打分都差不多,没有实际意义。我个人习惯控制在5-10个模式。

3. seed —— 随机数种子

这是提升复现性的杀手锏。Vina的搜索过程依赖随机数。如果不指定种子,每次运行的随机路径都不同,结果自然会波动。

vina --receptor receptor.pdbqt \
     --ligand ligand.pdbqt \
     --out output.pdbqt \
     --center_x 20.0 \
     --center_y 15.0 \
     --center_z 10.0 \
     --size_x 25 \
     --size_y 25 \
     --size_z 25 \
     --exhaustiveness 16 \
     --seed 12345

指定--seed后,只要你保持其他参数不变,每次跑的结果将完全一致。嗯,这里要注意:种子可以选任何整数,但别每次都用同一个——否则就失去采样的多样性了。

输出结果与解读

Vina运行完成后,会在屏幕上打印一些信息。我挑关键的说:

mode |   affinity | dist from best mode
     | (kcal/mol) | rmsd l.b.| rmsd u.b.
-----+------------+----------+----------
   1 |   -7.8     |   0.000  |   0.000
   2 |   -7.5     |   2.345  |   3.678
   3 |   -7.2     |   4.123  |   5.456
  • mode:模式编号。1是打分最高的模式
  • affinity:结合自由能。单位kcal/mol,负值越大代表结合越强
  • rmsd l.b./u.b.:与最佳模式的几何偏差。l.b.是低边界,u.b.是高边界

我见过有人只看affinity就下结论。其实rmsd也很关键——如果两个模式的affinity接近,但rmsd很大,说明它们占据了完全不同的结合空间,这种情况值得深入研究。

参数 作用 推荐值
exhaustiveness 控制搜索彻底程度,影响结果稳定性 8-64
num_modes 输出结构模式数量 5-10
seed 随机数种子,保证结果可复现 任意整数
energy_range 输出模式的最大能量差 3.0 (默认)
cpu 使用的CPU线程数 自动检测

标准化配置:我的推荐方案

根据我多年的使用经验,一套可复用的标准化配置长这样:

vina --receptor receptor.pdbqt \
     --ligand ligand.pdbqt \
     --out output.pdbqt \
     --center_x 20.0 \
     --center_y 15.0 \
     --center_z 10.0 \
     --size_x 25 \
     --size_y 25 \
     --size_z 25 \
     --exhaustiveness 32 \
     --num_modes 9 \
     --energy_range 3.0 \
     --seed 2024
核心思想:通过固定seed和增大exhaustiveness,将随机性降到最低。这就是复现性的基础。

你想想看,如果每次跑结果都不一样,你拿什么发文章?别人又怎么验证你的结论?所以,seed这个参数,我强烈建议你养成习惯加上去。

当然,有时候我也会根据项目需求调整。比如做虚拟筛选时,计算量很大,我就会把exhaustiveness降到16,同时适当减少num_modes。但无论如何,seed不能忘。

Vina命令行调用流程 --receptor (受体) --ligand (配体) 搜索盒 (center/size) --seed --exhaustiveness Vina 对接计算 --out (pdbqt) 日志 (affinity/RMSD) 强调seed和exhaustiveness:一次设定,终身可复现

好了,有了这些基础,你已经可以顺利跑通一次Vina对接了。掌握了标准调用方式和关键参数,剩下的就是根据你的研究体系去调整具体数值。记住固定seed、理解exhaustiveness的作用——这是提升复现性的第一步。