2. 开发环境搭建
做PDB数据处理,第一步不是写代码,而是把“厨房”收拾利索。我见过不少同学装了一堆包,结果版本冲突搞到崩溃——其实只要一开始走对路,后面能省掉一半的调试时间。
2.1 为什么选Anaconda
Python环境管理说白了就两个阵营:原生pip + venv,和Anaconda。我个人习惯用Anaconda,原因很简单——生物信息学里很多工具(比如Biopython、对接软件)依赖非Python的C库,conda能原生处理这些依赖。你用pip装Biopython时可能很顺利,但装某些结构分析库时,编译失败的报错会让你想砸电脑。
我曾经在一个服务器上折腾了整整半天,就为了装一个叫pdb-tools的包,最后发现是gcc版本不对。换成conda后,一行命令解决。
2.2 Anaconda安装实战
安装过程没什么特别的,大家去官网下载对应系统版本就行。不过有三点我想提醒你:
- 安装路径不要有中文和空格,否则后面装包可能会出玄学问题。
- 安装时勾选“Add Anaconda3 to PATH”——虽然安装器会警告说这样可能影响其他软件,但为了命令行里直接敲conda,我每次都勾上。
- 如果系统已装过Python,安装完后检查一下默认python路径对不对:
which python
# 应该输出类似:
# /home/you/anaconda3/bin/python
安装完成后,更新一下conda本身:
conda update -n base conda
conda update --all
嗯,这一步容易被忽略,但新版本的conda在解决依赖关系时快很多。
2.3 创建虚拟环境——最值钱的一步
我刚开始做PDB项目时,所有包都装在base环境里。结果后来需要同时维护两个项目:一个要用Biopython 1.78,另一个需要Biopython 1.83,直接冲突了。当时我傻眼了。
所以现在每个项目我都独立建一个环境。
conda create -n pdb_env python=3.9
conda activate pdb_env
你觉得Python版本选多少合适?我个人推荐3.9或3.10。3.8太老,很多新包开始放弃支持;3.11以上有些科学计算库的预编译wheel还不全。3.9是最安全的折衷。
2.4 核心科学计算库安装
先把最基础的装上:
conda install numpy scipy pandas
conda install jupyter jupyterlab
为什么先装NumPy?很多依赖它的包在pip安装时会现场编译,慢且容易出问题。用conda装的话,它直接拉编译好的二进制包,速度快十倍。
我在项目中遇到过一个问题:某次用户报告说他的PDB数据处理脚本跑出来全是NaN,查了一天才发现是NumPy版本太新,某个API废弃了。所以建议记下当前安装的版本号:
conda list numpy
# 比如输出 numpy 1.23.5
下面这个表格是我自己用的主力库清单,你可以参考:
| 库名 | 用途 | 推荐版本 |
|---|---|---|
| numpy | 数组运算、矩阵操作 | ≥1.23 |
| scipy | 科学计算、插值、优化 | ≥1.9 |
| pandas | 数据框、CSV/TSV处理 | ≥1.5 |
| requests | 下载PDB文件、REST API | ≥2.28 |
2.5 Biopython——PDB处理的灵魂
Biopython是处理PDB文件最核心的库。安装很简单:
conda install -c conda-forge biopython
为什么指定conda-forge渠道?因为默认的defaults渠道里Biopython更新较慢,而conda-forge几乎跟官方同步。我曾经用默认渠道装了个1.78版,结果发现它不支持有些新PDB格式扩展字段,换成conda-forge后直接装到1.83。
装完之后验证一下:
python -c "import Bio; print(Bio.__version__)"
如果输出类似“1.83”这样的数字,就说明装好了。注意不要装成BioPython(注意大小写),都是坑。
2.6 Matplotlib与可视化
做结构分析免不了要画图——RMSD分布、B-factor曲线、Ramachandran图等。Matplotlib是主力:
conda install matplotlib seaborn
Seaborn是Matplotlib的增强版,画统计图时省很多代码。不过要注意:
- Matplotlib的默认字体不支持中文,画图时如果要显示中文字段名(比如“残基编号”),需要额外配置字体。
- Seaborn版本≥0.12时,某些旧的API(如distplot)废弃了,建议直接用histplot或displot。
验证:
python -c "import matplotlib; print(matplotlib.__version__)"
2.7 一次性全装——省事版
如果你不想一个个装,可以用这个组合命令:
conda install -c conda-forge biopython numpy scipy pandas matplotlib seaborn jupyter jupyterlab requests
Conda会自动解析依赖并下载。等你看到“done”字样,环境就基本就绪了。
2.8 验证环境是否可用
我习惯写一个简单的测试脚本,跑通才算完:
python -c "
import numpy as np
import Bio.PDB
import matplotlib.pyplot as plt
print('所有核心库导入成功!')
print('NumPy:', np.__version__)
print('Biopython:', Bio.__version__)
print('Matplotlib:', matplotlib.__version__)
"
如果一行报错都没有,恭喜你,环境搭好了。如果报错,检查是哪个库没装上,重新用conda install补装就行。
下面是整个开发环境搭建的核心流程,一张图看懂:
按这张图的顺序走,基本不会出大问题。如果中间卡住了,停下来看看环境名是不是激活错了——这是最常见的低级错误,我当年至少犯过五次。