早在1993年,Dunbrack和Karplus就已經發現氨基酸的側鏈的Rotamers與骨架狀態存在一定的關係,並提出了離散型的Rotamer libraries的概念: 以10°x10°(phi,psi)的格點作為單位,統計每種氨基酸的Rotamers在這個區間的骨架二面角分佈狀態下,Rotamer出現的頻率,chi二面角的平均值等數據,而形成的資料庫。
在Rosetta中,Packer通過搜索Rotamer libraries以及模擬退火的方法來預測給定骨架狀態下,氨基酸的側鏈狀態。這個過程就是"Pack Rotamers"。這個過程分為Repack、Design、NoRepack三種情況。
NoRepack,顧名思義,不允許發生Repack,該位點的氨基酸類型將保持為輸入的構象。
Repack和Design的區別在於: Repack時,該位點氨基酸的類型不能發生變化,但是會構象可以改變。而Design時,該位點氨基酸的類型和側鏈構象均可以發生變化。如果不加以指定,Rosetta將默認對該位點氨基酸進行Design處理。
2 Mutfile與Resfile的區別
今天的主角: Mutfile和Resfile都是Packer的控制文件,用於告訴Rosetta Packer如何對結構中的每一個氨基酸側鏈進行計算。
Resfile的用途比Mutfile更廣泛,只要與PackTask相關的都可以通過TaskOperation讀取Resfile控制Pack行為。而Mutfile目前兼容:ddg_monomer以及Cartesian_ddG。
Mutfile與Resfile的作用效果是不同的:
在控制邏輯方面方面,Mutfile是寫死的格式,比如我想讓51號Leu突變Ala,我就必須明確寫明該位點的氨基酸如何進行突變(詳見section3)。而Resfile可以指定氨基酸的突變方向,比如我可以讓51號Leu突變成非極性氨基酸(POLAR),Resfile也可以通過PIKAA語法指定突變的氨基酸類型。
在返回結果方面,Mutfile明確返回設置的突變結果,而Resfile會計算所有指定的氨基酸類型,並返回一個對能量貢獻最佳的設計。
3 Pose number與PDB number的區別
在Rosetta中,結構的氨基酸編號都是從1開始,無視多肽鏈的間隔連續編號。比如我現在有一個蛋白結構,它由AB鏈組成,A鏈有50個氨基酸,B鏈也有50個氨基酸。那麼這個Pose中編號的順序即為1-100。而PDB number有所不同,A鏈的50個氨基酸的編號為1-50,而B鏈的編號也是1-50。在實際情況中,我們要根據需要選擇使用不同的編號策略,並正確指定編輯的氨基酸序號。
4 Mutfile的格式與編寫
在Mutfile中,我們時候用的編號策略是: Pose number
Mutfile格式的編寫比較簡單,主要由三部分組成:
Total: 記錄Mutfile文件中突變輪數值;
sub-total: 記錄每輪突變中,點突變的總數;
Muation: 記錄每個點突變的方式。
total $num
sub-total
Muation
sub-total
Muation
.....
舉個例子:
我想進行一輪單點突變(L52A), 那麼我的Mutfile應該這麼寫:
total 1
1
L 52 A
結果只會輸出一個結構: L52A。
如果我想進行兩輪單點突變(L52A、L52D),那麼我的Mutfile應該這麼寫:
total 2
1
L 52 A
1
L 52 D
結果就會輸出2個結構, 分別是L52A和L52D。
如果我想進行一輪雙點突變(L52A、L53P),那麼我的Mutfile應該這麼寫:
total 1
2
L 52 A
L 53 P
結果就會輸出L52A/L53P的雙點突變結構。
如此類推。。。。
小結: Mutfile可以指定多輪突變,頗有突變掃描的意味。
5 Resfile的格式與編寫
在Resfile中,我們時候用的編號策略是: PDB number , 並且大小寫敏感。
Resfile格式的編寫主要由兩部分組成:
HEADER: 控制未在BODY中明確指定的哪些氨基酸如何進行Repack;
BODY: 記錄明確指定的氨基酸如何進行Repack;
5.1 HEADER寫法:
COMMAND # 詳見COMMAND語法;用於控制未在BODY列出的氨基酸側鏈Pack的行為
EX (ARO) <chi-id> ( LEVEL <sample level> ) # 增加rotamer採樣的指令;
EX_CUTOFF <num-neighbors> # 界定包埋氨基酸的標準;
USE_INPUT_SC # 第一次Repack時使用input的構象側鏈。
start # 強制使用,該欄位表面開始撰寫BODY的內容。
5.2 BODY的寫法:
基本格式: 第一列為氨基酸的PDB編號(允許有insert code)。第二列為PDB鏈編號,第三列為COMMAND項。
<PDBNUM>[<ICODE>] <CHAIN> <COMMANDS>
氨基酸範圍選擇格式: 不同在於可以直接指定一個範圍的PDB編號,並控制其Pack行為。(從小至大的順序編寫)
```shell; [] - []
鏈選擇範圍格式: 直接指定一個鏈所有的氨基酸Pack行為。
```shell
* <CHAIN> <COMMANDS>
多重指定: 當存在重複指定氨基酸時,其邏輯為"交集"。
<PDBNUM>[<ICODE>] - <PDBNUM>[<ICODE>] <CHAIN> <COMMANDS>
<PDBNUM>[<ICODE>] <CHAIN> <COMMANDS>
5.3 自由度控制相關語法(COMMAND):
ALLAA # 允許設計為20種氨基酸
ALLAAxc # 允許設計為非半胱氨酸以外的所有氨基酸
POLAR # 允許設計極性氨基酸(DEHKNQRST)
APOLAR # 允許設計非極性氨基酸(ACFGILMPVWY)
NOTAA <list of AAs> .. # 不允許設計為特定的氨基酸列表。(列表連續編寫無空格)
PIKAA <list of AAs> .. # 只允許設計為特定的氨基酸列表。(列表連續編寫無空格)
NATAA # NoRepack,不允許構象變化。
NATRO # Repack當前氨基酸類型,只允許構象變化。
PROPERTY <property> # 只允許設計為有以下性質的氨基酸
5.4 額外Rotamer採樣控制(Extra Rotamer Commands):
Rosetta Pack採樣Rotamer時是離散的,默認只會採納每個格點的中心構象。我們可以通過Extra Rotamer Commands來增加Pack採樣。會使得我們預測的側鏈(包埋的)更加準確。
一般只要在Resfile中HEADER中使用Extra Rotamer Commands欄位即可,目前針對不同的氨基酸有三種編寫方式:
EX LEVEL
含義為,額外採集二面角的Rotamer(1-4)。如果level預設,默認為+/-1標準誤範圍。level等級可分為7個級別, 級別越大考慮的構象越多,計算耗時越大。一般來說level = 1、2 已經足夠。即EX 1
、EX 2
級別具體的含義:
0 ...... no extra chi angles
1 ...... sample at 1 standard deviation
2 ...... sample at 1/2 standard deviation
3 ...... sample at two full standard deviations
4 ...... sample at two 1/2 standard deviations
5 ...... sample at four 1/2 standard deviations
6 ...... sample at three 1/3 standard deviations
7 ...... sample at six 1/4 standard deviations
EX ARO LEVEL
ARO欄位代表,增加Rotamer採集時,僅對非芳香環氨基酸(FHYW)生效。ARO欄位僅對chi-id=1、2生效。設置為3、4時直接報錯。
EX_CUTOFF (default=18)
Rosetta默認不會對處於表面的氨基酸進行額外Rotamer採集,除非用戶顯式地設置(EX_CUTOFF >=1-3等)。默認每個氨基酸計算10埃範圍內殘基數量,當數量大於設定的時,認為是"包埋"的氨基酸,進行額外的Rotamer採樣。
一些額外Rotamer採樣控制例子:
10 B EX 1 EX 2 # 對chi1,chi2二面角進行level1增加採樣。
8 B EX ARO 2 # 對chi2二面角進行level1增加採樣。
7 B EX ARO 3 # 報錯,ARO欄位僅對chi-id=1,2起效。
6 B EX 1 LEVEL 7 # chi1,level7採樣。
13 B EX 1 EX ARO 1 LEVEL 4 # 非芳香氨基酸chi1,level4採樣,其餘類型氨基酸chi1,level1採樣。
推薦閱讀: