跳转至

蛋白质结构可视化PyMOL

一句话概述:PyMOL是蛋白质3D结构可视化的"PS软件",能把PDB文件变成发表级的分子结构图,是结构生物学和药物设计必备工具。

核心知识点表

知识点白话解释重要程度
PDB文件记录蛋白质每个原子3D坐标的"建筑图纸"⭐⭐⭐⭐⭐
PyMOL把PDB坐标渲染成漂亮3D图片的软件⭐⭐⭐⭐⭐
表示模式cartoon(卡通)、surface(表面)、stick(棍状)等不同"画风"⭐⭐⭐⭐
选择语法指定要操作哪些原子/残基的"选择器"⭐⭐⭐⭐
AlphaFoldDeepMind的AI蛋白质结构预测工具,预测结构也能用PyMOL看⭐⭐⭐⭐
结构叠合把两个蛋白质结构"对齐"比较差异⭐⭐⭐

一、PyMOL安装

1.1 conda安装(推荐)

# 创建专用conda环境
conda create -n pymol python=3.10  # 创建Python3.10环境
conda activate pymol  # 激活环境

# 安装开源版PyMOL
conda install -c conda-forge pymol-open-source  # 从conda-forge安装开源版

# 验证安装
pymol --version  # 查看PyMOL版本

1.2 pip安装

# Linux需要先安装依赖
sudo apt-get install -y libgl1-mesa-glx libglu1-mesa  # 安装OpenGL依赖(Ubuntu)

# pip安装
pip install pymol-open-source  # pip安装开源版PyMOL

二、基本操作

2.1 加载蛋白质结构

# ========== PyMOL命令行操作 ==========
# 在PyMOL命令行中输入以下命令

# 方法一:直接从PDB数据库获取结构
fetch 6LU7  # 从RCSB PDB下载编号6LU7的结构(新冠病毒主蛋白酶)

# 方法二:加载本地PDB文件
load /path/to/protein.pdb  # 加载本地PDB文件

# 方法三:加载AlphaFold预测结构
fetch AF-P04637-F1, type=mmCIF  # 获取AlphaFold预测的p53结构

# 查看已加载的对象
get_object_list  # 列出所有已加载的分子对象

2.2 表示模式切换

# ========== 常用表示模式 ==========

# 卡通模式(最常用,显示二级结构)
show cartoon  # 显示卡通模式:α螺旋=螺旋,β折叠=箭头

# 棍状模式(显示每个化学键)
show sticks  # 显示棍状模式:每根棍子=一个化学键

# 球棍模式(原子=球,键=棍)
show ball_and_stick  # 球棍模式

# 表面模式(显示蛋白质表面,看口袋)
show surface  # 分子表面模式

# 线框模式(最简单)
show lines  # 线框模式

# 组合显示(常用技巧)
hide everything  # 先隐藏所有
show cartoon  # 显示整体卡通
show sticks, resi 145  # 只对145号残基显示棍状

2.3 选择语法(Selection Algebra)

# ========== 选择语法 速学 ==========

# 按链选择
select chain_A, chain A  # 选择A链

# 按残基编号选择
select active_site, resi 41+145+163  # 选择41、145、163号残基(活性位点)

# 按残基范围选择
select helix1, resi 10-30  # 选择10到30号残基

# 按残基类型选择
select all_cys, resn CYS  # 选择所有半胱氨酸

# 按原子名称选择
select backbone, name CA+C+N+O  # 选择主链原子

# 按元素选择
select metals, elem ZN+FE+MG  # 选择锌、铁、镁离子

# 组合选择(逻辑运算)
select binding, (resi 41+145) and chain A  # A链的41和145残基
select nearby, byres (resn ATP around 5)  # ATP周围5埃内的残基

# 按二级结构选择
select helices, ss H  # 选择所有α螺旋
select sheets, ss S  # 选择所有β折叠

三、发表级图片制作

3.1 PyMOL脚本:制作蛋白质结构图

# 保存为 make_figure.pml,在PyMOL中运行:@make_figure.pml

# ========== 加载和准备 ==========
reinitialize  # 清空所有对象
fetch 6LU7, async=0  # 下载新冠病毒主蛋白酶结构
remove solvent  # 删除水分子
remove resn HOH  # 确保删除所有水

# ========== 基本显示设置 ==========
bg_color white  # 白色背景(发表要求)
set ray_opaque_background, 1  # 不透明背景
hide everything  # 隐藏所有
show cartoon  # 显示卡通模式

# ========== 着色方案 ==========
# 按链着色
color marine, chain A  # A链蓝色
color salmon, chain B  # B链粉色(如果有)

# 按二级结构着色
set cartoon_highlight_color, grey70  # 螺旋高光颜色
color red, ss H  # α螺旋红色
color yellow, ss S  # β折叠黄色
color green, ss L+""  # 环区绿色

# ========== 活性位点高亮 ==========
# 显示催化三联体
select catalytic, resi 41+145 and chain A  # 选择催化残基
show sticks, catalytic  # 棍状显示
color cyan, catalytic  # 青色高亮
set stick_radius, 0.15, catalytic  # 设置棍的粗细

# 标注残基名称
label catalytic and name CA, "%s%s" % (resn, resi)  # 在CA原子处标注残基名+编号
set label_size, 18  # 标签字号
set label_color, black  # 标签颜色

# ========== 渲染设置 ==========
set cartoon_fancy_helices, 1  # 精美螺旋效果
set cartoon_smooth_loops, 1  # 平滑环区
set cartoon_tube_radius, 0.2  # 管状半径
set antialias, 2  # 抗锯齿级别
set ambient, 0.3  # 环境光
set spec_reflect, 0.3  # 反射光

# ========== 调整视角 ==========
orient  # 自动调整视角,让蛋白质居中
zoom complete=1  # 缩放到合适大小

# ========== 导出高清图片 ==========
ray 3000, 2400  # 渲染3000x2400像素
png protein_structure.png, dpi=300  # 保存300dpi的PNG图片

print("图片已保存到 protein_structure.png")

3.2 Python脚本批量生成结构图

#!/usr/bin/env python3
"""批量生成蛋白质结构图(PyMOL Python API)"""

import pymol  # 导入PyMOL模块
from pymol import cmd  # 导入命令模块

def make_structure_figure(pdb_id, output_name):
    """为指定PDB生成结构图"""

    cmd.reinitialize()  # 重置PyMOL状态
    cmd.fetch(pdb_id, async_=0)  # 下载PDB结构
    cmd.remove("solvent")  # 删除溶剂

    # 显示设置
    cmd.bg_color("white")  # 白色背景
    cmd.hide("everything")  # 隐藏所有
    cmd.show("cartoon")  # 显示卡通

    # 按二级结构着色
    cmd.color("marine", "ss H")  # α螺旋蓝色
    cmd.color("yellow", "ss S")  # β折叠黄色
    cmd.color("gray80", "ss L+''")  # 环区灰色

    # 渲染设置
    cmd.set("cartoon_fancy_helices", 1)  # 精美螺旋
    cmd.set("ray_opaque_background", 1)  # 不透明背景
    cmd.orient()  # 调整视角

    # 导出
    cmd.ray(2400, 2000)  # 渲染分辨率
    cmd.png(f"{output_name}.png", dpi=300)  # 保存图片

    print(f"已生成: {output_name}.png")

# ========== 批量处理 ==========
pdb_list = {
    "6LU7": "SARS-CoV-2_Mpro",  # 新冠主蛋白酶
    "1BNA": "B-DNA",  # B型DNA双螺旋
    "4HHB": "Hemoglobin",  # 血红蛋白
    "1UBQ": "Ubiquitin",  # 泛素
}

# 启动PyMOL(无GUI模式)
pymol.finish_launching(["pymol", "-cq"])  # -c=命令行模式, -q=安静模式

for pdb_id, name in pdb_list.items():  # 遍历每个PDB
    make_structure_figure(pdb_id, name)  # 生成结构图

print("所有结构图生成完毕!")

四、结构比较与叠合

# ========== PyMOL命令行:结构叠合 ==========

# 加载两个结构
fetch 6LU7, protein1  # 加载第一个结构
fetch 7L11, protein2  # 加载第二个结构

# 结构叠合(对齐)
align protein1, protein2  # 基于序列的叠合(最常用)
# 输出:RMSD = X.XX 说明叠合质量,越小越相似

# 如果序列差异大,用super命令
super protein1, protein2  # 基于结构的叠合(不依赖序列)

# 着色区分
color blue, protein1  # 第一个蛋白蓝色
color red, protein2  # 第二个蛋白红色

# 计算RMSD
rms_cur protein1, protein2  # 计算当前位置的RMSD

# 显示结构差异
# RMSD颜色映射:蓝=相似,红=差异大
spectrum b, blue_white_red, protein1  # 按B因子着色看灵活性

五、配体结合位点分析

# ========== 分析蛋白质-配体结合 ==========

fetch 6LU7, async=0  # 加载含配体的结构

# 找到配体
select ligand, organic  # 选择所有有机小分子(配体)
show sticks, ligand  # 棍状显示配体
color yellow, ligand  # 配体黄色

# 显示结合口袋
select pocket, byres (ligand around 4.5)  # 配体4.5埃内的残基=结合口袋
show sticks, pocket  # 棍状显示口袋残基
color cyan, pocket  # 口袋青色

# 显示氢键
distance hbonds, ligand, pocket, 3.5, mode=2  # 找配体和口袋间的氢键(3.5埃内)
set dash_color, red, hbonds  # 氢键虚线红色
set dash_width, 2, hbonds  # 虚线宽度

# 显示蛋白表面(半透明)
show surface, protein1  # 显示蛋白表面
set transparency, 0.7  # 设置70%透明度

常见报错与解决

报错信息原因解决方法
Error: unable to open file文件路径错误或文件不存在检查路径,用绝对路径
OpenGL error显卡驱动问题更新显卡驱动,或用pymol -c命令行模式
fetch failed网络问题或PDB ID不存在检查网络连接,确认PDB ID正确
no atoms selected选择语法写错了检查选择表达式,用select测试
RMSD is very large结构差异太大或对齐失败先用super代替align,检查物种是否匹配
ray takes too long渲染分辨率太高或结构太复杂降低ray分辨率,先用draw快速预览
module 'pymol' not foundPython环境没装PyMOL用conda安装:conda install -c conda-forge pymol-open-source

速查表

========================================
PyMOL蛋白质结构可视化 速查表
========================================

【启动PyMOL】
GUI模式            → pymol
命令行模式          → pymol -c
安静模式            → pymol -cq
运行脚本            → pymol script.pml 或 @script.pml

【加载结构】
从PDB下载          → fetch 6LU7
加载本地文件        → load protein.pdb
加载AlphaFold      → fetch AF-P04637-F1, type=mmCIF

【表示模式】
卡通(二级结构)    → show cartoon
棍状(化学键)      → show sticks
表面(分子表面)    → show surface
球棍模式            → show ball_and_stick
线框                → show lines
全隐藏              → hide everything

【选择语法】
按链                → chain A
按残基号            → resi 41+145
按残基范围          → resi 10-30
按残基名            → resn CYS
按原子名            → name CA
按元素              → elem ZN
按二级结构          → ss H(螺旋)/ ss S(折叠)
周围X埃             → around 5
包含完整残基        → byres

【着色】
单色                → color red, selection
按链                → util.cbc(自动按链着色)
按二级结构          → color red, ss H
B因子光谱           → spectrum b, blue_white_red
按残基类型          → util.cbag(按原子类型着色)

【结构比较】
序列对齐叠合        → align obj1, obj2
结构叠合            → super obj1, obj2
计算RMSD            → rms_cur obj1, obj2

【导出图片】
渲染                → ray 3000, 2400
保存PNG             → png output.png, dpi=300
保存会话            → save session.pse

【快捷键】
旋转                → 鼠标左键拖动
平移                → 鼠标中键拖动
缩放                → 鼠标右键拖动 / 滚轮
选择原子            → 鼠标左键点击
重置视角            → orient

【面试常问】
Q: RMSD是什么意思?
A: 均方根偏差,衡量两个结构叠合后的平均原子位移,越小越相似

Q: B因子是什么?
A: 温度因子,反映原子振动幅度,越大说明该区域越灵活/无序

Q: cartoon模式显示的是什么?
A: 蛋白质的二级结构:螺旋=α螺旋,箭头=β折叠,管子=环区
========================================

参考资料:PyMOL官方文档 | pymol.org | RCSB PDB | AlphaFold Protein Structure Database