3、环境搭建:Linux环境、分子对接软件安装
环境搭建这件事,说白了就是给你的计算打地基。地基没打好,后面跑高通量对接就是给自己挖坑。我刚开始做高通量筛选时,在CentOS上折腾了三天才装好Vina,后来换成Ubuntu 20.04,一个小时搞定。你看,选择比努力重要。
这一节我把环境分成两层来讲:底层系统准备和上层软件安装。系统层我们主要说Linux发行版选择、CUDA/cuDNN(如果你用GPU加速)和Python环境。软件层重点讲AutoDock Vina和Schrödinger的安装,顺便提一句其他常用工具。
3.1 Linux 发行版怎么选
我个人习惯用 Ubuntu 20.04 LTS 或 Ubuntu 22.04 LTS。原因?社区活跃,apt 源全,glibc 版本够新。我在项目中遇到过 CentOS 7 上编译 Vina 时因为 gcc 版本太低(只有 4.8.5)导致 C++11 特性报错,后来换了 Ubuntu 就再也没出过这种幺蛾子。
如果你的服务器是公司统一部署的 RHEL/CentOS,那就用 CentOS 8 或 Rocky Linux 8。记住一点:glibc 版本至少 >= 2.17,gcc >= 8.0。
| 发行版 | 推荐版本 | 适用场景 | 踩坑指数 |
|---|---|---|---|
| Ubuntu | 20.04 / 22.04 LTS | 个人工作站、GPU服务器 | 低 |
| Debian | 11 / 12 | 需要极致稳定 | 中(默认gcc较老) |
| CentOS / Rocky Linux | 8 / 9 | 企业集群、HPC | 中高(依赖epel源) |
sudo apt update && sudo apt upgrade -y 把包刷新。然后装基础编译工具:build-essential, cmake, git, wget。这步省了后面肯定后悔。
3.2 Python 环境与科学计算包
高通量对接要用 Python 做批处理脚本。我建议用 Miniconda 管理 Python 环境,避免和系统 Python 打架。为什么?因为你的同事可能也需要一个独立的对接环境,conda 起一个虚拟环境就好。
# 安装 Miniconda(Linux x86_64)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
export PATH="$HOME/miniconda3/bin:$PATH"
# 创建对接专用环境
conda create -n docking python=3.9 -y
conda activate docking
# 安装常用科学计算包
conda install numpy pandas scipy matplotlib openbabel rdkit -y
pip install meeko vina # meeko用于配体准备
这里有个点要注意:OpenBabel 和 RDKit 在格式转换上各有优劣。我一般用 OpenBabel 做小分子格式互转(比如 SDF → PDBQT),用 RDKit 处理分子指纹和过滤。两个都装上,不冲突。
3.3 AutoDock Vina 安装——源码编译 vs Conda
Vina 的安装分两条路:直接拿官方编译好的二进制,或者自己从源码编译。对大部分人来说,用 conda 装更方便,但如果你需要 OpenMP 多线程加速,就得源码编译。
方式一:conda 一键安装
conda activate docking
conda install -c conda-forge autodock-vina -y
# 验证安装
vina --version
# 输出类似:AutoDock Vina 1.2.3
简单吧?但 conda 版默认是串行计算,跑高通量时比较慢。我记得有一次做10万个小分子虚拟筛选,串行跑了三天……后来改成源码编译开启 OpenMP,时间直接砍到12小时。
方式二:源码编译(推荐用这个)
# 克隆源码
git clone https://github.com/ccsb-scripps/AutoDock-Vina.git
cd AutoDock-Vina
# 编译(需要 cmake >= 3.14, gcc >= 8.0)
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=ON
make -j$(nproc)
# 编译好的可执行文件在 build/bin/ 下
# 复制到系统路径
sudo cp build/bin/vina /usr/local/bin/
sudo cp build/bin/vina_split /usr/local/bin/
编译时我踩过一个坑:系统 gcc 版本太老,导致 OpenMP 支持不全。那时我临时用 conda install gxx_linux-64 装了个新 gcc 来用。
· 如果你用 conda 装 Vina,记得运行前设置
OMP_NUM_THREADS=1——conda 版的 OpenMP 可能有问题,多线程反而更慢。· 我曾经在装了 intel oneAPI 的系统上编译,cmake 会优先调 icpc,结果链接出错。解决办法:显式指定
CC=gcc CXX=g++ cmake ..
3.4 Schrödinger 的安装——企业版与学术版
Schrödinger 的安装比 Vina 麻烦不少。首先你得有授权:商业版需要购买,学术版可以申请免费的“for teaching”许可。我当年读博时申请了一份学术版,有效期一年,够用。
安装步骤大致如下:
- 下载 SCHRODINGER_2024-1_Linux-x86_64.tar.bz2(版本号按实际来)
- 解压到目标目录,我习惯放在
/opt/schrodinger/ - 运行安装脚本
- 配置环境变量
- 激活许可(在线或离线文件)
# 解压(注意:文件可能有多个分卷)
cat SCHRODINGER_2024-1_Linux-x86_64.tar.bz2.* | tar -xj
mv schrodinger2024-1 /opt/schrodinger/
# 运行一次性安装脚本(会安装一些系统依赖)
cd /opt/schrodinger
./install.sh
# 添加环境变量(写入 ~/.bashrc)
export SCHRODINGER=/opt/schrodinger
export PATH=$SCHRODINGER:$SCHRODINGER/utilities:$PATH
# 安装许可
# 如果是在线激活:运行 schrodinger_license 工具
# 如果是离线文件:把 license.lic 放在 $SCHRODINGER/license/ 下
# 验证安装
ligprep -version
glide -version
# 出现版本号即成功
安装 Schrödinger 时最常出的问题是缺少 libXt 和 libXext。如果你在无图形界面的服务器上安装,还要装 libx11-dev libxt-dev 等 X11 库,因为 Schrödinger 的GUI组件在安装时会有依赖检查。我在一台 headless 服务器上装过,又加了一堆虚拟包才过。
glide -h 能正常显示帮助。如果你用 “SP” 模式进行初步筛选,记得测试能不能读出受体和配体文件。
3.5 其他常用对接工具的快速安装
除了 Vina 和 Schrödinger,你可能还会用到 smina、ADFR、LeDock。它们各有特长:smina 对 Vina 的评分函数做了改进,ADFR 用于 Autodock4 力场,LeDock 速度快但需要商业许可。我用 smina 做批量重打分比较多。
# smina 可以直接下载二进制
wget https://sourceforge.net/projects/smina/files/smina.static
chmod +x smina.static
sudo mv smina.static /usr/local/bin/smina
# 验证
smina --version
对于 ADFR,我建议用 conda 装:conda install -c bioconda adfr。但要注意 bioconda 需要先配置 conda-forge 通道。
3.6 安装验证清单——环境是否就绪?
装完所有软件后,别急着跑对接。先跑一个简洁的验证脚本,确保每个工具都能正常调用,而且并行性能符合预期。我习惯做下面几步:
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| Python 环境 | python -c "import numpy; print(numpy.__version__)" | 输出版本号,无报错 |
| OpenBabel | obabel -:CCO -opdbqt | 生成 PDBQT 格式的乙醇 |
| Vina 二进制 | vina --help | 显示帮助信息 |
| Vina 多线程 | vina --cpu 4 --version | 不报错,正确显示 |
| Schrödinger Glide | glide -h 2>&1 | head -5 | 显示 Glide 版本和用法 |
check_env.sh 脚本,把这些检查项串起来。每次换机器、换用户、或者重新装环境,跑一遍就知道哪里有问题。别问我为什么知道……我曾经在新集群上跑了一周对接,结果发现 glibc 版本不兼容,所有结果都是 NaN,血泪教训。
3.7 小结几句话
环境搭建的核心就是版本匹配和依赖完整。Linux 选 Ubuntu 20.04 省心,Python 用 conda 隔离,Vina 编译加 OpenMP,Schrödinger 记得装 X11 库。把这些搞定了,后面高通量对接的自动化流程才能跑得顺畅。