环境搭建:Python、PyTorch/TensorFlow、RDKit、SMILES表示

好,咱们直接动手。这一章我带你搭好所有工具,后面写LSTM生成分子的时候才能不卡壳。我把环境分成四块:Python本体、深度学习框架、化学信息学工具RDKit、还有SMILES表达式的概念。按顺序来,一个坑一个坑填平。

1. Python 环境——我推荐 miniconda

我个人习惯用 miniconda,轻量,不污染系统Python。你如果还没装,直接跑这几行:

# 下载安装脚本(Linux/Mac)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# Windows 去官网下载 exe,记得勾「Add to PATH」

装完检查版本:

python --version
conda --version

然后创建一个独立环境,我起名叫 molgen,Python 3.9 稳一些:

conda create -n molgen python=3.9 -y
conda activate molgen
小经验:我遇到过Python 3.10以上某些库(比如老版本RDKit)不兼容的问题,3.9是经过验证的甜点版本。你如果非要用3.11,建议先搜一下RDKit官方是否支持。

2. 深度学习框架:PyTorch vs TensorFlow

这个课里我会用PyTorch演示,但两种框架我都给你装好,方便你对比。下表是我自己对比后的选择逻辑:

对比项PyTorchTensorFlow
社区活跃度学术界首选,新论文90%用工业部署更成熟
动态图调试原生动态,print就能看Eager模式也支持,但历史包袱重
LSTM 实现torch.nn.LSTM,简洁keras.layers.LSTM,稍啰嗦
安装体积约2GB(含CUDA)约3GB

安装命令:

# PyTorch(根据你的CUDA版本选,我以CUDA 11.8为例)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# TensorFlow
pip install tensorflow==2.13.0
曾经踩过的坑:我之前在一台没独显的笔记本上直接装了CUDA版本PyTorch,跑模型时莫名其妙报CUDA not available,其实直接装CPU版就行——pip install torch --index-url https://download.pytorch.org/whl/cpu。生成分子任务数据量不大,CPU也能跑。

3. RDKit——化学家的瑞士军刀

RDKit是核心依赖,用来解析SMILES、计算分子指纹、做分子可视化。安装很简单:

# conda 推荐方式(避免编译问题)
conda install -c conda-forge rdkit -y

# 或者 pip
pip install rdkit-pypi

验证是否装好:

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

如果输出 <rdkit.Chem.rdchem.Mol object at 0x...> 就说明成了。没输出?多半是环境没激活,或者混装了其他版本。

小提示:RDKit对版本很敏感。我记得有一次升级了conda里的numpy,结果RDKit直接罢工。后来我都固定用conda install rdkit=2023.09.1指定版本,省心。

4. SMILES 表示——分子的自然语言

SMILES就是用一串字符描述分子结构。比如乙醇:CCO。简单吧?但它有一套规则:

  • 原子用元素符号:C、O、N、Cl等
  • 单键默认,双键写=,三键写#
  • 分支用括号:CC(C)O 表示异丙醇
  • 环用数字标连接点:C1CCCCC1 是环己烷

后面我们会用LSTM学习这些序列的语法,所以先理解SMILES其实就是一种线性化表示。我画了张图帮你理清工具之间的关系:

药物生成环境核心组件 LSTM 生成模型 SMILES 序列数据 PyTorch / TensorFlow RDKit 化学工具 Python + Miniconda 数据 → 模型 → 化学验证

这张图你看懂没?底层是Python环境,中间层是LSTM模型,数据从左边SMILES进来,通过框架训练,最后用RDKit做化学验证。缺一个都跑不通。

5. 一次性验证环境

装完所有东西后,我建议你跑一个完整测试脚本,确认每部分都没问题:

import torch
import tensorflow as tf
from rdkit import Chem

print("PyTorch version:", torch.__version__)
print("TensorFlow version:", tf.__version__)
print("RDKit available:", Chem.MolFromSmiles("CCO") is not None)
print("CUDA available:", torch.cuda.is_available())

如果全输出True,恭喜,你接下来的实验环境稳了。如果有哪个报错,别急——回头检查对应的安装步骤,多半是版本冲突或环境混了。

避坑经验:我曾经同时装了conda和pip版的RDKit,结果import时报segfault。后来统一用conda-forge渠道重装才解决。记住:一个生态只用一种包管理器。