环境搭建: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演示,但两种框架我都给你装好,方便你对比。下表是我自己对比后的选择逻辑:
| 对比项 | PyTorch | TensorFlow |
|---|---|---|
| 社区活跃度 | 学术界首选,新论文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其实就是一种线性化表示。我画了张图帮你理清工具之间的关系:
这张图你看懂没?底层是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渠道重装才解决。记住:一个生态只用一种包管理器。