2. 环境搭建:安装 Python、MolProbity 命令行工具及其依赖

做结构校验,第一步不是跑命令,而是把环境收拾利索。我见过太多人上来就 pip install,结果卡在版本冲突上,一耗就是半天。

说白了,环境搭建就像实验室里配缓冲液——配方对了,后面怎么跑都顺。这章我带你把 Python、MolProbity 命令行工具和它的依赖们一次装到位。

本章目标:搭建一个可重复、可隔离的 MolProbity 运行环境。你装完之后,能直接在终端敲入校验命令并看到输出。

环境搭建流程总览 ① Python 3.8+ 下载安装 / 版本检查 ② 虚拟环境 conda / venv 隔离 ③ 包管理器 pip / conda 就绪 ④ 安装 MolProbity phenix / molprobity 包 ⑤ 依赖安装 NumPy / SciPy / 其他 ⑥ 验证测试 运行校验示例 ✅ 环境就绪,可以校验

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 本身出问题。务必先建一个全新的虚拟环境再装。