PyMOL 操作手册
The man will be silent, the woman will be tears.
– itwangyang
翻译整理:itwangyanng
2024 年 11月 29 日
目录
0.1.1 Windows 系统开源版 PyMOL 的安装… 5
3.6 使用 AutoDock\Vina 进行分子对接… 85
3.10.3 PyMOLshortcuts 快捷命令表… 103
初识 PyMOL
PyMOL 是一个分子三维结构显示软件,适用于创作高品质的小分子或是生物大分子(特别是蛋白质)的三维结构图像。现在由 Schrödinger 开发、支持和管理,现在已经更新到 2.6 版。有企业版、政府和学术版、教学版,还有开源版。除了开源版和教学版外,其他都是需要付费购买的。本章节介绍开源版和教育版的 PyMOL 的下载与安装方法。
0.1 安装 PyMOL
0.1.1 Windows 系统开源版 PyMOL 的安装
本文使用的系统平台为 64 位 Win11,Anaconda 3,python 3.9。电脑中没有 Anaconda 3 的小伙伴可在以下地址下载安装:
https://www.anaconda.com/products/distribution
下载与 Anacondad3 的 Python 版本一致的 PyMOL 以及依赖包 Pmw 的 whl 文件,下载地址如下:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
“pymol-2.6.0a0”表示 PyMOL 的版本号,“cp39”对应 Python3.9,系统为 64 位选择“amd64”, 32 位选择“win32”,我们这里选择“pymol‑2.5.0‑cp39‑cp39‑win_amd64.whl”;类似的 Pmw 选择“Pmw‑2.0.1‑py3‑none‑any.whl”下载。
Anaconda 3 安装完成后,可在电脑菜单中找到 Anaconda Powershell Prompt(Anaconda3)并
打开,为了避免包冲突,单独创建一个环境(命名为 py39):
conda create -n py39 python=2.7
进入环境:
conda activate py39
进入含下载号的 PyMOL 以及依赖包 Pmw 的 whl 文件的文件夹中(需根据自己路径更改 cd 命令后的字段):
cd C:\Users<Your Username>\Downloads\PyMOL_installation
安装 pmw 和 PyMOL:
pip install .\Pmw-2.0.1-py3-none-any.whl pip install .\ pymol‑2.5.0‑cp39‑cp39‑win_amd64.whl
随后,我们便可看到有成功安装的提示。在 Anaconda Prompt 中输入 pymol 即可用命令启动
PyMOL;或者可进入 Anaconda 的安装目录,找到 Anaconda3\Scripts 文件夹,里面有 pymol.exe
执行文件,做一个快捷方式放桌面可以更方便使用!
启动后 PyMOL 会自动检测运行环境,可能有些插件还需要补充依赖包,如果需要直接 pip 安装就行。
0.1.2 教育版 PyMOL 的下载安装
如果你有一个教育邮箱的账号,那么使用教育版的 PyMOL 将非常简单。
首先进入官网:
点击“BUY LICENSE”,在打开的新页面点击“Student/Teacher”;
填写自己的相关信息,提交后等待激活邮件即可;
收到邮件后,根据邮件提供的下载地址及账号密码下载 licence 保存。
根据自己的电脑系统在官网下载对应的安装包,根据提示进行安装即可。安装完成后,会弹出提示窗口,选择下载好的 licence 导入就可以完成激活了。此外,每次申请的 licence 为期一年,一年后可以重新申请激活即可。
0.1.3 PyMOL 学习资源
PyMOL 的教程网上就有很多,可以轻易的检索获得,这里列举一些常用的可能会有帮助的学习资源。
1.PyMOL 官网:https://pymol.org/2/
2.PyMOL Wiki:https://pymolwiki.org/index.php/Main_Page
- PyMOL Documentation:https://pymol.org/dokuwiki/doku.php?do=show&id=start
4.Open-Source PyMOL:https://github.com/schrodinger/pymol-open-source
还有很多博主提供了很不错的教程,如:
PyMOL 中文教程:http://pymol.chenzhaoqiang.com/
B 站 UP 主【钰沐菡】主页:https://space.bilibili.com/1119860191
B 站 UP 主【酱要脱发的计算专渣】主页:https://space.bilibili.com/1047874173
B 站 UP 主【I_am_Becky】主页:https://space.bilibili.com/122551675
在微信公众号搜索也是值得推荐的渠道,如大家也可能比较熟悉的下面这些微信公众号:
一、PyMOL 基础操作
1.1 PyMOL 界面
PyMOL 的界面主要由两个部分组成,控制窗口(Control window)和显示窗口(Viewing
window)。其中控制窗口主要包括菜单栏(Pull-down menus)、操作记录窗口(Feedback window)、常用控制按钮窗口(Control Buttons)、命令窗口(Command line);显示窗口主要包括可视化窗口(Display area)、对象列表(Object menu)、鼠标模式(Mouse hints)、动画控制(Movie controls)以及命令窗口(Command line)。
1.2 设置工作路径
在菜单栏选择“File -> Working Directory -> Change”来设置新的路径为工作目录。默认文件的打开和保存都从工作目录开始,下载文件的保存位置也是在工作目录。建议在进行不同项目时设置不同的工作目录,方便内容的整理和查找。
1.3 导入蛋白
下面我们导入一个蛋白结构进行练习,PyMOL 中有多种方法可以导入蛋白结构。
如果本地文件夹中已有结构文件,那么可以通过菜单栏点击“File -> Open”选择文件导入;
当然也可以使用命令指定文件,如在命令行输入(注意修改文件路径):
PyMOL> load ~/pymol/pdb/1FPU.pdb
如果需要直接从 PDB 数据库中下载蛋白结构,PyMOL 很容易实现,在菜单栏点击“File -> Get PDB…”,在弹出框中输入所需下载的 PDB ID,可自动将该蛋白结构从网站上下载到本地并打开。
也可以使用命令直接下载,如:
PyMOL> fetch 1fpu
当然,直接从下载地址导入也可以,如输入命令:
PyMOL> load http://www.rcsb.org/pdb/files/1fpu.pdb
1.4 鼠标操作
菜单栏 Mouse 选项中可以更改鼠标模式和选择模式。一般鼠标有三个主要的按键,即鼠标左键、中键和右键。
按住鼠标左键,上下左右移动鼠标可以实现图像的旋转;
按住鼠标右键,上下左右移动鼠标可以移动图像;按住鼠标中键,向上或向下移动鼠标,可以放大/缩小图像;
此外,还有一些其它的常用操作,如滚动鼠标中键可实现截面效果;
也可配合键盘实现更多操作,通常使用 Shift、Ctrl、Shift+Ctrl 这几个按键,如“Shift+Ctrl+ 鼠标”可设定图像旋转中心;“Shift+鼠标右键”可调节截面。
1.5 选择对象
在 PyMOL 中,如果需要选择某部分结构时,可以点选或框选。当我们选中某些结构时,可视化窗口会以粉色的点突出显示,并且在对象列表窗口会出现新的条目“”,方便对选择对象执行一系列操作;
修改鼠标选择模式往往很有用,在鼠标模式窗口点击“Selecting”后方的红字,可以更改选择模式,如 Atoms、Residues、Chains、Object 等,方便快速选取目标对象;
1.6 对象菜单
在对象列表窗口可以看到,每个对象都有 A S H L C 五个按钮,这五个按钮分别表示 Action、
Show、Hide、Label、Color,可以对相应的对象完成一些操作。
具体的操作内容可点击按钮查看,这里我们就只做一些示例,之后的内容中会结合具体的示例进行介绍。
“A”按钮可对相应对象进行各种处理,如居中、重命名、标记、删除等等;也可以使用预设的方案展示 3D 结构,如点击“A -> preset - > ligands sites -> solid surface”来展示配体分子结合口袋;
大家可尝试使用不同的预设方案,了解预设的一些显示效果。
“S”按钮可设置相应对象的显示样式,如以卡通、线状、棒状、球状等显示 3D 结构。
“H”按钮可隐藏相应对象的某种样式,也可以灵活的隐藏某些特定结构,如隐藏水分子、侧链原子、表面等。
“L”按钮可对相应对象添加标签,如对氨基酸残基进行标记;
此外,可以在菜单栏点击“Setting -> Label”对标签的字体、大小、颜色等进行更改;
“C”按钮可对相应对象的颜色进行更改,可选择使用系统预设的配色方案,如点击“C -> by ss -> Helix Sheet Loop”使 3D 结构按照二级结构着色。
1.7 重命名对象
在 1.5 的介绍中,我们知道当选中某对象时,该对象会显示在对象列表中,并且名称为 “”,需要一提的是,当我们选择新的对象时,新对象就会替代旧对象命名为“”。这样的话,如果需要对原来的对象进行修改时,就需要重新选择。而在实际的作图过程中,我们往往需要来回多次进行修改。此时,就需要重命名对象了。
只需在对象列表窗口,点击相应对象条目的“A -> rename selection”,然后输入名称即可。
如此一来,当我们选择的新的对象,重命名的对象依然保留。
1.8 提取新的对象
使用PyMOL绘图时,我们往往需要对某部分结构进行单独处理,或者单独保存某部分结构。这时可以提取该部分结构作为新的对象,本例中导入了蛋白-配体的复合物结构,我们将配体提取出来。可以选中配体分子后,点击“A -> extract object”就可将蛋白和配体结构分离。
类似的,如果需要复制某部分结构,如对某部分结构做叠合效果,可以点击“A -> copy to object”进行复制。
1.9 合并对象
有时需要合并两个对象,比如合并配体与蛋白为一个对象,方便保存为复合物结构。本例中配体的名称为“obj01”,蛋白的名称为“1t46”,我们将其合并为“complex”;可输入以下命令:
PyMOL> creat complex, 1t46 obj01
1.10 显示序列窗口
可通过菜单栏点击“Display -> Sequence”来显示序列窗口,也可点击动画控制窗口中的“S” 按钮来显示序列窗口。在序列窗口中可以快速的选择氨基酸残基、水分子、配体分子、辅因子等,被选中的部分会高亮显示。
1.11 结构叠合
同时导入多个结构,点击叠合目标对象后的“A -> align -> all to this(*/CA)”即可基于序列进行结构叠合;
如果我们移动其中的一个蛋白结构,还可显示叠合原子之间的线条。在 PyMOL 中如果需要移动某一对象,可点击“A -> drag coordinates”,然后“shift+鼠标中键”移动即可。
在 PyMOL 中,还有多种结构叠合的方法,可通过“cealign”、“align”、“super”、“pairfit”、
“fit”等命令实现。
如当蛋白序列相似性低,而结构相似性高的话,可通过“super”命令来进行结构叠合,如蛋白 1OKY 与 1T46 使用“super”命令叠合;
如果序列相似性很低,也可以使用“cealign”命令基于 CE 算法进行蛋白结构叠合。比如下图中蛋白 4L6R 与 4BUO 使用“cealign”命令进行叠合;
1.12 生成静电势图
表面静电势是指在分子周围某个曲面上静电势的分布,我们在文献中会经常看到分子表面静电势图,不同表面区域静电势大小通过不同颜色展现,使分子表面上静电势的分布一目了然。在 PyMOL 中可简单的绘制静电势图,点击“A -> generate -> vacuum_electrostatics -> protein contact potential”即可。
1.13 测量工具
在菜单栏点击“Wizard -> Measurement”可打开测量工具,依次点击两个原子,即可测量这两个原子的距离,比如肽链的长度可测量 C 端到 N 端的距离,分析蛋白-配体相互作用可测量相互作用的距离等;
点击 Measuremnet 面板中“Distances”按钮,可切换测量模式,如测量角度可选择“Angles”,测量二面角可选择“Dihedrals”等;
此外,测量某原子到环的距离或环到环的距离非常有用,将 Measurement Mode 设置为
“Distances to Rings”模式即可,选择环结构时,只需点击环上任一原子即可。
1.14 参数设置
在菜单栏选择“Setting -> Edit All”,在打开的 PyMOL Setting 面板中能够对各项参数值进行修改,如 dash 项的 dash_color、dash_radius 参数,更改并回车即生效。
此外,选择 Setting 栏的 Label、Cartoon、Surface、Transparency 等选项,可以对 Label、显示样式细节、透明度等参数进行调整。
1.15 设置光照模式
实际绘图中,光效的调节十分重要,光效使用不同的参数设置,可以获得截然不同的图片风格。
PyMOL 中预设了 5 种不同的光照模式:default(预设),metal(金属),plastic(塑料), rubber(橡胶),X-ray。在 External GUI 的菜单栏选择 Plugin>lighting Settings 进行设置不同的光照,通过调节参数面板的滑块可得到不同的效果。
1.16 保存文件
在菜单栏选择“File -> Save Session As”,能对当前会话文件进行保存,保存文件为.pse 格式,
下次打开此文件即能恢复到当前所在状态;
选择“File -> export molecule”,然后从 selection 的下拉框中选择需要导出的 object, all 代表所有的 object;enable 代表的可见的 object;保存格式可以为 pdb、mol2、sdf 等。
1.17 导出图像与动画
选择“File -> export image as -> png”,能对当前窗口中的图像进行保存,保存格式为.png;
默认情况下导出的图片大小与当前结构显示窗口的大小一致,为方便导出固定大小的图片,可通过以下命令修改窗口大小:
PyMOL> viewport 1200, 900
此外,进行渲染可获得质量更高的图片,可直接使用 ray 命令:
PyMOL> ray 1200, 900
也可以指定保存图片的格式以及 DPI 大小、渲染模式等,如输入命令:
PyMOL> png my_image.png, 1200, 900, 300, 1
选择“File -> export movie as”可对动画进行保存,自行下载 ffmpeg,可以保存多种格式,如 gif、mov、mpg 等。
1.18 突变氨基酸残基
首先选中要突变的氨基酸残基,然后在菜单栏点击“Wizard -> Mutagenesis -> Protein”,点击 “No Mutation”按钮选择突变氨基酸,点击“Done”即可。
1.19 移动标签
添加标签后,标签可能会被结构遮挡,此时就需要移动标签。在鼠标模式窗口,点击“Mouse
Mode”后面的“3-Button Viewing”变为“3-Button Editing”,然后按住键盘“Ctrl”键不放,将鼠标移动到残基标签上方,并按下鼠标左键不放,然后拖动鼠标,就可以调整标签的位置。
二、在 PyMOL 中使用命令
在第一章节中已经有部分内容涉及了命令的输入,本章进行更为详细的介绍。PyMOL 中有
2 个命令输入窗口可供命令输入,如下图所示,选择其中一处输入命令即可:
2.1 查看与切换工作目录
默认打开和保存文件,都是在工作目录中,建议修改工作目录以便查看和导入项目更加方便。
查看当前工作目录,命令如下:
PyMOL> pwd
修改工作目录,如修改工作目录为 E 盘下面的 PyMOL 文件夹:
PyMOL> cd E:/PyMOL
2.2 记录工作
如果使用 PyMOL 进行比较复杂的项目时,我们可能需要在一个可以读取和编辑的日志文件中记录我们在 PyMOL 中输入的所有命令,这样在下次进行类似的项目时,可以直接应用而不需要逐一输入命令。
如果要记录命令,语法为:
log_open log−file−name
如输入以下命令:
log_open log.pml
这里我们以 PyMOL Gallery 中的一张图为例,该图如下所示:
我们以 PyMOL Gallery 给出的命令记录在“log.pml”中,以记事本打开可见内容如下:
下面我们在 PyMOL 中导入一个新的蛋白结构 1T46;
然后输入以下命令应用我们保存的“log.pml”脚本,输入以下命令就可以一键获得风格一致的图片(本例中文件放在工作目录,如果在其它路径命令中需要添加文件路径):
PyMOL> @ log.pml
PyMOL> @~/pymol/pml_scripts/MyScript1.pml *#*指定路径
2.3 载入数据
可以从文件中载入 PDB,语法为:
load data-file-name
例如:
load E:\PyMOL\1fpu.pdb
PyMOL 支持 Tab 键命令补全,命令输入后,PyMOL 会打开读取“1fpu.pdb”,创建并命名相应的对象,在可视化窗口中显示图像。
默认状态下,PyMOL 会在文件读取后命名对象,也可以自己重命名对象,语法为:
load data-file-name,object-name
例如,将对象重命名为“test”
PyMOL> load E:\PyMOL\1fpu.pdb,test
2.4 下载蛋白
fetch 命令可以根据 PDB ID 编号下载蛋白结构到工作路径,并载入到 PyMOL 中显示,例如:
PyMOL> fetch 1FPU #下载PDB ID 为1FPU 的蛋白结构,文件格式为cif
PyMOL> fetch EBE #下载编号是EBE 的配体小分子,文件格式是cif
PyMOL> fetch 1FPU,name=“test”, type=pdb # 下载PDB ID 为1FPU 的蛋白结构,
#文件格式为pdb,载入PyMOL 中设置名字为test
type 支持的文件格式有:cif、mmtf、pdb、pdb1、2fofc、fofc、emd、cid、sid、cc
2.5 操控对象
在 PyMOL 中创建了一个对象后,可以使用鼠标进行操控,也可以使用命令行进行操控。 ①改变对象的表示形式(representation)语法为:
hide representation, object-name *#*隐藏对象某种样式(不加对象默认为所有) show representation, object-name *#*显示对象某种样式(不加对象默认为所有)
比如:
PyMOL> hide lines # 以线状显示的对象从视野中消失
PyMOL> show sticks # 对象以棍状结构显示
类似的,可以设置 cartoons、ribbons、dots、spheres、surfaces 以及 meshes。
需要注意的是当使用 show 命令时,新的表示形式出现,但原来的表示形式不会消失。如果想用新的表示形式替代原来的表示形式,可通过“as”命令解决,语法为:
as representation,object-name
例如:
PyMOL> as cartoon,test #不论原来显示多少种表示形式,命令后只显示cartoon 一种
②选择目标进行操作选择并命名目标,语法为:
select selection−name, selection−expression
例如:
select s1,resi 300+301 #选择序号为300 和301 的残基,并命名为s1
对目标进行居中并放大显示,语法为:
zoom selection-name #也可直接用selection-expression 代替selection-name
例如:
PyMOL> zoom s1 #对已命名为s1 的对象进行放大
删除目标,语法为:
delete selection-name *#删除了selection-name,*其对应得数据仍然存在 delete object-name #会将object-name 对应的数据都删除
例如:
PyMOL> delete s1 #只删除s1 的组织形式,对应的原子和化学键仍然存在
PyMOL> delete 1fpu #将1fpu 的原子和化学键都删除
③对象和选择的着色可以通过命令行为选择项和对象应用各种颜色,语法为:
color color−name #对整个object 着色 color color−name, selection−expression #对selection 进行着色
例如:
PyMOL> color white *#*对所有对象着色
PyMOL> color green,1fpu #对1fpu 对象着色
PyMOL> color orange,resi 300+301 #对序号为300 和301 的残基着色
PyMOL> color yellow,resi 300-400 #对序号300~400 的残基着色
PyMOL> color red,ss h #对二级结构helix 着色
PyMOL> color red,ss s #对二级结构beta sheet 着色
PyMOL> color green,ss l #对二级结构loop 着色
④激活和禁用对象和选择项
PyMOL 可以同时打开多个对象。使用“disable”和“enable”命令可以取消对象表示,同时仍然可使用命令控制它们的属性。语法为:
enable object−name
本例中随意导入了两个蛋白结构,分别为“1t46”和“6lu7”;
下面我们使用“disable”和“enable”命令来进行一些操作:
PyMOL> disable 1t46 *#*对象“1t46”在显示窗口中隐藏 PyMOL> color yellow, name c+o+n+ca *#*对象“1t46”和“6lu7”的骨架原子均以黄色 *#*示,但对象“1t46”仍然为不可见状态 PyMOL> enable 1t46 *#*对象“1t46”显示,并且骨架原子为黄色
类似的,还可以使用“disable”命令来消除显示窗口中标识最后命名选择的粉红色圆点。语法为:
enable selection−name
例如:
PyMOL> select bb, name c+o+n+ca *#*选择骨架原子,显被选择部分显示为粉色圆点
PyMOL> disable bb *#*粉色的小点消失了,但是已命名的选择项“bb”仍然可见
PyMOL> color red, bb *#*仍然可对“bb”进行操作
2.6 选择表达
选择表达(selection-expression)表示的是一些被选中的部分,它们可以是一些原子、残基、 Helix 等,或者它们的混合物。选择表达由“selector(选择符)”和“identifier(标识符)”组成,其中“selector”定义了某类属性,而“identifier”则定义了在该属性下需要被选择的部分。
①单字选择符(Single−word Selectors)
最简单的 selection-expression 是单字选择符,这些选择符没有标识符,它们自己就是完整的。
单字选择符 | 缩略选择符 | 描述 |
---|---|---|
all | * | 当前载入 PyMOL 的所有原子 |
none | None | 没有原子(空选择) |
hydro | h. | 当前载入 PyMOL 的所有氢原子 |
hetatm | Het | 从 Protein Data Bank HETATM records 中载入的所有原子 |
visible | v. | 至少有一种可见表示形式 enabled 对象中的所有原子 |
present | pr. | 当前状态下有确定坐标的所有原子(用于制作电影) |
选择符 none 在向 PyMOL 直接输入命令时不会出现,但它在编程脚本中很有用。如表所示,许多单字选择符都有简短的形式以节省输入。有些缩写形式后面必须跟句号或空格,以便分隔字符。短格式和长格式有相同的效果,所以选择适合你的格式即可。
例如:
PyMOL> color blue,all *#*所有原子变成蓝色
PyMOL> color blue,*
PyMOL> hide hydro *#*所有的氢原子的表示形式被隐藏
PyMOL> hide h.
PyMOL> show spheres, hetatom #PDB 输入文件中被定义为HETATM 的所有原子
PyMOL> show spheres, het #显示为spheres
②属性选择符(Property Selectors)
PyMOL 能够读取 PDB,MOL/SDF,Macromodel,ChemPy Model,Tinker XYZ 等多种格式的数据文件。这些格式文件的某些数据字段允许 PyMOL 为原子指定属性。可以使用属性选择符和标识符根据这些属性对原子进行分组和选择:选择符对应于数据文件中的字段,标识符对应于匹配的目标词或要比较的目标数字。在标识符列表中不同的项目仅用加号(+)分隔,不要在标识符列表中添加空格,选择符“resi”接受“-”连接来连续的选择。
例如:
PyMOL> select nterm, resi 1+2+3 #残基1、2 和3 被选择
PyMOL> select nterm, resi 1−3 #残基1 到10 被选择
在同一标识符后不可同时出现“+”“-”,如“select mistake, resi 1−3+6”。
输入文件中空白字段的标识符是和一对空引号,如:
PyMOL> select unstruct, ss “” # unstruct 包含非二级结构的所有原子
大多数属性选择符匹配它们的标识符:
属性选择符 | 缩略形式 | 标识符及例子 |
---|---|---|
symbol | e. | chemical-symbol-list, 周期表中的元素符号 PyMOL> select polar, symbol o+n |
name | n. | atom-name-list, pdb 文件中的原子名字 PyMOL> select carbons, name ca+cb+cg+cd |
resn | r. | residue-name-list, 氨基酸的名字 3 个字母的氨基酸代码 PyMOL> select aas, resn asp+glu+asn+gln 或最多 2 字母的核苷酸代码 PyMOL> select bases, resn a+g |
resi | i. | residue-identifier-list, pdb 文件中残基的编号 PyMOL> select boy, resi 1+10+100+1000 residue-identifier-range, pdb 文件中残基的范围 PyMOL> select boy, resi 1-10 |
alt | alt | alternate-conformation-identifier-list, 单字母列表 PyMOL> select altconf, alt a+“” |
chain | c. | chain-identifier-list, 单个字母或数字的列表 PyMOL> select firstch, chain a |
segi | s. | segment-identifier-list, 一些字母(最多 4 位)的列表 PyMOL> select ligand, segi lig |
flag | f. | flag-number, 从 0 到 31 的单整数 PyMOL> select f1, flag 0 |
numeric_type | nt. | type-number, 单整数 PyMOL> select type1, nt. 5 |
text_type | tt. | type-string, 最多 4 字母 PyMOL> select subset, text_type HA+HC |
id | id | External-index-number, 单整数 PyMOL> select idno, id 23 |
index | idx. | Internal-index-number, 单整数 PyMOL> select intid, index 11 |
ss | ss | Secondary-structure-type, 代表该类结构的单字母 PyMOL> select allstrs, ss h+s+l+“” |
其他属性选择器通过与数字标识符的比较进行选择:
数字选择符 | 缩略形式 | 例子 |
---|---|---|
b | b | Comparison-operator b-factor –value, 实数 PyMOL> select fuzzy, b > 10 |
q | q | Comparison-operator occupancy-value, 实数 PyMOL> select fuzzy, b > 10 |
formal_charge | fc. | Comparison-operator formal charge-value, 整数 PyMOL> select doubles, fc. = −1 |
partial_charge | pc. | Comparison-operator partial charge-value, 实数 PyMOL> select hicharges, pc. > 1 |
关于原子和残留物名称格式的详细信息可以在 PDB 文件格式的官方指南
http://www.rcsb.org/pdb/docs/format/pdbguide2.2/guide2.2_frame.html 中找到。 ③选择代数(Selection Algebra)
在选择表达中,selector 还可以配合逻辑操作子(logical operator)使用,这样可以表达更加复杂的选择,下表为常用的操作子:
运算符 | 缩略形式 | 效果与例子 |
---|---|---|
not s1 | ! s1 | 选择原子但不包括 s1 中的原子 PyMOL> select sidechains, ! bb |
s1 and s2 | s1 & s2 | 选择既在 s1 又在 s2 中的原子 PyMOL> select far_bb, bb &farfrm_ten |
s1 or s2 | s1︱s2 | 选择 s1 或者 s2 中的原子(也就是包含全部的 s1 和 s2 原子) PyMOL> select all_prot, bb︱sidechain |
s1 in s2 | s1 in s2 | 选择 s1 中的那些原子,其 identifiers(name,resi, resn,chain,segi)全部符合 s2 中对应的原子 PyMOL> select same_atms, pept in prot |
s1 like s2 | s1 l. s2 | 选择 s1 中的那些原子,其 identifiers(name,resi)符合 s2 中对应的原子 PyMOL> select similar_atms, pept like prot |
s1 gap x | s1 gap x | 选择范德华半径与 s1 的范德华半径以最小距离 x 埃分离的所有原子 PyMOL> select farfrm_ten, resi 10 gap 5 |
s1 around x | s1 a. x | 选择以 s1 任何原子为中心,以 x 埃为半径的范围内的所有原子 PyMOL> select near_ten, resi 10 around 5 |
s1 expand x | s1 e. x | 选择以 s1 中任何原子为中心,x 埃为半径,然后把 s1 扩展至该新的范围所包含的所有原子 PyMOL> select near_ten_x, near 10 expand 3 |
s1 within x of s2 | s1 w. x of s2 | 选择以 s2 为中心,x 埃为半径,并包含在 s1 中的原子 PyMOL> select bbnearten, bb w. 4 of resi 10 |
byres s1 | br. s1 | 扩充 s1 到残基 PyMOL> select complete_res, br. bbnear10 |
byobject s1 | bo. s1 | 扩充 s1 到对象 PyMOL> select near_obj, bo. Near_res |
neighbor s1 | nbr. s1 | 选择直接以化学键和 s1 相连的原子 |
PyMOL> select vicions, neighbor resi 10 |
这些逻辑选择还可以组合使用,如:
PyMOL> select chain a and (not resi 125) #选择链a 不包括残基125 的原子
PyMOL> select (name cb or name cg1 or name cg2) and chain A #选择c−beta、
PyMOL> select name cb+cg1+cg2 and chain A #c−gamma−1、c−gamma−2 和A 链原子
就像算术运算一样,逻辑运算的结果取决于先执行哪个运算。它们有先后次序。为了确保操作按照你想的顺序执行,可使用括号,如:
byres ((chain a or (chain b and (not resi 125))) around 5)
PyMOL 将从最里面的括号展开它的逻辑选择。
④原子选择宏(Atom Selection Macros)
宏指令使表达长复杂语句的原子选择成为可能,如:
PyMOL> select pept and segi lig and chain b and resi 142 and name ca
用精简方式表示:
PyMOL> select /pept/lig/b/142/ca
原子选择宏使用正斜杠来定义与标识符对应的字段。宏指令通过布尔算符“and”选择原子,也就是说,被选中的原子必须具有所匹配的标识符:
/object−name/segi−identifier/chain−identifier/resi−identifier/name−identifier
这些标识符形成了一个层次结构,从顶部的对象名称(object-name)到底部的名称标识符(name-identifier)。PyMOL 将宏指令当做一个单词来识别,因此其中不允许有空格。
宏有两种类型:以斜杠开头的和不以斜杠开头的。宏的开头是否有斜杠决定了它是如何被读取的。如果宏以斜杠开头,PyMOL 从层次结构的顶部开始查找字段:斜杠右边的第一个字
段被读取为对象名(object-name);第二个字段作为 segi 的标识符(segi-identifier);第三个作为链标识符(chain-identifier),以此类推。它可以采取下列任何形式:
/object−name/segi−identifier/chain−identifier/resi−identifier/name−identifier
/object−name/segi−identifier/chain−identifier/resi−identifier
/object−name/segi−identifier/chain−identifier
/object−name/segi−identifier
/object−name
例如:
PyMOL> zoom /pept
PyMOL> show spheres, /pept/lig/
PyMOL> show cartoon, /pept/lig/a
PyMOL> color pink, /pept/lig/a/10
PyMOL> color yellow, /pept/lig/a/10/ca
如果宏不是以斜杠开头,则会有不同的读取方式。在本例中,PyMOL 希望从层次结构的底部开始查找字段。不以斜杠开头的宏可能有以下形式:
resi−identifier/name−identifier
chain−identifier/resi−identifier/name−identifier
segi−identifier/chain−identifier/resi−identifier/name−identifier
object−name/segi−identifier/chain−identifier/resi−identifier/name−identifier
例如:
PyMOL> zoom 10/cb
PyMOL> show spheres, a/10−12/ca
PyMOL> show cartoon, lig/b/6+8/c+o
PyMOL> color pink, pept/enz/c/3/n
还可以省略斜杠之间的字段。省略的字段将被解释为通配符,如下所示:
resi−identifier/ resi−identifier/name−identifier chain−identifier// object−name//chain−identifier
例如:
PyMOL> zoom 142/ # 残基142 居中显示
PyMOL> show spheres, 156/ca # 残基156 的α碳显示为sphere PyMOL> show cartoon, a// # 链A 显示为cartoon.
PyMOL> color pink, pept//b #链B 中*“pept”*对象以粉色着色
选择宏必须包含至少一个正斜杠,以便将它们与选择语言中的其他单词区分开来。作为单词,它们不能包含任何空格。在使用宏时,重要的是要理解宏指令转换成长复杂语句形式后才被提交执行,这有助于解释错误信息。
2.7 保存视角
在使用 PyMOL 绘图时,往往需要来回多次进行调整,如果某一视角是我们需要的,我们可以将当前的视角状态储存,之后无论做了任何其它的操作,都可以快速的返回之前保存的视角状态。语法为:
view key, action
比如我们将下图的视角存储,命令如下:
PyMOL> view v1, store *#*当前视角命名为“v1”并存储
下面我们随意进行一些调整,如下图所示:
如果希望回到“v1”的视角状态,只需要输入以下命令:
PyMOL> view v1, recall
可以注意到,恢复的是视角的状态,我们对结构显示样式的更改是不会还原的,此外,视角的状态存储只对当前会话适用,关闭了 PyMOL 窗口视角状态不会存储。
2.8 设置参数
可以通过“set”命令来改变设置,例如:
PyMOL> set cartoon_color,green #cartoon 颜色显示为绿色
PyMOL> set cartoon_oval_width,0.2 #cartoon 厚度设置为0.2
PyMOL> set cartoon_transparency,0.5 #cartoon 透明度设置为0.5
PyMOL> set surface_color,red *#*设置表面的颜色为红色
PyMOL> set label_size,14 #label 大小设置为14
PyMOL> set label_font_id,5 #label 字体设置为id 为5 的字体
PyMOL> set label_position,(x,y,z) #设置label 离默认位置的三维偏移值
PyMOL> set label_digits,2 #设置label 的小数点位数为2 位
PyMOL> set valence,1 *#*开启双键模式
PyMOL> set valence,0 *#*关闭双键模式
PyMOL> set mesh_radius,0.2 #设置mesh 的粗细为0.2
PyMOL> set sphere_scale,0.5 *#*设置小球的大小
2.9 修改标签属性
在 PyMOL 使用的基础篇中,我们为大家介绍了在菜单栏选择“Setting -> Label”可以对 Label 的字体、大小、轮廓等进行设置,通过命令行可更方便进行修改。
如设置距离标签中小数的个数:
PyMOL> set label_distance_digits, 2
类似的设置角度标签中小数的个数:
PyMOL> set label_angle_digits, 2
修改标签字体:
PyMOL> set label_font_id, 12
修改标签大小(负数为 Angstrom-based sizes,大小不会随视角放大缩小改变;正数为 point sizes,大小会随视角放大缩小改变):
PyMOL> set label_size, -2
修改标签颜色:
PyMOL> set label_color, red
设置标签轮廓的颜色:
PyMOL> set label_outline_color, black
此外,还可以设置标签的背景色,如:
PyMOL> set label_bg_color, aquamarine
2.10 设置自定义的颜色
虽然 PyMOL 中提供了多种颜色可供选择,有关 PyMOL 中的各种颜色,可在以下链接进行查看:
https://pymolwiki.org/index.php/Color_Values
很多时候我们需要设置自定义的颜色,只需要提供颜色的 RGB 代码即可。用法为:
set_color name, [ red-float, green-float, blue-float ] set_color name = [ red-float, green-float, blue-float ] #(DEPRECATED)
比如我们自定义一个“color1”,之后就可以直接使用该颜色进行着色:
PyMOL> set_color color1, [167,219,247]
现在我们就可以直接应用自定义的颜色了,如:
PyMOL> color color1, 1t46
2.11 高级着色
①按原子类型着色
使用“util.cba*”命令可根据原子类型着色,其中氧原子为红色、氮原子为蓝色、氢原子为白色,碳原子根据命令指定颜色着色。其中:
命令 | 碳原子颜色 |
---|---|
util.cbag | green(绿色) |
util.cbac | cyan(青色) |
util.cbam | light magenta(淡品红) |
util.cbay | yellow(黄色) |
util.cbak | pink(粉红色) |
util.cbas | salmon(浅橙色) |
util.cbaw | white/grey(白色/灰色) |
util.cbab | slate(深蓝灰色) |
util.cbao | bright orange(亮橙色) |
util.cbap | purple(紫色) |
例如:
PyMOL> util.cbay three #对象three 根据原子类型着色,碳原子为黄色
此外,“util.cnc”命令与“util.cba*”命令类似,可根据原子类型对所有原子着色,但碳原子除外。例如:
PyMOL> util.cnc three #对象three 根据原子类型着色,碳原子颜色不发生改变
当然,如果我们不想使用默认的原子着色方案,别忘了“set”命令,如:
PyMOL> set_color oxygen= [1.00 , 0.40 , 0.0 ] *#*设置氧原子的颜色
类似的,可以设置碳(carbon)、氮(nitrogen)、氢(hydrogen)、硫(sulfur)等原子的颜色。 ②按链着色
PyMOL> util.chainbow three #对象three 每条链着彩虹色,N 端(蓝色)到C 端(红色)
PyMOL> util.cbc three *#*对象每条链着不同颜色
③按各类属性着色使用“spectrum”命令可根据结构中各类属性进行着色,用法为:
spectrum [expression [, palette [, selection [, minimum [, maximum [, byres ]]]]]]
其中“expression”可以为任何有效的表达式,如 count(原子编号)、pc(部分电荷)、b(B 因子)等;“palette”可以指定颜色列表;“selection”选择表达;“minimum”和“maximum” 指定最小最大值;“byres”控制是否按每个残基应用。
例如:
PyMOL> spectrum b, blue_red, minimum=10, maximum=50 #按B 因子着色
PyMOL> spectrum count, rainbow_rev, chain A, byres=1 *#*按原子编号着色
PyMOL> spectrum resn *#*按氨基酸残基名称着色
PyMOL> spectrum b, blue yellow cyan neon pink grey #按B 因子着色(自定义颜色列表)
2.12 当前窗口截图保存
在 PyMOL 中可使用“capture”命令快速的对当前可视化窗口截图,例如:
PyMOL> capture *#*截图
PyMOL> save img.png *#*保存图片
2.13 图片渲染
修改渲染的模式也是一个不错的选择,PyMOL 中有多个渲染模式,如为结构添加黑色轮廓线。下面是同一张图片采用不同渲染模式的效果。
也可以通过颜色名称或代码修改轮廓线的颜色:
PyMOL> set ray_trace_color, magenta
PyMOL> set ray_trace_color, 0x0033ff
此外,还可以设置一些图片的细节,如以下命令可控制阴影显示与否:
PyMOL> set ray_shadows, on
PyMOL> set ray_shadows, off
还可以设置透视效果(近大远小),通过以下命令控制是否打开透视效果: PyMOL> set orthoscopic, on PyMOL> set orthoscopic, off
上图中的对比似乎不太明显,我们可以设置视野的大小,输入以下命令:
PyMOL> set field_of_view, X
其中 X 为数字,默认为 20,设置 50~70 的数值时,透视效果会比较强烈。
在上面的图片中,我们可以注意到,位于视野后方的结构会有透明度降低的效果,这是因为默认情况下,景深效果为开启状态,我们可以通过以下命令来控制景深效果的开启与否:
PyMOL> set depth_cue, 0 PyMOL> set depth_cue, 1
渲染时还可以选择不同的渲染器,其中“renderer = -1”为默认渲染;“renderer = 0”使用 PyMOL 内部渲染器;“renderer = 1”使用 PovRay 渲染器, Linux 系统下可用。不同渲染器的渲染时间和效果会有差异,大家可自行比较。
2.14 添加/删除共价键
在 PyMOL 中可以使用“bond”和“unbond”命令添加或删除共价键。首先将鼠标模式改为编辑模式,然后鼠标点击选择两个原子,输入以下命令可删除两个原子的键:
PyMOL> unbond pk1, pk2
类似的,输入以下命令可构建共价键:
PyMOL> bond pk1, pk2
2.15 添加新原子
在 PyMOL 中可使用“attach”命令在选中的原子上添加新原子,注意使用时将鼠标模式更改为编辑模式。用法为:
attach element, geometry, valence
其中“element”表示元素类别;“geometry”表示杂化轨道数;“valence”表示添加原子的价键。例如:
PyMOL> attach O, 1, 1 *#*将一个氧原子加到选中的原子上
2.16 创建结构片段
在 PyMOL 中可使用“fragment”命令从片段库中检索 3D 结构,但结构数量有限,氨基酸可使用三字母缩写。用法为:
fragment fragment-name
例如:
PyMOL> fragment ala *#*生成一个丙氨酸
PyMOL> fragment phosphite *#*生成磷酸分子
2.17 由序列创建多肽
已知多肽序列,那么在 PyMOL 中可使用“fab”命令很方便的创建多肽结构,用法为:
fab input [, name [, mode [, resi [, chain [, segi [, state [, dir [, hydro [, ss [, async ]]]]]]]]]]
其中“input”为单字母氨基酸序列;“name”为创建多肽对象的名称;“mode”仅支持为肽; “resi”指定开始编号的数字;“chain”和“segi”指定链名或区段名称;“dir”可为 0 或 1, 0 表示序列构建方向由 C 端到 N 端,1 表示由 N 端到 C 端;“hydro”可为 0 或 1,0 表示构建的肽段含氢原子,1 表示不含氢原子;“ss”指定二级结构,1 表示α螺旋,2 表示反平行 β折叠,3 表示平行β折叠,4 表示无规则卷曲。
例如:
PyMOL> fab KVRISAEL, myprot1, resi=10, chain=B, ss=2
此外,如果给定的序列包含空格,则创建多个片段。
2.18 定义二级结构
蛋白二级结构主要通过主链几何结构和氢键模式来确定的,PyMOL 默认使用 DSSP 算法分配二级结构类型。可以使用“dss”命令重新计算并显示二级结构,这个命令将生成与 DSSP 或其它程序稍有不同的结果,大多数差异发生在边界或过渡区域。一般来说,PyMOL 采用算法比较严格,而 dss 是另一种二级结构分配算法。用法为:
dss [selection [, state]]
例如:
PyMOL> dss # 定义PyMOL 中的所有加载对象的二级结构
PyMOL> dss resi 565-626 #定义残基565-626 的二级结构
如果认为 dss 计算的二级结构分配不合理,也可使用“alter”命令进行修改,见
2.19 更改原子属性
“alter”是一个非常有用的命令,可更改选定内容的一个或多个原子属性,如对氨基酸重新编号、重新定义二级结构等都是常用的功能。“alter”可更改的属性有:
name, resn, resi, chain, alt, elem, q, b, segi, type (ATOM,HETATM), partial_charge, formal_charge, text_type, numeric_type, ID, vdw
用法为:
alter (selection),expression
①更改链名及氨基酸编号
PyMOL> alter (chain A),chain=‘B’ #更改链名,将A 链改为B 链
PyMOL> alter (all),resi=str(int(resi)+100) #更改残基编号,所有残基编号加100
PyMOL> sort #在修改可能影响规范原子排序(名称,链条等)后,应使用sort 命令
②改变原子的范德华半径
PyMOL> alter (name P), vdw=1.90
#如果dots, spheres, mesh or surface 等表现形式被使用,则应使用rebuild 命令刷新视图
PyMOL> rebuild
③改变二级结构
PyMOL> alter 123-125/, ss=‘L’ # 修改123-125 残基为loops
PyMOL> alter pk1, ss=‘S’ #修改选择的pk1 部分为beta sheet
PyMOL> alter 90/, ss=‘H’ #修改90 号残基为alpha-helical
PyMOL> rebuild #更新PyMOL 中的场景以反映变化
④将所有原子的 b-factors 改变为原子到参考点的距离
PyMOL> x0,y0,z0=[1,2,3] *#*参考点
PyMOL> alldist = [] *#*计算参考点和所有原子之间的距离值
PyMOL> iterate_state 1,yourstruc,alldist.append(((x-x0)**2.0+(y-y0)**2.0+(z-z0)**2.0)**0.5)
PyMOL> di = iter(alldist) #将距离值赋给b-factors PyMOL> alter yourstruc, b=di.next()
PyMOL> spectrum b, rainbow, yourstruc *#*距离可视化
⑤把颜色从一个对象复制(转移)到另一个对象
PyMOL> stored.colors = {}
PyMOL> iterate obj1, stored.colors[chain,resi,name] = color
PyMOL> alter obj2, color = stored.colors.get((chain,resi,name), color)
PyMOL> recolor
2.20 修改原子坐标
“alter_state”命令与“alter”类似,可以对原子属性进行修改,而且可以在给定状态和选择中对原子坐标进行修改。用法为:
alter_state state, (selection), expression
例如:
PyMOL> alter_state -1, (obj1), resv -= 99 #让obj1 的残基编号都减99
PyMOL> alter_state -1, (all), x += 10.0 #所有原子的坐标向X 轴方向移动10 埃的距离
PyMOL> rebuild
2.21 生成电子云密度 map 图
PyMOL 中的“isomesh”命令常常用来由 map 对象创建新的表面对象,特别是生成电子云密度 map 图。用法为:
isomesh name, map, level [,(selection) [,buffer [,state [,carve ]]]]
其中“map”为 map 对象的名称;“level”指定轮廓水平;“buffer”可设定缓冲区;“carve” 可用来调节半径。例如:
PyMOL> fetch 6sps
PyMOL> fetch 6sps, type=2fofc
#生成整个map 对象的网状表面图
PyMOL> isomesh mesh_all, 6sps_2fofc
#基于配体的边界框中的网状表面,扩大2 埃
PyMOL> isomesh mesh_ligand, 6sps_2fofc, selection=(resn LR5), buffer=2
#表面仅在配体原子的2 埃半径内
PyMOL> isomesh mesh_ligand_carved, 6sps_2fofc, selection=(resn LR5), carve=2
“isosurface”和“isodot”命令与“isomesh”类似,用来生成不同类型的 map 表面,大家可自行尝试,例如:
PyMOL> fetch 1oky, async=0
PyMOL> fetch 1oky, type=2fofc, async=0
PyMOL> isosurface 1okySurf, 1oky_2fofc, 1.0, (1oky), carve=2.0
2.22 测量距离
在 1.13 部分介绍了使用“measurement”工具对距离进行测量,通过命令行同样可以实现。使用“distance”命令可显示截止范围内的所有距离。用法为:
distance [ name [, selection1 [, selection2 [, cutoff [, mode ]]]]]
其中“selection1”和“selection1”表示测量的原子选择;“cutoff”指定截断阈值,超过截断值的距离不显示;“mode”指定模式,0 表示显示所有原子间距离,1 只显示共价键的距离, 2 只显示极性作用的距离,3 和 0 类似,4 只显示质心间的距离。
例如:
#显示10 号残基α碳到40 号残基α碳的距离
PyMOL> distance i. 10 and n. CA, i. 40 and n. CA
#显示10 号残基α碳到35~42 号残基α碳的距离
PyMOL> distance i. 10 and n. CA, i. 35-42 and n. CA
#显示14 到29 号残基α碳的距离,并命名对象为mydist
PyMOL> distance mydist, 14/CA, 29/CA
*#*测量所有的原子间距离,距离大于 3.2A 的除外,且只保留下原子间有极性作用的距离
(即氢键)
PyMOL> distance hbonds, all, all, 3.2, mode=2
2.23 导入分子动力学轨迹
PyMOL 支持多种轨迹文件格式的导入,加载较大的轨迹可能会占用很多内存,除非
“defer_builds_mode”设置为 3。使用“load_traj”命令可很方便的导入轨迹,例如:
#轨迹格式为DCD 文件的导入
PyMOL> load sampletrajectory.pdb
PyMOL> load_traj sampletrajectory.dcd
# gromacs 轨迹
PyMOL> load sampletrajectory.gro, mytraj
PyMOL> load_traj sampletrajectory.xtc, mytraj
# desmond 轨迹
PyMOL> load sample-out.cms, mytraj
PyMOL> load_traj sample_trj/clickme.dtr, mytraj
*#*内存优化
PyMOL> set defer_builds_mode, 3
PyMOL> mplay
三、PyMOL 进阶使用
3.1 非天然氨基酸突变
在 1.1 部分为介绍了在 PyMOL 中如何进行氨基酸突变,除了突变为天然氨基酸外,可能也需要突变为非天然氨基酸,如果使用 Builder 自行构建,比较费时。这里为大家推荐一款插
件-- PySwissSidechain。这个插件能够将 PDB 结构的任何残基突变为 SwissSidechain 数据库的非自然的 L-或 D-侧链之一,SwissSidechain 数据库可提供数百种非天然氨基酸侧链的结构,该数据库中包含的侧链类型可在以下地址查看:
https://www.swisssidechain.ch/browse/family/table.php?family=all
插件下载地址:
https://www.swisssidechain.ch/data/PySwissSidechain2.zip
下载完成后,打开 PyMOL,在菜单栏点击“Plugin -> Plugin Manager -> Install New Plugin ->
Choose file…”选择下载好的“PySwissSidechain2.zip”文件即可;
然后回到 PyMOL 主页面,在菜单栏点击“Plugin -> Legacy Plugins -> PySwissSidechain install
fragments”即可完成插件的安装。
使用时菜单栏点击“Plugin -> Legacy Plugins -> PySwissSidechain”,在弹出的窗口输入要突变的氨基酸,语法为:Object//Chain/ResNumber/。比如我们要突变对象 1oky A 链上的 HIS203 号氨基酸,可输入“1oky//A/203/”,点击“OK”;
下面弹出窗口提示“Please enter the SwissSidechain code of the new residue”,我们在文本框中输入残基代码即可,如“HLUE”,点击“OK”,在弹出的工具栏依次点击“Apply -> Done” 即可。
可以看到氨基酸 HIS203 已突变为 HLUE。
当然,使用命令行更加方便,语法为:
Mutate Object//Chain/ResNumber/, Newres
如实现上面步骤同样的效果,可输入命令:
PyMOL> Mutate 1oky//A/203/, HLEU
3.2 构建肽链并优化构型
2.16 部分已经介绍了使用命令行的方式构建肽段,这里补充使用菜单栏进行肽段构建。构建
肽段时,在菜单栏点击“Build -> Residue -> Helix/Antiparaller Beta Sheet/Paraller Beta Sheet”,
然后按住“Alt”键,输入氨基酸序列代码即可;
之后可根据需要使用 Builder、Mutagenesis 等工具对结构进行修改。下面我们需要对肽链进行优化,以获得比较合理的构型,PyMOL 提供了一个叫做 Sculpting 的工具可用于简单的结构优化,在菜单栏点击“Build -> Sculpting -> Auto-Sculpting”即可。
注:PyMOL 自带的优化功能只是勉强可用,建议使用动力学模拟等工具进一步进行结构优化。
3.3 分子结构能量最小化
很多时候我们需要对分子结构进行能量最小化,以获得合理的构象。比如自己绘制的结构、或者做构象搜索之前一般需要对初始构象进行能量最小化。
比较简单的方法是点击“A -> clean”来做一个能量最小化处理;
我们还可以借助一个插件来进行局部能量最小化(Local optimization)和全局能量最小化
(Global optimization)。
该脚本的下载地址如下:
https://github.com/Pymol-Scripts/Pymol-script-repo/blob/master/plugins/optimize.py
下载完成后,打开 PyMOL,在菜单栏点击“Plugin -> Plugin Manager -> Install New Plugin -> Choose File…”选择下载好的“optimize.py”文件进行安装即可。
安装完成后,通过菜单栏点击“Plugin -> Legacy Plugins -> Optimize”可打开 Optimize 面板,可以设置一些能量最小化的参数,如局部能量最小化可以选择使用的力场(GAFF、
MMFF94s、MMFF94、UFF 以及 Ghemical)、最小化的方法包括常用的最陡下降法和共轭梯度法以及步长、收敛、截断值等。
也可直接使用命令行操作,如果进行需要进行局部能量最小化,用法为:
minimize [selection [, forcefield [, method [, nsteps [, conv [, cutoff [, cut_vdw [, cut_elec]]]]]]]]
这里需要设置的参数与上面 Optimize 是一致的。类似的,如果进行全局能量最小化,用法为:
conf_search [selection string [, forcefield string [, method string [, nsteps int [, conformers int [, lowest_confor int]]]]]]
需要注意的是,要使用“optimize.py”,需要已安装了 OpenBabel 并且设置了 Python 绑定。除了“optimize.py”外,PyMOL 也有其它的插件或脚本可做能量最小化,如“minimize_ob”、 “minimize_rdkit”等,大家可在 PyMOLWiki 中搜索了解。
3.4 蛋白通道的分析与可视化
CAVER 是捷克研究者开发的一款用于研究底物/产物通道的软件,可以分析和可视化蛋白质结构中的通道。其开发出了对应的 PyMOL 插件–Caver,可以识别从特定位点到蛋白表面的可能通道,对药物设计和分子酶学研究具有重要意义。最新版的 Caver 3 还可用于动态结构中通道的快速、准确和全自动计算,也就是说可以用于分子动力学过程的通道分析。要使用 Caver 3 插件,需要先安装 Java,下载地址如下,根据提示安装即可:
Caver 3 插件下载地址:
https://github.com/loschmidt/caver-pymol-plugin/archive/master.zip
下载完成后,打开 PyMOL,在菜单栏点击“Plugin -> Plugin Manager -> Install New Plugin -> Choose File…”选择下载好的“caver-pymol-plugin-master.zip”文件进行安装即可。
安装完成后,通过菜单栏点击“Plugin -> Legacy Plugins -> Caver 3.0.3”可打开 Caver 3.0.3 面板。
在 PyMOL 中导入蛋白质结构,选择感兴趣的氨基酸或原子,在 Caver 3.0.3 面板点击“Convert to x,y,z”按钮可设置分析起点的坐标;在“Output directories”设置工作路径,分析产生的结果会保存在该路径中;如果有多个对象可以在“Input model”进行选择,其它参数一般设置默认即可;点击“Compute tunnels”进行分析。在 PyMOL 中每个通道都以不同的对象和颜色进行区分。
分析的结果文件均保存在工作路径,特别是“analysis”文件夹,从中可以获得每个通道最小
/最大半径、平均半径、长度、曲率、涉及的残基/原子等信息。
3.5 蛋白结构同源建模
蛋白三维结构是理解其生物学功能和进行基于结构的药物设计的重要基础。对于未测定的蛋白三维结构,可通过计算模拟的手段来构建蛋白质的三维结构。同源建模(Homology Modeling)是其中一种常用且准确度较高的方法,同源建模的基本假设是:如果未知结构蛋白 A 与已知结构蛋白 B 之间具有序列、结构和功能上的同源性,则蛋白 A 可以以蛋白 B 为模版来构建其全原子三维结构。常用的同源建模软件有许多,如:SWISS-MODEL,Robetta、 RaptorX、MODELLER、SCWRL 等,其中 MODELLER 是一款著名的蛋白质三维结构同源模建、比较建模软件。MODELLER 可根据用户提供的序列和已知的同源蛋白结构,自动生成不含氢原子的模型,但是 MODELLER 对新手来说并不是特别友好。下面为大家介绍在 PyMOL 中如何基于 MODELLER 进行单链蛋白的同源模建。
同源建模的步骤
3.5.1 PyMod 插件的下载安装
首先我们需要下载 PyMod 插件,下载地址如下:
https://github.com/pymodproject/pymod/releases/download/v3.0/pymod3.zip
打开 PyMOL,在菜单栏点击“Plugin -> Plugin Manager -> Install New Plugin -> Choose File…” 选择下载好的“pymod3.zip”文件进行安装即可。
通过点击“Plugin -> PyMod3”可以启动 PyMod,首次使用会提示设置 PyMod 的工作目录,选择合适的路径即可。
在打开的 PyMod 窗口点击“Help -> Install PyMod Components”来安装外元件(External Tools 和 MODELLER)。
其中 MODELLER 需要我们提供密钥,密钥可免费由以下网站申请:
https://salilab.org/modeller/registration.html
3.5.2 单链蛋白的同源建模
本教程将介绍如何使用 PyMod 3 从氨基酸序列开始构建一个单体目标蛋白,以鸟分枝杆菌
(Mycobacterium avium)的二氢叶酸还原酶(dihydrofolate reductase, UniProt id: O30463)的同源性模型为例。 ①导入目标序列在 Uniprot 下载目标序列文件,地址如下,下载.fasta 格式文件;
http://www.uniprot.org/uniprot/O30463
打开 PyMod 窗口,点击“File -> Sequences and Structures -> Open from File”导入下载好的目标序列文件。
②模板搜寻
同源模建的第一步是寻找与目标序列同源的蛋白质结构,这里我们使用 BLAST 算法进行模板搜寻。
在 PyMod 主面板的左窗格中左键单击目标序列 (一旦选中,颜色将从红色变为绿色)。然
后点击“Tools -> Database Search -> BLAST -> Remote BLAST”打开“NCBI BLAST Search
Options”面板;搜索的数据库“Database Selection”选择“PDB”数据库,其他参数设为默认即可,点击“Submit”提交任务。
任务完成后,会自动打开“NCBI BLAST Results”面板,可以看到本例中排名第一的命中序列与目标序列的一致性为 100%,这时因为 DHFR 的结构已被解析,这里我们忽略这个结果,已解析的晶体结构稍后我们用来验证同源模建的结果。
本例中我们选择 PDB ID 为“3JW3”和“2ZZA”这两个蛋白作为模板,实际操作中我们应优先选择同源性和序列一致性高的作为模板。
③导入模板蛋白结构
在“NCBI BLAST Results”面板中勾选“3JW3”和“2ZZA”这两个条目,点击“Submit” 将序列在 PyMod 中打开,然后在 PyMod 主面板的左窗格中右键单击模板序列,选择
“Structure -> Fetch PDB file -> Import in PyMod the structure of every chain of the PDB files ->
Import 3D Structures”导入模板蛋白结构;
现在,我们可以在 PyMOL 窗口中看到导入的模板蛋白的结构。
本例中导入的模板蛋白都是包含两条相同的链,而建模只需要一条链即可,因此我们将两个模板蛋白的 B 链都删除。可在 PyMod 窗口中选中对应的序列点击右键,选择“Sequence ->
Delete Sequence”删除 B 链的序列。
④序列比对
本例中我们使用两个模板链进行建模:3JW3_Chain_A 和 2ZZA_Chain_A。首先在 PyMod 窗
口选中 3JW3_Chain_A 和 2ZZA_Chain_A,在主菜单点击“Tools -> Alignment Tools -> Structural alignment -> SALIGN (Structural alignment)”,此时,在 PyMOL 窗口可以看到两个蛋白结构已经叠合。
下面我们还需与目标序列进行对齐,有三种工具可以选择:ClustalW、SALIGN 或者 Clustal Omega;本例中我们选择“Clustal Omega”。在 PyMod 窗口选中所有的序列,点击“Tools ->
Alignment Tools -> Profile alignment -> Clustal Omega”,在弹出的面板点击“Submit”提交任务。
在进入 3D 模型构建阶段之前,我们注意到目标序列的最后 13 个氨基酸没有与模板的任何区域对齐。由于 MODELLER 没有准确地建模这样的 C 端悬垂,我们将删除该区域。在 PyMod 窗口右键目标序列,点击“Sequence -> Edit Sequence”,选择最后 13 个氨基酸并删除,然后点击“Submit”。
⑤模型构建
下面我们就使用 MODELLER 来构建同源模型,在 PyMod 窗口菜单栏点击“Tools -> Modeling -> MODELLER (Homology Modeling)”打开“MODELLER Options”面板;勾选“Use as Template”选项将“2ZZA_Chain_A”作为模板,它的杂原子残基和水分子选项将被激活。这里我们勾选“Select single heteroatomic residues”,可以选择将模板中的杂原子残基复制到同源模型中,这里我们勾选“NAP”;同样的,我们还想在我们的模型中包括这个模板的水分子,所以在“Include water”选项中勾选“157 water molecules”。
类似的,我们设置一些“3JW3_Chain_A”的参数,如下图:
在本例中我们对构建二硫键不感兴趣,所以我们跳过建模面板的“Disulfides”参数设置选项卡;
切换至“Options”选项卡,为减少计算量,我们这里将“Models to Build”就设置为“5”,即产生 5 个模型;
将“Optimization Level”选项设置为“Mid”,这将使我们模型获得更高程度的细化,并可能提高其某些区域的准确性;
设置“Color models by”为“DOPE Score”,这将使获得的同源模型根据 DOPE 得分进行着色;
设置“Objective Function”为“altMOD(v0.2)”,可以提高模型的精度,但会增加计算时间;
设置完成后,点击“Submit”提交计算任务,等待计算完成即可。
⑥模型分析
模型构建完成后,我们可以在 PyMOL 窗口中看到构建好的模型。可以看到构建的同源模型的核心区域和大部分活性部位都被准确的建模,有些 loop 区域可能包含了一些建模错误。
此外,我们可以查看模型评分表,包含了每个模型的“Objective Function”和“DOPE score”,如果构建了多个模型,可以从中选择看起来最准确的一个模型。
下面我们将构建的同源模型与已解析的晶体结构进行比较,在命令行输入“fetch 2w3w”导入结构;
在 PyMod 窗口菜单栏点击“File -> Sequences and Structures -> Import PyMOL Objects”将结构导入至 PyMod 中,然后选择需要叠合的结构,点击“Tools -> Alignment Tools -> Structural alignment -> SALIGN (Structural alignment)”进行叠合,下图为叠合结果,其中青色的为同源模型 2,紫色的为已解析的晶体结构。
3.5.3 蛋白质复合体的同源建模
本教程将说明如何使用 PyMod 3 构建蛋白质复合体的同源模型,在本例中,人类血红蛋白 Portland I(这里称为 HbE-P1)。HbE-P1 是载氧血红蛋白的一种形式,在胚胎和胎儿期以低水平存在于血液中。它是由两条ζ和γ血红蛋白折叠链组成的四聚体。
蛋白质复合体(如 HbE-P1)的同源建模是基于这样一个基础:对于高水平的序列相似性,同源蛋白复合体保持相似的结构。因此,当目标复合体和模板复合体的同源成员之间具有较高的序列保守性时,同源建模有可能建立准确的模型。对于低序列相似性的情况,为了预测目标的结构,可能会采用其他复杂的计算方法(如蛋白质-蛋白质对接)。下面,我们介绍在
PyMod 3 中构建一个多链同源模型所需的步骤。
①导入目标序列在 Uniprot 下载目标序列文件,地址如下,下载.fasta 格式文件;
chain ζ:http://www.uniprot.org/uniprot/P02008 chain γ:http://www.uniprot.org/uniprot/P69891
在 PyMOL 菜单栏点击“Plugin -> PyMod 3”打开 PyMod 窗口,点击“File -> Sequences and Structures -> Open from File”导入下载好的目标序列文件。
HbE-P1 是由两条ζ和γ链组成的四聚体,因此我们需要将导入的两个目标序列都复制。在
PyMod 窗口左窗格右键单击序列名称,选择“Sequence -> Duplicate Sequence”对序列进行复制。
②导入模板复合体
PyMod 多链同源建模模式需要一个“模板复合体”。模板复合体可以是包含多个多肽链的任何结构文件。模板复合体结构(即其链的相对取向和位置)将用来建立目标复合体的同源模型。
同源模建的第一步是寻找与目标序列同源的蛋白质结构,在 3.3.2 中已有介绍,这里不再赘述。本例中我们直接使用 PDB ID:2DN2 的结构作为我们的模板复合体,模板蛋白的结构可由 PDB 数据库下载。
通过菜单栏点击“File -> Sequences and Structures -> Open from File”导入下载好的模板蛋白结构,这个结构中包含的四条链(两条α链:2DN2_Chain_A 和 2DN2_Chain_C,两条β链: 2DN2_Chain_B 和 2DN2_Chain_D)将与我们的四个目标序列一起加载到 PyMod/PyMOL 中。
需要注意的是:模板蛋白的结构包含了 T 状态的血红蛋白 A(它没有结合氧),因此我们要构建的实际上是一个 hemoglobin Portland I 为 T 状态的模型。
③目标**-**模板蛋白序列比对
为了在 PyMod 中建立多链同源模型,我们需要将所有的目标序列与模板复合体的相应链对齐。在本例中我们需将血红蛋白 ζ 链与模板复合物的 α 链对齐,将γ链与相应的β链对齐。本例中目标序列和模板序列之间有很高的相似性(ζ链和α链之间的序列相似性为 59.6%, γ链和β链之间的序列相似性为 72.6%)。
在 PyMod 窗口左窗格单击序列名称“sp|P02008|HBAZ_HUMAN”和“2DN2_Chain_A”选中序列,在 PyMod 菜单栏点击“Tools -> Alignment Tools -> Sequence Alignment -> ClustalW”,弹出“ClustalW Options”面板,在该面板可以修改算法等参数,一般保持默认值即可,点击
“Submit”执行序列比对;
对其它三对序列也执行类似的操作:
l 1_sp|P02008|HBAZ_HUMAN 与 2DN2_Chain_C
l sp|P69891|HBG1_HUMAN 与 2DN2_Chain_B
l 1_sp|P69891|HBG1_HUMAN 与 2DN2_Chain_D
④同源模型构建为了在 PyMod 中构建多链同源模型,我们需要同时选择我们所有的目标序列,然后点击
“Tools -> Modeling -> MODELLER (Homology Modeling)”;
此时弹出“MODELLER Options”面板,要构建同源模型,我们需要选中模板复合体的链。对于每个目标序列,勾选“Use as Template”后面的链选项;本例中我们对其它选项不感兴趣,“Hetero Residues”选项均选择“Use all heteroatomic residues”;点击“Submit”来构建模型,等待模型构建完成即可。
⑤模型分析
MODELER 完成模型构建后,结果将被导入到 PyMod/PyMOL 中。与单链蛋白同源建模的结果类似,模型评分表,包含了每个模型的“Objective Function”和“DOPE score”,“Objective Function”定义了蛋白结构中诸如键长、键角、二面角等几何特性,反应了模型的好坏,该值越低模型可信度越高;同样的“DOPE score”是衡量模型质量的依据,分数越低,模型质量越可靠;此外,多链蛋白的同源建模还提供了“SOAP-PP”评分,该评分函数在三维模型中评估蛋白质-蛋白质界面,并对实验确定的蛋白质-蛋白质复合物的三维结构进行参数化。
就像 DOPE 评分一样,较低的 SOAP-PP 评分往往对应于模型具有更高的质量。
同样的,也可以查看“DOPE Profile”,需要注意的是,DOPE 函数是为单链球状蛋白的能量评分而设计的。由于链间接触的能量不能被 DOPE 函数充分地评分,所以多链模型的“DOPE Profile”对于评估整个模型复合体的质量是没有用的。然而,它们对于评估模型的单链质量仍然有用。在本例中,“DOPE Profile”中目标链与模板链的图形非常相似,可能意外着我们的模型是一个合理的模型。
下面我们可以使用 PyMOL 可视化构建的模型,可以看到每个模型的结合口袋中都有血红素配体,这是因为我们在建模时勾选了“Use all heteroatomic residues”选项。
3.6 使用 AutoDock\Vina 进行分子对接
在 PyMOL 中可使用 AutoDock 插件为 AutoDock 及 AutoDock Vina 的运行提供一个图形用户界面(GUI),非常方便直观的进行分子对接。使用该插件需要已经正常安装
ADT/AutoDockTools 以及已经下载并安装 AutoDock 和/或 AutoDock Vina。下面简单介绍在 Linux 系统下 AutoDock、AutoDock Vina 以及 ADT 的下载安装,Windows 系统也基本类似,可参照官网的说明。
AutoDock 下载地址:
https://autodock.scripps.edu/download-autodock4/
这里我们下载“AutoDock v4.2.6 (Linux 64bit)”,其它系统选择对应的文件下载即可。
下载完成后,进入文件目录,打开终端,输入以下命令进行解压即可:
tar -xvf autodocksuite-4.2.6-x86_64Linux2.tar
解压得到文件夹里含有 autogrid4 和 autodock4 文件,由于该软件已经提前编译,可直接使用,可以将程序放在任意自己容易找打的文件夹下。
AutoDock Vina 下载地址:
https://vina.scripps.edu/downloads/
这里我们选择下载“autodock_vina_1_1_2_linux_x86.tgz”;
下载完成后,进入文件目录,输入以下命令进行解压即可:
tar xzvf autodock_vina_1_1_2_linux_x86.tgz
同样的,可以将解压后的文件放在任意位置。
MGLTools 下载地址:
https://ccsb.scripps.edu/mgltools/downloads/
这里我们“mgltools_Linux-x86_64_1.5.7_Install (Linux 64 GUI installer 109Mb)”进行下载,下载完成后双击根据提示安装即可。
安装 Autodock plugin
插件下载地址:
https://raw.githubusercontent.com/Pymol-Scripts/Pymol-scriptrepo/master/plugins/autodock_plugin.py
打开 PyMOL,菜单栏点击“Plugin -> Plugin Manager -> Install New Plugin -> Choose File…” 选择下载好的“autodock_plugin.py”文件进行安装即可。
本例中以周期蛋白依赖性激酶 2(CDK2)的晶体结构作为分子对接的受体(PDB ID:1E1X),结构中的原配体作为分子对接的配体为例,为大家演示在 PyMOL 中如何使用 AutoDock 插件进行分子对接计算。
将下载好的蛋白和配体分子导入 PyMOL 中,点击“Plugin -> Legacy Plugins -> Autodock/Vina” 打开“PyMOL Autodock/Vina Plugin”面板;在“Scripts and Program Paths”处设置相应程序的路径和工作目录,设置好后点击“Save Plugin Configuration File”保存配置文件;
切换至“Grid Settings”选项卡,在这里可以设置对接盒子的信息,本例中我们对接的配体分子为蛋白结构的共晶化合物,因此可以直接以原配体位置确定对接盒子的位置。勾选
“Calculate Grid Center by Selection”然后在“Selection”后方的文本框输入配体对象的名称,也可在 PyMOL 窗口选中配体分子后输入“sele”,然后回车;
此时在 PyMOL 窗口可以看到自动生成的对接盒子,在“Grid Definition”可以调节盒子的大
小以及格点参数,可以尝试点击“Show Box”、“Change Box Color”、“Cylindric Box”以及 “Wired Box”等感受盒子的变化。对于没有原配体的情况也可在 “Grid Center Coodinates” 指定指定中心坐标或选择某个或某些氨基酸来定义对接盒子。
下面切换至“Receptor”选项卡,在“Receptor Preparation”处进行受体准备,比如本例中我们选择“1E1X”然后点击“Generate Receptor”来准备受体,此时工作目录中应该已经生成了 pdbqt 格式文件。此外,如果需要进行柔性对接,可以在 PyMOL 中选择出需要设定柔性
的氨基酸残基,然后在“Receptor Preparation”处点击“Select as Flexible”来设置。
类似的,切换至“Ligands”选项卡来准备配体,本例中配体名称已改为“ligand”,因此就选
择“ligand”然后点击“Generate Ligand”即可。
下面就可以进行对接计算了,切换至“Docking”选项卡,在“Docking”一栏中确认受体、设置的柔性侧链、配体以及保留的 Poses 数目是否正确,本例中设置只保留对接后的 10 个
Poses;
在“AutoDock”和“VINA”选项栏中可分别调用 AutoDock 和 AutoDock Vina 执行对接运
算,如果使用 AutoDock 进行对接,依次点击“Write AutoDock Input File(s) -> Run AutoGrid
-> Run AutoDock”即可;类似的如果使用 AutoDock Vina 执行对接运算,依次点击“Write
Vina Input File(s) -> Run Vina”即可;
计算完成后,可在终端面板看到运行结果,包括结合能和 RMSD 信息;如本例中排名第一
的构象的结合能为-7 kcal/mol;
在工作路径可以看到生成了.docked.pdbqt 结果文件,可将该文件导入 PyMOL 中查看对接构象。
3.7 蛋白-配体相互作用分析
虽然 PyMOL 本身也可以进行相互作用的简单分析,但往往不能满足需求,这里推荐一款非
常好用的自动显示蛋白-配体相互作用的插件–PLIP(Protein-Ligand Interaction Profiler)。PLIP 可以分析蛋白配体复合物在原子水平的非共价相互作用,包括氢键、水桥、盐桥、卤键、疏水相互作用、π-堆叠、π-离子相互作用等;检测机制主要是基于原子间的空间位置和几何关系。
PLIP 提供网页在线服务器可用于分析蛋白-配体相互作用,只需提供 PDB ID 或上传 pdb 结构文件即可一键分析,并可直接下载 PyMOL 可用的.pse 文件,使用方法非常简单,网站地址如下:
https://plip-tool.biotec.tu-dresden.de/plip-web/plip/index
这里我们对在线版 PLIP 就不多做介绍了,下面介绍一下 PLIP 的 PyMOL 插件如何下载安装。
安装新版的 PLIP 需要 Python > = 3.6.9、OpenBabel > = 3.0.0,然后安装 Python 的第三方库
openbabel。
打开终端,下载 PLIP:
git clone https://github.com/pharmai/plip.git
进入下载的文件路径的“plip”文件夹,可以看到有“setup.py”,输入以下命令:
python setup.py install
输入“plip”可可见提示如下,说明已经可以使用了。
如果要分析 PDB 数据库中的蛋白-配体相互作用,只需提供 PDB ID,如:
plip -i 1vsn -yv
如果要分析本地的 pdb 文件,可输入:
plip -f 1VSN.pdb –yvx
可以生成分析结果的 xml 数据文件和 pse 文件,pse 文件可直接使用 PyMOL 打开进行可视化分析。
pymol 1VSN_NFT_A_283.pse
3.8 制作简单的动画
PyMOL 可以制作各种场景的动画,这里我们以 4.11 获得的蛋白-蛋白相互作用界面图像为初始状态,进行动画制作。
#设置一个840 帧的动画框架 PyMOL> mset 1 x840 # darp 和lig 在第1~60 帧之间没有变化 PyMOL> frame 1 PyMOL> mview store, object=darp PyMOL> mview store, object=lig PyMOL> frame 60 PyMOL> mview store, object=darp PyMOL> mview store, object=lig | PyMOL> frame 480 PyMOL> mview store, object=darp PyMOL> mview store, object=lig #第480~540 帧间以z 轴方向旋转和移动 PyMOL> frame 540 PyMOL> rotate z, 90, object=darp PyMOL> translate [-20,0,0], object=darp PyMOL> mview store, object=darp PyMOL> rotate z, -90, object=lig PyMOL> translate [20,0,0], object=lig |
---|---|
#60~120 帧间以不同的方向旋转和平移 PyMOL> frame 120 PyMOL> rotate y, -90, object=darp PyMOL> translate [-20,0,0], object=darp PyMOL> mview store, object=darp PyMOL> rotate y, 90, object=lig PyMOL> translate [20,0,0], object=lig PyMOL> mview store, object=lig #在第120~300 帧之间没有变化 PyMOL> frame 300 PyMOL> mview store, object=darp PyMOL> mview store, object=lig #旋转和平移darp 和lig 回到初始状态 PyMOL> frame 360 PyMOL> translate [20,0,0], object=darp PyMOL> rotate y, 90, object=darp PyMOL> mview store, object=darp PyMOL> translate [-20,0,0], object=lig PyMOL> rotate y, -90, object=lig PyMOL> mview store, object=lig #第360~420 帧以x 轴方向旋转 PyMOL> frame 420 PyMOL> rotate x,-90,object=darp PyMOL> mview store, object=darp PyMOL> rotate x,-90,object=lig PyMOL> mview store, object=lig | PyMOL> mview store, object=lig #第540~660 帧之间没有变化 PyMOL> frame 660 PyMOL> mview store, object=darp PyMOL> mview store, object=lig #660~720 帧进行移动和旋转 PyMOL> frame 720 PyMOL> translate [20,0,0], object=darp PyMOL> rotate z, -90, object=darp PyMOL> mview store, object=lig PyMOL> translate [-20,0,0], object=lig PyMOL> rotate z, 90, object=lig PyMOL> mview store, object=lig #第720~780 帧之间没有变化 PyMOL> frame 780 PyMOL> mview store, object=darp PyMOL> mview store, object=lig *#*转回初始方向 PyMOL> frame 840 PyMOL> rotate x, 90,object=darp PyMOL> mview store, object=darp PyMOL> rotate x, 90,object=lig PyMOL> mview store, object=lig *#*播放动画 PyMOL> mplay |
下图大致表示了本次生成的动画。
3.9 生成分子动力学轨迹动画
本例中分子动力学由 Gromacs 软件完成,我们以蛋白-配体复合物的动力学模拟轨迹结果为例。
这里也简单介绍使用 Gromacs 导出帧为 PDB 文件。首先建立索引,将蛋白和配体分子合并为一个组,使用以下命令:
gmx make_ndx -f em.gro -o index.ndx
> 1 | 13
> q
-f:指定分子坐标文件
-o:输出的索引文件
“1”和“13”分别为蛋白组和配体组,终端提示新的索引组被创建(如果已有索引则不需此步)。
从调整过周期性的模拟轨迹中导出 pdb 文件,使用以下命令:
gmx trjconv -s md_0_10.tpr -f md_0_10_center.xtc -n index.ndx -o traj.pdb -dt 100
-s:指定系统 tpr 文件
-f:指定纠正后模拟轨迹文件
-n:指定索引文件
-o:输入文件 -dt:设置间隔时间轨迹文件中每隔 100 ps 导出一帧到 pdb 文件,文件名称为 traj.pdb。
将导出的 traj.pdb 导入至 PyMOL 中,将轨迹中的帧对齐:
PyMOL> load traj.pdb
PyMOL> intra_fit traj
可更改蛋白-配体显示样式,本例中仅通过“A(Action)-> preset -> publication”进行更改。
由于本例只进行了短时间的动力学模拟,这里就只创建 200 个电影帧:
PyMOL> mset 1X200
转到帧 1 并存储状态 1 的对象关键帧,即将轨迹中的第一帧作为动画的第一个场景:
PyMOL> mview store, 1, state=1, object=traj
同样的将轨迹的最后一帧作为动画的最后一个场景:
PyMOL> mview store, 500, state=200, object=traj
滤除高频原子运动,只保留整体的运动:
PyMOL> smooth
通过“File -> Export Movie As -> MPEG…”打开 Movie Export 面板; 对导出动画的参数进行设置,然后点击“Save Movies as…”选择导出即可。
Pymol制作动画需要FFmpeg支持,如果保存时提示FFmpeg未安装,那么就需要安装FFmpeg,这里我们介绍 Windows 系统下如何安装 FFmpeg。
进入官网:
http://ffmpeg.org/
在 Download 界面选择 Windows 系统,点击链接进行下载:
这里我们选择下载 ffmpeg-release-essentials.zip 这个文件:
下载完成后,将下载好的压缩包解压,得到 ffmpeg 文件,记住该文件的目录,在 bin 文件夹中,应包含三个.exe 的程序文件。本例中该文件目录为 D:\software\ffmpeg\bin
下面我们需要设置一下环境变量。打开电脑设置,搜索“系统环境变量”,打开系统属性窗口,点击“环境变量(N)…”
打开环境变量窗口,在用户变量的列表中选择 Path 行,点击编辑;
在新打开的编辑环境变量窗口中点击“新建”,将刚才的 bin 路径粘贴进去,然后点击确定即可。
到这里,ffmpeg 的配置就完成了,调用命令行(windows+R 输入 cmd)输入“ffmpeg –version”,如果出现如下说明配置成功。
3.10 PyMOL 快捷命令
3.10.1 PyMOLshortcuts 简介
PyMOL 中有数百个参数可以实现对结构外观的精确控制,从而绘制出许多不错的图片。而许多精致的图片需要大量的时间和技术知识才能制作出来,一种显而易见的节省时间的方法是创建宏或函数来执行重复的任务。函数还可以在命令行上接受参数。我们称这些函数为“shortcuts”,本文就以“快捷命令”来称呼吧。快捷命令可以省去我们需要输入多行代码的麻烦,输入速度比下拉菜单快几倍,可以让我们在使用 PyMOL 的效率上提升数倍。
这里推荐一个快捷命令的集合包–PyMOLshortcuts,所有的快捷命令储存在一个文件中-- PyMOLshortcuts.py,这个脚本文件有 12,814 行代码和注释,而且在 PyMOL 启动时读取它不会造成明显的延迟。下面为大家简单演示一下使用该脚本之后的效果:
在下图中,我们只输入了命令“AO”,即可一键更改显示样式并渲染好图片,而平时获得同样的效果,则需要输入 16 行代码。
注:16 行代码如下,大家可以逐行输入代码进行效果比较:
set_color oxygen, [1.0,0.4,0.4] set_color nitrogen, [0.5,0.5,1.0] remove solvent as spheres util.cbaw bg white set light_count,10 set spec_count,1 set shininess, 10 set specular,0.25 set ambient,0 set direct,0 set reflect,1.5
set ray_shadow_decay_factor, 0.1 set ray_shadow_decay_range, 2 set depth_cue, 0 ray
下图中,输入“BW”可以获得一张黑白的 Cartoon 样式:
下图中,我们输入了“colorh2”可以使蛋白结构根据疏水性进行着色:
上面是我们使用“Shortcut”快捷命令包的几个例子,实际上当然功能更多,该快捷命令包提供了一共 241 个快捷命令,而且快捷命令可以在命令行上接受参数。在 PyMOL 中命令行输入“SC”可以查看全部的快捷命令以及这些命令的简短描述,为方便大家使用,本章末尾的快捷命令表格为大家对这些快捷命令进行了整理,并提供了这些命令描述的中英文对照。
3.10.2 配置方法
PyMOLshortcuts的配置方法非常简单,与我们平时使用Python脚本的方法相同。首先需要下载 PyMOLshortcuts.py 脚本,下载地址如下:
https://github.com/MooersLab/PyMOLshortcuts/blob/master/PyMOLshortcuts.py
为了使快捷命令每次打开 PyMOL 就可以直接使用,我们需要创建一个 pymolrc.pml 文件。打开 PyMOL 在菜单栏点击“File -> Edit pymolrc”,然后输入以下内容:
run E:\PyMOL\Python\PyMOLshortcuts.py
注:E:\PyMOL\Python\PyMOLshortcuts.py 为 PyMOLshortcuts.py 所在的路径,大家在编辑时,应该修改为上步下载的 PyMOLshortcuts.py 所存放的路径。
配置完成后,再次打开 PyMOL 就可以直接使用快捷命令啦~
此外,有些快捷命令是用于在 PyMOL 内部打开外部程序,如果我们需要使用这些快捷命令的话,应该将外部程序添加环境变量,添加环境变量的方法大家可通过在网上搜索轻易获知,这就不在赘述了。
3.10.3 PyMOLshortcuts 快捷命令表
快捷命令表格 | |
---|---|
Shortcut | Short Description 简短描述 |
## Count files 统计文件 | |
cntccp4s | Count number of .ccp4 (electron density map) files in current directory. 统计当前目录中.ccp4(电子密度图)文件的数量。 |
cntfiles | Count number of files in current directory. 统计当前目录下的文件数量。 |
cntlogs | Count number of .log files in current directory. 统计当前目录中.log 文件的数量。 |
cntmtzs | Count number of .mtz (structure factor) files in current directory. 当前目录中.mtz(结构因子)文件的数量。 |
cntpdbs | Count number of pdb files in current directory. 计算当前目录下 pdb 文件的数量。 |
cntpmls | Count number of pml (Pymol macro language) files in current directory. 统计当前目录下 pml(Pymol 宏语言)文件的数量。 |
cntpngs | Count number of .png image files in current directory. 统计当前目录下的.png 图片文件的数量。 |
cntpses | Count number of *.pse (session) files in current directory. |
计算当前目录中*.pse(会话)文件的数量。 | |
---|---|
## Data analysis program, open from within PyMOL. 数据分析程序,从 PyMOL 内打开。 | |
JASP | Open JASP from within PyMOL. 从 PyMOL 中打开 JASP。 |
JMP | Open the JMP from within PyMOL. 从 PyMOL 中打开 JMP。 |
RStudio | Open Rstudio GUI.打开 Rstudio GUI。 |
cranR | Open Cran R from within PyMOL. 在 PyMOL 中打开 Cran R。 |
ddb | Open DBBrowserSQLite. 打开 DBBrowserSQLite。 |
excel | Open excel from within PyMOL. 在 PyMOL 中打开 EXCEL。 |
jabref | Open the jabref from within PyMOL. 在 PyMOL 中打开 jabref。 |
julia | Open the julia from within PyMOL. 从 PyMOL 中打开 Julia。 |
juliapro | Open the juliapro from within PyMOL. 在 PyMOL 中打开 juliapro。 |
oc | Open the data analysis programOctave (open source analogOf matlab) from within PyMOL. 在 PyMOL 中打开数据分析程序 Octave(matlab 的开源模拟)。 |
ppt | Open the powerpoint from within PyMOL. 从 PyMOL 中打开 powerpoint。 |
## H-bonds 氢键 | |
hb | Creates an object of all H-bonds found by PyMOL. 创建一个由 PyMOL 发现的所有 H 键的对象。 |
rmhb | Delete all H-bonds in the selection, which is all by default. 删除选择中的所有 H 键,默认为全部。 |
## Image editing program, open from within PyMOL. 图像编辑程序,从 PyMOL 内打开 | |
gimp | Open the image editing program gimp from within PyMOL. 从 PyMOL 中打开图像编辑程序 gimp。 |
inkscape | Open the image editing program inkscape from within PyMOL. 从 PyMOL 中打开图像编辑程序 inkscape。 |
## Many models (NMR and crystal packing). |
nmr | Show all models in a nmr structure. 显示一个 nmr 结构中的所有模型。 |
---|---|
nmroff | Hide all but first model in a nmr structure. 除第一个模型外,隐藏一个 nmr 结构中的所有模型。 |
rmd | Remove all measurement objects in the interal GUI. 移除内部图形用户界面中的所有测量对象。 |
rmsc | Remove supercell objects. 删除超级单元格对象。 |
sc111 | Make a lattice of 1 x 1 x 1 unit cells. 制作一个 1 x 1 x 1 的单元格。 |
sc112 | Make a lattice of 1 x 1 x 2 unit cells. 建立一个 1 x 1 x 2 单元格的晶格 |
sc113 | Make a lattice of 1 x 1 x 3 unit cells. 制作一个 1 x 1 x 3 单元格的网格。 |
sc121 | Make a lattice of 1 x 2 x 1 unit cells. 做一个 1 x 2 x 1 的单元格。 |
sc122 | Make a lattice of 1 x 2 x 2 unit cells. 制作一个 1 x 2 x 2 单元的格子。 |
sc123 | Make a lattice of 1 x 2 x 3 unit cells. 制作一个 1 x 2 x 3 的单元格。 |
sc131 | Make a lattice of 1 x 3 x 1 unit cells. 制作一个 1 x 3 x 1 单元的格子。 |
sc132 | Make a lattice of 1 x 3 x 2 unit cells. 制作一个 1 x 3 x 2 单元的格子。 |
sc133 | Make a lattice of 1 x 3 x 3 unit cells. 做一个 1 x 3 x 3 的单元格。 |
sc211 | Make a lattice of 2 x 1 x 1 unit cells. 制作一个 2 x 1 x 1 单元的格子。 |
sc212 | Make a lattice of 2 x 1 x 2 unit cells. 制作一个 2 x 1 x 2 单元的格子。 |
sc213 | Make a lattice of 2 x 1 x 3 unit cells. 做一个 2 x 1 x 3 的单元格。 |
sc221 | Make a lattice of 2 x 2 x 1 unit cells. 制作一个 2 x 2 x 1 单元的格子。 |
sc222 | Make a lattice of 2 x 2 x 2 unit cells. |
制作一个 2 x 2 x 2 单元的格子 | |
---|---|
sc231 | Make a lattice of 2 x 3 x 1 unit cells. 制作一个 2 x 3 x 1 单元的格子。 |
sc311 | Make a lattice of 3 x 1 x 1 unit cells. 制作一个 3 x 1 x 1 单元的格子。 |
sc312 | Make a lattice of 3 x 1 x 2 unit cells. 制作一个 3 x 1 x 2 单元的格子。 |
sc313 | Make a lattice of 3 x 1 x 3 unit cells. 做一个 3 x 1 x 3 的单元格。 |
sc321 | Make a lattice of 3 x 2 x 1 unit cells. 制作一个 3 x 2 x 1 单元的格子。 |
sc331 | Make a lattice of 3 x 3 x 1 unit cells. 制作一个 3 x 3 x 1 单元的格子。 |
sc333 | Make a lattice of 3 x 3 x 3 unit cells. 做一个 3 x 3 x 3 的单元格。 |
## Molecular graphics program, open from within PyMOL 分子图形程序,从 PyMOL 内打开 | |
ccp4mg | Open ccp4mg from within PyMOL. 从 PyMOL 中打开 ccp4mg。 |
chimera | Open Chimera from within PyMOL. 从 PyMOL 中打开 Chimera。 |
coot | Open coot from within PyMOL. 从 PyMOL 中打开 coot。 |
jmol | Open Jmol from within PyMOL. 从 PyMOL 中打开 Jmol。 |
vmd | Open vmd from within PyMOL. 在 PyMOL 中打开 vmd。 |
yasara | Open the molecular graphics prograom YASASRA from within PyMOL. 在 PyMOL 中打开分子图形程序 YASASRA。 |
## Molecular representation, additional styles. 额外的分子表示样式 | |
AO | Commands to Make Ambient occlusion image like those in Qutemole. 制作类似 Qutemole 中的环境遮挡图像的命令。 |
AOBW | Commands to Make Ambient occlusion image like those in Qutemole but Coloring with grayscale. 制作与 Qutemole 中一样的环境遮挡图像的命令,但用灰度着色。 |
AOD | Make Ambient occlusion image of Any with dark Carbon Atoms. 制作任何带有深色碳原子的环境遮挡图像。 |
---|---|
AODBW | Make Ambient occlusion image of Any with dark Carbon Atoms in grayscale. 用灰度制作任何有深色碳原子的环境遮挡图像。 |
BU | Commands to Make biological unit. 制作生物单元的命令。 |
BW | Make black-and white-ribbon Cartoon on A white background. 制作白色背景上的黑白带状卡通。 |
CB | Runs Jared Sampson’s script “colorblindfriendly.py”. 运行 Jared Sampson 的脚本 “colorblindfriendly.py”。 |
CBSS | Apply Colorblind-friendly Coloring to Ribbon or Cartoon Representations. 对色带或卡通的表现形式应用色盲友好的着色。 |
CR | Commands to Make Colored filled-ring Cartoon of nucleic Acids. 制作核酸的彩色填充环状卡通的命令。 |
CSS | Commands to Color Ribbon or Cartoon Representations of proteins by secondary structure. 按二级结构给蛋白质的带状或卡通表示法着色的命令。 |
DU | Make dumbbell (ribbons with Rolled edges) Cartoon of the Main Chains of nucleic Acids And proteins. 制作核酸和蛋白质主链的哑铃形(带卷边的丝带)卡通。 |
FR | Make filled-ring Cartoon of nucleic Acids. 制作核酸的填充环状卡通。 |
HH | Hide hydrogen Atoms of Currently visible Molecular objects. 隐藏当前可见分子对象的氢原子。 |
PE | Apply pearl effect About selection Cation or Anion. 对选定的阳离子或阴离子应用可选的珠光效果。 |
PE125 | Apply Alternative pearl effect About selection. 关于选择应用可选的珠光效果。 |
PE25 | Apply Alternative pearl effect About selected Cation or Anion. 对选定的阳离子或阴离子应用可选的珠光效果。 |
PE33 | Apply Alternative pearl effect About selection. 关于选择应用可选的珠光效果。 |
PE50 | Apply Alternative pearl effect About selected Cation or Anion. 对选定的阳离子或阴离子应用可选的珠光效果。 |
PE66 | Apply Alternative pearl effect About selection. |
关于选择应用可选的珠光效果。 | |
---|---|
PE75 | Apply Alternative pearl effect About selection. 关于选择应用可选的珠光效果。 |
PE85 | Apply Alternative pearl effect About selection. 应用关于选择的替代性珍珠效果。 |
SH | Show hydrogen Atoms of Currently visible Molecular objects. 显示当前可见分子对象的氢原子。 |
bs | Creates A ball And stick Representation of An object. 对象以球和棒形式表示。 |
bsbw | Creates A gray-scaled ball-and-stick Representation of An object. 创建一个对象的灰度球和棍子形式样式。 |
bsbwsc | Creates A gray-scaled ball-and-stick Representation of An object or selection. 创建一个对象或选区的灰度球棍表示法。 |
Only the side Chains Are shown As ball And stick when used with A Cartoon (ribbon diagram). 与卡通(带状图)一起使用时,只有侧链显示为球和棍子。 | |
bstvdw | Transparent vdw surface over ball And stick Representation by Bobby Patton At Colorato State University. 科罗拉多州立大学的 Bobby Patton 在球和棍子的表示上做了透明的 vdw 表面。 |
cartoonbw | Grayscale by secondary structure. 按二级结构进行灰度处理。 |
gscale | Apply grayscale to All Atoms by element. 按元素对所有原子应用灰度。 |
rgb | Restore Rgb Coloring of Atoms by element. 按元素恢复原子的 rgb 着色。 |
tvdw | Transparent vdw surface by Bobby Patton At Colorado State University. 科罗拉多州立大学的 Bobby Patton 设计的透明 vdw 表面。 |
tvdwbw | Transparent vdw surface by Bobby Patton At Colorado State University And grayscale by gscale function. 科罗拉多州立大学的 Bobby Patton 设计的透明 vdw 表面和 gscale 功能的灰度。 |
## Molecular surfaces, color by biophysical properties. 分子表面,由生物物理特性着色。 | |
colorh1 | Color protein molecules according to the Eisenberg hydrophobicity scale. Uses scheme 1. |
根据艾森伯格疏水性标尺给蛋白质分子着色。使用方案 1。 | |
---|---|
colorh2 | Color protein molecules according to the Eisenberg hydrophobicity scale. Uses scheme 2. 根据艾森伯格疏水性标尺给蛋白质分子着色。使用方案 2。 |
timcolor | Tim Mather’s biophysical coloring scheme for proteins. Tim Mather 的蛋白质生物物理学着色方案。 |
yrb | A script to highlight hydrophobicity and charge on protein surfaces (Hagemans et al. 2015). 突出蛋白质表面的疏水性和电荷的脚本 |
## Molecular symmetry generation. 分子对称性的产生 | |
pdbremarks | Read REMARK lines from PDB file. 从 PDB 文件中读取 REMARK 行。 |
Return dictionary with remarkNum as key and list of lines as value. 从 PDB 文件中读取 REMARK 行。 | |
Called by the function quat(). 由函数 quat()调用。 | |
quat | Runs Thomas Holder’s quat.py script to generate a biological unit using crystallographic symmetry. 运行 Thomas Holder 的 quat.py 脚本,使用晶体对称性生成一个生物单元。 |
Requires a pdb file. The defult file type with the fetch command is .cif. 需要一个 pdb 文件。fetch 命令的默认文件类型是.cif。 | |
When using fetch, add the optional parameter type=pdb. 当使用 fetch 时,添加可选的参数 type=pdb。 | |
Of course, you can also use type=pdb1 to retrieve the biological unit form the PDB. 当然,你也可以使用 type=pdb1 来检索 PDB 中的生物单元。 | |
Reads REMARK 350 from the pdb file filename and creates the biological unit (quaternary structure). 从 pdb 文件filename 中读取 REMARK 350 并创建生物单元(四级结构)。 | |
quat350 | Get transformation matrices for biomolecule 1 from REMARK 350. 从 REMARK 350 中获取生物单元 1 的转化矩阵。 |
## Object selection. 对象选择 | |
buriedW | Return a selection of buried waters. 返回被埋葬的水的选择。 |
checkParams | Checks user params for the findSeq function. |
检查 findSeq 函数的用户参数。 | |
---|---|
interface | Returns a selection of interface residues named according to what you passed into selName. 返回根据你传入 selName 的内容命名的界面残余物的选择。 |
## Orient molecule with viewport axes. 用视口轴线确定分子的方向。 | |
omx | Align long axis of molecule along the x-axis of the viewport. 将分子的长轴沿视口的 X 轴对齐。 |
omxy | Align long axis of molecule along minus x-y axis. 将分子的长轴沿负 X-Y 轴对齐。 |
omxyz | Align long axis of the selection along the minu xyz axis. 沿着最小 xyz 轴对齐选择的长轴。 |
omy | Align long axis of the selection along the y-axis of the viewport in the negative direction. 沿视口的 y 轴在负方向对齐选择的长轴。 |
omz | Align long axis of selection along the z-axis of the viewport in the negative z direction. 在负 z 方向上沿视口的 z 轴对齐选择的长轴。 |
ox | Align long axis of molecule along x-axis. 沿 x 轴对齐分子的长轴。 |
oxy | Align long axis of the selection along the x-y axis. 沿 x-y 轴对齐选择的长轴。 |
oxyz | Align long axis of the selection along the xyz axis. 沿 xyz 轴对齐选择的长轴。 |
oy | Align long axis of the selection along the y-axis of the viewport. 沿视口的 y 轴对齐选择的长轴。 |
oz | Align long axis of selection along the z-axis of the viewport. 沿视口的 z 轴对齐选择的长轴。 |
## Pairwise distances. 成对的距离 | |
pairD | Find the pairwise distances between two selections. 查找两个选择对象之间的成对距离。 |
## Save files with date and time in stem of filename. 保存文件的日期和时间在文件名的一栏。 | |
saln | Save a aln file (alignment file) with a time stamp. 保存一个带有时间戳的 aln 文件(序列比对文件)。 |
sccp4 | Save a ccp4 electron density map with a time stamp. |
保存一个带有时间戳的 ccp4 电子密度图。 | |
---|---|
scif | Save a cif file (Crystallographic Information File) with a time stamp. 保存一个带有时间戳的 cif 文件(晶体学信息文件)。 |
sdae | Save a dae file (Collada File) with a time stamp. 保存一个带有时间戳的 DAE 文件(Collada 文件)。 |
sdat | Save a dat file (output data file) with a time stamp. 保存一个带有时间戳的 dat 文件(输出数据文件)。 |
sfasta | Save a fasta file (output data file) with a time stamp. 保存一个带有时间戳的 fasta 文件(输出数据文件)。 |
sidtf | Save a idtf file (Intermediate Data Text Format) with a time stamp. 保存一个带有时间戳的 idtf 文件(中间数据文本格式)。 |
smae | Save a mae (Maestro) file with a time stamp. 保存一个带有时间戳的 mae(Maestro)文件。 |
smmd | Save a mmd (Macromodel) file with a time stamp. 保存一个带有时间戳的 mmd(Macromodel)文件。 |
smmod | Save a mmod (Macromodel) file with a time stamp. 保存一个带有时间戳的 mmod(宏观模型)文件。 |
smoe | Save a moe file (Molecular Operating Environment) with a time stamp. 保存一个带有时间戳的 moe 文件(分子操作环境)。 |
smol | Save a mol file with a time stamp. 保存一个带有时间戳的 mol 文件。 |
smol2 | Save a mol2 file with a time stamp. 保存带有时间戳的 mol2 文件。 |
smtl | Save mtl (Wavefront Material) file format with a time stamp. 保存带有时间戳的 mtl(Wavefront Material)文件格式。 |
sobj | Save obj file (Wavefront mesh file format) with a time stamp. 保存 obj 文件(Wavefront 网格文件格式)并加盖时间戳。 |
sout | Save output data file with a time stamp. 保存带时间戳的输出数据文件。 |
spdb | Save pdb data file with a time stamp. 保存带有时间戳的 pdb 数据文件。 |
spkl | Save a pkl file (Python pickle file) with a time stamp. 保存带有时间戳的 pkl 文件(Python pickle 文件)。 |
spkla | Save a pkla file (Python pickle file) with a time stamp. 保存带有时间戳的 pkla 文件(Python pickle 文件)。 |
spmo | Save a pmo file (XYZ, binary format file) with a time stamp. 保存一个带有时间戳的 pmo 文件(XYZ,二进制格式文件)。 |
---|---|
spng | Save a png file (Python pickle file) with a time stamp. 保存一个有时间戳的 png 文件(Python pickle 文件)。 |
spov | Save pov (POV-ray tracing file format) file with a time stamp. 保存带有时间戳的 pov(POV 射线追踪文件格式)文件。 |
spqr | Save pqr with file with timestamp. 保存带有时间戳的 pqr 文件。 |
spse | Save session file with a time stamp. 保存带有时间戳的会话文件。 |
srv | Get the view settings in a compact format on one line.Save to file with timestamp appended to the stem of the filename. 在一行中获得紧凑格式的视图设置。保存到文件,时间戳附加到文件名的末尾。 |
ssdf | Save session file with a time stamp. 保存带有时间戳的会话文件。 |
## Script writing aids. 脚本写作辅助工具。 | |
gitAdd | Enter help(gitAdd) to print steps for adding a file to version control. 输入 help(gitAdd) 来打印将文件加入版本控制的步骤。 |
gitCommit | Enter help(gitCommit) to print steps for saving updates to a file under version control. 输入 help(gitCommit) 可以打印在版本控制下保存文件更新的步骤。 |
gitInit | Enter help(gitInit) to print steps for creating a git repository. 输入 help(gitInit) 可以打印创建 git 仓库的步骤。 |
gitPull | Enter help(gitPull) to print steps to update a repository on github.com. 输入 help(gitPull) 打印更新 github.com 上的仓库的步骤。 |
gitPush | Enter help(gitPush) to print steps update a repository on github.com. 输入 help(gitPush) 来打印在 github.com 上更新版本库的步骤。 |
rline | Prints cheat sheet for the readline commands. 打印 readline 命令的备忘单。 |
rv | Get the view settings in a compact format on one line. 在一行中以紧凑的格式获取视图设置。 |
## Send search term to searchable website. 发送搜索词到可搜索的网站 | |
AB | Send search term or phrase to Amazon.com Books in default browser. 将搜索词或短语发送到默认浏览器中的 Amazon.com Books。 |
AC | Send search term to Anaconda Cloud. 发送搜索词到 Anaconda Cloud。 |
---|---|
AX | Send search term or phrase to arXiv. 发送搜索词或短语到 arXiv。 |
BX | Send search term or phrase to bioRxiv 发送搜索词或短语到 bioRxiv |
GB | Send search term or phrase to Google Books in default browser. 在默认浏览器中发送搜索词或短语到 Google Books。 |
GH | Send search term or phrase to GitHub in default browser. 在默认浏览器中发送搜索词或短语到 GitHub。 |
GO | Send search term or phrase Google in default browser. 在默认浏览器中发送搜索词或短语到 Google。 |
GS | Send search term or phrase to Google Scholar in default browser. 在默认浏览器中发送搜索词或短语到 Google Scholar。 |
GV | Send search term or phrase to Google Videos in default browser. 在默认浏览器中发送搜索词或短语到谷歌视频。 |
IPM | Read list of search terms andSubmit each term to PubMed in a separate browser tab. 阅读搜索词列表,在单独的浏览器标签中向 PubMed 提交每个词。 |
MA | Send search term to all searchable websites in PyMOLshortcuts. 将搜索词发送到 PyMOLshortcuts 中所有可搜索的网站。 |
MB | Send search term to multiple sites that contain book content. 发送搜索词到包含书籍内容的多个网站。 |
MC | Send search term to search ten core websites in PyMOLshortcuts: 发送搜索词到 PyMOLshortcuts 中的十个核心网站。 |
MM | Send search term to search for manuscripts in PyMOLshortcuts. 发送搜索词到 PyMOLshortcuts 中搜索手稿。 |
PDB | Submit a search term to the Protein Data Bank. 向蛋白质数据库提交一个搜索词。 |
PM | Send search term or phrase to PubMed. 发送搜索词或短语到 PubMed。 |
PML | Submit a search term to the PyMOL Users Mail Service. 提交一个搜索词到 PyMOL 用户邮件服务。 |
PW | Submit search of the PyMOL Wiki. 提交对 PyMOL Wiki 的搜索。 |
RG | Submit a search query of Research Gate. 提交 Research Gate 的搜索查询。 |
---|---|
SD | Submit a search term to Science Direct. 提交一个搜索词到 Science Direct。 |
SF | Send search term to sourceforge. 发送搜索词到 sourceforge。 |
SO | Submit a search term to Stackoverflow. 提交搜索词到 Stackoverflow。 |
SP | Submit a search term to Springer Books 提交搜索词到 Springer Books |
## Static images of various molecular scenes. Can serve as templates. 各种分子场景的静态图像。可以作为模板。 | |
BST | G2G3/U9U8 base step , PDB code 4PCO. G2G3/U9U8 基本步骤,PDB 代码 4PCO。 |
GGT | WT human gamma glutamyl transpeptidase at 1.67 Angstrom resolution as cartoon. PDB Code 4gdx. WT 人类 γ 谷氨酰转肽酶,分辨率为 1.67 埃,卡通图。 PDB 代码 4gdx。 |
GU | 10-mer dsRNA with 8 GU wobble base pairs. 具有 8 个 GU 摆动碱基对的 10 聚体 dsRNA。 |
LG | Nine sugar glycan in influenza N9 neuraminidase, PDB code 4dgr. 流感 N9 神经氨酸酶中的九糖聚糖,PDB 代码 4dgr。 |
N9 | Influenza N9 neuraminidase at 1.55 Angstrom resolution, PDB code 4dgr. 1.55 埃分辨率的流感 N9 神经氨酸酶,PDB 代码 4dgr。 |
NA | Hydrated sodium cation bound in major groove of a 16-mer RNA of Watson- Crick base pairs. 水合钠阳离子结合在 Watson-Crick 碱基对的 16 聚体 RNA 的主要槽中。 |
T4L | WT T4 lysozyme as ribbon diagram (1.08 Ang):3FA0. WT T4 溶菌酶作为带状图(1.08 Ang):3FA0。 |
U8 | 16-mer dsRNA with 8 contiguous Us. U-helix RNA (1.37 Ang):3nd3. 具有 8 个连续 Us 的 16 聚体 dsRNA。 U-螺旋 RNA (1.37 Ang): 3nd3。 |
WC8 | 16-mer dsRNA, Watson-Crick helix RNA: 3nd4. 16 聚体 dsRNA,Watson-Crick 螺旋 RNA:3nd4。 |
## Static images of various molecular scenes. Require coordinates on local computer. 各种分子场景的静态图像。要求在本地计算机上有坐标。 |
LBST | G2G3/U9U8 base step , PDB code 4PCO. G2G3/U9U8 基本步骤,PDB 代码 4PCO。 |
---|---|
LGGT | WT human gamma glutamyl transpeptidase as cartoon. PDB code 4gdx. WT 人 γ 谷氨酰转肽酶作为卡通。 PDB 代码 4gdx。 |
LGU | 10-mer dsRNA. 10-mer dsRNA。 |
LLG | Nine sugar glycan in influenza N9 neuraminidase at 1.55 Angstrom resolution, PDB code 4dgr. 流感 N9 神经氨酸酶中的九糖聚糖,分辨率为 1.55 埃,PDB 代码 4dgr。 |
LN9 | Influenza N9 neuraminidase, PDB code 4dgr. 流感 N9 神经氨酸酶,PDB 代码 4dgr。 |
LNA | Hydrated sodium cation bound in major groove of RNA with 16 Watson-Crick base pairs. 水合钠阳离子结合在具有 16 个 Watson-Crick 碱基对的 RNA 大沟中。 |
LT4L | Display WT T4 lysozyme as ribbon diagram (resolution 1.08 Ang):3FA0. 将 WT T4 溶菌酶显示为带状图(分辨率 1.08 Ang):3FA0。 |
LU8 | 16-mer dsRNA with 8 contiguous Us. U-helix RNA (1.37 Ang):3nd3. 具有 8 个连续 Us 的 16 聚体 dsRNA。 U-螺旋 RNA (1.37 Ang): 3nd3。 |
LWC8 | 16-mer dsRNA, Watson-Crick helix RNA, 3nd4. 16 聚体 dsRNA,Watson-Crick 螺旋 RNA,3nd4。 |
SC | Print to screen list of the shortcuts that are available in the script PyMOLshortcuts.py. 将脚本 PyMOLshortcuts.py 中可用的快捷方式打印到屏幕列表。 |
## Structure validation. 结构验证。 | |
sb | Show van der Waals clashes as red discs. 将范德瓦尔斯碰撞显示为红色圆盘。 |
## Terminal, open from within PyMOL. 终端,从 PyMOL 内部打开 | |
iterm | Open iTerm2 window on MacOS. 在 MacOS 上打开 iTerm2 窗口。 |
term | Open a Terminal window on MacOS. 在 MacOS 上打开一个终端窗口。 |
x11 | Open x11 terminal. 打开 x11 终端。 |
xquartz | Open new XQuartz terminal on MacOS. 在 MacOS 上打开新的 XQuartz 终端。 |
## Text editor, launch from with PyMOL. 文本编辑器,从 PyMOL 启动。 | |
---|---|
atom | Open the text editor Atom from within PyMOL. 从 PyMOL 中打开文本编辑器 Atom。 |
bbedit | Open file with the text editor bbedit from within PyMOL. 在 PyMOL 中用文本编辑器 bedit 打开文件。 |
code | Open file with Visual Studio Code from within PyMOL. 在 PyMOL 中用 Visual Studio Code 打开文件。 |
emacs | Open file with emacs from within PyMOL. 在 PyMOL 中用 emacs 打开文件。 |
gedit | Open file with gedit from within PyMOL. 在 PyMOL 中用 gedit 打开文件。 |
jedit | Open file with jedit from within PyMOL. 在 PyMOL 中用 jedit 打开文件。 |
mate | Open textmate from within PyMOL. 从 PyMOL 中打开 textmate。 |
npp | Open notepadpp from within PyMOL. 从 PyMOL 中打开 notepadpp。 |
nv | Open neovim from within PyMOL. 在 PyMOL 中打开 neovim。 |
oni | Open the editor Oni from within PyMOL. 在 PyMOL 中打开编辑器 Oni。 |
pdbed | Open PDBEditor.jar from within PyMOL. 在 PyMOL 中打开 PDBEditor.jar。 |
st3 | Open Sublime Text 3 from within PyMOL. 在 PyMOL 中打开 Sublime Text 3。 |
vim | Open vim from within PyMOL. 在 PyMOL 中打开 vim。 |
## Webapp,open from within PyMOL. Webapp,从 PyMOL 内部打开。 | |
gcal | Open Google Calendar. 打开谷歌日历。 |
gmail | Open gmail. 打开 gmail。 |
webmail | Open Web Mail in defualt browser. 在默认的浏览器中打开 Web Mail。 |
## Website, static, open from within PyMOL. 网站,静态的,从 PyMOL 内部打开。 |
ACA | Open the American Crystallographic Association Annual Meeting webpage. 打开美国晶体学协会年会网页。 |
---|---|
ALS | Open website of the Advanced Light Source. 打开 Advanced Light Source 的网站。 |
APS | Open website of the Advanced Photon Source. 打开高级光子源的网站。 |
CHESS | Open the website of CHESS. 打开 CHESS 网站。 |
EMDB | Open the website of the Electron Microscopy Data Bank. 打开电子显微镜数据库的网站。 |
EP | EasyPyMOL github site. EasyPyMOL github 站点。 |
IUCR | Open website of the IUCr Journals. 打开 IUCr 期刊的网站。 |
JM | Open the Jmol wiki. 打开 Jmol 维基。 |
LBSF | Open website of Laboratory of Biomolecular Structure and Function, the X-ray diffraction core facility at OUHSC. 打开生物分子结构与功能实验室的网站,这是 OUHSC 的 X 射线衍射核心设施。 |
MCL | Open website of Macromolecular Crystallography Laboratory at the University of Oklahoma. 打开俄克拉荷马大学大分子晶体学实验室网站。 |
MG | Open website of the OUHSC molecular graphics course. 打开 OUHSC 分子图形课程的网站。 |
MGW | Open Wikipedia webpage about molecular graphics. 打开有关分子图形的维基百科网页。 |
NDB | Open website of the Nucleic Acid Database. 打开核酸数据库的网站。 |
NSLSII | Open the website of the National Synchrotron Light Source II (NSLSII) at Brookhaven National Laboratory. 打开布鲁克海文国家实验室的国家同步加速器光源 II (NSLSII) 的网站。 |
PPC | Open the website of the Protein Production Facility at the University of Oklahoma in Norman.打 开位于诺曼的俄克拉荷马大学蛋白质生产设施的网站。 |
PS | Open the home page of the Protein Soceity. 打开蛋白质协会的主页。 |
RS | Open the homepage of the RNA Society. 打开 RNA 协会的主页。 |
SAXS | Open the webpage of SAXS links at OUHSC. 在 OUHSC 打开 SAXS 链接的网页。 |
SSRLSMB | Open the webpage of SSRL Structural Molecular Biology. 打开 SSRL Structural Molecular Biology 的网页。 |
SSURF | Open the webpage of the Society for Science at User Research Facilities (SSURF). 打开用户研究设施科学学会 (SSURF) 的网页。 |
SciPy19 | Open the SciPy 2019 YouTube Channel. 打开 SciPy 2019 YouTube 频道。 |
biocat | Open the webpage of the BIOCAT biological SAXS beamline at the Advanced Photon Source. 在高级光子源中打开 BIOCAT 生物 SAXS 光束线的网页。 |
chimeraWeb | Open the webste of UCSF Chimera. 打开 UCSF Chimera 的网站。 |
sasbdb | Open the webpage of the Small Angle Scattering Biological Data Bank (SASBDB). 打开小角度散射生物数据库 (SASBDB) 的网页。 |
sbgrid | Open the webpage of the Structural Biology Grid (SBGRID) YouTube Channel. 打开结构生物学网格 (SBGRID) YouTube 频道的网页。 |
ssrlbl42 | Open the webpage of SSRL Biological SAXS at BL 4-2. 在 BL 4-2 打开 SSRL Biological SAXS 的网页。 |
weather | Open National Weather Service website for locale. 打开国家气象局网站。 |
## Word processor, open from within PyMOL. 从 PyMOL 内部打开 Word。 | |
word | Open word from within PyMOL. 从 PyMOL 内部打开 Word。 |
四、PyMOL 绘图案例
4.1 修改卡通模型样式
在文献中经常看到蛋白结构显示为不同的卡通(Cartoon)样式,如设置 Cartoon 样式为
“Cylindrical Helices”,可以在菜单栏点击“Setting -> Cartoon -> Cylindrical Helices”;
这里列举一些常用的卡通结构的显示设置:
set cartoon_rect_length, 1.0 set cartoon_rect_width, 0.3 set cartoon_flat_sheets, on/off set cartoon_fancy_sheets, on/off set cartoon_discrete_colors, on/off set cartoon_smooth_loops, on/off set cartoon_loop_radius, 0.2 set cartoon_loop_quality, 1.0 set cartoon_loop_cap, 1.0 | ![]() |
---|---|
set cartoon_round_helices, on/off set cartoon_oval_length, 1.2 set cartoon_oval_quality, 10 set cartoon_oval_width, 0.25 set cartoon_fancy_helices, on/off set cartoon_dumbbell_length, 1.0 set cartoon_dumbbell_width, 0.1 set cartoon_dumbbell_radius, 0.15 set cartoon_cylindrical_helices, on/off set cartoon_helix_radius, 2.0 set cartoon_highlight_color, gray60 | ![]() ![]() |
下面来看一个案例,输入以下命令,可以观察一下输出图片的差异:
PyMOL> load 1t46.cif
PyMOL> remove solvent
PyMOL> set antialias = 1
PyMOL> set ambient=0.3
PyMOL> set direct=1.0
PyMOL> set ray_trace_mode=1
PyMOL> set stick_radius = 0.2
PyMOL> set cartoon_tube_radius, 0.2
PyMOL> set cartoon_fancy_helices=1
PyMOL> set cartoon_cylindrical_helices=0
PyMOL> set cartoon_flat_sheets = 1.0
PyMOL> set cartoon_smooth_loops = 0
PyMOL> set cartoon_highlight_color =grey50
PyMOL> bg_color white 结合前几章节介绍的内容,根据需要去展示一些必要的信息,并添加标签说明,就可以获得可用于文章发表的图片啦,如下例:
4.2 修改表面显示样式
同样的,surface 的设置参数也较多,这里只列举一些常用的设置,足以满足平常的绘图需求,其它参数设置,大家可自行体验。
PyMOL> set surface_type, 0 *#*表面以平滑曲面显示
PyMOL> set surface_type, 1 *#*表面以点状显示 PyMOL> set surface_type, 2 *#*表面以网状显示
PyMOL> set surface_mode, 0 *#*表面不包含杂原子
PyMOL> set surface_mode, 1 #所有原子均生成表面,包含HET 和氢原子
PyMOL> set surface_mode, 2 *#*只有重原子生成表面
PyMOL> set surface_mode, 3 *#*可见对象生成表面
PyMOL> set surface_mode, 4 *#*可见对象且重原子生成表面
PyMOL> set surface_cavity_mode, 1 *#*设置空腔显示模式为倒置(inverted)
PyMOL> set surface_cavity_radius, -10 *#*设置空腔显示半径大小
PyMOL> set surface_cavity_cutoff, 7 #隐藏距离selection 大于7 埃的表面点
PyMOL> set surface_smooth_edges, off *#*关闭表面平滑
PyMOL> set surface_smooth_edges, on *#*打开表面平滑
PyMOL> util.ray_shadows(‘occlusion2’) *#*设置阴影
4.3 修改球棍模型样式
使用球棍模型展示分子结构可能是不错的选择,这里提供两种展示风格案例。
风格 1:
*#*导入结构并分离蛋白与配体 PyMOL> load pdb/3K8Y.pdb, tmp PyMOL> extract lig, resn GNP PyMOL> extract prot, polymer PyMOL> delete tmp | ![]() |
---|---|
*#*显示球棍模型 PyMOL> hide everything PyMOL> show sticks, lig PyMOL> show spheres, lig | ![]() |
*#*着色 PyMOL> color gray85, elem C PyMOL> color red, elem O PyMOL> color slate, elem N PyMOL> color gray98, elem H PyMOL> set stick_color, black | ![]() |
*#*更改球棍模型显示方案 PyMOL> set stick_radius, .07 PyMOL> set sphere_scale, .18 PyMOL> set sphere_scale, .13, elem H PyMOL> set bg_rgb=[1, 1, 1] PyMOL> set stick_quality, 50 PyMOL> set sphere_quality, 4 PyMOL> set ray_trace_mode, 1 PyMOL> set ray_texture, 2 PyMOL> set antialias, 3 PyMOL> set ambient, 0.5 PyMOL> set spec_count, 5 PyMOL> set shininess, 50 PyMOL> set specular, 1 PyMOL> set reflect, .1 PyMOL> set dash_gap, 0 PyMOL> set dash_color, black PyMOL> set dash_gap, .15 PyMOL> set dash_length, .05 PyMOL> set dash_round_ends, 0 PyMOL> set dash_radius, .05 | ![]() |
*#*渲染 PyMOL> zoom lig PyMOL> orient lig PyMOL> ray | ![]() |
风格 2:
*#*导入结构并分离蛋白与配体 PyMOL> load pdb/3K8Y.pdb, tmp PyMOL> extract lig, resn GNP PyMOL> extract prot, polymer PyMOL> delete tmp | ![]() |
---|---|
*#*显示球棍模型 PyMOL> hide everything PyMOL> show sticks, lig PyMOL> show spheres, lig | ![]() |
*#*着色 PyMOL> bg_color white PyMOL> util.cbab PyMOL> set stick_ball_color, atomic PyMOL> set_bond stick_color, white, all, all | ![]() |
*#*球棍模型显示设置 PyMOL> set stick_radius, 0.4 PyMOL> set sphere_scale, 0.3 PyMOL> set_bond stick_radius, -0.14, all, all PyMOL> set light_count, 8 PyMOL> set spec_count, 1 PyMOL> set shininess, 10 PyMOL> set specular, 0.25 PyMOL> set ambient, 0 PyMOL> set direct, 0 PyMOL> set reflect, 1.5 PyMOL> set ray_shadow_decay_factor, 0.1 PyMOL> set ray_shadow_decay_range, 2 PyMOL> unset depth_cue | ![]() |
*#*渲染 PyMOL> zoom lig PyMOL> orient lig PyMOL> ray | ![]() |
4.4 蛋白配体复合物绘图
在前面部分其实已有蛋白配体复合物绘图的一些案例,如4.1部分,每个人的审美会有不同,这里再提供几种其它风格的复合物绘图方案。
风格 1(QuteMol 风格):
QuteMol:http://qutemol.sourceforge.net/
*#*导入结构并分离蛋白与配体 PyMOL> load pdb/3K8Y.pdb, tmp PyMOL> extract lig, resn GNP PyMOL> extract prot, polymer PyMOL> delete tmp | ![]() |
---|---|
*#*显示为球状模型 PyMOL> as spheres | ![]() |
*#*着色 PyMOL> bg_color white PyMOL> set_color oxygen, [1.0,0.4,0.4] PyMOL> set_color nitrogen, [0.5,0.5,1.0] PyMOL> util.cbaw PyMOL> color orange, resn GNP | ![]() |
*#*设置光照、阴影等 PyMOL> set light_count, 8 PyMOL> set spec_count, 1 PyMOL> set shininess, 10 PyMOL> set specular, 0.25 PyMOL> set ambient, 0 PyMOL> set direct, 0 PyMOL> set reflect, 1.5 PyMOL> set ray_shadow_decay_factor, 0.1 PyMOL> set ray_shadow_decay_range, 2 PyMOL> unset depth_cue PyMOL> set field_of_view, 60 | ![]() |
*#*渲染 PyMOL> ray | ![]() |
风格 2(Goodsell-like):
*#*导入结构并分离蛋白与配体 PyMOL> load pdb/3K8Y.pdb, tmp PyMOL> extract lig, resn GNP PyMOL> extract prot, polymer PyMOL> delete tmp | ![]() |
---|---|
*#*显示为球状模型 PyMOL> as spheres | ![]() |
*#*着色 PyMOL> bg_color white PyMOL> color lightblue, prot PyMOL> color magenta, lig | ![]() |
*#*设置视角 PyMOL> orient all within 8 of lig | ![]() |
*#*设置光照、渲染参数等 PyMOL> unset specular PyMOL> set light_count, 1 PyMOL> set ray_trace_gain, 0 PyMOL> set ray_trace_mode, 3 PyMOL> set ray_trace_color, black PyMOL> unset depth_cue | ![]() |
*#*渲染 PyMOL> ray | ![]() |
风格 3:
*#*导入结构并分离蛋白与配体 PyMOL> load pdb/3K8Y.pdb, tmp PyMOL> extract lig, resn GNP PyMOL> extract prot, polymer PyMOL> delete tmp | ![]() |
---|---|
*#*设置蛋白和配体的显示样式 PyMOL> hide all PyMOL> preset.ball_and_stick(“lig”) PyMOL> show spheres, prot PyMOL> set sphere_scale, 0.99, prot PyMOL> show surface, prot | ![]() |
*#*着色 PyMOL> bg_color white PyMOL> set_bond stick_color, 0xffff44, lig PyMOL> set_bond stick_transparency, 0.35, lig PyMOL> color grey, lig and e. C PyMOL> set valence, 1, lig PyMOL> ramp_new pRamp, lig, selection=prot, / range=[5,30], color=rainbow PyMOL> set surface_color, pRamp, prot PyMOL> color white, prot PyMOL> color grey30, prot and e. C PyMOL> disable pRamp | ![]() |
*#*设置光照、透明度、渲染参数等 PyMOL> set ray_transparency_contrast, 0.20 PyMOL> set ray_transparency_oblique, 1.0 PyMOL> set ray_transparency_oblique_power, 20 PyMOL> set surface_quality, 2 PyMOL> set light_count, 5 PyMOL> set ambient_occlusion_mode, 1 PyMOL> set ambient_occlusion_scale, 50 | ![]() |
PyMOL> set ambient, 0.40 PyMOL> set transparency, 0.50 PyMOL> disable pRamp PyMOL> set spec_power, 1200 PyMOL> set spec_reflect, 0.20 PyMOL> set ray_opaque_background, 0 PyMOL> set ray_shadow, 0 PyMOL> set field_of_view, 50 | |
*#*渲染 PyMOL> zoom complete=1 PyMOL> ray | ![]() |
4.5 蛋白截面图
在 PyMOL 中可以通过“clip”命令绘制截面,也可通过鼠标中键滑动的方式进行调节。“clip” 的用法如下:
clip {near|far|move|slab|atoms}, distance [,selection [,state ]]
本例中只使用近平面截面,其它的大家可自行尝试:
PyMOL> bg_color white *#*设置背景为白色
PyMOL> set ambient=0.2 #设置环境光为0.2
PyMOL> set direct=0.5 #设置直射光为0.5
PyMOL> set light_count, 1 #设置灯光数量为1
*#*为了让截面有一些透明度,这里选择输出两张图片进行叠合
PyMOL> set two_sided_lighting, on *#*打开双面照明
PyMOL> clip near, -25 *#*设置截面
PyMOL> ray
*#*第二张图片
PyMOL> set two_sided_lighting, off *#*关闭双面照明
PyMOL> set ray_interior_color, grey90 *#*设置截面的颜色
PyMOL> set transparency, 0.15 #设置表面的透明度为15%
PyMOL> ray
因为没找到如何更改截面透明度的方法,所以用了这种笨办法。此外,本例中将配体分子显示为球棍模型,具体方法为:
PyMOL> set stick_ball,1
PyMOL> set stick_ball_ratio, 2.3
PyMOL> as stick
4.6 核酸绘图
在 PyMOL 中导入核酸结构,Cartoon 样式默认一般由一个磷酸骨架和一个跨过核苷酸平面的枝棒构成。
默认的设置如下:
set cartoon_nucleic_acid_mode, 0 #骨架为磷酸基;实际上PyMOL 默认设置为4 set cartoon_ladder_mode, 1 # 从磷酸基骨架到核苷酸stick 显示模式 set cartoon_ring_mode, 0 # 核酸中环结构(戊糖和碱基)显示模式 set cartoon_ring_finder, 1 *#*磷酸基骨架与环结构的连接显示模式
下面修改一下 Cartoon 中环结构的显示模式:
set cartoon_ring_mode, value #“value”可为0~5
其它的也基本类似,可自行尝试查看。例如:
set cartoon_ring_finder, value set cartoon_ladder_mode, value set cartoon_nucleic_acid_mode, value
4.7 背景虚化效果
使用 PyMOL 绘图时可以将周边的图像虚化,以使中心的 Object 更加突出,如获得如下的图像:
要实现类似的效果,可以通过 FocalBlur 脚本来实现,可通过如下地址获取:
https://raw.githubusercontent.com/Pymol-Scripts/Pymol-script-repo/master/focal_blur.py
也可复制该脚本内容,并保存为 focal_blur.py 文件,该脚本内容如下:
from future import print_function from pymol import cmd from tempfile import mkdtemp from shutil import rmtree from math import sin, cos, pi, sqrt from PIL import Image def FocalBlur(aperture=2.0, samples=10, ray=0, width=0, height=0): ‘’’ DESCRIPTION Creates fancy figures by introducing a focal blur to the image. The obj at the origin will be in focus.
AUTHOR
首先将 focal_blur.py 文件放在工作目录中,加载 FocalBlur 脚本:
PyMOL> run focal_blur.py
也可通过菜单栏点击“File -> Run Script… -> focal_blur.py”来运行 FocalBlur 脚本;
然后在 PyMOL 中进行使用:
PyMOL> FocalBlur aperture=2.0,samples=20,ray=1
l 当使用光线追踪(raytracing) 时,图像创建的时间将会变得更长,具体的时间和采样 n 设置的大小有关;
l aperture 为相机孔隙,值越大越模糊下面为 aperture 和 samples 不同值的效果例子:
PyMOL> FocalBlur aperture=1,samples=100,ray=1
PyMOL> FocalBlur aperture=2,samples=100,ray=1
PyMOL> FocalBlur aperture=4,samples=400,ray=1
PyMOL> FocalBlur aperture=4,samples=400,ray=0
4.8 豪猪图绘制
本例中通过豪猪图来可视化分子动力学模拟从起始结构到最终结构的变化,该图的绘制可通
过 modevectors.py 脚本来实现,下载地址如下:
https://raw.githubusercontent.com/Pymol-Scripts/Pymol-script-repo/master/modevectors.py
也可复制该脚本内容,并保存为 modevectors.py 文件,该脚本内容如下:
‘’’ See more here: http://www.pymolwiki.org/index.php/Modevectors ‘’’ from future import print_function from pymol.cgo import * # get constants from math import * from pymol import cmd def modevectors(first_obj_frame, last_obj_frame, first_state=1, last_state= “”" Authors Sean Law & Srinivasa Michigan State University slaw_(at)_msu_dot_edu Editor Sacha Yee
首先我们抽取分子动力学的开始和结束两帧并保存为 pdb 格式文件(本例中轨迹文件由
Gromacs 进行 1ns 的动力学模拟获得):
gmx trjconv -s md_0_10.tpr -f md_0_10_center.xtc -o first_0.pdb -dump 0 gmx trjconv -s md_0_10.tpr -f md_0_10_center.xtc -o last_1000.pdb -dump 1000
将两个蛋白结构文件导入至 PyMOL 中:
PyMOL> load first_0.pdb *#*导入第一帧轨迹
PyMOL> load last_1000.pdb *#*导入最后一帧轨迹
将 modevectors.py 文件放在工作目录中,运行 modevectors.py 脚本:
PyMOL> run modevectors.py
绘制豪猪图:
PyMOL> modevectors first_0, last_1000
如果需要对箭头的样式进行更改,如更改箭头的长度:
PyMOL> modevectors first_0, last_1000, head_length=2.0
得到:
如更改箭头的颜色:
PyMOL> modevectors first_0, last_1000, head_length=2.0, headrgb=(1.0,0.0,0.0)
得到:
如果需要更改箭尾,只需将 headrgb 改为 tailrgb 即可,如:
PyMOL> modevectors first_0, last_1000, head_length=2.0, tailrgb=(1.0,0.0,0.0) 更多样式,可以参照:
https://pymolwiki.org/index.php/Modevectors 之后按住需求进行设置导出图片即可。
4.9 蛋白结构 B-factor 图谱
B-factor(又称 Debye-Waller factor 或 temperature factor)是用来描述 X-射线衍射蛋白晶体结构时由于原子热运动造成的射线衰减或散射现象,主要是用来体现晶体中原子构象状态的一种模糊度。B-factor 所体现的数值(B 值)可用于识别蛋白结构中的原子、氨基酸侧链及 loop 区域的运动性及柔性,B-factor 越高,模糊度越大,相应部位的构象就越不稳定或柔性越强。在晶体学数据中 B-factor 一般是以原子为单位给出的,通常我们将其换算成相应氨基酸残基的 B-factor 值,从而可以分析氨基酸残基的构象稳定性或其柔性。因此,B-factor 被广泛应用于研究蛋白动力学、筛选生物活性小分子以及蛋白质工程领域,具有极为重要的科学研究意义。
使用 PyMOL 可十分容易的绘制 B-factor 图谱,这里我们导入从 PDB 数据库中下载的蛋白结构,PDB ID 为 5LO5,从 PDB 数据库中下载的蛋白结构文件中已经包含了 B-factor 数据,我们可以直接绘图,如输入以下命令:
PyMOL> spectrum b, rainbow_rev, 5lo5, byres=1
当然,我们可以自定义着色方案,如使用青色-黄色:
PyMOL> spectrum b, cyan_yellow, 5lo5, byres=1
如果需要自定义着色对应的数值范围,可以在命令中定义最小值与最大值,如:
PyMOL> spectrum b, rainbow_rev, 5lo5, minimum=5, maximum=50, byres=1
如果需要添加图例,可输入以下命令:
PyMOL> ramp_new color_bar, 5lo5, range=[5,50], color=rainbow
4.10 蛋白结构根据属性着色
有时如分子动力学之后获得的蛋白结构文件中不包含 B-factor 数据,或者需要使用其它的方案进行结构着色,这时我们就需要导入新的数据至结构文件中。
如本例中我们将分子动力学后获得的 RMSF 数据替换蛋白.pdb 结构文件中的 B-factor 数据,来实现氨基酸残基根据 RMSF 值着色的目的。
当然,如 Gromacs 中可以直接将 RMSF 值转换为 B-factor 并输出至.pdb 文件中,本例中只为做 PyMOL 演示,这里不涉及。本例中我们使用的PDB结构文件“md.pdb”为分子动力学轨迹中抽取的一帧轨迹。并将RMSF 值数据输入至新建的“newBfactors.txt”文件中,每行一个数值,类似于:
下面我们需要借助 Python 脚本“loadBfacts.py”。该脚本的下载地址如下:
http://dx.doi.org/10.6084/m9.figshare.1176991
也可复制该脚本内容,并保存为“loadBfacts.py”文件,该脚本内容如下:
from pymol import cmd, stored, math
def loadBfacts (mol,startaa=1,source=“newBfactors.txt”, visual=“Y”):
“”"
Replaces B-factors with a list of values contained in a plain txt file usage: loadBfacts mol, [startaa, [source, [visual]]]
mol = any object selection (within one single object though) startaa = number of first amino acid in ‘new B-factors’ file (default=1) source = name of the file containing new B-factor values (default=newBfacto visual = redraws structure as cartoon_putty and displays bar with min/max v
example: loadBfacts 1LVM and chain A
“”"
obj=cmd.get_object_list(mol)[0]
cmd.alter(mol,“b=-1.0”)
( ’ ')
首先加载“loadBfacts.py”脚本:
PyMOL> run loadBfacts.py
也可通过菜单栏点击 File>Run Script…>loadBfacts.py 来运行该脚本;
随后运行以下命令:
PyMOL> loadBfacts md, startaa=15
注:“md”为项目名称,“startaa=15”定义了起始的残基编号,本例中起始编号为 15,一定事先要确认好编号顺序
获得下图:
然后可以根据需要进行绘图,如更改蛋白显示方案,更改图例等。如此,我们便获得了一张根据 RMSF 值着色的蛋白结构图(下图图例在 PS 中进行了修改)。
4.11 蛋白-蛋白相互作用界面
本例中使用的是猪胰蛋白酶(链 A)和大豆胰蛋白酶抑制剂(链 B)的复合物结构,PDB ID 为 1AVX。
*#*导入复合物结构并分离 PyMOL> load 1avx.pdb, Cmplx PyMOL> extract darp, Cmplx and chain A PyMOL> extract lig, Cmplx and chain B PyMOL> delete Cmplx | ![]() |
---|---|
*#*着色并添加表面 PyMOL> bg_color white PyMOL> color green, darp PyMOL> color cyan, lig PyMOL> select C1, br. ((darp within 5.0 / of lig) or (lig within 5.0 of darp)) PyMOL> color yellow, C1 PyMOL> select C2, ((darp within 5.0 of / lig) or (lig within 5.0 of darp)) PyMOL> color orange, C2 PyMOL> select C3, ((darp within 3.6 of / lig) or (lig within 3.6 of darp)) PyMOL> color red, C3 PyMOL> hide all PyMOL> show surface PyMOL> util.ray_shadows(‘occlusion1’) | ![]() |
*#*旋转并相对移动 PyMOL> rotate y, -90, darp PyMOL> translate [-20,0,0], darp PyMOL> rotate y, 90, lig PyMOL> translate [20,0,0], lig | ![]() |
当然,也可根据自己需要去调整显示样式,根据自己需要去添加标签,这里就不再赘述。