PyMOL用法.docx
《PyMOL用法.docx》由会员分享,可在线阅读,更多相关《PyMOL用法.docx(24页珍藏版)》请在冰点文库上搜索。
PyMOL用法
PyMOL用法(教程一)
简介&安装
是一个开放源码,由利用者赞助的分子三维结构显示软件,由WarrenLyfordDeLano编写,而且由DeLanoScientificLLC负责商业发行。
Pymol被用来创作高品质的分子(专门是生物大分子如蛋白质)三维结构。
据软件作者宣称,在所有正式发表的科学论文中的蛋白质结构图像中,有四分之一是利用Pymol来制作的。
Pymol名字的来源:
“Py”表示该软件基于python那个运算机语言,“Mol”那么是英文分子(molucule)的缩写,表示该软件用来显示分子结构。
由于实验需要,本人正在学习该软件,在那个地址把学习进程记录下来,希望对有需要的朋友有所帮忙。
今天先来讲说安装吧。
自2006年8月1日起,DeLanoScientific对事前编译好的PyMOL执行程序(包括beta版)采取限定下载的方法。
目前,只有付费用户能够取得。
只是源代码目前仍是能够免费下载,供利用者编译。
若是你和我一样,不想为此花钱的话:
1若是你是Windows用户,第一下载的源代码。
然后安装CygWin,并且确保正确安装以下模块:
▪C++(gccorg++packagename)
▪Python
▪OpenGL
▪PNG
2然后在源代码目录里面依次运行:
3若是你是Linux用户,第一确保以下东东已安装:
▪Python
▪Pmw
▪OpenGLdriver(我用的是NVdia)
▪libpng
▪Subversionclient(下载源代码需要)
然后进入源代码目录#cdpymol-src
开始依次编译#pythonsetup.pyinstall#pythonsetup2.pyinstall
拷贝执行脚本到某个$PATH,安装就弄定了#cp./pymol/usr/bin
若是运行时取得错误信息"ImportError:
NomodulenamedPmw",那么你应该运行#pythonsetup2.pyinstallpmw
若是你在利用Gentoo,请确保编译python时添加了tcl/tk支持,不然运行是会提示错误"ImportError:
Nomodulenamed_tkinter"#USE="tcltk"emergepython
4好了,下面咱们就能够够进入Pymol的世界了。
大体的鼠标操作
里要紧介绍一下Pymol的大体操作,包括窗口菜单、加载文件、图像的大体鼠标操作等等。
当你打开Pymol后,你将会看到如以下图所示的界面:
该界面分为2窗口,上面的外部GUI窗口(ExternalGUI)和下面的ViewerWindow。
ViewerWindow又分为左右两块,左侧用来显示结构图像的(Viewer),右边那么是一个内部GUI窗口(InternalGUI)。
Viewer自身包括一个命令行(如图中左下方的PyMOL>提示符),能够用来输入Pymol命令;在InernalGUI中那么能够选定一些特定的对象并完成一些操作。
ExternalGUI那么包括一个标准菜单、一个输出区、一个命令行输入区和右边的一些经常使用命令按钮。
请注意,标准的“复制、剪切和粘贴”操作只能在ExternalGUI中完成,而且必需利用“Ctrl+C、Ctrl+X和Ctrl+V”来完成,这也是那个所谓的外部GUI的最重要的优势。
加载文件,有二种方式:
5在ExternalGUI当选择File-Open
6利用命令行:
load
例如咱们此刻从pdb.org上下载了一个离子通道蛋白的pdb文件(PENTAMERICLIGANDGATEDIONCHANNELFROMERWINIACHRYSANTHEMI),名字为2vl0.pdb,然后用pymol打开它:
load2vl0
该蛋白质的结构就被显示出来啦,如以下图:
大体的图像操作:
是不是感觉上面的那个三维结构图看起来乱七八糟的阿,那是因为蛋白质分子都是由成千上万个原子组成的,而Pymol打开pdb文件时是默许把所有的原子都显示在那个小小的Viewer窗口里面的,固然看起来就很乱了。
这时就需要咱们对那个图像进行一些操作,来取得漂亮的清楚的蛋白质三维结构图。
先说说鼠标吧。
∙任意旋转图像:
对准图像的任意处点住鼠标左键然后移动鼠标。
∙放大/缩小图像:
对准图像的任意处点住鼠标右键然后移动鼠标:
向上是缩小,向下那么是放大。
∙移动图像:
对准图像的任意处点住鼠标中键或滚轮,然后移动鼠标。
∙设定图像旋转中心:
Ctrl+Shift+鼠标中键或滚轮。
∙移动剪切平面:
Shift+鼠标右键。
鼠标上下移动:
调整前剪切平面(离你近的);鼠标左右移动:
调整后剪切平面(离你远的)。
最后一项“移动剪切平面”有点不容易明白得,需要多试几回。
配合下面的示用意你会发觉Pymol的这项设定其实很方便。
今天没时刻了,明天还要出远门,就学到那个地址吧,用下面那个图作为终止,其实确实是用cartoon的形式显示了上面的那个蛋白质,只是还比较难看。
。
。
基础Pymol命令
这里主要介绍一下Pymol的一些基本命令操作。
就像Linux一样,要想更好的操作Pymol,掌握一些常用的命令是必不可少的。
Pymol是区分大小写的,不过目前为止Pymol还是只用小写,所以记住,所有的命令都是使用小写字母的。
当你开始用Pymol来完成一个项目时,你也许想会让Pymol自动保存你所有输入过的命令,以方便日后你再次读取并修改。
这个可以通过创建一个log文件来达到,该文件的后缀名应为.pml,记住,Pymol像Linux一样支持Tab键命令补全:
Pymol>log_open
如果你想终止记录,只需要键入:
Pymol>log_close
好了,现在载入pdb文件(继续前用的pdb文件):
现在Pymol就创建了一个叫2vlo的对象,你可以在内部GUI窗口里面看见这个项目的名字。
但是你也可以自己定义该项目的名字(如test):
Pymol>load2vlo.pdb,test
下面说说如何来操作你新建的对象。
首先:
Pymol>showrepresentationPymol>hiderepresentation
其中representation可以为:
cartoon,ribbon,dots,spheres,surface和mesh。
使用这2个命令可以让Pymol以不同的方式显示蛋白质结构。
例如当我们键入:
Pymol>hidelinesPymol>showribbon
我们将得到如下结果:
也许你已经注意到结构中有2个一模一样的蛋白质分子,只是方向不同而已,那么如何让Pymol只显示当中的一个分子呢?
首先输入如下命令:
Pymol>labelall,chains
这个命令的作用是让Pymol给蛋白质结构中的“链”编号,你会发现,第一个分子由“链”A-E组成,第二个则由F-J组成。
好了,如果我们想把一个蛋白质分子去掉,那么只要把“链”A-E或者F-J去掉即可:
Pymol>hideribbon,chainf+g+h+i+j
上面的东东还可以这样完成:
Pymol>selecttest,chainf+g+h+i+jPymol>hideribbon,test
上面的第一句命令的作用是选择“链”F-J,并命名为test,然后在第二句命令中隐藏它。
这样做的好处是,一旦你选择并命名了某个目标,你可以在后面随时对它进行各种操作。
并且你在右边的控制面板里面也可以看到你选定的目标,并可以对其进行操作。
比如你可以:
Pymol>hideeverything,testPymol>showcartoon,test
这样你会得到:
说到这里就提到了Pymol的一个比较重要的东东,就是选择并命名目标,它的基本语法就是:
Pymol>selectselection-name,selection-expression
其中名字可以由字母[A/a-Z/z],数字[0-9]已经下划线[_]组成,但是要避免使用:
!
@#$%^&*()'"[]{}\|~`<>?
/
如果你要删除你选定的目标或者整个对象,你可以:
Pymol>deleteselection-namePymol>deleteobject-name
下面讲讲如何给对象以及目标改变颜色。
预定义的颜色名字可以在外部GUI窗口的Settings-Colors中找到:
Pymol>colorcolor-namePymol>colorcolor-name,selection-expression
比如我们可以:
Pymol>colorred,sshPymol>coloryellow,sssPymol>colorgreen,ssl+""
其中“ss”代表secondarystructure,“h”代表Helix,“s”代表Betasheet,l+""代表Loop和所以其他结构。
这3句的作用分别是把所有的Helix变成红色;把所有的Betasheet变成黄色;把所有的Loop以及其他部分变成绿色,于是我们得到:
Pymol可以同时打开多个pdb文件:
Pymol>loadPymol>load
如果你想暂时关闭/打开某个对象,可以这样:
Pymol>disableobject-name-1Pymol>enableobject-name-1
你也可以用disable命令去除最后一个选择的目标上出现的粉红色的小点,但是该命令并不会使你选定的目标不可见。
Pymol>disableselection-name
使用鼠标通常是改变图像视角的最方便的办法,不过命令如zoom,orient等等有时候使用起来也是很有用的,它们提供了另一种改变图像视角的办法。
放大选定目标:
Pymol>zoomselection-name
定向选定目标,可以使选定目标最大的尺寸水平显示,次大的尺寸竖直显示:
:
Pymol>orientselection-name
你也可以用view命令保存你目前的视角,注意,该命令只保存视角,并不保存你的对象显示方式:
Pymol>viewkey,action
其中“key”是你随便给当前视角定的名字,“action”可以为:
store或者recall。
如果不加任何“action”,则默认为recall:
Pymol>viewv1,storePymol>viewv1,recallPymol>viewv1
说了这么多,最后说说如何保存文件吧。
Pymol有3个层面的保存方式,下面来分别说说。
1使用log_open命令把你所有使用过的命令记录为一个文本文档:
Pymol>log_openscript-file-name
这样以后当你再次调用该文档时,Pymol将执行上面的所有命令:
Pymol>@script-file-name
不过注意,如果你想记录当前视角,则必须使用get_view命令。
你可以选择外部GUI窗口中的File-Append/Resume/CloseLog来分别暂停记录/恢复记录/停止记录该文档。
你可以随时编辑该文档。
在linux下,该文档的默认保存目录为当前用户的home目录。
2如果你想下次打开Pymol时直接回到当前所在的状态,那么你可以选择外部GUI窗口里面的File-SaveSession,创建一个会话文件(.pse)。
该会话文件和上面提到的文档文件的区别在于,首先文档文件可以编辑,但会话文件不可以;记录文档文件前必须先运行log_open命令,而会话文件可以随时创建;最后文档文件以文档形式运行(@),而打开会话文件则必须选择外部GUI窗口中的File-Open。
什么时候需要创建会话文件呢?
比如当你在某时有多个选择时,你可以保存当前状态,然后一一尝试这些选择,不满意时只需要重新打开该会话文件即可。
也就是说创建会话文件起到了“undo”的作用,这正是Pymol所缺少的。
希望开发者能赶快加入该功能,那么这个会话文件好像就没什么大用了,呵呵。
3如果你觉得当前显示窗口里面显示的结构图像已经满足你的要求了,你可以把它保存为图片。
在这之前你可以使用ray命令来优化你的图像,它可以使你的图像具有三维的反射及阴影特效:
Pymol>rayPymol>pngyour_path/image_name
最后就用该命令导出的图片结束这次笔记吧。
Pymol命令的语法与目标选择的表达
上次介绍一些Pymol的基本命令。
现在来具体说说Pymol命令的语法,还有在选择操作目标应该如果表达。
个人觉得这部分内容对学习Pymol来说是至关重要的。
从上次讲的一些例子中不难看出,Pymol的命令都是由关键词(keyword)加上一些变量(argument)组成,格式如下:
Pymol>keywordargument
其中关键词(keyword)当然是必须的,而变量则不是必须的,比如退出命令quit就不需要附加变量:
Pymol>quit
当然更多的命令通常是需要加变量的,比如放大命令zoom,但是你会发现即使你不加任何变量该命令也可以被执行,这是因为Pymol的许多命令有一个默认变量,下面两个命令的作用是一样的,其中的目标选择all就是zoom的默认变量:
Pymol>zoomPymol>zoomall
还有些命令可以带多个参数,比如加色命令color,它的用法如下:
Pymol>colorcolor-namePymol>colorcolor-name,selection-expression
第一个color虽然只带一个变量"color-name",但其实它包含了第二个默认变量all,所以它的作用是把整个结构变成"color-name"的颜色。
第二个color带两个变量,和第一个的区别就是把默认的目标选择变量all变成了"selection-expression",也就是说只有被这个变量选中的部分才会被变成"color-name"定义的颜色。
要注意的是,如果一个命令带多个变量,则这些变量之间必须用逗号","隔开。
通过这个例子,大家可以发现,有些变量本身是很简单的,比如"color-name",就是一个颜色名字而已,没什么复杂的。
另一些则不一样,比如"selection-expression",它可以很简单,也可以非常的复杂。
这个东东,我称之为选择表达,对Pymol命令的使用非常重要,所以下面要详细的讲一下。
选择表达(selection-expression)表示的实际就是一些被选中的部分,它们可以是一些个原子,一些个Helix,一些个Betasheet,或者它们的混合物。
你可以给你的选择表达起个名字,以便可以多次使用它们。
名字可以由大小写字母,数字以及下划线[_]组成,但是因避免使用下列符号:
!
@#$%^&*()'"[]{}\|~`<>?
/
选择表达由所谓的"selector"加上"identifier"组成,其中"selector"定义了某类属性,而"identifier"则在该类属性下需要被选择的部分。
如下例:
Pymol>selecttest,namec+o+n+ca
其中"name"就是一个selector,它表示在pdb文件中描述的原子的名字;"c+o+n+ca"则是对应的"indentifier",它表示我们要选择pdb文件中名字叫"ca+cb"的原子(ca代表alpha carbon,cb代表beta carbon)。
整个语句的作用就是选择上诉的原子并命名为"test",这样我们可以在后面继续使用它。
下表列出了大多数的selector:
Selector
简写
Identifier及例子
symbol
e.
chemical-symbol-list周期表中的元素符号Pymol>selectpolar,symbolo+n
name
n.
atom-name-listpdb文件中的原子名字Pymol>selectcarbons,nameca+cb+cg+cd
resn
r.
residue-name-list氨基酸的名字Pymol>selectaas,resnasp+glu+asn+gln
resi
i.
residue-identifier-listpdb文件中基团的编号Pymol>selectmults10,resi1+10+100residue-identifier-rangePymol>selectnterm,resi1-10
alt
alt
alternate-conformation-identifier-list一些单字母的列表,选择具有2种构型的氨基酸Pymol>selectaltconf,alta+b
chain
c.
chain-identifier-list一些单字母或数字的列表Pymol>selectfirstch,chaina
segi
s.
segment-identifier-list一些字母(最多4位)的列表Pymol>selectligand,segilig
flag
f.
flag-nummer一个整数(0-31)Pymol>selectf1,flag0
numeric_type
nt.
type-nummer一个整数Pymol>selecttype1,nt.5
text_type
tt.
type-string一些字母(最多4位)的列表Pymol>selectsubset,tt.HA+HC
id
id
external-index-number一个整数Pymol>selectidno,id23
index
idx.
internal-index-number一个整数Pymol>selectintid,index23
ss
ss
secondary-structure-type代表该类结构的单字母Pymol>selectallstrs,ssh+s+l+""
下表是另一些Selector,有关比较的:
Selector
简写
Identifier及例子
b
b
comparison-operatorb-factor-value一个实数,用来比较b-factorPymol>selectfuzzy,b>12
q
q
formal_charge
fc.
comparison-operatorformalcharge-value一个整数,用来比较formalchargePymol>selectdoubles,fc.=-1
partial_charge
pc.
comparison-operatorpartialcharge-value一个实数,用来比较partialchargePymol>selecthicharges,pc.>-1
另外有一些Selector是不需要Identifier的,它们被列在下表中:
Selector
简写
描述
all
*
所有当前被Pymol加载的原子
none
none
什么也不选
hydro
h.
所有当前被Pymol加载的氢原子
hetatm
het
所有从蛋白质数据库HETATM记录中加载的原子
visible
v.
所有在被“可见”的显示的对象中的原子
present
pr.
所有的具有定义坐标的原子
在Identifier中用到的原子以及氨基酸的命名规则可以在下面的网址中找到:
在选择表达中,selector还可以配合逻辑操作子(logicaloperator)使用,这样我们可以表达更加复杂的选择。
这些操作子被列于下表中:
Operator
简写
效果与例子
nots1
!
s1
选择原子但不包括s1中的Pymol>selectsidechains,!
bb
s1ands2
s1&s2
选择既在s1又在s2中的原子Pymol>selectfar_bb,bb&farfrm_ten
s1ors2
s1|s2
选择s1或者s2中的原子(也就是包含全部的s1和s2原子)Pymol>selectall_prot,bb|sidechain
s1ins2
s1ins2
选择s1中的那些原子,其identifiers(name,resi,resn,chain,segi) 全部符合s2中对应的原子Pymol>selectsame_atom,peptinprot
s1likes2
s1l.s2
选择s1中的那些原子,其identifiers(name,resi)符合s2中对应的原子Pymol>selectsimilar_atom,peptlikeprot
s1gapX
s1gapX
选择那些原子,其vanderWaals半径至少和s1的vanderWaals半径相差XPymol>selectfarfrm_ten,resi10gap5
s1aroundX
s1a.X
选择以s1中任何原子为中心,X为半径,所包括的所有原子Pymol>selectnear_ten,resi10around5
s1expandX
s1e.X
选择以s1中任何原子为中心,X为半径,然后把s1扩展至该新的范围所包含的所有原子Pymol>selectnear_ten_x,near10expand3
s1withinXofs2
s1w.Xofs2
选择以s2为中心,X为半径,并包含在s1中的原子Pymol>selectbbnearten,bbw.4ofresi10
byress1
br.s1
把选择扩展到全部residuePymol>selectcomplete_res,br.bbnear10
byobjects1
bo.s1
把选择扩展到全部objectPymol>selectnear_obj,bo.near_res
neighbors1
nbr.s1
选择直接和s1相连的原子Pymol>selectvicinos,nbr.resi10
这些逻辑选择还可以组合使用。
比如你想选择chainb,但是不选择其中的residue88:
Pymol>selectchainband(notresi88)
在使用多重逻辑选择时,为了让Pymol正确处理顺序,请使用括号,这样最里层括号里面的内容将会被最先处理,以此类推。
好了,目标选择就先说到这里。
其实关于目标选择还有所谓的“宏”可以用,可以简化表达式,准备下次说说。
Pymol的选择宏
上次具体讲了如何在Pymol中怎么用selection-expression选取目标,其实在某些情况下,还可以用Pymol提供的宏来选择操作目标。
使用这个选择宏往往可以是一个原本很复杂的表达变得简单紧凑。
例如我们想选择