第3节:Vina安装与命令行基础
这一节咱们来干点实在的——把Vina装到你的机器上,再跑通第一个对接命令。我个人习惯先把环境理清楚再动手,免得后面折腾半天发现路径不对、缺库、权限炸了。嗯,这活儿我至少帮五个师弟擦过屁股,所以今天我把坑都提前填上。
3.1 安装前的准备
Vina是个C++写的命令行工具,依赖不多,但有几个前提你得先检查。
| 项 | 最低要求 | 我遇到过的坑 |
|---|---|---|
| 操作系统 | Linux / macOS / Windows(WSL) | Windows原生cmd跑Vina会路径乱码 |
| CPU | x86_64,支持SSE2 | 老服务器上缺SSE4.2,编译慢死 |
| 内存 | ≥2GB | 大体系4GB以下直接OOM |
| 编译器 | GCC ≥4.8 或 Clang ≥3.4 | macOS用Clang没问题,别用老Xcode |
安装方式有两种:直接下预编译二进制,或者从源码编译。说白了,省心就下编译好的,想自己改参数就编译。
3.2 预编译二进制安装(推荐新手)
去官方GitHub Release页面下载对应系统的压缩包。解压后里面只有一个可执行文件 vina(或 vina.exe),放哪儿都行。我习惯把它丢进 ~/bin/ 或者 /usr/local/bin/。
# Linux 64位
wget https://github.com/ccsb-scripps/AutoDock-Vina/releases/download/v1.2.3/vina_1.2.3_linux_x86_64
chmod +x vina_1.2.3_linux_x86_64
sudo mv vina_1.2.3_linux_x86_64 /usr/local/bin/vina
# macOS (Intel)
wget https://github.com/ccsb-scripps/AutoDock-Vina/releases/download/v1.2.3/vina_1.2.3_mac_x86_64
chmod +x vina_1.2.3_mac_x86_64
sudo mv vina_1.2.3_mac_x86_64 /usr/local/bin/vina
# macOS (Apple Silicon) – 需要自己编译,或者用Rosetta跑Intel版
小经验:放进去之后执行 vina --version,看到版本号就说明路径对了。我曾经把文件丢进 /usr/bin/ 但权限没改,直接报“Permission denied”,后来加个 chmod +x 就搞定了。
3.3 从源码编译
你如果想自己调优化参数、加调试信息,或者用一些非官方分支的功能,那编译是必经之路。我不建议新人一上来就编译,但如果你跟我一样控制欲强,那就跟着来。
# 1. 克隆仓库
git clone https://github.com/ccsb-scripps/AutoDock-Vina.git
cd AutoDock-Vina
# 2. 进入build目录,用cmake配置
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
# 3. 编译(-j后面是并行线程数,别超过你CPU核数)
make -j4
# 4. 编译好的可执行文件在 build/bin/vina
echo "export PATH=$PATH:$(pwd)/bin" >> ~/.bashrc
source ~/.bashrc
编译过程中可能会报缺Boost库,尤其是老系统。我踩过一次RHEL 6的坑,系统自带Boost版本太低,cmake直接报错。解决办法就是用包管理器装新版本:
# Ubuntu/Debian
sudo apt install libboost-dev libboost-system-dev libboost-thread-dev
# CentOS/RHEL
sudo yum install boost-devel
注意:Vina 1.2.x 以后统一用了CMake,老版本的 configure 脚本已经废弃。你如果在网上搜到 ./configure && make,那是七八年前的旧教程,别照着做。
3.4 命令行快速入门
安装完毕,咱们先跑个最简单的例子。Vina的标准输入是三个文件:受体(receptor)、配体(ligand)和搜索空间(conf)。输出是一个或多个对接构象。
vina --receptor 1iep_receptor.pdbqt \
--ligand 1iep_ligand.pdbqt \
--out output.pdbqt \
--center_x 15.0 --center_y 20.0 --center_z 10.0 \
--size_x 20 --size_y 20 --size_z 20 \
--exhaustiveness 8
解释一下关键参数:
--receptor:受体PDBQT文件,必须先用ADT或prepare_receptor4.py转换好。--ligand:配体PDBQT文件,支持多构象(多个分子写在同一个文件里)。--center_x/y/z:搜索框中心坐标,单位埃。--size_x/y/z:搜索框尺寸。别设太小,容易漏掉结合位点。--exhaustiveness:搜索彻底度。默认8,越大越慢但越可能找到全局最优。我一般做筛选用8,精修用32。--out:输出文件名。格式自动识别后缀,.pdbqt 是标准,.sdf 或 .mol2 也支持。
核心思想:Vina只负责对接,不负责质量。你的PDBQT文件要是错的,对接结果再好看也没用。我见过有人拿着未加氢的受体直接跑,RMSD能低到0.3,但那是假的。记住:预处理比对接本身更花时间,也更重要。
3.5 常用参数调优选项
下表列出了我用得最多的几个参数,以及我个人的推荐范围。
| 参数 | 默认值 | 我的推荐 | 适用场景 |
|---|---|---|---|
| --exhaustiveness | 8 | 8~32 | 越大越准,但耗时线性增长 |
| --num_modes | 9 | 5~20 | 输出多少个构象 |
| --energy_range | 3.0 | 2.0~5.0 | 只保留多少kcal/mol以内的构象 |
| --seed | 随机 | 固定整数值 | 你想要可复现结果时用 |
| --cpu | 所有核心 | 4~8 | 服务器上别把CPU吃满,给其他任务留口饭 |
举个具体例子,我跑虚拟筛选时常用这组参数:
vina --receptor target.pdbqt \
--ligand library.pdbqt \
--out screened.pdbqt \
--center_x 10.5 --center_y -2.3 --center_z 5.0 \
--size_x 22 --size_y 22 --size_z 22 \
--exhaustiveness 16 \
--num_modes 5 \
--energy_range 4.0 \
--seed 42 \
--cpu 4
用固定seed可以确保多次跑同样的库得到完全相同的打分排序。这在写论文或者排查bug时特别有用。你想想看,如果不固定seed,每次结果都不一样,你怎么跟审稿人解释?
3.6 输出文件解读
Vina输出的PDBQT文件里会包含多个模型(MODEL ... ENDMDL)。每个模型的分值写在REMARK行里:
REMARK VINA RESULT: -9.5 0.000 0.000
MODEL 1
ATOM 1 N4 UNL 1 -12.345 6.789 1.234 1.00 0.00 N LIG
...
ENDMDL
第一列 -9.5 是打分(kcal/mol),越负越好。第二、三列是RMSD相对于第一个构象的偏移量,通常0就代表是第一个构象本身。我习惯用Python脚本把打分和构象提取出来做后续分析,后面章节会详细讲。
3.7 Linux环境下的一个小坑——路径带空格
我曾经帮一个同事调试,他的受体文件叫“my receptor.pdbqt”,里面有个空格。Vina直接把它当成两个参数,结果报“找不到文件 my”。解决办法很简单:用引号包起来,或者用反斜杠转义。
# 错误
vina --receptor my receptor.pdbqt
# 正确
vina --receptor "my receptor.pdbqt"
# 或者
vina --receptor my\ receptor.pdbqt
另外,如果你在Windows上用WSL,路径要用Linux风格,比如 /mnt/c/Users/xxx/...,别用 C:\ 那样的格式。
3.8 快速测试:跑一个内置样例
Vina源码包里自带了一个测试用例,你编译完或者下完二进制后可以直接试:
# 进入源码目录下的 test/example
cd test/example
# 运行(假设vina已在PATH里)
vina --receptor 1iep_receptor.pdbqt \
--ligand 1iep_ligand.pdbqt \
--out example_out.pdbqt \
--center_x 15.0 --center_y 20.0 --center_z 10.0 \
--size_x 20 --size_y 20 --size_z 20 \
--exhaustiveness 8 --num_modes 9
正常情况下几分钟就能跑完,终端会打印出每个构象的打分和RMSD。你打开 example_out.pdbqt 看看,里面应该有9个MODEL。
检查是否安装成功:你可以在终端输入 which vina,如果返回了路径就说明安装没问题。另外 vina --help 可以列出所有参数,我初期记不住选项时全靠它。
3.9 本章知识结构图
下面这张图概括了从安装到跑通测试的完整流程,以及命令行参数的核心关系。