• 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復選框選上,否則也由于不會被動態更新而和期望的不符。

    久久精品国产99久久香蕉