基本命令行使用: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:搜索彻底程度。数值越高,结果越稳定,但耗时也越长
核心参数详解
参数很多,但真正关键的没几个。我按重要性排序,帮你快速抓住重点。
1. exhaustiveness —— 复现性的命门
这个参数控制的是全局搜索的彻底程度。数值越大,Vina会花更多时间去探索不同的构象空间。
我在项目中遇到过这样的情况:同一个配体,exhaustiveness=8时每次跑出的结果都不同;但增大到32之后,结果就稳定了。为什么?因为搜索次数多了,更容易找到全局最优解。
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降到16,同时适当减少num_modes。但无论如何,seed不能忘。
好了,有了这些基础,你已经可以顺利跑通一次Vina对接了。掌握了标准调用方式和关键参数,剩下的就是根据你的研究体系去调整具体数值。记住固定seed、理解exhaustiveness的作用——这是提升复现性的第一步。