2. 环境搭建:安装 Python、MolProbity 命令行工具及其依赖
做结构校验,第一步不是跑命令,而是把环境收拾利索。我见过太多人上来就 pip install,结果卡在版本冲突上,一耗就是半天。
说白了,环境搭建就像实验室里配缓冲液——配方对了,后面怎么跑都顺。这章我带你把 Python、MolProbity 命令行工具和它的依赖们一次装到位。
本章目标:搭建一个可重复、可隔离的 MolProbity 运行环境。你装完之后,能直接在终端敲入校验命令并看到输出。
2.1 Python 版本选择与安装
MolProbity 命令行工具基于 Python 3,我建议你使用 3.8 及以上版本。为什么是 3.8?因为大部分依赖库在 3.8–3.11 之间测试最充分。我遇到过有人用 3.6 装新版的 NumPy,结果一堆 wheel 不兼容……嗯,那个下午挺难忘的。
先确认你机器上有没有 Python:
python --version
# 或者
python3 --version
如果版本低于 3.8,或者根本没装,去 python.org 下载安装包。装的时候记得勾上 "Add Python to PATH",这个选项很重要。
个人建议:用 Miniconda 替代原生 Python。Miniconda 自带的 conda 环境管理在科学计算场景下比 venv 省心得多。我自己所有结构生物学项目都跑在 conda 环境里,没出过依赖地狱的问题。
2.2 创建虚拟环境
虚拟环境隔离项目依赖,说白了就是避免 A 项目要 1.0,B 项目要 2.0,两个打架。你想想看,要是把 MolProbity 的依赖和日常脚本混在一起,升级一次可能全崩。
我演示两种方式,你选一种就行。
方式 A:使用 conda(推荐)
conda create -n molprobity_env python=3.10
conda activate molprobity_env
环境名字取 molprobity_env,你也可以换成自己习惯的。进入环境后,终端前面会多一个括号提示,比如 (molprobity_env) $,这时候安装的东西都在这个隔离空间里。
方式 B:使用 venv
python -m venv molprobity_env
# Linux / macOS
source molprobity_env/bin/activate
# Windows
molprobity_env\Scripts\activate
注意:虚拟环境激活后,记得确认 Python 路径指向了环境内部,而不是系统全局。运行 which python(Linux/macOS)或 where python(Windows)检查。
2.3 安装 MolProbity 命令行工具
MolProbity 命令行工具通常作为 PHENIX 软件套件的一部分分发。PHENIX 里面包含了 molprobity、phenix.refine 等一大批工具。如果你只做结构校验,安装 molprobity 独立包就够了。
我用 conda 安装最省事:
conda install -c conda-forge -c fenics molprobity
如果网络比较慢,可以换成清华镜像:
conda install -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge molprobity
等进度条跑完,验证一下命令行是否可用:
which molprobity
# 输出类似:/home/user/miniconda3/envs/molprobity_env/bin/molprobity
如果输出为空,或者提示 "command not found",别急,我碰到过好几次——通常是镜像源里的包名不一样。试试这个备选命令:
conda install -c phenix-env phenix
PHENIX 套件比较大(几百 MB),但装完后 molprobity、ramalyze、clashscore 这些工具全部可用。我个人习惯用这种方式,因为后面做批量校验时还会用到 phenix 的其他模块。
历史经验:我曾经图省事,直接 pip install 了一个叫 molprobity 的包,结果运行时报错说找不到 reduce 程序。折腾了两天才发现是官方包的依赖没写全。从那以后,我坚定地用 conda 装,隔离干净、依赖完整,少踩很多坑。
2.4 安装核心依赖
MolProbity 本身依赖几个科学计算库。如果你用 conda 安装,这些会自动拉下来。但如果你是手动安装或者需要额外组件,可以手动补齐:
| 依赖库 | 用途 | 安装命令 |
|---|---|---|
| NumPy | 坐标矩阵运算、原子距离计算 | conda install numpy |
| SciPy | 空间搜索、键长键角统计 | conda install scipy |
| Reduce | 加氢、翻转确认(MolProbity 核心组件) | 随 molprobity 自动安装 |
| Probe | 原子碰撞打分(clashscore) | 随 molprobity 自动安装 |
| Matplotlib(可选) | 绘制 Ramachandran 图、分布图 | conda install matplotlib |
装完后,用一条命令检查所有关键依赖是否就位:
python -c "import numpy; import scipy; print('核心依赖 OK')"
如果没报错,说明底层库已经就绪。
2.5 验证安装:跑一个简单校验
环境有没有搭好,跑个例子就知道了。我准备了一个最小 PDB 文件片段,你自己随便找一个 .pdb 文件也行。
假设你有一个 test.pdb,执行:
molprobity test.pdb
看到类似下面的输出,就说明环境没问题:
========== MolProbity Score Report ==========
File: test.pdb
Clashscore: 2.35 (98th percentile)
Ramachandran outliers: 0.8%
Rotamer outliers: 1.2%
=============================================
如果没有 molprobity 命令,可以试试 PHENIX 版:
phenix.molprobity test.pdb
避坑提示:我第一次跑校验时,PDB 文件路径带了中文空格,结果程序直接报 "unexpected EOF"。后来我养成了一个习惯——所有结构文件都放在 纯英文、无空格的路径 下,省去很多编码麻烦。
2.6 常见问题速查
下面几个坑,我帮你们提前踩过了:
- Command not found:检查虚拟环境是否激活。终端前面有
(molprobity_env)才算进去。 - ImportError: No module named 'numpy':说明依赖没装全,跑
conda install numpy scipy补上。 - molprobity: error while loading shared libraries:Linux 上常见,缺动态链接库。尝试
conda install gxx_linux-64或conda install libstdcxx-ng。 - Killed 或 OOM:结构文件太大,内存不够。MolProbity 对超大型复合物(>10k 原子)比较吃内存,建议分批或者用
--reduce-only先加氢。
严重提醒:不要在 conda base 环境下安装 MolProbity!base 环境是 conda 自己的地盘,混装容易导致 conda 本身出问题。务必先建一个全新的虚拟环境再装。