2016年3月15日 星期二

PyMOL新增menu上面的選項

PyMOL是個以Python為底寫出來的分子結構顯示軟體,加上他又是開源軟體,因此可以依照自己意思任意在選單裡面增加想要的項目。例如說從右邊的選單依序點選
  • A > preset > pretty

蛋白質分子就會以緞帶的方式顯示,顏色則是用彩虹方式表示,從紅色(C端)到深藍色從(N端)。現在希望加入一項功能,一樣是用緞帶方式表示結構,但顏色則是根據二級結構:紅色是alpha helix、黃色是beta sheet、綠色則是coil。操作方式則是變成依序點選
  • A > preset > pretty (2nd structure)


這邊修改的PyMOL是Mac版本。首先,先到MacPyMOL的資料夾裡面
$ cd /Applications/MacPyMOL.app/Contents/pymol/modules

由於我們不知道preset這個選項會在哪個檔案裡面,所以用find搭配grep
$ grep -i 'preset' `find ./ -name "*.py" -print`

從螢幕上回傳的資料可以知道有preset這個關鍵字的檔案有menu.py與preset.py,前面那個檔案用來放置選單(This module defines the menus and their built-in commands),後面的檔案則是指定preset動作(參考pymol wiki的Preset)。

修改menu.py

找到下面這一行(約莫在721行)
              [ 1, 'pretty ', 'preset.pretty("'+sele+'",_self=cmd)'          ],

在這一行後面新增加一行,意思是說多增加一個叫做sspretty的按鈕
              [ 1, 'pretty (2nd structure)', 'preset.sspretty("'+sele+'",_self=cmd)'          ],

修改preset.py

找到下面這一行(約莫在323行)
pretty_no_solv = pretty

在這一行的下面新增下面的程式碼
def sspretty(selection,_self=cmd):
    cmd=_self
    pretty_solv(selection,_self)
    s, selection = get_sname_oname_dname(selection, _self=_self)[:2]
    cmd.hide("nb_spheres","("+s+" and "+lig_sele+"|resn HOH+WAT+H2O)")
    util.cbss(s+" and not "+lig_sele,"red","yellow","green",_self=cmd)
    cmd.delete(s)


都完成後,儲存menu.py與preset.py。關閉MacPyMOL,重新啟動MacPyMOL,這個時候在右邊的選單就多出了剛剛指定功能的按鈕了。猜測Linux版本的PyMOL應該也可以用相同的方式去修改吧。

_EOF_

沒有留言:

張貼留言