参考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

推荐阅读:

相关文章