VMD里原子選擇語句的語法和例子
VMD里原子選擇語句的語法和例子
文/Sobereva@北京科音 2019-Aug-19
1 前言
VMD(http://www.ks.uiuc.edu/Research/vmd/)是極其強大、靈活的化學體系可視化程序,筆者之前也寫過不少相關文章,見http://www.shanxitv.org/category/VMD/。VMD的選擇語句(selection)用來選擇滿足特定要求的體系中的原子,其用法極度簡單靈活,對于VMD的使用至關重要。
選擇語句在VMD里用的地方非常多,無處不在。比如如果想在圖形窗口只顯示指定的區域,那么可以在Graphics - Representation里在selected atoms的地方寫上選擇語句。如果想把指定的區域保存成新文件,那么可以在File - Save coordinates里在Selected atoms寫上選擇語句。很多自帶的插件也需要選擇語句,比如VMD自帶的徑向分布函數計算插件,里面selection 1、selection 2就是讓你輸入選擇語句的地方。選擇語句在VMD的分析腳本的編寫中起到極為關鍵性角色,用于創建atomselect對象、作為自帶命令傳入的參數。我在“北京科音分子動力學與GROMACS培訓班”(http://www.keinsci.com/workshop/KGMX_content.html)里非常深入系統講解VMD分析腳本的編寫并給出巨量例子,其中大量用到選擇語句的知識。順帶一提,如今GROMACS里也可以用selections語句,和VMD很大程度一致,但不完全一致,在培訓里我也有專門講解。
鑒于經常有人問VMD的選擇語句怎么用,每次回復很麻煩,筆者遂專門寫個小文說一下。本文內容對應VMD 1.9.3。下文從簡單到復雜進行講解。
2 單關鍵詞(Single words)
有一些關鍵詞可以直接選擇特定原子,以下舉例一部分:
all:所有原子
none:不選擇任何原子
noh:氫以外的原子(即重原子)
ion:離子
water:水
backbone:生物大分子骨架
sidechain:生物大分子側鏈
protein:蛋白
nucleic:核酸
helix:螺旋
alpha_helix:alpha螺旋(是helix中的子集,較長一段螺旋才算)
sheet:折疊
turn:轉角
coil:盤繞
alpha:蛋白質的alpha碳
acidic:PH=7時帶負電氨基酸
basic:PH=7時帶正電氨基酸
charged:acidic和basic的并集
neutral:電中性氨基酸
polar:極性殘基
hydrophobic:疏水性殘基
bonded:成鍵的原子
hetero:非蛋白質和核酸的部分
carbon、hydrogen、oxygen、nitrogen、sulfur:相應元素。對于其它元素沒法這么輸入元素名來選擇
這些單關鍵詞實際上可以在Representation界面里的Selections標簽頁里的Singlewords直接看到,可見可以用的單關鍵詞遠不止上述這些。有些單關鍵詞其實是復合選擇語句,比如你選中hetero,就會看到其定義其實是not (protein or nucleic)。
注意有些情況下,單關鍵詞未必能如實選擇相應的區域。比如你載入的結構里有水,如果輸入文件里水的殘基名很特殊,比如叫FFF,那么VMD就不會把這個殘基識別成水分子,用water關鍵詞的時候也沒法選中這些水。
3 一般關鍵詞
用下面這些關鍵詞可以通過屬性選取原子,都是后面要接參數的
name:原子名。例:name OW選擇原子名叫OW的原子
index:原子序號(從0開始!)。例:index 4
serial:原子序號(從1開始)
type:原子類型。例:type CA選擇CA原則類型
element:元素名。例:element P選擇磷原子
resname:殘基名。例:resname ALA代表選擇丙氨酸
residue:殘基編號,從0開始。例resid 372代表選擇372號殘基
resid:殘基編號,從1開始。若結構文件里有殘基號則與之一致
chain:鏈名。例:chain B代表選擇B鏈
fragment:片段編號。VMD對每個鍵連的片段自動設定一個編號。例:fragment 4代表選擇片段4
numbonds:成鍵數目。例:numbonds=2或numbonds 2代表選形成了兩個鍵的原子
structure:二級結構。例:structure H代表選擇螺旋(helix)區域
x,y,z:X/Y/Z笛卡爾坐標
vx,vy,vz:X/Y/Z方向速度
beta:pdb文件中的beta值
occupancy:pdb文件中的原子占有率
mass:原子質量
charge:原子電荷
phi、psi:蛋白質骨架角度
radius:原子半徑
...等等
每個屬性后面能接什么值,在Selections標簽頁里都能看到,不確定的話看一眼便知:
許多屬性并非對于任何輸入文件都能用。比如:
·使用charge屬性,必須輸入的文件里體現了原子電荷才行,比如可以用mol2或pqr,后者詳見《使用Multiwfn+VMD以原子著色方式表現原子電荷、自旋布居、電荷轉移、簡縮福井函數》(http://www.shanxitv.org/425)。
·使用beta屬性,通常需要用pdb文件作為輸入,因為里面專門有一列記錄B因子信息。
·用type的話必須載入拓撲文件才行。
·用vx、vy、vz的話,對于GROMACS用戶,參看《使VMD讀入Gromacs產生的trr軌跡中速度信息的方法》(http://www.shanxitv.org/117)。
·element信息是很多文件里沒有的,比如GROMACS的.gro文件里就沒體現
4 選擇語句中可利用的規則
在選擇語句中有以下規則可以利用,通過組合、嵌套,使得選擇語句無比強大
·可以寫多個參數一次選擇一批,彼此間用空格分隔
·可以用... to ...選擇特定范圍
·可以用與、或、非這些邏輯關系:and、or、not
·可以用( )或{ }指定語句處理的優先順序
·雙引號內的字符會被視為整體,并且可以使用正則表達式
·用單引號擴住則里面的字符可以避免被轉義
·可以用判斷語句:<, <=, =, >=, >, !=
·可以用函數:sqr(平方), sqrt(開根號), abs(絕對值), sin, cos, tan, atan, asin, acos, sinh, cosh, tanh, exp, log, log10
·支持運算符:+ - * /。可以用^或**來表示多少次方
·特殊選擇方式:
within 5 of AAA:距離AAA 5埃以內的原子。選取時不考慮周期邊界條件,用pbwithin則考慮
exwithin 5 of AAA :同上,但不包含AAA自身
withinbonds 2 of AAA:距離AAA不超過兩個鍵的原子
same p as AAA:與AAA選區的p屬性相同的部分
ringsize 5 from AAA:處于AAA中五元環上的原子
maxringsize 6 from AAA:處于AAA中<=六元環的原子
下面來看一些具體例子
index 5 to 200 210:序號在5~200內的原子以及210號原子
protein or nucleic:蛋白質與核酸的原子
resname ALA CYS ARG:丙氨酸、半胱氨酸、精氨酸原子
backbone not helix:除了螺旋區域以外的骨架原子
name CA CB 或 name "CA|CB" 或 name "C[AB]" 或 name "C(A|B)":名為CA和CB的原子
name "C.":名字為兩個字符且第一個字符為C的原子
name "CE[1-3]":名字為CE1、CE2、CE3的原子
name 'O5*':叫O5*的原子。注意原子名帶星號的在選取時要用單引號括住以免轉義
resname 'CA2+':殘基名是CA2+的原子(二價鈣離子)。名字帶正負號的也要用單引號括住以免轉義
mass > 5:質量大于5的原子
abs(charge)>1:電荷大小超過1的原子
x<6 and x>3:選擇x在3~6埃區域內的一層原子
x>1 and x<8 and y>24 and y<35 and z>1 and z<5:一個矩形區域內的原子
sqr(x-5)+sqr(y+4)+sqr(z) < sqr(5) :以(5,-4,0)點為中心半徑5埃以內的原子
((x-33)^2+(y-14.5)^2)<12^2 and z<40 and z>10:選擇以x=33、y=14.5埃為中心,半徑為12埃,z范圍在10~40埃的柱形區域
x+y+z<80:斜切面內側的原子(回憶平面方程)
not {oxygen and numbonds=0}:扣除孤立的氧原子(可以用于去除X光衍射pdb文件里的結晶水)
within 6 of protein:距離蛋白質6埃以內的原子
not within 5 of resname ADP:距離名為ADP的分子5埃以外的原子
water within 5 of residue 8 to 44:距離8~44號殘基5埃以內的水
withinbonds 2 of index 31:距離編號為31原子的兩個鍵及以內的原子
maxringsize 6 from protein:蛋白當中所有六元及六元以下環上的原子
same resname as resid 33:所有與33號殘基相同名稱的殘基
same residue as {protein within 5 of nucleic}:與核酸的原子相距5埃以內的蛋白的原子,并且把被截斷的殘基保留完整
x > 15 and not same fragment as {exwithin 8 of protein}:蛋白質以及蛋白質8埃范圍以外的原子,保留完整片段,同時x坐標得大于15埃
以上例子中,涉及到坐標、速度變量的,屬于動態選區,即隨著幀號變化被選擇的原子會可能發生變化。觀看這些選區的時候,注意在Representation界面的Trajectory標簽頁里要把Update Selection Every Frame選上,否則選中的原子是對剛選中時那一幀而言的,不會隨著軌跡播放被動態更新。在一些VMD的插件中,比如計算rdf的Radial Pair Distribution Function g(r)插件里,當Selection文本框里用了動態選區時,應當把Update Selections復選框選上,否則也由于不會被動態更新而和期望的不符。