【分子可視化工具】PyMOL用戶指南
PyMOL用戶指南
目錄
一、????? 鼠標(biāo)操作入門 4(這個(gè)數(shù)字是超鏈接,ctrl+左鍵)
1.????? 啟動(dòng)4
1)????? 通過鼠標(biāo)4
2)????? 通過命令行4
2.????? PyMOL窗口4
1)????? Virewer窗口4
2)????? 外部GUI窗口5
3.????? 下載PDB文件5
4.????? 操控視圖6
1)????? 基本鼠標(biāo)控制6
2)????? 虛擬滾動(dòng)球旋轉(zhuǎn)7
3)????? 移動(dòng)截面7
4)????? 改變旋轉(zhuǎn)中心點(diǎn)8
5)????? 簡單回顧9
?
二、????? 命令行操作入門9
1.????? 記錄結(jié)果9
2.????? 載入數(shù)據(jù)9
3.????? 操控對象(Object)10
1)????? 原子選擇11
2)????? 對象和選擇的著色12
3)????? 對象和選擇的on/off12
4.????? 改變視點(diǎn)13
5.????? 保存工作13
1)????? 腳本和日志文件13
2)????? 圖像文件14
3)????? 會(huì)話文件14
6.????? 命令行快捷鍵14
1)????? 用TAB鍵完成命令15
2)????? 用TAB鍵完成文件名15
3)????? 自動(dòng)推理15
7.????? 其他命令和幫助15
?
?
注:頁面背景和頁腳的圖像分別是1GCL、111D的cartoon顯示
?
三、????? 命令句法和原子選擇16
1.????? 語法16
1)????? 選擇表達(dá)16
2)????? 原子選擇命名16
3)????? 單字選擇符
4)????? 屬性選擇符18
5)????? 選擇代數(shù)20
6)????? 宏指令21
2.????? 從PyMOL中讀取Python? 22
?
四、????? 卡通表示23
1.????? 背景23
1)????? 可達(dá)性23
2)????? 美化和精確23
2.????? 定制化25
1)????? 卡通類型25
2)????? 精美螺旋28
3.????? 二級(jí)結(jié)構(gòu)歸屬29
?
五、????? 光線追蹤30
1.????? 重要設(shè)置30
2.????? 保存圖片31
?
六、????? 立體效果31
1.????? 支持的立體模式31
2.????? 制作立體圖片31
3.????? 相關(guān)命令31
?
七、????? 動(dòng)畫32
1.????? 概念32
2.????? 重要命令32
1)????? Load
2)????? Mset
3)????? Mdo
4)????? Mmatrix
3.????? 簡單舉例33
4.????? 復(fù)雜舉例33
5.????? 預(yù)覽ray-traced動(dòng)畫圖片34
1)????? Cache_frames
2)????? mclear
6.????? 保存動(dòng)畫34
?
八、???? 高級(jí)鼠標(biāo)控制34
1. ?選擇原子和鍵??????????? 34
2. “pk”原子選擇的應(yīng)用舉例35
3.? “l(fā)b”和“rb”選擇????? 35
4.? 構(gòu)象編輯??????????????? 35
?
九、???? 晶體應(yīng)用35
1.? 晶體對稱性35
1)? Load
2)? Symexp
2.? 電子密度圖36
1)? Load
2)? Isomesh和isodot
?
十、???? 匯編圖形對象(CGO)和Molscript ribbons 37
1.? 簡介????????????? 37
2.? Molscript ribbons 37
1)? Load
2)? Using Molscript
3.? 創(chuàng)建CGOs 38
4.? CGO參考 ?38
?NOTES:
ü? 本教程以PyMOL user’s guide為藍(lán)本翻譯而來,并引用了其他資料。
ü? 本教程只介紹PyMOL在windows系統(tǒng)下的應(yīng)用
ü? 本教程以edu1.1版本的PyMOL為準(zhǔn),大硬盤中有此軟件
ü? 本教程是PyMOL的入門教材,故相關(guān)問題只是簡單介紹而沒有深入講解
ü? 如果你有疑問或者想深入研究,可通過輸入命令help,查看《PyMOL命令》,登陸PyMOLwiki(http://PyMOLwiki.org)或咨詢他人等途徑解決疑難
ü? 本教程極少的命令可能在你的PyMOL上運(yùn)行不了,大多是版本問題
ü? 譯者知識(shí)水平有限,可能有不當(dāng)甚至謬誤之處,敬請指正!
ü? 本教程不斷更新,最新版以文件名和頁眉的日期為準(zhǔn)。
一、? 鼠標(biāo)操作入門
1.????? 啟動(dòng)
1)????? 通過鼠標(biāo)
打開開始菜單,在程序或所有程序中找到PyMOL并單擊。
?
2)????? 通過命令行
在Windows下,打開文件和腳本有多種命令選項(xiàng)。
一般地,在“運(yùn)行”或“命令提示符”中輸入:
c:\program files\delano scientific\PyMOL\PyMOLwin.exe
如果PyMOL沒有按默認(rèn)路徑安裝,那么就輸入正確的驅(qū)動(dòng)器名和路徑。??
2.????? PyMOL窗口
PyMOL一般打開兩個(gè)窗口:Viewer窗口和外部(Tcl/TK)GUI窗口。如下圖所示:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
PyMOL的兩個(gè)窗口
GUI是圖形用戶界面(Graphical User Interface)的縮寫,由菜單、按鈕、正文框和其他小工具構(gòu)成。PyMOL默認(rèn)有兩個(gè)GUI:內(nèi)部GUI在Viewer窗口內(nèi)顯示;外部GUI在它自己的窗口顯示。之所以這樣的原因既煩瑣又專業(yè),但我們知道兩個(gè)GUI最終會(huì)統(tǒng)一為一個(gè)界面。
?
1)????? Viewer窗口
PyMOL的Viewer是PyMOL系統(tǒng)的心臟。這是一個(gè)開放式圖形語言(OpenGL)窗口,所有的3D圖形在此展示,并且用戶可直接操縱這些圖形。
PyMOL的Viewer窗口和內(nèi)部GUI(默認(rèn))
窗口內(nèi)右邊的內(nèi)部GUI可使用戶對特定對象(object)和特定原子選擇(atom selection注意:原子選擇是用戶選擇了的原子、殘基、鏈、片段、對象等等,相對object而言)進(jìn)行操作。從上到下,內(nèi)部GUI包括對象列表、鼠標(biāo)按鈕配制矩陣、結(jié)構(gòu)指示器和一套VCR(動(dòng)畫控制)。
窗口底部還有一個(gè)命令輸入?yún)^(qū)。在Viewer窗口也能查看PyMOL的文本輸出(text output),任何時(shí)候都可以按ESC在文本輸出和圖形模式間進(jìn)行切換。
Viewer完全可以自己運(yùn)行,它擁有PyMOL核心系統(tǒng)的全部功能。如果想這樣的話,完全可去除命令和內(nèi)部GUI。通過標(biāo)準(zhǔn)菜單和控制,許多任務(wù)能更簡單高效的完成。在外部GUI可以找到絕大部分的功能選項(xiàng)。
?
2)????? 外部GUI窗口
???????????? ??????????????默認(rèn)的Tcl/TK外部GUI
默認(rèn)狀態(tài)下,外部GUI包括標(biāo)準(zhǔn)菜單欄、輸出區(qū)、命令輸入?yún)^(qū)和一系列按鈕。外部GUI 窗口的一個(gè)好處是能夠?qū)φ倪M(jìn)行剪切和粘貼,而在Viewer中卻沒有此功能。另外,必須用Ctrl?X、Ctrl?C和Ctrl?V進(jìn)行剪切、復(fù)制和粘貼操作,因?yàn)樵跇?biāo)準(zhǔn)編輯菜單中沒有這些功能。
?
?
3.????? 下載PDB文件
?? 通過外部GUI菜單:默認(rèn)的外部GUI在File菜單有Open選項(xiàng),可由此打開選擇的文件。
?? 通過命令:
語法? load <filename>??????? #載入本地存在的PDB文件
??????????? fetch <object>??? ?????#直接從網(wǎng)上下載,不用加后綴
? 例如? load test/dat/pept.pdb
??????? fetch pept
?????????????????
載入pdb文件后的PyMOL
4.????? 操控視圖
在PyMOL中,鼠標(biāo)是主要的控制設(shè)備,鍵盤的修飾按鍵(SHIFT,CTRL,SHFIT+CTRL)在調(diào)整按鈕操作時(shí)使用。為了有效使用PyMOL,建議選擇帶有三個(gè)按鍵的鼠標(biāo)。
1)????? 基本的鼠標(biāo)控制
鼠標(biāo)的滾動(dòng)輪的可當(dāng)做中鍵使用。
?
下表是基本的鼠標(biāo)按鈕和鍵盤結(jié)合的操作功能:
?
鍵盤
鼠標(biāo)左鍵
中鍵
右鍵
?
旋轉(zhuǎn)圖像(虛擬滾動(dòng)球rotate)
在XY上移動(dòng)圖像(translate平移)
在Z上移動(dòng)圖像(zoom變焦)
Shift
?
?
移動(dòng)截面
Ctrl
?
?
?
Shift+Ctrl
?
回到旋轉(zhuǎn)起始
?
2)????? 虛擬滾動(dòng)球旋轉(zhuǎn)
虛擬滾動(dòng)球
?
虛擬滾動(dòng)球猶如在視野中有個(gè)可見的球。當(dāng)你在屏幕點(diǎn)擊拖拽時(shí),好像你的手指按在了球上進(jìn)行相似的操作。如果在球體外點(diǎn)擊拖動(dòng),僅能在Z軸上做環(huán)形旋轉(zhuǎn);在球體上點(diǎn)擊拖動(dòng)就能在XY面上旋轉(zhuǎn)。
3)????? 移動(dòng)截面
截面是在分子前后想象中的平面。截面外的分子部分將會(huì)被切除,從而顯示出內(nèi)部。在復(fù)雜或大分子中截面非常有用。
?
?????? 截面示意圖(hither這邊的近處的,yon那邊的遠(yuǎn)處的)
PYMOL的截面控制需要鼠標(biāo)和鍵盤結(jié)合,如下圖示:SHIFT+右鍵,當(dāng)鼠標(biāo)上下拖動(dòng)時(shí)會(huì)調(diào)整前截面,左右拖動(dòng)時(shí)調(diào)整后截面。
截面的控制
?
?
也可以對角線拖動(dòng)改變截面的顯示,如下圖:
對角移動(dòng)截面改變可見的“wedge”
?
4)????? 改變旋轉(zhuǎn)中心點(diǎn)
觀察分子圖像時(shí),常常需要改變旋轉(zhuǎn)的中心點(diǎn),快捷方式是“ctrl+shift+中鍵”點(diǎn)擊目標(biāo)原子。
?
5)????? 簡單回顧
?至此,應(yīng)該能夠完成如下任務(wù):
?? 載入PDB。
?? 旋轉(zhuǎn)、平移、縮放圖像。
?? 調(diào)整前截面和后截面,以便更清楚地觀察分子的切片圖。
?? 改變?nèi)魏胃信d趣的原子為選旋轉(zhuǎn)中心。
?
?
?
二、? 命令行操作入門
?
此部分介紹典型常用的命令,命令語法的詳細(xì)內(nèi)容見《PYMOL命令》 。
PYMOL語言是事件敏感的(case-sensitive),但是前一個(gè)事件不能應(yīng)用到當(dāng)前的命令中,所以謹(jǐn)記一定要對下一個(gè)事件輸入必要的命令。
1.?? 記錄結(jié)果
當(dāng)在PYMOL上操作時(shí),如果想記錄下完成的操作步驟,可創(chuàng)建一個(gè)日志文件(log-file):
語法
?log_open log-file-name
例如
PyMOL> log_open log1.pml
無論是輸入的還是點(diǎn)擊的命令都會(huì)記錄在log-file中。文件擴(kuò)展名是“.pml”,這樣可以把文件作為腳本在新會(huì)話中打開。
輸入log_close命令可以停止記錄,如果不輸入此命令,日志文件會(huì)一直記錄存盤直到關(guān)閉PYMOL。
如果僅想保存PYMOL當(dāng)前的狀態(tài)而不關(guān)心操作步驟,可創(chuàng)建一個(gè)會(huì)話文件(session-file)。
?
2.?? 載入數(shù)據(jù)
從文件中載入PDB,命令如下
語法
load data-file-name
例如
PyMOL>load $PyMOL_path/test/dat/pept.pdb
命令輸入后,PYMOL會(huì)打開讀取“pept.pdb”,創(chuàng)建并命名相應(yīng)的對象,在Viewer中顯示圖像并在控制板中添加對象。
默認(rèn)狀態(tài)下,PYMOL會(huì)在文件讀取后命名對象,當(dāng)然也可以重命名對象:
語法
?load data-file-name,object-name
例如
PyMOL>load $PyMOL_path/test/dat/pept.pdb? #對象命名為“pept”
#文件擴(kuò)展名不會(huì)出現(xiàn)在對象名中
PyMOL>load $PyMOL_path/test/dat/pept.pdb,test? #對象命名為“test”
(“#”是注釋標(biāo)志,在命令行中,#后輸入任何信息都不會(huì)被PYMOL讀?。?/span>
上面載入文件的命令是典型的PYMOL語法。load是關(guān)鍵詞,它要求PYMOL去執(zhí)行一定的功能。data-file-name和object-name是要load的參數(shù),這些參數(shù)告訴PYMOL載入什么文件和命名文件。一般而言,參數(shù)對關(guān)鍵詞來說僅提供運(yùn)行命令需要的信息。
3.?? 操控對象(manipulating object)
對象的操控既可用鼠標(biāo),也可用命令。例如,改變默認(rèn)的表示形式(representation)lines到sticks,首先刪除lines然后顯示sticks:
語法
?hide representation
?hide representation
例如
?PyMOL>hide lines????????? ?#以lines顯示的對象消失
?PyMOL>show sticks ????????#以sticks顯示的對象出現(xiàn)
其他的表示形式還有cartoon,ribbons,dots,spheres,meshes和surfaces等(見“表示形式”)。
?
當(dāng)用命令show時(shí),新的表示形式出現(xiàn),但原來的表示形式不消失,非常惱人,可用下面的命令解決這個(gè)問題:
語法
as representation
例如
PyMOL>as sticks??????????? #不論原來顯示多少種表示形式,命令后只顯示sticks一種
?
在顯示有配體存在的對象時(shí),有時(shí)顯示不出配體,可通過下面方法解決:
例如
fetch 1biw??? #載入對象1biw,它有一個(gè)配體
as cartoon??? #配體存在但卻沒被顯示
然后通過鼠標(biāo)操作,點(diǎn)擊內(nèi)部GUI的S菜單 > organic > spheres,就可以看到配體了。
?
?
1)?????????????????????????????? 原子選擇
原子選擇(atom selections)可以操控分子中一部分原子或化學(xué)鍵。PyMOL精于對原子或殘基的選擇、分組和命名。你可以只用一次選擇,也可以重命名以便再次使用。例如你可以縮放(zoom)選擇的“on the fly”:
語法
zoom selection-expressions?????? #選擇原子進(jìn)行縮放
例如
PyMOL>zoom resi 1-10?????? #resi是選擇符
??????????????????????????? #選擇氨基酸殘基
??????????????????????????? #給出PDB序列號(hào)
??????????????????????????? #“1-10” 是標(biāo)識(shí)符
Selection-expressions可以是單個(gè)詞也可以是長復(fù)雜句。一個(gè)Object-name也可能是selection-expression。默認(rèn)的selection-expression是all,即當(dāng)前載入的所有原子。如果命名選擇,你將能夠操作它任意次。對象(object)和選擇(selection)的名字可以是大小寫字母(A/a到Z/z)、數(shù)字(0到9)和下劃線(_),下面的字符是不可以的:
! @ # $ % ^ &* ( ) ' " [ ] { } \ | ~ ` <> . ? /
首先,命名選擇:
語法
select selection-name,selection-expression
例如
PyMOL>select boy007,resi 1-10?? #選擇殘基并命名為“boy007”
然后使用這個(gè)名稱:
語法
zoom selection-name
hide representation,selection-name
show representation,selection-name
例如
?PyMOL>zoom boy007
?PyMOL>hide everything,boy007
?PyMOL>show spheres,boy007
當(dāng)創(chuàng)建一個(gè)selection-name后,PYMOL會(huì)在控制面板顯示出,以便利用面板里的控制功能(見“PYMOL命令”)。
命名的選擇(named-selection)如“boy007”和PYMOL的對象(object)是有本質(zhì)區(qū)別的。當(dāng)載入文件時(shí)PYMOL創(chuàng)建object-name用來盛放數(shù)據(jù),而選擇是指向一組數(shù)據(jù)的方式。為了區(qū)別selection-names和object-names,在控制面板里selection-names用括號(hào)括起來。當(dāng)刪除了selection-name,在object-name下的數(shù)據(jù)仍然存在,但這些數(shù)據(jù)不再以selection組織起來。相反,當(dāng)刪除了object,必須重新載入數(shù)據(jù)才能再進(jìn)行相關(guān)操作。
語法
delete selection-name
delete object-name
例如
PyMOL> delete boy007??????????? #boy007消失,object仍在
PyMOL> delete pept??? ??????????#“pept”里的所有原子和化學(xué)鍵都消失了
?
?
2)????? 對象和選擇的著色
你可以對selections和objects應(yīng)用不同的顏色。在settings/colors菜單里有預(yù)定義的color-names,也可以在控制面板里進(jìn)行顏色選擇。(更多顏色命令見“設(shè)置”部分)
語法
?color color-name??????????????????????????????? #整個(gè)object被著色
?color color-name,selection-expression??????? #selection被著色
例如
PyMOL>color white ??????????????????
PyMOL>color orange,pept???????????
PyMOL>color green,resi 50+35+56
PyMOL>color yellow,resi 24-35
PyMOL>color blue,boy007
PyMOL>color red,ss h?
PyMOL>color red,ss s??????
PyMOL>color green,ss l+’’
最后三個(gè)例子中ss是二級(jí)結(jié)構(gòu)的選擇符,h表示helix,s表示beta sheet,l+’‘表示loops和非特定結(jié)構(gòu)。
?
?
?
3)????? 對象和選擇的on/off
PYMOL可同時(shí)呈現(xiàn)多個(gè)對象。disable和enable命令可以消除對象的顯示,但仍能夠通過命令控制它的屬性。
語法
???????? ??????enable object-name
例如
PyMOL>load $PyMOL_path/test/dat/fc.pdb
PyMOL>load $PyMOL_path/test/dat/pept.pdb
PyMOL>disable pept?????????????????? #pept完全從viewer中消失
PyMOL>color yellow,name c+o+n+ca?? #在fc和pept中的主鏈原子都被著為黃色,但是pept的原子仍然是不可見的。
PyMOL>enable pept???????????????????? #pept原子可見了并顯示為黃色
通過disable命令可以刪除命名選擇時(shí)出現(xiàn)的粉紅點(diǎn)(pink dots):
語法
disable selection-name
例如
PyMOL>select bb,name c+o+n+ca???? #選中的原子在viewer中以pink dots顯示
PyMOL> disable bb?????????????????? #pink dots消失,命名選擇“bb”仍可見
PyMOL>color red,bb????????????????? #仍然可以操控 “bb”
4.?? 改變視點(diǎn)
鼠標(biāo)拖動(dòng)分子往往是最簡單的顯示操縱方法,然而輸入命令如zoom和orient卻是一種不同的方式。Zoom(變焦)命令可使對象或選擇在視野中央顯示:如果對象或選擇沒顯示在當(dāng)前的視野,命令會(huì)使它顯示;如果當(dāng)前視野僅顯示了一小部分,命令會(huì)使它充滿視野。
語法
zoom selection-expression?????????
當(dāng)你想重新查看分子時(shí),Orient命令是十分有用的。它會(huì)調(diào)整對象或選擇,使其最大維度水平顯示,次最大維度垂直顯示:
語法
orient selection-expression????
你可以保存定向(store orientation)并在后面的新會(huì)話中通過命令view調(diào)用(recall)它,保存定向僅是保存viewer中對象的視角(viewpoint),不保存它的表示形式(representation)。為了在新會(huì)話中調(diào)用,需要命名保存的定向。
語法
?view name,action???? ??#action是store或recall
例如
PyMOL>view v1,store??? ??#當(dāng)前視野被命名為v1并保存
PyMOL>view v1,recall?? ??#調(diào)用保存的v1定向
PyMOL>view v1?????????? ??#recall是默認(rèn)的view語句,所以此命令行也是調(diào)用v1
關(guān)鍵詞view僅是在當(dāng)前會(huì)話中保存定向,后面的章節(jié)將會(huì)講述如何在不同會(huì)話中保存定向。
5.?? 保存工作
PyMOL保存工作的種種過程:1.在給出一系列命令前,啟動(dòng)進(jìn)程把命令記錄在純文本日志中,并作為腳本使用。2.在會(huì)話的任何時(shí)候,都可以創(chuàng)建一個(gè)會(huì)話文件保存程序的內(nèi)存狀態(tài),供以后調(diào)用此狀態(tài)。3.創(chuàng)建圖形文件保存viewer中的圖像。
?
1)?? 腳本和日志文件(Scripts and Log Files)
PyMOL的腳本只是個(gè)文本文件,如日志文件,它由被回車分隔的命令行組成。當(dāng)PyMOL載入腳本時(shí),其中的命令就會(huì)被執(zhí)行。PyMOL腳本文件的擴(kuò)展名是“.pml”,雖然此擴(kuò)展名不是嚴(yán)格要求的,但也是最好的選擇。
你可以把日志文件當(dāng)腳本使用,也可以在文本編輯器如emacs,jot或notepad創(chuàng)建腳本。當(dāng)在單獨(dú)的窗口使用PyMOL時(shí),打開文本編輯器往往十分有用,命令就可在這兩個(gè)程序間復(fù)制粘貼。
你可以輸入命令log_open log-file-name或點(diǎn)擊“File”菜單的“log”創(chuàng)建新的日志文件。你也可以在“File”菜單選擇“append(附加)”或“resume(重新開始)”,把命令行寫入現(xiàn)有的日志文件中。如果點(diǎn)擊“resume”,現(xiàn)有的日志文件是第一次作為腳本載入PyMOL,隨后的命令會(huì)寫入此文件。
一旦你創(chuàng)建了日志文件,PyMOL將會(huì)記錄保存所有的命令信息,不論是輸入的命令還是點(diǎn)擊的按鈕。
但是,為了把分子的定向保存在日志文件中,需輸入命令get_view或使用GUI按鈕。在會(huì)話中get_view很方便,隨后可編輯日志文件選擇最好的定向。
Windows系統(tǒng)下,可以雙擊腳本圖標(biāo),點(diǎn)擊“File”菜單的“Run”選項(xiàng)或者輸入命令”@”打開一個(gè)腳本:
語法
@scripe-file-name
例如
PyMOL>@my_script.pml
通過命令啟動(dòng)PyMOL時(shí)可同時(shí)打開目標(biāo)腳本(在“運(yùn)行”或“命令提示符”中)
語法
PyMOL scipt-file-name
例如(Windows)
C:\>PyMOL.exe my_script.pml
?
?
2)?? 圖像文件
當(dāng)你想保存圖片時(shí),最好先光線追蹤進(jìn)行渲染來提高圖片的質(zhì)量。光線追蹤(ray tracing)顯示了在三維世界中光線是如何反射和影子是如何形成的。關(guān)鍵詞ray要求PyMOL在viewer中重繪(redraw)和顯示圖片(詳情見“光線追蹤”部分)。
保存圖片到文件,可點(diǎn)擊“File”中的“Save image”或輸入png命令:
語法
png file-name
例如
PyMOL>png pep? #圖片pep.png被保存在PyMOL安裝默認(rèn)的文件夾中。
PyMOL>png d:/boy/pep? #圖片pep.png被保存在d盤的boy文件夾里。
Png格式的圖片還可通過ImageMagick等軟件轉(zhuǎn)換成其他格式。
注意:圖片的大小是隨viewer窗口的大小而變化的。
?
3)????? 會(huì)話文件(Session Files)
如果想返回到PyMOL當(dāng)前的狀態(tài),可通過創(chuàng)建會(huì)話文件實(shí)現(xiàn)(點(diǎn)擊File菜單中的Save Session,命名以“.pse”為擴(kuò)展名的文件)。PyMOL的會(huì)話文件是對PyMOL存儲(chǔ)狀態(tài)的符號(hào)記錄,包括載入或創(chuàng)建的對象、創(chuàng)建的選擇和viewer中的顯示。
當(dāng)打開保存的會(huì)話文件,PyMOL會(huì)返回到保存的狀態(tài)。因?yàn)橐粋€(gè)會(huì)話文件代表了一個(gè)存儲(chǔ)狀態(tài),所以打開一個(gè)會(huì)話文件意味著當(dāng)前PyMOL存儲(chǔ)的所有東西都會(huì)被清除并被來自會(huì)話文件的存儲(chǔ)狀態(tài)替代。
會(huì)話文件和日志文件或腳本有許多不同。日志文件必須在你想保存給出的命令前創(chuàng)建,而會(huì)話文件可以在任何時(shí)候創(chuàng)建。會(huì)話文件通過File菜單的Open選項(xiàng)調(diào)用,而日志文件被作為腳本通過Run選項(xiàng)啟動(dòng)。會(huì)話文件不能被人工編輯,而日志文件和腳本卻可以。
在PyMOL會(huì)話中,關(guān)鍵點(diǎn)上創(chuàng)建會(huì)話文件是個(gè)好主意,例如當(dāng)你決定探討(explore)多種選項(xiàng)時(shí)。通過這種方式,會(huì)話文件可被用來替代PyMOL沒有的“undo”程序。你完全可以通過連續(xù)的會(huì)話文件存儲(chǔ)PyMOL任意數(shù)量的狀態(tài),然后由此恢復(fù)到這些狀態(tài)或有效地撤銷你的操作。
6.?? 命令行快捷鍵
1)?? 用TAB鍵完成命令
輸入命令的前幾個(gè)字母然后按Tab鍵,PyMOL就會(huì)自動(dòng)完成命令或列出符合語法的命令表,例如:
PyMOL>sel??
#按Tab鍵就會(huì)出現(xiàn)下面的顯示
PyMOL>select
如果不輸入命令直接按Tab鍵,那么PyMOL會(huì)輸出全部命令的列表。
?
?
2)????? 用TAB鍵完成文件名
一些要載入的文件有非常長的路徑和文件名,當(dāng)你按Tab鍵,PyMOL會(huì)自動(dòng)完成明確的路徑和文件名,例如:
PyMOL>load cry
#如果cystal.pdb存在于當(dāng)前工作目錄中,按Tab鍵就會(huì)產(chǎn)生下面的命令行
PyMOL>load cystal.pdb
如果文件名含糊不清,PyMOL就會(huì)自動(dòng)匹配并輸出目錄中匹配的文件名,然后選擇一個(gè)輸入。
?
?
3)????? 自動(dòng)推理
在PyMOL命令中有一小部分的固定字符串,例如:
PyMOL>show sticks中,對show來說sticks就是一個(gè)固定的字符語句。因?yàn)楦?/span>show后的語句有限,所以當(dāng)你僅輸入幾個(gè)縮寫字母PyMOL就能識(shí)別,例如:
PyMOL>show st? 此命令和show sticks等效。
關(guān)鍵詞也可縮寫,PyMOL>sh st同樣奏效。
注意:PyMOL的命令語言在不斷地增長和發(fā)展,所以在腳本中使用全長的命令和字符語句非常重要。否則,以后的命令可能使縮寫變得含糊不清。例如當(dāng)“shutoff”加入命令語句后,“sh st”就不會(huì)奏效了。
?
7.?? 其他命令和幫助
此“入門”部分通過簡單的例子介紹了常用的命令,在《PyMOL命令》中有全部命令的詳細(xì)介紹。在PyMOL中可輸入help按回車查看全部關(guān)鍵詞(keyword)的列表,如果想查看某個(gè)命令的幫助:
語法
help keyword
例如
PyMOL>help load
PyMOL將會(huì)在外部GUI腳本語言和viewer中顯示命令指南。
不必記住所有的關(guān)鍵詞,輸入help和關(guān)鍵詞的前一個(gè)或幾個(gè)字母,然后按Tab鍵,腳本語言就會(huì)顯示可能的關(guān)鍵詞列表。點(diǎn)擊viewer再按Esc鍵會(huì)在分子圖像和命令語言顯示間來回切換。
?
?
三、????????????? 命令語法和原子選擇
1.??????? 語法
典型的PyMOL命令總是以指導(dǎo)PyMOL執(zhí)行一定任務(wù)的關(guān)鍵詞開始,以回車結(jié)束。
?? 最簡單的命令僅有關(guān)鍵詞,如輸入quit將會(huì)強(qiáng)制結(jié)束PyMOL會(huì)話,quit后從不跟其他語句。
?? 許多命令有默認(rèn)語句,所以當(dāng)你只輸入關(guān)鍵詞,PyMOL就會(huì)默認(rèn)剩下的語句。如zoom的默認(rèn)語句是選擇(selection-expression)all,也就是說不用再輸入all了。
?? 有些關(guān)鍵詞,需要部分語句,而其余語句被默認(rèn)。如關(guān)鍵詞color需要color—name語句,而默認(rèn)語句是all:
語法
Color color-name
Color color-name, selection-expression
例如
PyMOL>color red??????? ????????#所有的顯示被著為紅色
PyMOL>color red,name ca ?????#僅C-alpha原子被著為紅色
當(dāng)輸入一個(gè)命令有多個(gè)語句時(shí),要用逗號(hào)隔開。一次輸入多個(gè)命令時(shí)要用分號(hào)隔開。
?
1)??????? 選擇表達(dá)(selection-expressions)
selection-expressions指PyMOL命令中語句的原子列表,描述了指定引用的一組原子,這些原子大多需要標(biāo)識(shí)符(identifier)來完成指定。如選擇符(selector)resi指定殘基,標(biāo)識(shí)符給出序列號(hào);選擇符name指定原子,標(biāo)識(shí)符給出PDB中描述的名字(ca代表alpha碳,cb代表beta碳)。只有一小部分selection-expressions不需要標(biāo)識(shí)符,但大部分都要。
?
PyMOL應(yīng)用邏輯算符增加selection-expressions的一般性和特殊性。選擇符邏輯組合能變得很復(fù)雜,所以PyMOL能夠識(shí)別以最少擊鍵輸入的縮略語和宏指令。這個(gè)部分講述如何命名選擇,然后講述用縮略語和宏指令做選擇的語法。
?
?
2)????? 原子選擇命名
select命令命名原子選擇:
語法
select selection-name, selection-expression
# selection-name和 selection-expression是select的兩個(gè)語句,需用逗號(hào)隔開
例如
PyMOL>select bb,name c+o+n+ca
PyMOL>color red,bb
PyMOL>hide lines,bb
PyMOL>show sticks,bb
PyMOL>zoom bb
此例中,selection-expression是屬性選擇符name,它選擇標(biāo)識(shí)符c+o+n+ca完成指定。屬性選擇符和它的標(biāo)識(shí)符在下面討論。
命名的原子選擇(atom-selections)出現(xiàn)在控制面板的名稱列表中,它們被括號(hào)括起來以區(qū)別于對象(objects)??刂泼姘宓牟藛芜x項(xiàng)對原子選擇和對象是不同的,因?yàn)閮烧叩墓δ苡形⑿〉牟顒e。選擇是建立在對象下的一組數(shù)據(jù)的指向,當(dāng)刪除對象,數(shù)據(jù)就不再可用,任何指向這些數(shù)據(jù)的選擇也都不再可用。但是當(dāng)刪除選擇,數(shù)據(jù)仍然可用。Disable對象是從viewer顯示中刪除它,而disable選擇僅是關(guān)閉viewer中高亮顯示選擇的粉紅點(diǎn)。
?
原子選擇無論命名與否,都能跨越多個(gè)對象:
PyMOL>load fc.pdb
PyMOL>load pept.pdb
PyMOL>select alpha_c,name ca?? #選擇包括了兩個(gè)對象中的原子
PyMOL>color red,name ca
?
原子選擇在分子結(jié)構(gòu)改變后仍然奏效:
PyMOL>load ?pept.pdb
PyMOL>select ?bb,name c+n+o+ca
PyMOL>count_atoms ?bb???? ???#bb中數(shù)有52個(gè)原子
PyMOL>remove ?resi 5????? ?????#從對象中刪除殘基5中的所有原子
PyMOL>count_atoms bb???? ?????#現(xiàn)在bb中數(shù)有48個(gè)原子
?
原子選擇是靜態(tài)的(static),選擇所包含的原子僅僅是選擇被定義時(shí)刻存在的原子,而不包括其他,即使是在選擇范圍內(nèi)后來被載入的原子也不行:
PyMOL>load pept.pdb
PyMOL>select 007,pept?????????? #創(chuàng)建選擇“007”包括所有的原子
PyMOL>count_atoms 007???????? #“007”中數(shù)有107個(gè)原子
PyMOL>h_add?????????????????? #PyMOL在合適的位置加氫
PyMOL>count_atoms 007???????? #“007”中數(shù)有107個(gè)原子
PyMOL>count_atoms???????????? #而“pept”中卻數(shù)有200個(gè)原子
?
原子選擇能夠被后面的原子選擇利用:
PyMOL>select bb,name n? ???????#選擇“bb”包含所有氮原子
PyMOL>select cc,bb or name o?? ?#選擇“cc”包含所有氮原子和氧原子
注意:邏輯運(yùn)算符“or” “and”的含義等同于代數(shù)中的“或”“且”。
?
?
?
3)????? 單字(single-word)選擇符
最簡單的selection-expression是單字選擇符,這些選擇符沒有標(biāo)識(shí)符。
?
單字選擇符
縮略選擇符
描述
all
*
當(dāng)前載入PyMOL的所有原子
none
none
沒有原子,空選擇
hydro
h.
當(dāng)前載入PyMOL的所有氫原子
hetatm
het
從Protein Data Bank HETATM records中載入的所有原子
visible
v.
至少有一種可見表示形式的enabled對象中的所有原子
present
pr.
當(dāng)前狀態(tài)下有確定坐標(biāo)的所有原子(用于創(chuàng)建動(dòng)畫)
選擇符none在向PyMOL直接輸入命令時(shí)不會(huì)出現(xiàn),但在程序腳本中十分有用。
單字選擇符有縮略形式,一些縮略詞后必須跟著圓點(diǎn)或空格,用來界定字符??s略詞和長字符等效,選擇你自己喜歡的形式即可:
PyMOL>color blue,all
PyMOL>color blue,*??????????? #所有原子變成藍(lán)色
?
PyMOL>hide hydro
PyMOL>hide h.??????????????? #所有的氫原子的表示形式被隱藏
?
PyMOL>show cartoon,hetatm?? #PDB輸入文件中被定義為HETATM的
PyMOL>show cartoon,het????? #所有原子顯示為cartoon
?
?
4)????? 屬性選擇符
PyMOL能夠讀取PDB,MOL/SDF,Macromodel,ChemPy Model和Tinker XYZ格式的數(shù)據(jù)文件。這些格式文件的某些數(shù)據(jù)區(qū)允許PyMOL為原子指定屬性。根據(jù)這些屬性,你可以應(yīng)用屬性選擇符和標(biāo)識(shí)符對原子進(jìn)行分組和選擇:選擇符對應(yīng)于數(shù)據(jù)文件的這些數(shù)據(jù)區(qū),標(biāo)識(shí)符對應(yīng)于匹配的目標(biāo)詞或目標(biāo)數(shù)字。
在標(biāo)識(shí)符列表中不同的項(xiàng)目僅用“+”連接,不要有空格,連續(xù)的選擇用“-”連接:
PyMOL>select boy,resi 1+2+3?? #殘基1、2和3被選擇
PyMOL>select 007,resi 1-10???? #殘基1到10被選擇
謹(jǐn)記在同一標(biāo)識(shí)符后不可同時(shí)出現(xiàn)“+”“-”,如“select bad,resi 1-4+9”。
?
對于空白數(shù)據(jù)區(qū),標(biāo)識(shí)符是一對空的雙引號(hào):
PyMOL>select blank,ss “”??? #blank包含非二級(jí)結(jié)構(gòu)的所有原子
?
大多數(shù)的屬性選擇符匹配它的標(biāo)識(shí)符:
屬性選擇符
縮略形式
標(biāo)識(shí)符和舉例
symbol
e.
Chemical-symbol-list
單字母或雙字母的化學(xué)元素符號(hào)
PyMOL>select polar,symbol o+n
name
n.
Atom-name-list
蛋白和核酸中至多4字母的原子符號(hào)
PyMOL>select carbons,name ca+cb+cg
resn
r.
Residue-name-list
3字母的氨基酸符號(hào)
PyMOL>select aas,resn asp+glu+asn+gln
或至多2字母的核苷酸符號(hào)
PyMOL>select bases,resn a+g
resi
i.
Residue-identifier-list
至多4位數(shù)的殘基號(hào)
PyMOL>select boy,resi 1+10+100+1000
Residue-identifier-range
PyMOL>select boy,resi 1-10
alt
alt
Alternate-conformation-identifier-list
單字母
PyMOL>select altconf,alt a+’‘
chain
c.
Chain-identifier-list
單字母或有時(shí)是數(shù)字
PyMOL>select 007,chain a
segi
s.
Segment-identifier-list
至多4字母
PyMOL>select ligand,segi lig
flag
f.
Flag-number
從0到31的單整數(shù)
PyMOL>select f1,flag 0
numeric_type
nt.
Type-number
單整數(shù)
PyMOL>select f1,nt. 5
text_type
tt.
Type-string
至多4字母
PyMOL>select subset,text_type HA+HC
id
id
External-index-number
單整數(shù)
PyMOL>select idno,id 23
index
idx.
Internal-index-number
單整數(shù)
PyMOL>select intid,index 11
ss
ss
Secondary-structure-type
單字母
PyMOL>select allstrs,ss h+s+l+’‘
其他的選擇符對應(yīng)于數(shù)字標(biāo)識(shí)符:
數(shù)字選擇符
縮略形式
語句和舉例
b
b
Comparison-operator b-factor –value
實(shí)數(shù)
PyMOL>select fuzzy,b>10
q
q
Comparison-operator occupancy-value
實(shí)數(shù)
PyMOL>select lowcharges,q<0.5
formal_charge
fc.
Comparison-operator formal charge-value
整數(shù)
PyMOL>select doubles,fc.=-1
partial_charge
pc.
Comparison-operator partial charge-value
實(shí)數(shù)
PyMOL>select hicharges,pc.>1
?
?
5)????? 選擇代數(shù)
通過邏輯運(yùn)算符的組合,選擇更富有精確性或包含性,這些算符即布爾算符包括and,or和not,它們的含義和代數(shù)中的“且”“或”“非”同義。
?
運(yùn)算符:
選擇運(yùn)算符和標(biāo)識(shí)符列表如下。虛設(shè)的變量s1和s2代表selection-expressions.
運(yùn)算符
縮略形式
效果
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中的所有原子
PyMOL>select all_prot,bb︱sidechain
s1 in s2
s1 in s2
選擇s1中標(biāo)識(shí)符name,resi,resn,chain,segi全匹配s2的原子
PyMOL>select same_atms,pept in prot
s1 like s2
s1 l. s2
選擇s1中標(biāo)識(shí)符name和resi匹配s2的原子
PyMOL>select similar_atms,pept like prot
s1 gap x
s1 gap x
選擇范德華半徑與s1的范德華半徑
以最小距離x埃分離的所有原子
PyMOL>select farfrm_ten,resi 10 gap 5
s1 around x
s1 a. x
選擇中心在以s1任何原子為中心,以x埃為半徑的范圍內(nèi)的所有原子
PyMOL>select near_ten,resi 10 around 5
s1 expand x
s1 e. x
通過在以s1任何原子為中心,以x埃為半徑的范圍內(nèi)的所有原子擴(kuò)充s1
PyMOL>select near_ten_x,near 10 expand 3
s1 within x of s2
s1 w. x of s2
選擇s1中在s2 x埃范圍內(nèi)的原子
PyMOL>select bbnearten,bb w. 4 of resi 10
byres s1
br. s1
擴(kuò)充s1到殘基
PyMOL>select complete_res,br. bbnear10
byobject s1
bo. s1
擴(kuò)充s1到對象
PyMOL>select near_obj,bo. Near_res
neighbor s1
nbr.s1
選擇直接以化學(xué)鍵連接s1的原子
PyMOL>select vicions,neighbor resi 10
?
邏輯選擇可被組合。例如,你可以選擇部分鏈a的原子,但不包括殘基125:
PyMOL>select 007,chain a and (not resi 125)
?
PyMOL>select boy,(name cb or name cg1 or name cg2) and chain a?? #這兩個(gè)
PyMOL>select girl,name cb+cg1+cg2 and chain a???????????? ????#命令是等效的
?
邏輯運(yùn)算像算術(shù)運(yùn)算一樣是有順序的,為確保操作正確執(zhí)行,必要時(shí)使用括號(hào):
Byres((chain a or (chain b and (not resi 125))) around 5)
PyMOL是從最內(nèi)的括號(hào)向外邏輯選擇的。
?
?
6)????? 宏指令
宏指令使表達(dá)長復(fù)雜語句的原子選擇成為可能,如:
PyMOL>select boy,pept and segi lig and chain b and resi 142 and name ca
用精簡方式表示:
PyMOL>select boy, /pept/lig/b/142/ca
宏指令用正斜杠來界定標(biāo)識(shí)符。
宏指令通過布爾算符“and”選擇原子,也就是說,選擇的原子必須全部匹配標(biāo)識(shí)符:
/object-name/segi-identifier/chian-identifier/resi-identifier/name-identifier
這些標(biāo)識(shí)符形成了一個(gè)等級(jí)串,以object-name 為首,以name-identifier為尾。PyMOL將宏指令當(dāng)做一個(gè)詞來識(shí)別,所以宏指令中不能有空格。
?
宏指令有兩種形式:以正斜杠開頭的和不以正斜杠開頭的。宏指令開頭正斜杠的存在與否決定了宏指令的讀取方式。
如果以正斜杠開頭,PyMOL按從頭到尾的方式讀取:
/object?name/segi?identifier/chain?identifier/resi?identifier/name?identifier
/object?name/segi?identifier/chain?identifier/resi?identifier
/object?name/segi?identifier/chain?identifier
/object?name/segi?identifier
/object?name
例如
PyMOL> zoom /pept
PyMOL> show spheres, /pept/lig/
PyMOL> show cartoon, /pept/lig/a
PyMOL> color pink, /pept/lig/a/10
PyMOL> color yellow, /pept/lig/a/10/ca
?
如果不以正斜杠開頭,PyMOL按從尾到頭的方式讀?。?/span>
resi?identifier/name?identifier
chain?identifier/resi?identifier/name?identifier
segi?identifier/chain?identifier/resi?identifier/name?identifier
object?name/segi?identifier/chain?identifier/resi?identifier/name?identifier
例如
PyMOL> zoom 10/cb
PyMOL> show spheres, a/10?12/ca
PyMOL> show cartoon, lig/b/6+8/c+o
PyMOL> color pink, pept/enz/c/3/n
?
你也可以忽略正斜杠間的內(nèi)容, 忽略的內(nèi)容將會(huì)被當(dāng)做通配符,如下所示:
resi?identifier/
resi?identifier/name?identifier
chain?identifier//
object?name//chain?identifier
例如
PyMOL> zoom 142/ ????????????????# 殘基142充滿viewer.
PyMOL> show spheres, 156/ca ?????#殘基156的alpha碳以sphere顯示
PyMOL> show cartoon, a// ?????????# Chain "A" 顯示為cartoon.
PyMOL> color pink, pept//b ????????# object "pept" 的Chain "B"著為粉紅色
為了區(qū)別于選擇中的其他詞,宏指令必須至少包含一個(gè)正斜杠。作為一個(gè)完整的詞,中間不能有空格。宏指令轉(zhuǎn)換成長復(fù)雜語句形式后才被提交執(zhí)行,懂得這點(diǎn)對理解錯(cuò)誤信息很有幫助。
?
2.????? 從PyMOL中讀取Python
Python是一種面向?qū)ο蟮慕忉屝缘挠?jì)算機(jī)程序設(shè)計(jì)語言,也是一種功能強(qiáng)大而完善的通用型語言。
單行的Python命令語句可以直接從PyMOL中發(fā)出,如:
PyMOL>print 1+2
3
充分利用Python標(biāo)準(zhǔn)庫函數(shù),你可以給符號(hào)(symbols)指定結(jié)果:
PyMOL>import time
PyMOL>now = time.time()
PyMOL>print now
1052982734.94
在PyMOL命令腳本中可以有多行的Python模塊,這些命令行(除了最后一行)以反斜杠('\')結(jié)尾表示命令繼續(xù):
PyMOL> for a in range(1,6): \
PyMOL> b = 6 ? a \
PyMOL> print a, b
1 5
2 4
3 3
4 2
5 1
注意:Python命令語言僅能在當(dāng)前PyMOL支持的Python版本上使用,通過在PyMOL中輸入命令print sys.version查看支持的Python版本,也可以確定輸入的Python命令是否被當(dāng)前PyMOL支持。
?
四、????????????? 卡通表示
1.??????? 背景
1)? 可達(dá)性
PyMOL的競爭對手如流行的Molscript/Raster3D軟件中也有Cartoon ribbons,但PyMOL卻能非常容易地制作高質(zhì)量的圖片。由于PyMOL能直接讀取Molscript的結(jié)果(見Molscript章節(jié)),所以能很方便的使用PyMOL的Cartoon ribbon功能:
PyMOL的ribbon???????????? ??"molauto ?nice ... | molscript ?r > ..."
?
Molscript的Cartoon更理想一點(diǎn)點(diǎn),但PyMOL卻相當(dāng)縝密。
注意:本章節(jié)的所有的圖片都用rainbow和ray-trace處理了。
?
?
2)????? 美化和精確
PyMOL cartoon ribbon功能的一大好處是很容易的在二級(jí)結(jié)構(gòu)平滑(smoothed)版本間轉(zhuǎn)換和精確(correct)表現(xiàn)實(shí)際主鏈的坐標(biāo)。Cartoons常作為蛋白結(jié)構(gòu)的示意圖,有時(shí)就希望它能夠在特定位點(diǎn)展現(xiàn)原子分辨率級(jí)別的圖形。然而,除非碳骨架有alpha?carbon位點(diǎn),否則結(jié)果圖形會(huì)看起來有點(diǎn)愚蠢:
在上圖中,側(cè)鏈浮離到了空間。點(diǎn)擊setting菜單cartoon的禁用"flat sheets"或輸入命令
set cartoon_flat_sheets, 0
將會(huì)使beta條帶沿骨架的正確路徑延伸并給出更精確的結(jié)構(gòu)描述
當(dāng)關(guān)閉smoothing功能后,整個(gè)分子的cartoon表現(xiàn)將會(huì)有實(shí)質(zhì)性的改變:
例如當(dāng)smoothing開啟時(shí):
set cartoon_flat_sheets, 1
set cartoon_smooth_loops, 1
關(guān)閉后:
set cartoon_flat_sheets, 0
set cartoon_smooth_loops, 0
這更精確反應(yīng)了肽骨架的正確路徑:
記?。赫嬲慕Y(jié)構(gòu)比你看到的更復(fù)雜一些。
?
?
2.????? 定制化(customization)
1)?????? 卡通類型(cartoon types)
當(dāng)分子二級(jí)結(jié)構(gòu)所有殘基的信息被定義后就能得到最好的結(jié)果,在這種情況下,PyMOL將會(huì)保證螺旋區(qū)域被高標(biāo)準(zhǔn)地計(jì)算并在合適的位置表現(xiàn)出平滑的環(huán)(loop)。
同樣在這種情況下,自動(dòng)模式會(huì)指定二級(jí)結(jié)構(gòu)類型為cartoon。但是,你可以命令PyMOL忽略這些信息,并人工操縱表示形式。
Show cartoon
Cartoon automatic??????? #默認(rèn)的
Cartoon loop(環(huán)形)
Cartoon rect(矩形)
Cartoon oval(橢圓)
Cartoon tube(管狀)
cartoon tube, 1:49/????????
cartoon tube,1-49/?????????? #前兩個(gè)命令等效:殘基1到49顯示為cartoon tube
cartoon arrow, 50:99/
cartoon loop, 100:149/
cartoon oval, 150:199/
cartoon rect, 200:250/
所有的cartoon ribbons通過set命令可設(shè)定相應(yīng)的參數(shù)來改變它們的顯示,詳情見“設(shè)置”。
?
2)????? 精美螺旋(fancy helices)
set cartoon_fancy_helices,0?? #關(guān)閉fancy helices
有管狀邊的Ribbon螺旋:
set cartoon_fancy_helices, 1??? #開啟fancy helices
?
?
3.????? 二級(jí)結(jié)構(gòu)歸屬(assignment)
建議你使用有正確二級(jí)結(jié)構(gòu)歸屬的PDB文件,這些歸屬來自像DSSP的程序。但是,PyMOL也有快速合理的二級(jí)結(jié)構(gòu)歸屬算法,即“dss”。需要清楚的一點(diǎn)是由于兩可案例中對二級(jí)結(jié)構(gòu)歸屬的主觀因素,dss的結(jié)果可能會(huì)不同于DSSP:
語法
dss selection
例如
dss 1dfr
?
通過下面的命令,你可以對比一下dss和PDB二級(jí)結(jié)構(gòu)的不同:
fetch 2bya??????????????? #載入對象2bya
copy boy,2bya??????????? #復(fù)制對象,命名為boy
as cartoon?????????????? #顯示cartoon
color red,boy????????????
color green,2bya
dss boy????????????????? #對boy計(jì)算二級(jí)結(jié)構(gòu)
然后你就會(huì)看出boy和2bya的不同之處了。
?
如果你在看動(dòng)畫,可能會(huì)希望從動(dòng)畫的某一特定狀態(tài)得到二級(jí)結(jié)構(gòu)歸屬,可以這樣做到:
語法
dss selection, state
例如
dss mov, 1
?
為了人工改變屬性,最好的方式是使用alter命令:
show cartoon
alter 11?40/, ss='H'?????????????? ?#指定residues 11?40 為helix
alter 40?52/, ss='L' ???????????????#指定residues 40?52為loop
alter 52?65/, ss='S' ???????????????#指定residues 52?65為sheet
alter 65?72/, ss='H' ???????????????#指定residues 65?72為helix
rebuild??????????????????????? ???#重建cartoon
?
五、????????????? 光線追蹤(ray tracing)
光線追蹤能制作出最高質(zhì)量的分子圖像。PyMOL是第一個(gè)擁有高速光線追蹤器的全功能分子圖像程序。
??
OpenGL Rendering (real?time manipulation) ????Ray?traced Rendering (seconds or minutes per frame)
通過ray命令或點(diǎn)擊“Ray Trace”按鈕,可以光線追蹤PyMOL內(nèi)的任意圖像。內(nèi)置的光線追蹤器也使組配高質(zhì)量的動(dòng)畫成為可能。
?
?
1.??????? 重要設(shè)置
通過"set"命令可以改變設(shè)置。除非另外說明,否則這些設(shè)置只應(yīng)用到光線追蹤器而不是OpenGL渲染器。以后這兩種渲染器會(huì)進(jìn)行一些調(diào)和,所以值得提醒的是將來這些設(shè)置可能會(huì)改變。
一般情況下,你需要改的設(shè)置僅是orthoscopic(正視的), antialias(普通顯示效果), gamma(灰度系數(shù))。如果你對酶活性位點(diǎn)的陰影不滿意,可以增大direct值到0.5—0.7,這樣就能提高亮度和反差。
?? orthoscopic (0 or 1) 控制著OpenGL 渲染器是否和光線追蹤器使用同樣的正視變換(orthoscopic transformation)。當(dāng)設(shè)置為1時(shí)OpenGL和raytracing圖像的像素是匹配的
?? ambient (0.0?1.0) 控制OpenGL和ray?tracer的環(huán)境光強(qiáng)度。
?? ambient_scale (float:單精度浮點(diǎn)數(shù)表示) 控制OpenGL和ray?tracer的相對環(huán)境光強(qiáng)度。
?? antialias (0 or 1) 產(chǎn)生一個(gè)"smooth"圖片 (質(zhì)量最好, 但加長4倍).
?? direct (0.0?1.0) 由相機(jī)(camera)產(chǎn)生的planer light(面板燈?or刨光燈?)強(qiáng)度。
?? gamma (0.1?2.0) 渲染完成后應(yīng)用玻璃轉(zhuǎn)換(gamma transformation)。
?? light (vector:矢量表示) 光線的照射方向.?
例如:set light,(1,1,1)? ???#光線沿矢量(1,1,1)射向?qū)ο?/span>
????? set light,(0,0,0)???? #光線消失或者全方位照射?實(shí)際是圖像變暗??
?? reflect (0.0?1.0) ?由光源產(chǎn)生的planer light強(qiáng)度。
?? spec_reflect (0.0?1.0)光鏡面反射(specular reflection)的強(qiáng)度。
?? spec_power (1?100) how localized is the specular reflection (higher=smaller).
?
?
2.????? 保存圖片
所有的圖片都能保存為PNG格式,通過"png"命令或"File"菜單的"Save Image"選項(xiàng)。圖片通常被保存為和viewer 窗口一樣的大?。?/span>
ray
png my_image.png
?
通過下面的命令可改變圖片大?。?/span>
語法
ray? width,height?? #寬和高都必須是整數(shù),它們的默認(rèn)是零或當(dāng)前窗口大小?
例如
ray? 1024,480
?
更多關(guān)于ray的信息通過命令“help ray”獲得。
?
?
六、????????????? 立體效果
PyMOL能夠支持幾種不同的立體圖形模式。
?
1.????? 支持的立體模式
Crosseye stereo
Walleye stereo
Hardware stereo
Geowall ?stereo
Sidebyside stereo
Quadbuffer stereo
?
2.????? 制作立體圖形
為達(dá)到立體三維效果,必須注意保證立體對(stereo pairs)產(chǎn)生時(shí)有合適的轉(zhuǎn)換,印刷時(shí)圖像間有一定的距離。
準(zhǔn)備立體圖像的真正難點(diǎn)在于在印刷前紙張常常縮小圖片,所以很必要準(zhǔn)備圖像時(shí)使你的草圖和最終的印刷大小一致。
?
3.??? 相關(guān)命令
??? stereo on??????????? #開啟立體效果
? ???stereo off
?? ??stereo crosseye???? #開啟crosseye立體模式,
注意:如果hardware stereo 可用,那么quadbuffer stereo 是默認(rèn)的立體模式,否則??? crosseye stereo是默認(rèn)的。
七、????????????? 動(dòng)畫
1.????? 概念:?
PyMOL有強(qiáng)大的分子動(dòng)畫制作功能。為了使用此功能,首先有必要了解幾個(gè)概念:
?? States(狀態(tài)):狀態(tài)指對象(object)某一個(gè)時(shí)間點(diǎn)特定的原子坐標(biāo)。例如,它可由分子動(dòng)力學(xué)模擬的步(steps)或坐標(biāo)插值(coordinate interpolation)的獨(dú)立點(diǎn)構(gòu)成。如果是在制作靜態(tài)坐標(biāo)設(shè)置的動(dòng)畫(如一個(gè)單獨(dú)的晶體結(jié)構(gòu)),就只能有一個(gè)狀態(tài)。由NMR得到的晶體結(jié)構(gòu),對象只有一個(gè),但卻包含多種不同狀態(tài),可以在PyMOL中直接放映。注意:狀態(tài)并不存儲(chǔ)對象的表示形式(如cartoons、sticks、ribbon等等)。
?? Sences(場景):場景存儲(chǔ)鏡頭(camera)的位置和定向、對象的活動(dòng)信息、原子的可見性(visibility)、著色、表示形式和全局幀索引(global frame index)
?? Frames(幀):幀就像電影膠片中一個(gè)個(gè)單獨(dú)的圖片,在PyMOL中,幀是由狀態(tài)(states)而不是圖片構(gòu)成的,而且對幀可以進(jìn)行相關(guān)操作(如camera的選轉(zhuǎn))。幀存儲(chǔ)狀態(tài)信息和場景信息。
????????????????????? 場景、狀態(tài)和幀三者關(guān)系的圖解
注意:狀態(tài)和幀的值(index)由1開始。如果用狀態(tài)值0把狀態(tài)載入到對象中,那表明讓此狀態(tài)附加到對象的上一個(gè)狀態(tài)后。?
???
2.????? 重要命令
1)????? 下載
下載命令用來填充對象的狀態(tài)。默認(rèn)狀態(tài)下,每個(gè)載入的新文件都會(huì)被附加到對象狀態(tài)。然而,下載命令第三個(gè)語句(可選語句)是文件被載入的幀指數(shù)。
load foo1.pdb,mov??? #載入foo1.pdb 到"mov"的狀態(tài)1.
load foo2.pdb,mov??? #載入 foo2.pdb 到"mov"狀態(tài)2 ".
load foo3.pdb,mov,3 ?#載入 foo3.pdb 到"mov"狀態(tài)3.
load foo4.pdb,mov,4 ?#載入foo4.pdb? 到"mov"狀態(tài)4.
?
?
2)????? Mset
Mest命令用來指定那些狀態(tài)作為動(dòng)畫的幀而被包括。如果mset命令沒被應(yīng)用,PyMOL將會(huì)默認(rèn)地按順序(sequential order)放映動(dòng)畫。然而,若想使用其他動(dòng)畫命令(如mdo),有必要直接使用mset命令創(chuàng)建PyMOL內(nèi)的動(dòng)畫定義。
Mset命令后緊跟定義整個(gè)動(dòng)畫的狀態(tài)列表。每個(gè)狀態(tài)采用以下形式之一:
?? #?? 一個(gè)數(shù)字:指定下一個(gè)放映的狀態(tài)
?? x#? 一個(gè)數(shù)字緊隨小寫“x”(無空格):指定狀態(tài)總共該重復(fù)的次數(shù)
?? -#? 一個(gè)數(shù)字緊隨連字號(hào)(無空格):指定狀態(tài)按載入的順序的放映。
例如:
mset 1 x30 ?????# 創(chuàng)建一個(gè)由狀態(tài)1放映30遍組成的30幀的動(dòng)畫
mset 1 ?30 ?????# 創(chuàng)建一個(gè)30幀的動(dòng)畫: 從狀態(tài)1到30,“?”是“到或至”的意思,但其前必須有空格.
mset 1 ?30 ?2 ???# 58幀: 從狀態(tài)1到30,然后從29到2.
mset 1 6 5 2 3 ???#5幀:狀態(tài)1, 6, 5, 2, 3放映
注意:當(dāng)只有一個(gè)狀態(tài)時(shí),狀態(tài)1到狀態(tài)x(x>=1)只能顯示狀態(tài)1;當(dāng)n(n>=2)個(gè)狀態(tài)時(shí),若設(shè)定的x>n,那么不存在的狀態(tài)不顯示任何對象,而不是一直顯示狀態(tài)n。
?
?
3)????? Mdo
Mdo命令可以把一系列的PyMOL命令捆綁到幀上。例如你可以讓每一幀的坐標(biāo)軸旋轉(zhuǎn)從而對對象進(jìn)行掃描。
注意:“util”組件為產(chǎn)生mdo命令有兩個(gè)腳本命令,“util.mrock”和“util.mroll”。這些功能還沒入檔,但源程序可在modules/PyMOL/util.py找到。由于它們是實(shí)際的腳本語言功能,要用括號(hào)括起來。
util.mrock(start,finish,angle,phase,loop-flag)
util.mroll(start,finish,loop-flag)
?
?
4)????? Mmatrix
Mmatrix 命令可以保存和調(diào)用一個(gè)特殊查看矩陣,用來創(chuàng)建動(dòng)畫幀1。當(dāng)在同一個(gè)對話中既做著其他操作又想保存動(dòng)畫的定向時(shí),這一命令十分有幫助。
?
3.????? 簡單舉例
這里受溫和搖擺的靜態(tài)結(jié)構(gòu)。下面命令創(chuàng)建了一個(gè)60幀的動(dòng)畫,此動(dòng)畫10度搖擺蛋白。
load test/dat/pept.pdb??? #載入結(jié)構(gòu)
mset 1 x60?????????????? #定義動(dòng)畫
util.mrock 1,60,10,1,1? ???#mdo命令創(chuàng)建搖擺+/-10度的60幀動(dòng)畫
下面的例子中,蛋白質(zhì)在120幀中沿y軸旋轉(zhuǎn)360度:
load test/dat/pept.pdb???? #載入結(jié)構(gòu)
mset 1 x120?????????????? #定義動(dòng)畫
util.mroll 1,120,1?? ????????#mdo命令創(chuàng)建旋轉(zhuǎn)360度的120幀動(dòng)畫?
?
4.????? 復(fù)雜舉例
下面的例子是Python程序(.py 或.pym為擴(kuò)展名)應(yīng)用Python loop載入一系列編好號(hào)的PDB文件,然后配置PyMOL顯示它們向前和向后:
from glob import glob
from PyMOL import cmd
file_list = glob(“mov*.pdb”):
for file in file_list
cmd.load(file,“mov”)
cmd.mset(“1 -%d -2”%len(file_list))
?
5.????? 預(yù)覽ray-traced動(dòng)畫圖片
PyMOL能夠在RAM中緩存一系列圖片,然后以比它們渲染時(shí)高很多的速度放映。這對ray-traced圖片和OpenGL圖片都很有用。
?
1)????? Cache_frames
Cache_frames控制PyMOL是否把幀保存到內(nèi)存。注意:緩存的圖片占很大的內(nèi)存空間,所以在使用此功能前先用“viewport”命令縮小窗口:
viewport 320,240
load test/dat/pept.dpb
orient
hide
show sph
mset 1 x30
util.mrock 1,30,3,1,1
set ray_trace_frames=1
set cache_frames=1
mplay
?
2)????? Mclear
一旦把一系列幀載入RAM,這些幀會(huì)一直存在,即使操縱這個(gè)模型。通過“mclear”命令或mclear按鈕可清楚緩存:
Mclear??? #清除幀的緩存
?
6.????? 保存動(dòng)畫
你可以保存動(dòng)畫圖片到編號(hào)的PNG文件。如果想每幀都被光線追蹤,應(yīng)打開幀的光線追蹤,關(guān)閉并清除緩存:
set ray_trace_frames=1
set cache_frames=0
mclear
通過“mpng”命令或“File”菜單可保存動(dòng)畫,無論哪種方式,都需要在創(chuàng)建的PNG文件前加前綴(prefix):
Mpng mov? #將自動(dòng)創(chuàng)建mov0001.png? mov0002.png……
如果你用Adobe Premiere(強(qiáng)烈推薦)壓縮動(dòng)畫,需要通過ImageMagick或相似的軟件將文件格式轉(zhuǎn)換為Premiere可讀的格式(如“.tga”)。
?
?
八、????????????? 高級(jí)鼠標(biāo)控制
1.????? ?選擇(pick)原子和鍵
當(dāng)前鼠標(biāo)配置在屏幕右下角可見。在默認(rèn)鼠標(biāo)配置下:
?? viewing模式:
?? CTRL/右鍵單擊可選擇單個(gè)原子(Pk1功能)。
?? CTRL/右鍵-中鍵點(diǎn)擊可選擇多個(gè)原子(至多4個(gè))(PkAt功能)。
?
?? editing模式:
?? CTRL/右鍵單擊可選擇一個(gè)鍵(PkTB功能)
?? CTRL/右鍵-中鍵點(diǎn)擊可選擇多個(gè)鍵(至多4個(gè))(PkAt功能)。
?
無論原子還是化學(xué)鍵被選擇,這些選擇將會(huì)被自動(dòng)定義為以下名稱:
l? (pk1) 被選中的原子或鍵選擇中第一個(gè)被選中的原子
l? (pk2) 鍵選擇中第二個(gè)被選中的原子
l? (pkfrag#)所在的分子片段。
l? (pkchain) 被選中的原子或鍵所在的鏈。
l? (pkresi) 被選中的原子或鍵所在的殘基。
點(diǎn)擊這些名稱可以直觀看到選擇所包括的原子。所有這些選擇像人工用select命令創(chuàng)建的一樣可以被使用和操作。但是要注意,這些選擇十分脆弱,當(dāng)一些普通操作發(fā)生時(shí)它們會(huì)被自動(dòng)刪除,如載入新對象。
?
2.????? “pk”原子選擇的應(yīng)用舉例
假定你選擇了原子或鍵:
show sticks,(pkresi)?? ?#將選中的殘基顯示為sticks
color red,(pkchain)???? #將選中的鏈著為紅色
remove (byres pk1)?? ??#移除選中的殘基里的所有原子
?
3.????? “lb”和“rb”選擇
大多時(shí)候,“pk”原子選擇就足夠了。但有些時(shí)候需要對原子選擇做兩個(gè)或更多設(shè)置,這時(shí)“left-button or ‘lb’ selection”和“right-button or ‘rb’selection”就派上用場了(因?yàn)?/span>pk原子選擇很脆弱,極易自動(dòng)刪除),在默認(rèn)鼠標(biāo)配置下:
?? CTRL?SHIFT/左鍵點(diǎn)擊是“lb”功能,重定義“lb”選擇。
?? CTRL/左鍵點(diǎn)擊是“+lb”功能,擴(kuò)充“lb”選擇。
?? CTRL?SHIFT/右鍵點(diǎn)擊是“rb”功能,重定義“rb”選擇。
一些命令在設(shè)計(jì)時(shí)就把"(lb)" 和"(rb)"作為默認(rèn)語句。例如,“distance”命令,如果被調(diào)用而沒有任何語句,將會(huì)在(lb)和(rb)中間顯示距離值:
#定義(lb): 通過 CTRL?SHIFT/左鍵點(diǎn)擊一個(gè)原子
# 定義(rb) 通過CTRL?SHIFT/右鍵點(diǎn)擊另一個(gè)
dist ?????????# 將會(huì)在兩原子間顯示距離值
?
4.????? 構(gòu)象編輯
抱歉,這部分沒有相關(guān)內(nèi)容。只有PyMOL和能量最小化引擎(energy minimiation engine)相關(guān)聯(lián),構(gòu)象編輯功能才能使用。
?
九、????????????? 晶體應(yīng)用
1.????? 晶體對稱性
Ralf Grosse?Kunstleve提供了SgLite模型使PyMOL能通過標(biāo)準(zhǔn)空間群和晶胞信息推算出對稱性關(guān)系。目前這些信息只能作為PDB文件(包括準(zhǔn)確的空間群標(biāo)識(shí)符)中的CRYST1記錄提供給PyMOL。從API直接把一種指定的晶胞和對稱性添加到任何分子對象中是需要解決的任務(wù)。
CRYST1記錄格式如下:
1? 6??? ??Record name ???"CRYST1"
7 ? 15 ???Real(9.3) ?????????a?????????????????? ?a (Angstroms).
16 – 24? ?Real(9.3) ?????????b ???????????????????b (Angstroms).
25 ? 33 ??Real(9.3) ?????????c ???????????????????c (Angstroms).
34 ? 40 ??Real(7.2)???????? ?alpha ???????????????alpha (degrees).
41 ? 47 ??Real(7.2) ?????????beta??????????????? ?beta (degrees).
48 ? 54 ??Real(7.2)???????? ?gamma ?????????????gamma (degrees).
56 ? 66 ??LString ??????????sGroup ?????????????Space group.
67 – 70? ?Integer????????? ?z ????????????????????Z value. ??# PyMOL忽略
?
1)????? 載入
當(dāng)用“load”命令讀取帶有對稱信息的PDB文件時(shí),矩陣信息就被輸出。這證實(shí)了在顯示對稱相關(guān)分子前,矩陣信息就產(chǎn)生了。
?
2)????? Symexp
“symexp”命令用來顯示原子選擇中晶胞的對稱相關(guān)分子。這個(gè)命令創(chuàng)建了一套有公共前綴的對象。每個(gè)對象都對應(yīng)一個(gè)能被獨(dú)立對待的對稱性關(guān)聯(lián)對象。見“help symexp”或參考部分的用法信息。
為了在給定距離內(nèi)僅可視對稱相關(guān)原子,你需要將過程拆成兩步。首先,用symexp命令創(chuàng)建完整的對稱相關(guān)對象;然后用hide命令限定僅是感興趣的區(qū)域顯示
load foo.pdb??????????????????? #下載有cryst記錄的pdb文件
symexp sym,foo,(foo),5.0???????? #創(chuàng)建對稱相關(guān)的“foo”對象,
hide (not(foo expand 5))????????? #隱藏距離foo 大于5埃的原子,
#這些原子在foo 5埃的范圍內(nèi)
#應(yīng)用前綴“sym”
注意:symexp命令潛在地創(chuàng)建大量對象。用“delete”命令和一個(gè)通配符可移除有公共前綴的所有對象:
Delete sym*??????????????? #刪除所有以“.syn”開頭的對象
?
2.????? 電子密度圖
目前PyMOL僅支持CNS和XPLOR? ASCⅡ格式的圖文件(map file)。
?
1)????? 載入
PyMOL給XPLOR/CNS圖文件加“.xplor”的擴(kuò)展名,通過“load”命令:
load 2fofc.xplor,map1???????? #從擴(kuò)展名推斷出的類型
load 2fofc.map,map1,1,xplor?? #明確提供類型
?
2)????? Isomesh和isodot
圖文件用來儲(chǔ)存數(shù)據(jù),并以空間中的線框塊來表示圖的范圍。通過“isomesh”“isodot”命令對一個(gè)給定的圖可創(chuàng)建任意任意數(shù)量的mesh和dots對象:
Isomesh msh1,map1,1.0? #整個(gè)圖對象“map1”展現(xiàn)為等值面網(wǎng)
#等勢值設(shè)為1
Isomesh msh2,map1,1.0,(chain A),3.0? #鏈A有3埃的邊框,
#展現(xiàn)為等值面網(wǎng),等勢值為1
見“help isomesh”或參考部分見更多信息。
?
十、????????????? 匯編圖形對象(CGOs)和Molscript ribbons
1.????? 簡介
雖然PyMOL能應(yīng)用OpenGL進(jìn)行所有的實(shí)時(shí)渲染,但PyMOL內(nèi)置的光線追蹤器無法勝任任意的OpenGL命令。這樣,任何圖形都必須先轉(zhuǎn)換成一套基元(spheres,cylinders和triangles),然后才能被供給光線追蹤器用來制作高質(zhì)量的圖片。
匯編圖形對象是PyMOL的一種特別格式,它能夠使任何Python程序員創(chuàng)建三維幾何和模擬,并能提供OpenGL高速顯示,也能通過光線追蹤器直接渲染成最高質(zhì)量的圖片。
?
2.????? Molscript ribbons
注意:Molscript是商業(yè)軟件(對學(xué)術(shù)免費(fèi)),在http://www.avatar.se/molscript/可下載。
PyMOL可自動(dòng)將Molscript的Raster3D 格式輸入文件結(jié)果(通過“-r”選項(xiàng))轉(zhuǎn)換成匯編圖形對象,用來在PyMOL內(nèi)顯示和渲染。PyMOL期望這些文件擴(kuò)展名是“.r3d”。注意:Raster3D-to-CGO轉(zhuǎn)換器是赤裸-最低Python用具,不會(huì)包括超出需讀取的文件結(jié)果的任何東西。
1)????? 載入???
load test/dat/pept.r3d?????? #載入一個(gè)raster3d文件
?
2)????? 應(yīng)用Molscript
?? Molauto
當(dāng)用molauto準(zhǔn)備輸入文件時(shí),首先要使用“-nocentre”選項(xiàng)避免蛋白質(zhì)的任何變形。這樣PDB文件和Molscript 絲帶才會(huì)在同一參考框架。
Unix> molauto –nocentre 3all.pdb ∣molscript –r > test1.r3d
Unix> molauto –nocentre –nice 3all.pdb ∣molscript –r > test2.r3d
也可以直接將PDB和絲帶文件載入PyMOL作為獨(dú)立的對象:
Load 3all.pdb???? #載入坐標(biāo)
Load test1.r3d??? #載入molscript絲帶
?
?? Molscript Input Files
很不幸,PyMOL不能自己編輯反映當(dāng)前原子著色和可視度的molscript輸入文件,因此需人工完成,以下是一些建議:
?? 為了保存參考框架,從當(dāng)前molscript輸入文件通過“transform atom”移除任何的line開端,例如:
Transform atom * by centre position atom *
?? 鑒于顯示的原因,在實(shí)時(shí)操作molscript絲帶時(shí),可能你會(huì)設(shè)置線段為小號(hào)。隨后你可以增大,重建和重載入“.r3d”文件:
Set segments 2?? #適于實(shí)時(shí)圖形
Set segments 8?? #適于渲染
重建新絲帶最簡單的方法是用“save”命令輸出一個(gè)包含原子選擇的PDB文件。應(yīng)用“system”命令啟動(dòng)molauto和molscript,然后把Raste載回PyMOL:
Save tmp.pdb,(chain c)
System molauto –nocentre tmp.pdb∣molscript –r >tmp.r3d
Load tmp.r3d
?
3.????? 創(chuàng)建CGOs
匯編圖形對象包括OpenGL中標(biāo)準(zhǔn)line和triangle基元的對等物,也包括spheres和cylinders基元。
在Python水平,CGOs被構(gòu)建成Python浮點(diǎn)數(shù)字的線性列表,這在概念上等同于OpenGL數(shù)據(jù)流。
from PyMOL.cgo import * ?????# 得到常量
from PyMOL import cmd
obj = [
BEGIN, LINES,
COLOR, 1.0, 1.0, 1.0,
VERTEX, 0.0, 0.0, 0.0,
VERTEX, 1.0, 0.0, 0.0,
VERTEX, 0.0, 0.0, 0.0,
VERTEX, 0.0, 2.0, 0.0,
VERTEX, 0.0, 0.0, 0.0,
VERTEX, 00, 0.0, 3.0,
END
]
cmd.load_cgo(obj,'cgo01')
CGOs支持標(biāo)準(zhǔn)OpenGL BEGIN/END形式和一些獨(dú)立基元(SPHERE,CYLINDER,TRIANGLE),這些基元不能在BEGIN/END 程序塊內(nèi)出現(xiàn)。
?
4.????? CGO參考:
CGO僅僅是一個(gè)Python浮點(diǎn)數(shù)字列表,能夠被PyMOL匯編并和給定的狀態(tài)相聯(lián)系。
下面的小寫名稱應(yīng)被浮點(diǎn)數(shù)字替代。一般地,TRIANGLE基元作為最后一個(gè)恢復(fù)(restore)被應(yīng)用,因?yàn)樗阡秩旧媳?/span>BEGIN/END的一系列頂點(diǎn)(vertices)效果差很多。
BEGIN, { POINTS | LINES | LINE_LOOP | LINE_STRIP | TRIANGLES | TRIANGLE_STRIP | TRIANGLE_FAN },
VERTEX, x, y, z,
COLOR, red, green, blue,
NORMAL, normal?x, normal?y, normal?z,
END,
LINEWIDTH, line?width,
WIDTHSCALE, width?scale,????????? ?# 用來光線追蹤
SPHERE, x, y, z, radius ???????????????#應(yīng)用當(dāng)前著色
CYLINDER, ?x1, y1, z1, x2, y2, z2, radius,
red1, green1, blue1, red2, green2, blue2,
TRIANGLE, ?x1, y1, z1,
x2, y2, z2,
x3, y3, z3,
normal?x1, normal?y1, normal?z1,
normal?x2, normal?y2, normal?z2,
normal?x3, normal?y3, normal?z3,
red1, green1, blue1,
red2, green2, blue2,
red3, green3, blue3,
?? load_cgo
CGOs列表通過“load_cgo”命令載入PyMOL
cmd.load_cgo(list,name,state)
通過把CGOs載入給定對象的連續(xù)狀態(tài)可以創(chuàng)建任意的三維模擬。下面的例子就是來自“examples/devel/cgo03.py”cgo模擬范例的靜態(tài)圖片: