入门教程

主要讲述PyMOL中常见的图形界面(鼠标)操作

PyMOL软件界面介绍

PyMOL 软件界面如下图所示,主要由2部分组成。第一部分是菜单窗口和第二部分是显示窗口。 PyMOL2 和PyMOL1一个明显区别: 在PyMOL2中,这2部分默认是一个整体,在PyMOL1中这2部分是分开的。 在Display->Toggle Floating 可以拆分这2个窗口,快捷键是Ctrl+E, 刚开始PyMOL的界面主要是通过tkinter实现的,在PyMOL2中逐渐采用PyQT技术实现。 和PyMOL1 相比,PyMOL2 表现能力更强,功能更多,本教程以PyMOL2为例进行讲解,大部分 内容也适用于PyMOL1.

窗口1:整合了PyMOL的各个功能,主要包含如下部分

1.1 菜单窗口 1.2 操作记录显示窗口 1.3 命令输入窗口 1.4 常用命令集成面板

窗口2:分子操作和显示窗口,主要包括如下部分:

2.1 可视化窗口 2.2 命令输入窗口 2.3 分子对象列表窗口 2.4 模式窗口

../_images/pymol_windows.jpg

注解

本节教程是有顺序的。

窗口拆分和合并

在Display->Toggle Floating 可以拆分这2个窗口,快捷键是Ctrl+E,

PyMOL内置的超强可视化示例

文本教程

打开PyMOL,点击1.1菜单窗口的Wizard菜单,然后点击Demo->Representations 然后在2.3 对象窗口 和 2.4模式窗口之间会出现各种示例:

  1. Representations
  2. Cartoon Ribbons
  3. Roving Detail
  4. Roving Density
  5. Transparency
  6. Ray Tracing
  7. Sculpting
  8. Scripted Animation
  9. Electrostatics
  10. CGOs
  11. Molscript/R3D Input
  12. End Demonstration 关闭示例

从中我选择了几个示例图片展示下:

../_images/1repren.png

Fig 1. Representations

../_images/5transparency.png

Fig 2. Transparency

../_images/9ele.png

Fig 3. Electrostatics

../_images/11R3D.PNG.png

Fig 4. R3D

从这些示例中,我们可以感受到PyMOL的强大表现能力。

视频教程

设置和查看工作路径

点击1.1菜单窗口 File->Working Directory->Change 可以查看现在的工作目录在哪里,也可以设置新的路径作为工作目录。

工作目录的作用:默认文件的打开和保存都是从该文件开始。下载文件的保存位置也是在工作目录。

工作目录设置习惯

建议: 1. 不同项目设置不同的工作目录
  1. 设置一个默认工作目录
  2. 不要把工作目录设置在软件安装目录
  • 双击PDB文件打开PyMOL,会自动切换工作目录到该PDB文件所在目录。
  • 从软件安装处打开PyMOL, 则工作目录为软件安装目录

这里我设置工作目录为 D:\PyMOLstartedManual

下载蛋白

从PDB网站上下载蛋白,如 4hbk.pdb, 也可以直接通过PyMOL 下载蛋白,点击菜单栏中的 File->Get PDB,如下图图所示, 在PDB ID 对应的框中填入PDB的编号就可以了,不要包含后缀.pdb 。

../_images/Fig5getpdb.png

点击Download,你会发现PyMOL会自动加载该蛋白,在工作路径 D:\PyMOLstartedManual 下面出现 4hbk.cif 文件,随着PDB解析的结构越来越大,PDB格式文件的局限性就暴露出来,不能超过9999个原子,因此正在逐渐用cif 格式取代pdb 格式。

视频教程

蛋白结构的加载和展示

蛋白的展现形式(show)

文本教程

在2.3对象列表窗口中,我们可以看到现在有2个object 名字,

  • 1个是all, all 不是真实的object,它代表了所有的object
  • 1个是4hbk, 4hbk 就是我们刚刚载入的蛋白

每个object 都有对应的A S H L C操作,如下图所示:

../_images/Fig6ASHLC.png
  • Action 主要包含了对object的常用操作的集合,如 复制、删除object,对object加氢,展示Object等,

更多详情参见蛋白对象的Action操作。 - Show 将object 渲染成cartoon 、line、stick lines sphere surface mesh dots ribbon 等模式 - Hide 根据object的状态或者描述进行相应的掩藏 - Label 显示object中残基 原子等名称或者属性 - Color 对Object 进行着色

下面对Show 着重讲解: show 有2类操作方法:

  • show as 分别点击S->as->cartoon 和S->as->stick,
    我们可以观察到AS模式是把原有的渲染模式抹除后再重新渲染,经过上述操作后仅仅显示stick形式
  • show 点击S->as->cartoon 再点击S->stick;
    我们可以观察到SHOW方法,是保留原有的渲染,再添加新的渲染。

我们先对4hbk object点击 S->as->cartoon,然后点击S->as->stick,效果如图Fig5

我们先对4hbk object点击 S->as->cartoon,然后点击S->stick,效果如图Fig6

../_images/Fig5asStick.png

Fig 5. as stick

../_images/Fig6Stick.png

Fig 6. stick

大家可以下载demo1的示例蛋白文件 demo1_pp.pdb,点此 pdb 下载。

然后在PyMOL中点击File -> Open-> demo1_pp.pdb 打开该文件。

  1. 点击 S->as->lines
  2. 点击 S->as->sticks
  3. 点击 S->as->spheres
  4. 点击 S->as->surface
  5. 点击 S->as->mesh
  6. 点击 S->as->dots
  7. 点击 S->as->ribbon
  8. 点击 S->as->cartoon

观察该分子对象的不同形态,如图1所示。

视频教程

蛋白对象的简单平移、旋转、缩放

首先将鼠标移动到2.1可视化窗口

  • 平移,按住鼠标中键不放,然后上下左右移动,进行体会,蛋白会随着鼠标而移动
  • 旋转,按住鼠标左键不放,然后上下左右移动鼠标,蛋白会进行旋转
  • 缩放,按住鼠标右键不放,然后上下移动,蛋白会进行缩放
  • 切割 滚动鼠标中键, 建议将蛋白渲染成surface模式,然后滚动鼠标中键

当软件不能正常使用上述操作,可以点击

  • File->Reinitialize->Original Settings (推荐)
  • File->Reinitialize->Everything 注意的是该操作会删除当前所有的Object,

蛋白对象的action操作

对于4HBK体系里面没有小分子,一些相互作用操作不方便演示,我会在在后面进行更详细的讲解。

第一部分: 常用显示操作

  • 点击 A->preset->simple 显示蛋白的简单形式
  • 点击 A->preset->ball and stick 显示球棍模型

效果如下图所示:

../_images/a_bs.png
  • 点击 A->preset->b-factor putty 基于bfactor数值显示蛋白的柔性
  • 点击 A->preset->publication 高质量出版标准

第二部分 对象的操作

  • 删除水分子 A->remove waters
该操作属于红色警告操作,不可逆操作。删除水分子后,无法通过Ctrl-Z进行撤销。
  • 增加删除氢原子
    在line和stick 模式下面可以看到H原子,cartoon模式下面看不到氢原子 因此在line或者stick模式下,执行下述操作。
  • A->Hydrogens->remove 删除所有氢原子
  • A->Hydrogens->add 增加所有氢原子
  • A->Hydrogens->remove non polar 删除所有非极性氢原子,我们可以看到C上的氢原子全部被删除
  • A->Hydrogens->remove 再次删除所有氢原子
  • A->Hydrogens->add polar 增加极性氢原子

第三部分 对象的复制(追加) 剪切 删除 重命名

  • 复制 A->Copy to object->new
我们会得到一个名为new的object,为了和4hbk object 进行区分。
对4hbk 的obect 点击C->cyan 和S->AS ->cartoon
对obj01 点击 C->green 和S->as->stick
  • 复制追加 (object1)A->Copy to object->
同时打开两个文件,得到object1 和object2。
对object1点击A->Copy to object-> object2。
这时候object2就包含了object1, 可以删除object1。
  • 重命名 obj01-> 4hbk_02
    对obj01 点击A->rename object
  • 删除 A->delete object
  • 剪切 适合选中的对象 A->Extract

我们可以通过剪切的操作把配体和蛋白分开,首先选中配体,然后点击A->extract object 就可以了, 原来结构中的配体就跑到obj01中了,这样就分开了蛋白和配体。

../_images/splitlig2020-03-12_202822.573956.png

第四部分 Action->generate 操作

  • 显示蛋白的静电势图 Action->generate->vacuum_electrostatics->protein contact potential 就可以了
../_images/vacuum_electrostatics2020-03-13_194618.813214.jpg

查看小分子和蛋白的氢键作用

由于4hbk 蛋白中没有小分子,这里我以 PDB id: 为例演示。 点击 A->preset->ligand sites 效果如图所示,其中黄色的虚线就是氢键。

对标注的氢键,查看距离和角度,进一步确定氢键的合理性和强度。

查看小分子和蛋白的相互作用,推荐软件 schrodinger中ligand interaction。 制作相互作用的二维图,根据提示,然后再在pymol确认并绘制这些相互作用。

查看受体和配体之间的极性作用

鼠标选中配体,出现“sele” object,然后点击action->find polar contacts->to other atom in object.

../_images/polorINT2022-06-18_165842.910397.png

注解

to other atom in object: 受体和配体之间的相互作用

to any atom: 同时考虑受体和配体之间的作用,以及配体内的极性作用。

蛋白对象的Hide操作

和remove delete 操作相比,hide操作更加温和, 把不需要的东西暂时掩藏起来,通过Show 可以重现显示出来。 我们先上述方法,构建4hbk 和4hbk_02 两个object, 这一次把4hbk 设置成cyan 颜色的cartoon, 4hbk_02设置成green颜色的ribbon,如图所示。 如果要掩藏4hbk_02,有2种方法 - 对4hbk_02 点击H->ribbOn - 直接点击4hbk_02的名字

../_images/HIDE.png

查看该结构的序列(Sequence)

点击左下角的S,即可显示蛋白的序列信息,如图所示,再点击一次S,则掩藏序列信息。 S是单词Sequece的缩写。

../_images/seq.png

选择蛋白的特定残基

我们通过软件 D3Pockets 可以确定4hbk中口袋中氨基酸残基的组成:

ILE15-TRP20, TYR39, ASP43-ALA45, VAL47, TYR48, LYS77, TRP79, ASN80,
LEU108, HIS110, TRP111, LEU115, PHE122, LEU130, SER159, ASN160, GLN181,
GLU183, HIS185, 185 207 208 209
210 211 222 223 240 241 243 244
255 256 257 258 263 264 266 267
270 292 293 294 295 298 306
我们点击Sequence,并将Selecting模式切换为residues,然后基于残基编号进行选择。
把上述残基选中以后会临时保存在sele的object中,我们把它复制到obj01的Object中,
并重名为Pocket,然后对Pocket的Object,显示其表面,结果如图所示。
../_images/PKTsurface.png

选择感兴趣的object周围4A的氨基酸残基

  1. step1. 鼠标点击感兴趣的object,在右侧窗口出现sele的object
  2. step2. 点击 sele 旁边的A(action)->modify ->around ->residues within 4A

蛋白对象的着色操作

pymol中内置了多种不同的着色方案,如图所示:

  • 按照原子类型着色

    点击object上的 C按钮 -> by element

  • 按照二级结构着色

  • 按照b-factor着色

  • 按照整体着色

../_images/color.png

设置背景颜色

背景颜色默认是黑色的,发表文章的时候背景颜色通常设置为白色。 | 点击菜单栏中的 Display->background->white 如图所示:

../_images/bg_color.png

制作b-factor-value 图

点击A->preset->b-factor putty, 如下图所示:

../_images/bfactor2020-07-23_220304.159168.png

对象的Label操作

添加label

选择需要Label的对象 | 然后点击对象上的L按钮,根据需要,可以标记残基的名字,原子的名字,范德华半径、元素的名字等。

1. L->residue 在α碳原子上标记其残基名字和编号 (常用)
2. L->residue name 在所有原子上标记残基名字 (不常用)
3. L->clear 删除该对象上所有的Label
4. L->element symbol 显示对象上所有原子的元素名字
5. L->vdw radius 产看原子的范德华半径

对于蛋白醛糖还原酶(PDB ID: 4HBK),我们在UniProt 数据库中查询得到,其口袋中的重要残基有: TYR48、LYS77 和 HIS110。

我们对这三个残基展示其为stick模式,并掩藏主链,并通过label按钮标注其氨基酸残基的名字。 移动Label,使其更加清晰可见。具体操作流程如下:

1. 载入4hbk 蛋白
2. 在4hbk object 上点击 S->as cartoon
3. 点击右下角的sequence开关按钮,选择 TYR48 LYS77 HIS110 三个残基,得到sele 临时object
4. 在sele object 上点击 S->stick, H->main chain
5. 在sele object 上点击 L->residue
6. 设置背景为白色,点击菜单栏中 Display->background->white
7. 点击Mouse Mode 切换为 editing 模式
8. 按住ctrl键不放,然后将鼠标移动到残基标签上方,并按下鼠标左键不放,然后移动鼠标,就可以调整标签的位置。
9. 调整结束后,点击Mouse Mode 切换为 view 模式

效果如下图所示:

../_images/label.png

移动标签label

以PDB ID: 1w22蛋白为例,为其中的锌离子添加标签。

注意

注解

sphere模式下不能添加label;借用PS中复制图层的概念。为锌离子添加label。

step1 选中锌离子;
step2 复制锌离子;仅仅显示该object,并显示为lincore模式
step3 添加label; 进入edit模式,按住ctrl移动label.
step4 显示所有的object.

操作如下面的动画所示。

点击查看动画教程

设置label的样式

调整配体的位置

pymol中包含配体和蛋白,如何调整配体和蛋白的相对位置。

以PDB ID: 1hkv 为例,其中配体小分子为PLP

step1 打开蛋白文件,定位到想要移动的配体。
step2 extract 操作,提取配体为新的object。
step3 对蛋白进行固定(最大化窗口),A(ACTION)->MOVEMENT->PROTECT
step4 在edit模式下,按住shit 就可以通过鼠标移动配体。

操作如下面的动画所示。

点我查看教程动画

调整修改二面角

  1. step1 Mouse Mode调整到edit模式;
  2. step2 按住ctrl+鼠标右键 点击需要修改的二面角的中间键,需要转动左边,就点击左边。需要转动右边,就点击右边。
  3. step3 按住ctrl+鼠标左键,上下移动鼠标,调整二面角;
  4. step4 调整到想要的二面角,Mouse Mode调整到view模式;

测量距离

点击菜单栏中的Wizard->Measurement 就可以进行距离测量。然后分别选择两个2个原子就可以显示这2个原子的距离。

比如我们想测定TYR48中侧链上的O原子到Lys77侧链N原子的距离,如下操作即可:

1. 点击Wizard->Measurement;打开了Measurement 面板,位于object list面板下方;
2. 鼠标点击TYR48侧链上的O原子 和 LYS77 侧链上面的N原子;
3. 如要测定其他2个原子的距离,鼠标继续点击选择2个原子就可以了;
4. 测定完成后,点击Measurement 面板中的done 就可以了。

效果如图所示:

../_images/mea_distance.png

作业:

1. 测定TYR48的α碳原子和LYS77的α碳原子的距离? 答案是11.6A

默认测定的距离是保留1位小数,如果想要显示2位小数,可点击菜单栏中的Setting->Edit All, 然后搜索label_digits,找到该索引,并把后面的数值设置为2就可以了。如图所示:

../_images/label_digits.png

测量角度

点击菜单栏中的Wizard->Measurement,打开measurement 面板,默认是测量距离的模式。
点击Measuremnet 面板中Distances按钮,将Measurement Mode从Distances 模式切换到Angles模式。
然后依次选择3个原子,如ABC,则可以测出角度<ABC的角度。

比如我们想测定Lys77侧链CE、NZ原子和的TYR48中侧链上的O原子的角度,如下操作即可:

1. 点击Wizard->Measurement;打开了Measurement 面板,位于object list面板下方;
2. 点击Measuremnet 面板中Distances按钮,切换到Angles按钮;
2. 鼠标依次点击 LYS77 侧链上面的CE原子、N原子和TYR48侧链上的O原子,完成测定
4. 测定完成后,点击Measurement 面板中的done 就可以了。
5. 调整Label的位置,保存图片。

效果如图所示:

../_images/mea_angle.png

测量二面角

同测量距离和角度的操作,只需要将测量模式切换为Dihedrals。

测量环的距离

同测量距离和角度的操作,只需要将测量模式切换为Dihedrals。

该模式是用来测量两个环中心的距离,所以选择的2个原子必须位于环上,如苯环、环己烷、N杂环等。否则将按照Distances模式进行处理。

突变氨基酸残基

如把4hbk 中的arg-40 突变成 lys-40,

  1. 在菜单中点击wizard->mutagenesis->protein
../_images/mutate.png

设置透明度

鼠标操作只能基于显示模式进行设置,如:cartoon surface sphere stick等

1. 将cartoon 设置成透明的,透明度50%;点击菜单栏中的Setting->Transparency->cartoon->50%;
2. 将Surface 设置成透明的,透明度50%;点击菜单栏中的Setting->Transparency->surface->50%;
3. 将Stick 设置成透明的,透明度50%;点击菜单栏中的Setting->Transparency->stick->50%;
4. 将sphere 设置成透明的,透明度50%;点击菜单栏中的Setting->Transparency->sphere->50%;

除了可以设置透明度外,还可以设置透明的方式,有如下几种透明模式:

1. Uni-layer; 点击菜单栏中的Setting->Transparency->Uni-layer
2. Multi-Layer; 点击菜单栏中的Setting->Transparency->Multi-Layer
3. Multi-Layer(real time oit); 点击菜单栏中的Setting->Transparency->Multi-layer(real time oit)
4. Fast-ugly; 点击菜单栏中的Setting->Transparency->Fast-ugly

在Label操作中,我们将整个蛋白展示为cartoon,并将HIS 等3个残基展示为stick模式; 这时候我们设置cartoon为透明50%,用4种不同的透明模式渲染,效果如下:

../_images/tran1.png

Fig 1. Uni-layer 透明效果

../_images/tran2.png

Fig 2. Multi-Layer 透明效果

../_images/tran3.png

Fig 3. Multi-Layer(real time oit)

../_images/tran4.png

Fig 4. Fast-ugly

雾化(fogging)处理

PyMOL中支持各种雾化处理,保证depth_cue是开启的。

前面清晰,后面雾化可通过滚动鼠标中键进行调节。

向上滚动,雾化程度减轻;向上滚动,雾化程度加深。

../_images/fogging2020-05-10_201146.083536.png

Fig 1. fogging 效果

../_images/unfogging2020-05-10_201149.226122.png

Fig 2. unfogging 效果

完全不想要雾化处理,可以点击 Display->Depth cue (Fogging) 取消。

或者使用命令关闭。

set depth_cue, 0

设置不同的光照模式

PyMOL2 中内置5种不同的光照模式:default, metal(金属), plastic(塑料), rubber(橡胶), X-ray。

点击Plugin->lighting Settings进行设置不同的光照,如下图所示图。

../_images/lightset2020-05-10_134026.400605.png

除了默认的5种模式外,你也可以通过设置光源的参数,达到自己想要的效果。

下面,我们查看蛋白的静电势表面在不同光照模式下的效果。

../_images/light_default2020-05-10_134032.055405.png

Fig 1. Default光照效果

../_images/light_metal2020-05-10_134036.326391.png

Fig 2. Metal光照效果

../_images/light_rubber2020-05-10_134044.483192.png

Fig 3. Rubber光照效果

../_images/light_xray2020-05-10_134048.345495.png

Fig 4. Xray光照效果

选择模式:

根据不同的需求,切换到不同的选择模式,快速选择自己想要的原子:

1. Residues 残基选择模式
2. Atoms 原子选择模式
3. Molecules 分子选择模式
4. chain 链选择模式
5. Objects 模式
6. C-alphas α碳原子模式
7. Segments 片段模式

我们先将蛋白Show->as wire;然后把MET-1第一个氨基酸残基show stick;如图所示,

../_images/select.png

我们切换到不同的模式,选择甲硫氨酸上的硫原子。

../_images/atom.png

Fig 1. atoms模式下点击硫原子的效果

../_images/res_select.png

Fig 2. res模式下点击硫原子

../_images/chain_select.png

Fig 3. chain模式下点击硫原子

../_images/mol_select.png

Fig 4. mol模式下点击硫原子

从上图我们也可以看到,不同模式的区别。这里我简单解释下:

res模式:我们点击的是硫原子,硫原子所在的res是MET-1,因此选中的是MET-1
chain模式:我们点击的是硫原子,硫原子所在的chain A,因此选中的是所有属于chain A的原子。
mol 模式: 我们点击的是硫原子,pymol 中是通过共价键来区分是否属于一个分子,4hbk 蛋白中间缺失了部分残基,整个蛋白分成了2部分。这里选择的是硫原子所在的那一部分。

保存或者导出结果

PyMOL 和 PhotoShop 有点类似,PyMOL中的Object 类似于 PhotoShop中的图层。

  1. PyMOL 可以将会话保存为pse文件,File->Save Session;pse 文件类似于PS中的psd文件,方便修改调整。
  2. PyMOL 可以将object 导出为结构文件,File->export molecule,然后从selection的下拉框中选择需要导出的object, all 代表所有的object; enable 代表的可见的object;
  3. 保存图片,File->export image as->png; 在新版本的,可以使用右上角的Ray/Trace按钮,设置图片大小 分辨率,进行保存图片。

4. 保存动画,File->export movie as->mpeg; PyMOL仅仅内置了 mpeg_encode 编码视频方式,默认只能保存mpg格式的动画。 可自行下载ffmpeg,从而可以保存为多种格式,如gif,mov,mpg等

设置pse的版本号,建议版本为0.99, 这样PyMOL 和 PyMOL2都可以打开pse 文件
set export_pse_version,0.99

删除蛋白的一条链,然后保存为pdb

step1. 切换到chain模式
step2. 点击需要需要删除的Chain就可以选中chain
step3. 对新产生的sele object进行删除。

点我查看动画教程

移动object在列表中的顺序

鼠标右击待移动的object,按住鼠标不放,移动鼠标,调整object在列表中顺序。