第三章 基础工具安装与环境配置

做AI药物发现,第一步不是写模型,是把工具链搭稳。相信我,这一步省事,后面全是坑。

我们这个管线涉及四个核心工具:RDKit(化学信息学)、OpenBabel(格式转换)、PyTorch/TensorFlow(深度学习框架)、DGL(图神经网络库)。你想想看,每个工具都有自己的依赖、版本号、甚至奇葩的隐形冲突。我见过不少团队在安装上耗一周,最后发现是conda和pip混用导致的。

3.1 环境管理:Conda还是Docker?

我先说结论:个人开发用Conda,团队部署用Docker。我自己习惯用Miniconda,不装Anaconda全家桶,省空间、省心。

小提示:装Miniconda后,记得配国内镜像源。尤其是RDKit的conda包,直接从官方源下载慢得让人想砸电脑。

先装Conda环境:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes

3.2 RDKit:化学信息学的心脏

RDKit在药物发现圈的地位,相当于PyTorch在深度学习圈。分子读取、指纹计算、子结构匹配、化学反应处理……几乎啥都能干。

我个人建议用conda安装RDKit,因为pip版本经常缺编译好的二进制包。我第一次用pip装RDKit,结果等了半小时编译,最后报了个g++版本不兼容的错误——嗯,从那以后我再也不敢用pip装了。

conda create -n drugai python=3.9
conda activate drugai
conda install -c conda-forge rdkit

验证安装:

python -c "from rdkit import Chem; print(Chem.MolFromSmiles('CCO').GetNumAtoms())"

输出3,说明RDKit能正常读取乙醇分子。这个测试虽然简单,但我每次在新环境都会跑一遍,省得后面调半天发现是环境问题。

避坑:RDKit 2023.03之后版本要求Python >= 3.8。如果你的项目还得兼容老代码,可以考虑锁定2022.09版本。

3.3 OpenBabel:格式转换的瑞士军刀

OpenBabel主要干两件事:一是格式转换(SDF转SMILES、PDB转MOL2等),二是力场分配和构象生成。说实话,它的化学处理能力不如RDKit,但格式兼容性是真广——300多种化学文件格式,你想想看。

我习惯用conda装OpenBabel。注意,OpenBabel的conda包有时候和PyTorch的numpy版本冲突,所以装完立刻检查下numpy版本。

conda install -c conda-forge openbabel
obabel --version

简单测试格式转换:

obabel -:"CCO" -O ethanol.sdf --gen3d

这条命令会从SMILES生成一个SDF文件。我经常用这个功能做小分子的初始构象。

注意:OpenBabel生成的3D构象用MMFF94力场优化,不是量子化学级别的。如果你的下游任务需要高精度结构,建议先用RDKit生成构象,再用OpenBabel做格式转码。我曾经有一次直接用OpenBabel的构象做对接,结果打分一塌糊涂……

3.4 PyTorch vs TensorFlow:怎么选?

这个问题我经常被问到。我的答案是:做药化、分子生成、图神经网络,优先PyTorch。原因有三:

  • PyTorch的动态图机制更灵活,适合做分子图这种不规则结构
  • DGL(图神经网络库)对PyTorch的生态支持最好
  • 学术界80%的分子生成模型都用PyTorch实现,复现方便

如果你团队有现成的TensorFlow代码,或者正在做超大规模分子筛选(需要TensorFlow Serving),那就继续用TF。我个人在管线里只推荐PyTorch。

安装PyTorch(以CUDA 11.8为例):

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"

如果你用的是老显卡(比如GTX 1080 Ti),可能需要回退到CUDA 11.3。说实话,多卡并行的时候CUDA版本兼容性问题最让人头疼,我建议用Docker镜像来固定CUDA版本。

个人技巧:同一个pip list里不要混着装torch的pip版和conda版。我踩过一次大坑,两个版本的libtorch.so冲突,训练到一半直接段错误。后来检查才发现是混装了两次。

3.5 DGL:图神经网络的基石

DGL(Deep Graph Library)是药物分子图建模的利器。它能将分子转化成图结构——原子是节点,化学键是边,然后直接扔进GCN、GAT、MPNN这些模型里。

安装DGL要注意CPU/GPU版本选择。我建议直接用conda安装,它会自动匹配你当前的CUDA版本:

conda install -c dglteam dgl-cuda11.8
# 如果你用的是CPU版本
conda install -c dglteam dgl

验证安装:

python -c "import dgl; print(dgl.__version__); 
from dgl.data import GINDataset; 
dataset = GINDataset(name='MUTAG', self_loop=True); 
print('Number of graphs:', len(dataset))"
重要提醒:DGL和PyTorch的版本必须匹配。举个栗子,DGL 2.3支持的PyTorch版本是2.0至2.2,你用PyTorch 2.3装DGL 2.1就等着报错吧。我建议先在DGL的GitHub Release页面查一下版本兼容表。

3.6 工具链版本兼容性速查表

工具 推荐版本 Python兼容 CUDA兼容 安装方式
RDKit 2024.03 3.8 – 3.12 N/A conda-forge
OpenBabel 3.1.1 3.6 – 3.11 N/A conda-forge
PyTorch 2.2.x 3.8 – 3.11 11.8 / 12.1 pytorch channel
DGL 2.3 + 3.8 – 3.11 11.8 / 12.1 dglteam channel

这张表我每次重新搭环境都会看一眼。尤其是DGL和CUDA的对应关系,漏了就等于返工。

3.7 完整环境的安装脚本

为了让你少走弯路,我贴一份我项目常用的安装脚本,直接从零搭到可用:

conda create -n drugai python=3.9 -y
conda activate drugai

# RDKit & OpenBabel
conda install -c conda-forge rdkit openbabel -y

# PyTorch 2.2 + CUDA 11.8
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia -y

# DGL
conda install -c dglteam dgl-cuda11.8 -y

# 辅助工具
pip install matplotlib seaborn pandas numpy scikit-learn

# 验证
python -c "
import rdkit, openbabel, torch, dgl
print('RDKit:', rdkit.__version__)
print('PyTorch:', torch.__version__)
print('DGL:', dgl.__version__)
print('CUDA可用:', torch.cuda.is_available())
"
建议:每次安装完后,立刻conda env export > environment.yaml 导出环境配置文件。下次换机器或者给别人用,直接conda env create -f environment.yaml就搞定。
AI药物发现工具安装流程总图 环境准备 化学信息学 RDKit + OpenBabel 深度学习框架 PyTorch / TensorFlow 图神经网络 DGL 分子读取、指纹、子结构 CUDA兼容性检查 图构建、消息传递 环境验证 导入测试 CUDA可用性 版本兼容性 安装顺序建议 先Conda环境 → RDKit → OpenBabel → PyTorch → DGL → 验证 避免pip和conda混装同一个库

这张图我特意把安装顺序和验证环节都列出来。你照着走,基本不会出大问题。