必不可少|(zhì)Rosetta的程序的基本步驟詳細(xì)教程
使用Commandline界面來運行Rosetta程序是Rosetta應(yīng)用的最主要的形式,使用Commandline可以非常方便地在linux或超算集群系統(tǒng)上進(jìn)行Rosetta的運算。本文我們將進(jìn)一步帶領(lǐng)大家學(xué)習(xí)如何去運行Rosetta以及需要準(zhǔn)備些什么。
一、我如何在Linux系統(tǒng)下找到Rosetta應(yīng)用?
在Rosetta整個框架內(nèi),每個經(jīng)過測試的Protocol都會被整合成獨立的應(yīng)用(app),這些app跟我們手機上的應(yīng)用是一樣的,需要哪個就用哪個,每個app都具有獨立的功能。大部分的app的二進(jìn)制文件位于$ROSETTA/main/source/bin/這個文件夾里面。值得注意的是,app的命名與編譯環(huán)境和方式有關(guān)系,app的通用命名規(guī)則是app.[mpi].system+complier+version的形式。
比如我在Mac系統(tǒng)下使用clang來編譯,使用的并行版本。那么app的命名就是relax.mpi.macosclangrelease. relax是app的名字,mpi代表并行版本,macos是系統(tǒng)名,clang是編譯Rosetta時使用的編譯器類型,release代表穩(wěn)定發(fā)行版本的意思。如此類推,如果我在CentOS7下使用gcc編譯,使用的串行版本,那么,app的命名就是relax.linuxgccrelease。
如果你是根據(jù)我的安裝教程來配置Rosetta的話,可以通過以下命令來查詢app的具體名稱:ls$ROSETTA/main/source/bin/運行結(jié)果:

所列出的就是你所有的Rosetta app名稱。
二、準(zhǔn)備輸入文件
Rosetta的輸入文件形式比較多樣,一般以PDB文件作為輸入。除此以外,不同的app要求的輸入文件可能并不一樣。比如在結(jié)構(gòu)預(yù)測時需要定義Fragment文件、膜蛋白設(shè)計中需要使用Span文件,在Loop建模中需要定義Loop文件等。更多的輸入文件類型詳見: List of file types in Rosetta
Rosetta以”什么都能讀“著稱,就算你給一個缺失側(cè)鏈或含有底物小分子復(fù)合物的PDB結(jié)構(gòu),Rosetta都能自動進(jìn)行預(yù)處理,比如出去水分子,刪除不識別的殘基等。但一般在讀入晶體PDB數(shù)據(jù)到Rosetta時,盡量需要先帶著約束進(jìn)行一下Relax處理。
此處可以使用Rosetta自帶的腳本進(jìn)行PDB文件的預(yù)處理:
當(dāng)結(jié)構(gòu)中沒有底物小分子時:python $ROSETTA/tools/protein_tools/scripts/clean_pdb.py <pdb> <chain id>
當(dāng)處理帶小分子的結(jié)構(gòu)時:python clean_pdb_keep_ligand.py <pdb> -ignorechain
三、執(zhí)行Rosetta app程序
(此處以Relax程序作為實例)
Rosetta不是exe應(yīng)用,并不能像在windows系統(tǒng)下,雙擊后打開界面,然后用鼠標(biāo)操作,我們所有操作必須通過命令行來執(zhí)行。一般來說,運行任何Rosetta應(yīng)用的方法都是由Command、options、@flags以及SourceData四個部分組成。
此處總結(jié)Rosetta使用的萬金油公式:
# running in shell
Command options @flags
注意: options可以統(tǒng)一放到flags文件中。
參數(shù)說明:
Command指的是我們運行的具體應(yīng)用名(根據(jù)Q5中app的命名規(guī)則來查找);
options指的是每個app中支持的選項命令,每個不同的app都有通用或則專屬的輸入選項;
flag指的是記錄著多個options的文件名稱,我們一般需要使用@符號來讓應(yīng)用讀取這個文件。用flags文件來存儲options會使得輸入命令更加簡潔,也便于后面進(jìn)行參數(shù)的修改等。
SourceData指的是Rosetta app必要的輸入文件,比如準(zhǔn)備的Fasta或是PDB文件。
對于options或flag的編寫,我們一定要去閱讀開發(fā)者給出的輸入選項解釋,我們可以很方便地在Rosetta APP文檔或則在Options_list頁面中找到對應(yīng)的解釋,以及默認(rèn)設(shè)置的參數(shù)值。
以relax的app文檔為例:
https://www.rosettacommons.org/docs/latest/application_documentation/structure_prediction/relax

注意只有在弄清楚選項的作用時,我們才需要將其寫入flag文件中,否則其余參數(shù)均按默認(rèn)設(shè)置,胡亂設(shè)置參數(shù),可能會對結(jié)果造成很大影響。
舉個例子具體說明: 我現(xiàn)在使用Relax app對某個晶體結(jié)構(gòu)進(jìn)行帶約束結(jié)構(gòu)優(yōu)化和能量最小化。首先需要打開終端或則命令行工具,并進(jìn)入教程(或自己準(zhǔn)備好輸入文件)所在文件夾:
# 首先進(jìn)入工作目錄,以Rosetta demo教程為例:
cd $ROSETTA/main/demos/tutorials/Relax_Tutorial
然后在終端或命令行中輸入以下命令:
# 運行relax app
relax.mpi.macosclangrelease -s 1ubq.pdb -relax:constrain_relax_to_start_coords -relax:coord_constrain_sidechains -relax:ramp_constraints false -ex1
-ex2 -use_input_sc -flip_HNQ -no_optH false @general_relax_flags
此處relax.mpi.macosclangrelease就是萬金油公式中的Command,-s是Command的一個option,?-s代表輸入的蛋白質(zhì)結(jié)構(gòu)文件選項,后面的1ubq.pdb就是pdb的文件(SourceData)名,添加這個選項就是告訴Rosetta Relax程序我的結(jié)構(gòu)文件名稱是什么。general_relax_flags是更多運行參數(shù)的記錄文件,通過**@符號告訴Rosetta Relax程序,我設(shè)置的所有參數(shù)都存儲在名為general_relax_flags的文件當(dāng)中,請自動調(diào)用這些參數(shù)來計算。(注: 當(dāng)然如果想更省事,就直接把-s 1ubq.pdb也放在general_relax_flags**中也行。)
其中,約束參數(shù)使用的命令是-relax:constrain_relax_to_start_coords, -relax:coord_constrain_sidechains以及-relax:ramp_constraints false。含義是添加約束維持結(jié)構(gòu)的初始坐標(biāo)以及側(cè)鏈重原子坐標(biāo),并且在Relax過程中不放松約束權(quán)重。一般而言這樣就足夠應(yīng)對大部分的初始結(jié)構(gòu)優(yōu)化的需求了。
按下回車鍵,就能發(fā)現(xiàn)Rosetta relax app正在運行中, 所有輸出在屏幕上的是Rosetta Tracer的記錄,也就是Rosetta程序運行的日志,可以通過shell的重定向功能來輸出到特定的文件(體積比較大)。

如果需要進(jìn)一步控制realx app的行為,我們就需要修改general_relax_flags文件中的參數(shù)選項數(shù)值,此處做一些簡單的介紹:
nstruct?代表進(jìn)行幾次relax計算
relax:default_repeats?代表relax過程中,算法進(jìn)行多少次退火模擬
out:path:pdb?代表在哪個文件夾中輸出結(jié)果文件(pdb格式)
out:path:score?代表在哪個文件夾中輸出打分結(jié)果文件
# 以Demo為general_relax_flags文件例,其中包括以下內(nèi)容:
-nstruct 2
-relax:default_repeats 5
-out:path:pdb ./tutorial_output
-out:path:score ./expected_output
(其實這些細(xì)節(jié)可以先不了解)
四、分析和利用Rosetta Relax輸出的結(jié)果
Rosetta Relax輸出的結(jié)果為PDB結(jié)構(gòu)文件以及Rosetta的打分文件,在實際使用過程中,一般會對輸出的結(jié)構(gòu)進(jìn)行排名優(yōu)選結(jié)構(gòu)更加合理或則能量更低的蛋白質(zhì)構(gòu)象作為后續(xù)的輸入。
先打開打分結(jié)構(gòu)文件score.se:

其中每一列代表一種Rosetta的打分項,比如第一列是蛋白質(zhì)的總能,可以根據(jù)此進(jìn)行排名(不同的應(yīng)用篩選方法可能會不一致,根據(jù)實際而定)。其余比如fa_atr代表范德華力總和,fa_elec代表靜電相互作用能量的總和等。具體打分項含義可查看Energy Terms In Rosetta
同時這些打分不僅記錄在打分文件中,PDB文件中也是被記錄了打分的細(xì)節(jié),我們可以使用文編編輯器打開輸出的PDB文件1ubq_0001.pdb,1ubq_0002.pdb查看每一項的細(xì)節(jié)也是可以的。

Rosetta的結(jié)果分析是一個非常復(fù)雜的話題,這關(guān)乎到你所采用的計算方法、打分函數(shù)以及人類直覺。原則上我們應(yīng)該先首先參考原文獻(xiàn)作者對結(jié)果的分析方法,因為沒有人比開發(fā)者更懂這個程序以及參數(shù)的優(yōu)化。
其次,Rosetta大多采用的是蒙卡退火和能量最小化的思路來尋找局部能量極小值,因此我們應(yīng)該提供足夠的計算資源來保證采樣充分,不可以對小規(guī)模的采樣結(jié)果就輕易下結(jié)論,甚至我們需要對結(jié)果進(jìn)一步的進(jìn)行聚類分析、結(jié)構(gòu)微調(diào),并從中提取有價值的信息。
再次,我們應(yīng)該謹(jǐn)慎地對待Rosetta的打分輸出結(jié)果,Rosetta的打分并不等于實際的能量值,并且很有可能存在"假陽性"值,我們需要仔細(xì)對模型、計算參數(shù)進(jìn)行檢查,多選幾個模型總是好的。
最后,在實驗上盡可能多的驗證我們所作出的預(yù)測結(jié)果。
來源:https://zhuanlan.zhihu.com/p/262178791
