參考1: Protein structure determination using metagenome sequence data

參考2: Learning Generative Models for Protein Fold Families 參考3: 2016.rosetta.ninja/day-

一、前言

目前依然有大約5200個蛋白質家族缺少結構信息。在2017年,David Baker實驗室成功利用宏基因組數據,對614個蛋白質家族進行三維建模,其中206個家族為膜蛋白,137個家族在PDB資料庫中未見有代表性的結構。

目前已有58個家族的晶體被解析,通過與實驗晶體比對,Rosetta+GREMLIN的+宏基因組數據的預測方法得到的結果整體精度還是相當的可觀!利用共進化信息可以快速地預測蛋白質家族的代表性結構特徵。

二、 計算原理

1 什麼是蛋白質的共進化信息?

在生物進化過程中,蛋白質三維結構中與功能相關的重要區域的相互作用對往往是保守的,但是其氨基酸的空間位置是可以位置交換的。通過對序列進行比對,我們可以找到這些重要的殘基對,並將這些信息利用到蛋白質3D建模中,對它們的距離進行限制。

2 共進化信息的使用門檻

共進化的信息可以來源於宏基因組的數據。但是使用共進化信息到建模過程中是需要一定條件的,如果某個家族內的序列數目小於一定的閾值,那麼從中提取的共進化信息可能是不夠準確的。研究表明,家族內基因的effective number大於64時,對蛋白質相互作用分析較為準確,並且模型質量(TMscore可達0.7)

三、使用GREMLIN、 abinitio relax以及Hybridize進行同源模型構建

注: 由於計算方法比較複雜,此處沒有整合宏基因組數據;詳細參考文獻原文。

1 使用GREMLIN生成共進化信息限制參數

預測的結構域最好在100個氨基酸左右,此處以賴氨酸tRNA合成酶C末端結構域為例:

>test
MQRQPVSSSRILSIGYDPDNRMLEIQFREQGTYQYLGVPERAHQNFMSAVSKGRFFDGVIKGKFLCRKIG

提交至GREMLIN伺服器

GREMLIN返回的結果:

首先看共進化信息的質量:

其中Nf值越大,模型可靠性越高。

根據共進化信息預測的蛋白質內部相互作用圖譜。

再往下看點擊

  • Generate restraints for ROSETTA Structure Modeling

點擊鏈接生成我們需要的限制文件,還可以選擇距離限制函數的類型。

需要生成CB兩種限制參數。

  • Cβ-Cβ 參數 sigmoidal+bounded(合併兩個文件即可),用於lowres階段;
  • Cβ-Cβ 參數 sigmoidal,用於hignres階段;

可以選擇兩種函數類型: 使用sigmoidal restraints的話,超過8埃範圍時,不會有梯度的懲罰,需要增加採樣數量,但是可以有效地減少假陽性的contacts。

注: 在CASP11中rosebtta,hignres階段也有生成MIN限制參數用於hignres階段。

2 生成用於預測的Fragment文件

可以參考本站文章自行生成需要的fragment文件: rosettastudy.cn/archive

或則直接提交robetta生成相應的fragment文件: robetta.bakerlab.org/fr

3 結構域預測

準備參數文件frag:

-abinitio::fastrelax
-score:weights ref2015_cart.wts
-relax::dualspace
-relax::minimize_bond_angles
-optimization::default_max_cycles 200
-abinitio::increase_cycles 10 # increase for larger proteins

-abinitio::rg_reweight 0.5 # radius of gyration; set to 0.0 for long extended proteins
-abinitio::rsd_wt_helix 0.5
-abinitio::rsd_wt_loop 0.5

#-in:file:native *.pdb # 計算rmsd,測試評分使用
-in:file:fasta *.fasta
-in:file:frag3 *.3mers # 輸入fragment文件
-in:file:frag9 *.9mers # 輸入fragment文件

# ss
-psipred_ss2 *.spider3_ss2 # 時候用spider3的ss2文件
-kill_hairpins *.spider3_ss2 # 避免hairpins結構從採樣過度,僅適用於all-beta、alpha-beta結構。全alpha結構不要使用。

-nstruct 10000 # 實際操作時,模型數目應大於10000,可以嘗試使用不同的fragment組合來生成大量的結構。

# contact constraints
-constraints:cst_weight 5.0
-constraints:cst_file *.CB.cst # 輸入限制參數文件
-constraints:cst_fa_weight 5.0
-constraints:cst_fa_file *.CB.cst # 輸入限制參數文件

運行AbinitioRelax:

可以嘗試多種不同組合的fragment長度,robetta常用的有以下組合:

  • 3+(5-12)+(4-9), 每個組合跑1000個model。

AbinitioRelax.mpi.linuxgccrelease @flags -in:file:fragA *.*mers -in:file:fragB *.*mers
# sigmoidal+bound(lowres) sigmoidal Cβ-Cβ(hignres)
AbinitioRelax.mpi.linuxgccrelease @flags
?
# sigmoidal Cβ-Cβ(lowres) sigmoidal Cβ-Cβ(hignres)
AbinitioRelax.mpi.linuxgccrelease @flags

也可以只是用3,9長度fragment,然後分別使用Cβ-Cβ bound限制類型與sigmoidal+bound(lowres)、sigmoidal分別生成10,000個model。運行完畢後,提取結果:

由於結果數目較多,把模型全部提取出來並不是一個好的選擇, 此處我們只輸出打分排名比較靠前的模型。

# 按照得分從高到低排列;此處以top500為例
grep ^SCORE default.out | awk {print $2,$NF} | sort -k1n | head -500

結果輸出,排名top500的模型:

-281.426 S_00000041_27
-279.748 S_00000052_22
-278.954 S_00000054_5
-278.501 S_00000052_49
-277.794 S_00000024_34
....

提取這些打分較好的模型:

# 提取結構:
extract_pdbs.default.linuxgccrelease
-in:file:silent default.out
-in::file::tags S_00000041_27 S_00000052_22 S_00000054_5 S_00000052_49 S_00000024_34 ......

4 模型優化

測試結果表明,對於分子量較大蛋白,可以使用Hybridize對不同結構域進行雜化處理,提升模型精度。也可以使用Hybridize利用多模板信息,獲取更好的模型。

以下簡單介紹一下Hybridize的使用方法:

4.1 創建雜化參數文件hyb.flags:

-frag_weight_aligned 0.1
-beta # this flag enables the latest rosetta score function
-in:file:fasta *.fasta
-in:file:native *.pdb # 對照,測試時使用
-parser:protocol hyb.xml # rosetta script (see below)
-relax:minimize_bond_angles
-relax:jump_move true
-relax::dualspace
-default_max_cycles 200
-relax:min_type lbfgs_armijo_nonmonotone
-hybridize:stage1_probability 1.0
-hybridize:stage1_4_cycles 400
-nstruct 1000

4.2 創建雜化腳本hyb.xml:

<ROSETTASCRIPTS>
<SCOREFXNS>
<stage1 weights="stage1.wts" symmetric=0>
<Reweight scoretype=atom_pair_constraint weight=3/>
</stage1>
<stage2 weights="stage2.wts" symmetric=0>
<Reweight scoretype=atom_pair_constraint weight=3/>
</stage2>
<fullatom weights="beta_cart.wts" symmetric=0>
<Reweight scoretype=atom_pair_constraint weight=3/>
</fullatom>
</SCOREFXNS>
<MOVERS>
<Hybridize name=hybridize stage1_scorefxn=stage1 stage2_scorefxn=stage2 fa_cst_file="*.cst" fa_scorefxn=fullatom batch=1 stage1_increase_cycles=2.0 stage2_increase_cycles=1.0 linmin_only=0 skip_long_min=1> # 設置參數文件,並設置fragment、模板信息;
<Fragments 3mers="*.3mers" 9mers="*.9mers"/>
<Template pdb="../S_00000041_27.pdb" weight="1" cst_file="../1475969195_cb.cst"/>
<Template pdb="../S_00000052_22.pdb" weight="1" cst_file="../1475969195_cb.cst"/>
<Template pdb="../S_00000054_5.pdb" weight="1" cst_file="../1475969195_cb.cst"/>
<Template pdb="../S_00000052_49.pdb" weight="1" cst_file="../1475969195_cb.cst"/>
<Template pdb="../S_00000024_34.pdb" weight="1" cst_file="../1475969195_cb.cst"/>
</Hybridize>
</MOVERS>
<PROTOCOLS>
<Add mover=hybridize/>
</PROTOCOLS>
<OUTPUT scorefxn=fullatom/>
</ROSETTASCRIPTS>

4.3 創建雜化的權重文件:

stage1.wts

env 1.0
pair 1.0
cbeta 1.0
cenpack 1.0
hs_pair 2.0
ss_pair 2.0
rsigma 2.0
sheet 2.0
vdw 0.20
rg 0.0
rama 0.3
linear_chainbreak 2.0
atom_pair_constraint 1.0

stage1.wts

hbond_sr_bb 2.0
hbond_lr_bb 2.0
rama 0.2
omega 0.2
rg 0.0
cen_env_smooth 2.0
cen_pair_smooth 1.0
cbeta_smooth 1.0
cenpack_smooth 1.0
vdw 1.0
atom_pair_constraint 1.0
cart_bonded 0.05

4.4 運行雜化計算

rosetta_scripts.default.linuxgccrelease @hyb.flags

推薦閱讀:

相關文章