自由度
如運動自由度是確定一個系統(tǒng)在空間中的位置所需要的最小坐標(biāo)數(shù)。例如火車車廂沿鐵軌的運動坞淮,只需從某一起點站沿鐵軌量出路程茴晋,就可完全確定車廂所在的位置,即其位置用一個量就可確定回窘,我們說火車車廂的運動有一個自由度诺擅;汽車能在地面上到處運動,自由程度比火車大些啡直,需要用兩個量(例如直角坐標(biāo)x,y)才能確定其位置烁涌,我們說汽車的運動有兩個自由度苍碟;飛機能在空中完全自由地運動,需要用三個量(例如直角坐標(biāo)x,y,z)才能確定其位置撮执,我們說飛機在空中的運動有三個自由度微峰。所謂自由度數(shù)就是確定物體在空間的位置所需獨立坐標(biāo)的數(shù)目。
內(nèi)坐標(biāo)
我們知道PDB中儲存每一個原子的空間位置都是以卡迪爾坐標(biāo)(x,y,z)來表示的抒钱,每一個原子都有三個自由度蜓肆,當(dāng)我們模擬蛋白質(zhì)的結(jié)構(gòu)時,需要進行大量的調(diào)整原子的坐標(biāo)谋币,計算量很龐大仗扬。為了提高效率,rosetta使用內(nèi)坐標(biāo)來表示蛋白的內(nèi)部結(jié)構(gòu)蕾额,內(nèi)坐標(biāo)有三個自由度組成:鍵長早芭,鍵角,二面角诅蝶。一般的常溫情況下退个,氨基酸的鍵長和鍵角的變化較小,因此可以作為常量來處理秤涩。蛋白質(zhì)的構(gòu)象的變化大都是由氨基酸原子間二面角的改變引起的帜乞,因此我們可以將內(nèi)坐標(biāo)的自由度較少到1.除此之外,對于某些原子(氫原子)筐眷,他們的扭轉(zhuǎn)角的自由度是受到周圍化學(xué)環(huán)境影響的,因為自由度可以從3降為0.
我們可以在以下的路徑的文件中找到每種氨基酸內(nèi)坐標(biāo)的參數(shù)习柠。
$ROSETTA/main/database/chemical/residue_type_sets/fa_standard/residue_types/l-caa
這個文件的參數(shù)可以這個查看:rosetta_basics/file_types/Residue Params file (rosettacommons.org)
FoldTree
FoldTree 記錄著每一個氨基酸和其他氨基酸的‘上下游’關(guān)系匀谣,就像一個標(biāo)簽器,當(dāng)我們選擇一個氨基酸時资溃,這個氨基酸的上有和下游序列的氨基酸就會自動唄貼上對應(yīng)的標(biāo)簽武翎,二這個標(biāo)簽的作用就是用于明確哪些原子的卡迪爾坐標(biāo)該如何進行換算。
FoldTree的格式
FoldTree的記錄格式 共分為4個字段:EDGE溶锭、Start宝恶、End、Define趴捅。
如果Define字段以-1結(jié)尾垫毙,代表這個EDGE區(qū)段所有的氨基酸均已共價鍵相連,并且FlodTree的順序按照start至end的順序進行延申拱绑。
# 這個EDGE區(qū)段代表一段多肽鏈综芥。
EDGE start end -1
如果Define字段以正整數(shù)結(jié)尾,代表這個是一個Jump點,在FoldTree中猎拨,第start號氨基酸和第end號氨基酸之間將建立虛擬鏈接膀藐,Jump點會直接改變不同多肽鏈之間的上下游的關(guān)系屠阻。
# jump EDGE的基本格式:
EDGE start end jump_number
FoldTree的杠桿效應(yīng)
此處以實例說明FoldTree是如何控制內(nèi)坐標(biāo)變化后卡迪爾坐標(biāo)的換算: 以5個氨基酸組成的短肽(序列為"KPALN")為例。
該短肽的FoldTree格式: 代表EDGE的范圍為1~5號氨基酸额各,上下游關(guān)系的順序為N->C端国觉。
EDGE 1 5 -1
如圖所示,當(dāng)我們改變了其中3號丙氨酸(A)的phi二面角后虾啦,發(fā)現(xiàn)只有處于FoldTree"下游"的氨基酸序列4號亮氨酸(L)蛉加,5號天冬酰胺(N)以及3號丙氨酸部分的的卡迪爾坐標(biāo)產(chǎn)生了變化。當(dāng)某個氨基酸的一個二面角發(fā)生變化時缸逃,約定俗成地只有會將這個氨基酸的"下游"序列進行卡迪爾坐標(biāo)的換算针饥,而這種換算所帶來的變化稱為FoldTree的杠桿效應(yīng)(the lever arm effect)。我們也可以在這里找到它的英文解釋需频。
值得注意的是: 除了丙氨酸自身的phi角度變化丁眼,其余氨基酸的內(nèi)坐標(biāo)沒有發(fā)生任何改變,但是ALN氨基酸的卡迪爾坐標(biāo)卻發(fā)生了移動昭殉。以一個自由度的改變苞七,表示了3N*atom_number個自由度的卡迪爾坐標(biāo)換算,這種計算效率是極高的挪丢。
FoldTree的順序性
在FoldTree種start和end字段是順序敏感的蹂风,包括N->C順序以及C->N順序。不同順序乾蓬,代表EDGE內(nèi)氨基酸所對應(yīng)的上下游關(guān)系不同
還是以上例短肽為例說明:兩種不同順序的FoldTree對杠桿效應(yīng)的影響惠啄。
FoldTree1:
EDGE 1 5 -1
當(dāng)短肽的FoldTree為FoldTree1時: 我們改變序號為3號丙氨酸氨基酸的phi二面角時, 1-2號氨基酸(KP)的坐標(biāo)不會發(fā)生改變,而3-5號氨基酸(ALN)發(fā)生杠桿效應(yīng)任内。
FoldTree2:
EDGE 5 1 -1
當(dāng)短肽的FoldTree為FoldTree2時: 我們改變3號丙氨基酸的phi二面角時撵渡,1-2號氨基酸(KP)發(fā)生杠桿效應(yīng),而3-5號氨基酸(ALN)的坐標(biāo)不變死嗦。
FoldTree 中的jump點
在FoldTree的概念中趋距,蛋白質(zhì)所有的原子都是‘相互連接’的,但是當(dāng)?shù)鞍踪|(zhì)由多條鏈組成是越除,多條鏈之間并不存在實際的共價連接节腐。此時就需要定義Jump點。Jump點可以看作是一種虛擬的共價連接摘盆。當(dāng)定義了Jump之后翼雀,Jumo前后可視為一個完整的FoldTree,在FoldTree中所有的原子上下游關(guān)系重置骡澈。
Jump案例一:
舉例:目前有鏈A和鏈B的同源二聚體(長度均為50個氨基酸)
EDGE 1 50 -1 EDGE 50 51 1 EDGE 51 100 -1
以圖的形式來表示該FoldTree: 存在兩條多肽鏈(兩個define為-1)锅纺,EDGE 1 50以及EDGE 50 51。這兩條多肽的50號與51號氨基酸之間以虛擬的Linker相連(Jump1)肋殴,F(xiàn)oldTree的順序為從N——>C端的順序囤锉。
當(dāng)我們改變A鏈中的最后一個氨基酸(50號)的psi二面角時坦弟,就會發(fā)現(xiàn)整個B鏈的卡迪爾坐標(biāo)也會發(fā)生相應(yīng)的變化(杠桿效應(yīng))。因為從FoldTree中得出EDGE 51-100的任何一個氨基酸均是EDGE 1-50的下游部分官地。
(實例如圖)A鏈C端與B鏈N端被虛擬的Jump1相連酿傍。
Jump案例二:
舉例:目前有鏈A和鏈B的同源二聚體(長度均為50個氨基酸),這個FoldTree是Rosetta默認生成的:
FOLD_TREE EDGE(Default) 1 50 -1 EDGE 1 51 1 EDGE 51 100 -1
以圖的形式來表示該FoldTree:
看似與第一個案例中的FoldTree十分相似(兩條鏈驱入,兩個define為-1)赤炒,區(qū)別僅僅在EDGE 1 51 1, Jump1虛擬點連接的是1號和51號氨基酸。是帶來了完全不同的杠桿效應(yīng)亏较。當(dāng)我們改變?nèi)我?-50號氨基酸的某個二面角時莺褒,會發(fā)現(xiàn)B鏈沒有因為A鏈的變化而收到任何影響。因為對于EDGE 1-50而言, EDGE 51-100就像處于平行宇宙一樣雪情,跟他沒有任何的上下游關(guān)系遵岩。此時FoldTree可以理解為表示兩條單獨的多肽鏈: 1 + (51-100) 以及 1-51兩個部分。
Docking中的FoldTree
FoldTree中的Jump對分子對接十分重要巡通,它直接決定了兩個剛體之間應(yīng)該如何進行選擇平移尘执。在Docking中我們可以使用setup_foldtree函數(shù)快速設(shè)定組分間的FoldTree,從而避免出錯宴凉。此處稍微講解下分子對接中FoldTree的設(shè)置的原理誊锭。
setup_foldtree函數(shù)本質(zhì)上就是將兩個對接分子的質(zhì)量中心建立Jump連接點。
舉例:以異源二聚體A(1-150號氨基酸)和B鏈(151-277號氨基酸)為例, A鏈和B鏈分子的質(zhì)量中心分別為127號氨基酸以及187號氨基酸弥锄,F(xiàn)oldTree在Docking中是如何設(shè)置的丧靡。
EDGE 1 127 -1 EDGE 127 150 -1 EDGE 127 187 1 EDGE 187 151 -1 EDGE 187 277 -1
以圖形表示:
A鏈被分為了兩個部分EDGE 1 127和EDGE 127 150.
B鏈也被分為了兩個部分EDGE 187 151和EDGE 187 277.
此時共存在3條"多肽鏈"關(guān)系:
- 1-127-127-150 (A鏈)
- 1-127-187-151
- 1-127-187-277
此時的無論我們?nèi)绾螌鏈(151-277)的氨基酸進行整體卡迪爾坐標(biāo)的轉(zhuǎn)換,均不會對A鏈(1-150)造成任何影響叉讥。因為對于B鏈來說窘行,A鏈永遠是它的上游部分。
PyRosetta自建FoldTree的方法
方法十分簡單图仓,無論是EDGE還是Jump都可以通過add_egde函數(shù)進行添加。
pose = pyrosetta.toolbox.pose_from_rcsb("1v74")
ft = FoldTree()
ft.add_edge(1, 107, -1)
ft.add_edge(107, 108, 1)
ft.add_edge(108, 194, -1)
pose.fold_tree(ft)
print(pose.fold_tree())
core.import_pose.import_pose: {0} File '1V74.clean.pdb' automatically determined to be of type PDB
core.conformation.Conformation: {0} [ WARNING ] missing heavyatom: OXT on residue LEU:CtermProteinFull 107
core.conformation.Conformation: {0} [ WARNING ] missing heavyatom: OXT on residue LEU:CtermProteinFull 194
FOLD_TREE EDGE 1 107 -1 EDGE 107 108 1 EDGE 108 194 -1
參考
Rosetta中FoldTree的概念 - 知乎 (zhihu.com)
這里我就是幾乎將 吳煒坤 大神的知乎寫成我能理解的東西
或者Rosetta 官網(wǎng) :Fold tree (rosettacommons.org)