上次介绍一些Pymol的基本命令。现在来具体说说Pymol命令的语法,还有在选择操作目标应该如果表达。个人觉得这部分内容对学习Pymol来说是至关重要的。
从上次讲的一些例子中不难看出,Pymol的命令都是由关键词(keyword)加上一些变量(argument)组成,格式如下:
Pymol> keyword argument
其中关键词(keyword)当然是必须的,而变量则不是必须的,比如退出命令quit就不需要附加变量:
Pymol> quit
当然更多的命令通常是需要加变量的,比如放大命令zoom,但是你会发现即使你不加任何变量该命令也可以被执行,这是因为Pymol的许多命令有一个默认变量,下面两个命令的作用是一样的,其中的目标选择all就是zoom的默认变量:
Pymol> zoom
Pymol> zoom all
还有些命令可以带多个参数,比如加色命令color,它的用法如下:
Pymol> color color-name
Pymol> color color-name, selection-expression
第一个color虽然只带一个变量"color-name",但其实它包含了第二个默认变量all,所以它的作用是把整个结构变成"color-name"的颜色。
第二个color带两个变量,和第一个的区别就是把默认的目标选择变量all变成了"selection-expression",也就是说只有被这个变量选中的部分才会被变成"color-name"定义的颜色。
要注意的是,如果一个命令带多个变量,则这些变量之间必须用逗号","隔开。
通过这个例子,大家可以发现,有些变量本身是很简单的,比如"color-name",就是一个颜色名字而已,没什么复杂的。另一些则不一样,比
如"selection-expression",它可以很简单,也可以非常的复杂。这个东东,我称之为选择表达,对Pymol命令的使用非常重要,所以
下面要详细的讲一下。
选择表达(selection-expression)表示的实际就是一些被选中的部分,它们可以是一些个原子,一些个Helix,一些个Beta
sheet,或者它们的混合物。你可以给你的选择表达起个名字,以便可以多次使用它们。名字可以由大小写字母,数字以及下划线[_]组成,但是因避免使用
下列符号:
! @ # $ % ^ & * ( ) ' " [ ] { } \ | ~ ` < > ? /
选择表达由所谓的"selector"加上"identifier"组成,其中"selector"定义了某类属性,而"identifier"则在该类属性下需要被选择的部分。如下例:
Pymol> select test, name c+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> select polar, symbol o+n |
name |
n. |
atom-name-list pdb文件中的原子名字 Pymol> select carbons, name ca+cb+cg+cd |
resn |
r. |
residue-name-list 氨基酸的名字 Pymol> select aas, resn asp+glu+asn+gln |
resi |
i. |
residue-identifier-list pdb文件中基团的编号 Pymol> select mults10, resi 1+10+100 residue-identifier-range Pymol> select nterm, resi 1-10 |
alt |
alt |
alternate-conformation-identifier-list 一些单字母的列表,选择具有2种构型的氨基酸 Pymol> select altconf, alt a+b |
chain |
c. |
chain-identifier-list 一些单字母或数字的列表 Pymol> select firstch, chain a |
segi |
s. |
segment-identifier-list 一些字母(最多4位)的列表 Pymol> select ligand, segi lig |
flag |
f. |
flag-nummer 一个整数(0-31) Pymol> select f1, flag 0 |
numeric_type |
nt. |
type-nummer 一个整数 Pymol> select type1, nt. 5 |
text_type |
tt. |
type-string 一些字母(最多4位)的列表 Pymol> select subset, tt. HA+HC |
id |
id |
external-index-number 一个整数 Pymol> select idno, id 23 |
index |
idx. |
internal-index-number 一个整数 Pymol> select intid, index 23 |
ss |
ss |
secondary-structure-type 代表该类结构的单字母 Pymol> select allstrs, ss h+s+l+"" |
下表是另一些Selector,有关比较的:
Selector |
简写 |
Identifier及例子 |
b |
b |
comparison-operator b-factor-value 一个实数,用来比较b-factor Pymol> select fuzzy, b > 12 |
q |
q |
comparison-operator occupancy-value 一个实数,用来比较occupancy Pymol> select lowcharges, q > 0.5 |
formal_charge |
fc. |
comparison-operator formal charge-value 一个整数,用来比较formal charge Pymol> select doubles, fc. = -1 |
partial_charge |
pc. |
comparison-operator partial charge-value 一个实数,用来比较partial charge Pymol> select hicharges, pc. > -1 |
另外有一些Selector是不需要Identifier的,它们被列在下表中:
Selector |
简写 |
描述 |
all |
* |
所有当前被Pymol加载的原子 |
none |
none |
什么也不选 |
hydro |
h. |
所有当前被Pymol加载的氢原子 |
hetatm |
het |
所有从蛋白质数据库HETATM记录中加载的原子 |
visible |
v. |
所有在被“可见”的显示的对象中的原子 |
present |
pr. |
所有的具有定义坐标的原子 |
在选择表达中,selector还可以配合逻辑操作子(logical operator)使用,这样我们可以表达更加复杂的选择。这些操作子被列于下表中:
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_atom, pept in prot |
s1 like s2 |
s1 l. s2 |
选择s1中的那些原子,其identifiers (name, resi)符合s2中对应的原子 Pymol> select similar_atom, pept like prot |
s1 gap X |
s1 gap X |
选择那些原子,其van der Waals半径至少和s1的van der Waals半径相差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, near10 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 |
把选择扩展到全部residue Pymol> select complete_res, br. bbnear10 |
byobject s1 |
bo. s1 |
把选择扩展到全部object Pymol> select near_obj, bo. near_res |
neighbor s1 |
nbr. s1 |
选择直接和s1相连的原子 Pymol> select vicinos, nbr. resi 10 |
这些逻辑选择还可以组合使用。比如你想选择chain b,但是不选择其中的residue 88:
Pymol> select chain b and (not resi 88)
在使用多重逻辑选择时,为了让Pymol正确处理顺序,请使用括号,这样最里层括号里面的内容将会被最先处理,以此类推。
好了,目标选择就先说到这里。其实关于目标选择还有所谓的“宏”可以用,可以简化表达式,准备下次说说。
http://www.donkeyhome.org/protein/protein-005/ |