2. 环境搭建:装好家伙才能干活
说实话,PDB 数据清洗这事,最烦人的往往不是算法问题,而是环境没搭好。我前几年帮一个课题组搭 pipeline,光 Biopython 版本冲突就折腾了小半天。后来养成了一个习惯:每次开始新项目,先统一环境,再写一行代码。今天咱们就把这事办了。
2.1 Python 版本选哪个?
我个人建议用 Python 3.9~3.12。PDB 相关的库更新不算快,太新的 Python 版本有些库还没跟上。我用 3.10 很久了,目前还没碰到不兼容的。
如果你还没装 Python,推荐直接用 Miniconda 或 Anaconda。
- Miniconda —— 轻量,只带 conda 和 Python,剩下包自己装。
- Anaconda —— 包大,但自带一堆科学计算库,省事。
我自己习惯用 Miniconda,干净。安装命令很简单:
# 下载 Miniconda(Linux 为例)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 一路 yes 就行
# 验证
python --version
conda --version
2.2 创建独立环境
嗯,这里要注意:千万别把项目依赖全装到 base 环境。我曾经在 base 里混装过,后来想降级某个包,结果一堆依赖崩了,场面一度很尴尬。
建一个专门的 PDB 环境:
conda create -n pdb_env python=3.10 -y
conda activate pdb_env
环境名你随意,我一般用 pdb_env 或 pdb_clean。
2.3 安装 Biopython
Biopython 是处理 PDB 文件的核心库。安装很简单:
conda install -c conda-forge biopython -y
或者用 pip:
pip install biopython
我个人偏爱 conda,因为它会帮忙处理底层依赖(比如 numpy、pandas)。用 pip 有时会遇到编译问题,尤其是 Windows 上。
python -c "import Bio; print(Bio.__version__)" 确认版本。1.79 以上都 OK。
2.4 安装 pypdb
pypdb 这个库可以帮我们从 RCSB PDB 数据库直接下载和查询结构数据。虽然也能用 Biopython 的 PDBList,但 pypdb 的查询接口更方便。
pip install pypdb
为什么不用 conda?因为 pypdb 在 conda-forge 里更新比较慢,pip 版本通常是最新的。
PDBList。我一般在需要批量按条件查询 ID 时才用 pypdb。
2.5 安装 pdb-tools
pdb-tools 是一套小而美的命令行工具,做格式转换、链提取、残基筛选特别方便。尤其适合写 shell 脚本时调用。
pip install pdb-tools
装好后试试:
# 查看所有可用工具
pdb_validate -h
如果你看到一大串子命令列表,就说明装好了。常用工具包括:
| 工具名 | 功能 |
|---|---|
pdb_selchain |
提取指定链 |
pdb_delhetatm |
删除非标准残基/水分子 |
pdb_tidy |
修正格式、排序原子 |
pdb_reatom |
重新编号原子 |
pdb_selres |
按残基范围选择 |
这些工具我几乎每个项目都会用到。举个例子:清洗一个含多条链的 PDB,我只想保留链 A:
pdb_selchain -A input.pdb > output.pdb
2.6 其他可能用到的库
下面这些不是必须的,但我建议一并装上,后面预处理时能省不少事:
pip install numpy pandas matplotlib seaborn scipy
- numpy —— 做坐标矩阵运算的基石。
- pandas —— 存残基信息、原子属性时特别好用。
- matplotlib / seaborn —— 画分布图、PDB 统计图。
2.7 验证安装
跑一个简单的脚本,看看各个库能不能正常调用:
python <
输出版本信息就证明环境搭好了。如果有报错,多半是版本冲突或 Python 版本不对。我建议直接用 conda 重装一遍,比自己瞎调试快。
2.8 环境搭建流程总览
下面这张图展示了从零到能干活的核心步骤:
2.9 别忘了加个 .gitignore
如果你用 git 管理项目,建议把 conda 环境目录(比如 envs/)或虚拟环境目录排除掉。我有个习惯,在项目根目录放一个 environment.yml,队友直接 conda env create -f environment.yml 就能干活,不用再一个个装。
conda env export > environment.yml
导出时最好去掉 prefix 行(路径),否则换台机器会报错。手动删掉最后一行即可。
好了,环境搭建说完了。装好这些,咱们就可以正式上手 PDB 数据清洗了。记住,一个干净的环境能帮你省下至少半天排查时间。你想想看,如果把时间花在解决“ModuleNotFoundError”上,多亏啊。