跳转至

PyMOL — 蛋白质三维结构可视化与分析工具


一句话说明

PyMOL 是最流行的蛋白质结构可视化工具,可以用 GUI 鼠标操作或写 Python 脚本批量处理——旋转结构、着色、测量距离、生成出版级图片或动画。白话理解:蛋白质 3D 结构的"Photoshop",既能点击操作,又能写脚本批量出图。


安装与配置

# 方法1:conda 安装(推荐,包含 pymol-open-source)
conda install -c conda-forge pymol-open-source  # 安装开源版 PyMOL(当前 v3.0+)

# 方法2:商业版(支持更多高级渲染)
# 从 Schrödinger 官网下载(学术免费授权)
# https://pymol.org/edu/

# 确认安装
pymol --version   # 命令行确认版本(v3.0+)
python -c "import pymol; print(pymol.__version__)"  # Python 中确认

# 启动 PyMOL(GUI)
pymol  # 打开图形界面

# 启动 PyMOL(无 GUI,脚本模式)
pymol -cq my_script.py  # -c=无GUI,-q=静默模式

核心用法

PyMOL 命令行(GUI 内)

# 以下命令在 PyMOL 的命令栏(底部文本框)输入

# 载入结构
load 1abc.pdb          # 载入本地 PDB 文件
fetch 1ABC             # 从 RCSB 数据库下载 1ABC 结构

# 基础显示
show cartoon           # 显示卡通(ribbon)表示
show sticks            # 显示棒状(原子级别)
show surface           # 显示分子表面
hide everything        # 隐藏所有显示
show cartoon, chain A  # 只显示 A 链的卡通

# 着色
color blue, chain A    # A 链着色蓝色
color red, chain B     # B 链着色红色
spectrum b             # 按 B factor(温度因子)上色
spectrum count, rainbow, all  # 用彩虹色从 N 端到 C 端着色

# 视图操作
orient               # 自动调整最佳视角
zoom chain A         # 缩放到 A 链
center resi 100      # 居中到第100号残基

Python 脚本批量处理

# 脚本文件 visualize.py,用 pymol -cq visualize.py 运行
import pymol                          # 导入 PyMOL 库
from pymol import cmd                 # 导入命令接口

pymol.finish_launching(['pymol', '-c'])  # 启动 PyMOL(无 GUI 模式)

# 载入蛋白质结构
cmd.load("protein.pdb", "protein")      # 载入 PDB 文件,命名为 protein

# 设置显示方式
cmd.show("cartoon", "protein")          # 显示卡通表示
cmd.hide("lines", "protein")            # 隐藏线框

# 按二级结构着色
cmd.color("marine", "ss h")            # α螺旋着色为深蓝色(marine)
cmd.color("wheat", "ss s")             # β折叠着色为小麦色(wheat)
cmd.color("gray80", "ss l+''")         # loop区着色为浅灰色

# 高亮活性位点残基
cmd.show("sticks", "resi 50+51+85")    # 50、51、85号残基显示棒状
cmd.color("red", "resi 50+51+85")      # 活性位点着红色

# 设置背景和渲染参数
cmd.bg_color("white")                  # 白色背景
cmd.set("ray_shadows", 0)              # 关闭阴影(出版图常用)
cmd.set("antialias", 2)                # 抗锯齿(图片更清晰)

# 调整视角
cmd.orient("protein")                  # 自动最优视角
cmd.zoom("protein", buffer=5)          # 缩放并留5Å边距

# 光线追踪渲染并保存
cmd.ray(2400, 1800)                    # 光线追踪:2400x1800 像素
cmd.png("protein_structure.png", dpi=300)  # 保存 PNG,300 DPI

# 退出
cmd.quit()

参数详解

命令含义
show cartoon显示 ribbon/卡通图(二级结构)
show surface显示分子表面(静电势等)
show sticks显示棒状(原子键)
show spheres显示球状(范德华半径)
color spectrum按某属性渐变着色
set transparency设置透明度(0-1)
select sele, resi 50-60选择50-60号残基
distance d1, resi 50, resi 85测量两残基距离
align obj1, obj2结构叠合
super obj1, obj2结构超叠合(更准确)
ray光线追踪(高质量渲染)

实战案例

案例:比较两个结构并计算 RMSD

from pymol import cmd  # 导入命令接口

# 载入两个结构
cmd.load("predicted.pdb", "predicted")   # 预测结构
cmd.load("experimental.pdb", "experimental")  # 实验结构(参考)

# 结构叠合(align:先做序列比对再叠合)
rmsd_result = cmd.align("predicted", "experimental")  # 叠合
rmsd = rmsd_result[0]         # RMSD 值(Å)
n_atoms = rmsd_result[1]      # 用于计算的原子数

print(f"RMSD: {rmsd:.3f} Å")  # 打印 RMSD
print(f"叠合原子数: {n_atoms}")

# 着色:差异大的区域用红色表示
cmd.spectrum("b", "rainbow", "predicted")   # 按 B factor 着色

# 保存对比图
cmd.show("cartoon", "all")   # 所有结构显示卡通
cmd.ray(1600, 1200)           # 光线追踪渲染
cmd.png("comparison.png", dpi=300)  # 保存图片

案例:绘制蛋白质表面静电势

from pymol import cmd
from pymol.plugins import initialize

# 载入结构
cmd.load("protein.pdb", "prot")
cmd.remove("solvent")       # 移除水分子

# 加氢原子(计算静电势需要)
cmd.h_add("prot")           # 添加氢原子

# 计算并显示静电势表面
# 需要 APBS 或 PDB2PQR 工具(单独安装)
# 在 PyMOL 中直接用 plugin
cmd.do("show surface, prot")                    # 显示表面
cmd.do("set surface_color, white, prot")        # 先设为白色
# 打开 APBS/PDB2PQR 插件计算静电:Plugin → APBS Tools

常见报错与解决

报错原因解决方法
Invalid selection name选择语法错误检查括号和引号;select sele, chain A
Unable to open file文件路径错误用绝对路径或先 cd 到文件目录
Error: ray failed渲染内存不足降低 ray 分辨率;关闭其他程序
图片文字乱码Linux 字体问题label 时设置 set label_font_id, 7
结构显示不完整PDB 文件有 TER 中断remove solvent 后重新 show cartoon

速查表

# 安装
conda install -c conda-forge pymol-open-source

# 启动方式
pymol           # GUI 模式
pymol -cq xxx.py  # 无 GUI 脚本模式

# PyMOL 命令行快捷键
F1  帮助   F2  线框   F3  棒状   F4  球棍   F5  卡通
鼠标左键旋转   右键缩放   中键平移

# 常用命令
fetch 1abc               # 从 PDB 数据库下载结构
load xxx.pdb             # 加载本地文件
show cartoon             # 卡通显示
color chainbows          # 按链彩虹色
align A, B               # A 叠合到 B
measure_all              # 测量所有距离/角度
save output.pdb          # 保存结构
ray 2400,1800; png x.png  # 渲染并保存

# 版本:PyMOL 3.0+(2024年,开源版)