蛋白蛋白对接一直是分子模拟中非常重要同时非常难解决的话题,相较于小分子蛋白之间的联系,蛋白蛋白对接如今更加不成熟,在蛋白蛋白对接之前,最好能够搜集更多的文献进行支持,让模拟的结果不空洞,才能保证对接的准确性。

蛋白蛋白对接如今比较著名的软件有Hex Protein DockingZDockrDock,以及Rosetta等等。其中Hex Protein Docking虽算法比较复杂,但没有评分功能(PS:可能是我没有找到···),ZDock一般作为前期的初对接,rDock为ZDock的升级算法,一般将ZDock对接后的前几个得分构象使用rDock进行进一步对接。但是这个三个算法的准确度本人均保持怀疑态度。
今天想和大家分享的为Rosetta的蛋白蛋白对接模块,我对Baker课题组还是有非常盲目的崇拜的^_^
本教程翻译不完全翻译自官方蛋白蛋白对接文档

概括

Rosetta可以从两个未结合蛋白开始来预测结合结构。Rosetta蛋白蛋白对接教程主要内容为:

  • 怎样准备对接结构
  • 怎样进行两个蛋白的局部对接
  • 怎样优化已经对接的结构
  • 怎样对接结合界面未知的两个蛋白质
  • 怎样对接柔性蛋白
  • 怎样将柔性肽对接到蛋白
Rosetta中进行对接

Rosetta中进行对接包含两个步骤。第一步,进行积极(aggresive)采样,方法使用的质心模型。第二步采用全原子模型进行小范围的优化。(PS:质心模型相较于全原子模型保留蛋白主链原子,而侧链原子采用不同大小的单一赝原子表示,如图1)

它会在内部使用跳跃连接两个链的中心,沿着跳跃两条链被拉在了一起(滑动联系 slide into contact)。算法为折叠树算法,是一种优化移动的方法,Rosetta在能量最小化中也有使用。这里不作探讨,也不会影响使用。算法还是使用Baker课题组特别喜欢的Monte Carlo随机算法进行计算如下内容:

  • 平移(x,y,z方向)
  • 旋转(围绕x,y,z轴)
    默认情况下对接工具采用的为一个刚性骨架,仅能够旋转,平移和侧链packing(我理解为侧链优化,见侧链优化一章),详细的描述可以查看Rosetta对接一章
演示导航

演示可以在安装文件的$ROSETTA3/demos/tutorials/Protein-Protein-Docking中查看,ROSETTA3为安装路径更目录,具体可查看Rosetta安装一章。

对接前结构准备

Rosetta给的例子为Colicin-D与其抑制剂IMM之间的对接。需要提供两个精炼的输入文件COL_D.pdbIMM_D.pdb文件,以及1v74.pdb文件在input_files文件夹下
准备的方法详细可以查看输入和输出一章的准备结构一节,为了连续性这里做简单介绍。
若模型为同源建模等方法进行构建,可以首先进行一个结构的relax,当然也可以用其他软件进行制作。详细的relax方法我们后面详细分享。在此略过,若您的模型为同源建模等进行的,模型评价效果不理想可以采用GROMACS等软件进行能量最小化的工作。
若模型质量佳或为解析结构,结构准备更多的是为了将输入结构转化为Rosetta的标准规范,官网给了一个简单的例子:path_to_Rosetta_directory>/demos/tutorials/input_and_output/flag_input_relax
当然结构的准备是非常玄学的东西,最好能够系统的学习同时加上大量的文献阅读增加准确性。

1
2
3
4
5
6
7
8
9
10
11
-nstruct 2
-relax:constrain_relax_to_start_coords
-relax:ramp_constraints false
-ex1
-ex2
-use_input_sc
-flip_HNQ
-no_optH false

使用更多的nstruct可以提高模型结果的质量,如nstruct 10将会获得10个模型。constrain_relax_to_start_coords将会约束重原子,从而是的骨架较初始不会移动太多。ramp_constraints false表示不进行倾斜约束(PS:官方文档上有说明进行整体约束该选项需要设置为false)flip_HNQ在氢键原子位置优化期间考虑翻转HIS,ASN,GLN。no_optH表示是否在PDB加载期间进行氢原子位置优化.一般后面5个设置为基本设置,详见准备结构一章
然后进行运行:

1
$ROSETTA3/bin/relax.default.linuxgccrelease -in:file:s input_files/from_rcsb/1qys.pdb @flag_input_relax

 

当然可以附加ignore_unrecognized_res在设置中从而删除PDB中的水和配体(当然也可以手动删除)

局部对接

Rosetta在局部对接中有更加精确的结果,顾名思义,局部对接就是假设已知两个蛋白的结合(口袋)区域。首先我们需要将两个蛋白结合口袋大致的对着对方约10埃的位置,如下图:

我们进行如下的设置:

1
2
-partners A_B
-dock_pert 3 8

以上这两个设置分别表示i):链B对接进入链A; ii)在开始单独的模拟之前随机的将配体(链B)进行一个3埃的平移和8度的旋转。
若为对接的多链蛋白(如一个蛋白为链A和B,一个为链L和H)
那么设置为-partners LH_AB即可。若我们同时想和1v74.pdb进行计算比较。
完整的参数为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-in:file:s input_files/col_complex.pdb
-in:file:native input_files/1v74.pdb
-unboundrot input_files/col_complex.pdb
-nstruct 1
-partners A_B
-dock_pert 3 8
-ex1
-ex2aro
-out:path:all output_files
-out:suffix _local_dock

然后我们进行对接:

1
$ROSETTA3/main/source/bin/docking_protocol.linuxgccrelease @flag_local_docking

大约1min即可完成,请确保-nstruct 500或者更大的设置

局部优化对接结构

一些小的冲突可能导致蛋白对接的得分非常高(越小越好),在Relax之前我们需要对界面处进行一定的修复。因为已经对接完成,我们需要避免大的蛋白移动。所以我们跳过之前的第一步(质心步骤)而仅进行第二部分计算。我们替换局部对接的flags:

1
2
-docking_local_refine
-use_input_sc

我们用此来完善1v74.pdb
完整的设置为:

1
2
3
4
5
6
7
8
9
10
11
12
13
-in:file:s input_files/1v74.pdb
-nstruct 1
-docking_local_refine
-use_input_sc
-ex1
-ex2aro
-out:file:fullatom
-out:path:all output_files
-out:suffix _local_refine

对接命令

1
$ROSETTA3/main/source/bin/docking_protocol.linuxgccrelease @flag_local_refine

然后可以对结构进行relax进一步优化,也可以用其他软件进行能量最小化,在此不进行进一步探讨了。

全局对接

官方教程称之为Global Docking,有语言基础的对Global词的翻译应该非常熟悉,一般翻译为全局的意思。如果没有蛋白结合位点的信息的话只能使用全局对接,全局对接假设蛋白质为球型,而更小的蛋白质配体围绕蛋白质受体寻转,其原理个人理解与rDock双球对接类似。因为其随机起始位置,故输入的结构位置显得不是那么重要。

全局对接对小复合物相对较好(残基数小于450)
在全局对接中我们添加以下设置

1
2
3
-spin
-randomize1
-randomize2

整体的设置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-in:file:s input_files/col_complex.pdb
-in:file:native input_files/1v74.pdb
-unboundrot input_files/col_complex.pdb
-nstruct 1
-partners A_B
-dock_pert 3 8
-spin
-randomize1
-randomize2
-ex1
-ex2aro
-out:path:all output_files
-out:suffix _global_dock

我们同样采用的之前的复合物,然后使用命令进行对接:

1
$ROSETTA3/main/source/bin/docking_protocol.linuxgccrelease @flag_global_docking

采样样本量更加大,故为了得到精确的结果,需要大量的运行,一般高达10,000-100,000次

另一种方法为使用ClusPro进行预对接确定结合口袋然后再运行局部对接。

柔性蛋白对接

正如之前所提到的,Rosetta假设蛋白骨架为柔性的进行对接。其假设蛋白蛋白结合过程前后构象发生了较大的变化,我们对蛋白构象簇(ensembles )进行对接。而不是像之前一般一个配体构象和一个受体构象。在蛋白对接第一步(质心步骤)我们在构象簇中不断的变化着来进行对接。这样可以相当于固定骨架与多个骨架之前进行采样。
这个簇可以使用无约束的relax进行完成。对于这个教程我们使用小簇- 3 COL_D 和 3 IMM_D构象。在设置其为输入文件之前要确认链名和残基数量每个簇中都一样。
簇的设置类似如下:

1
2
3
input_files/COL_D_ensemble/COL_D_0001.pdb
input_files/COL_D_ensemble/COL_D_0002.pdb
input_files/COL_D_ensemble/COL_D_0003.pdb

IMM_D_ensembel情况类似,然后将下列内容添加至之前的局部对接中

1
2
-ensemble1 COL_D_ensemblelist
-ensemble2 IMM_D_ensemblelist

-ensemble必须包含蛋白质PDB列表。即使有一个蛋白只有一个构象,两个ensemble也都要申明。
具体设置为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-in:file:s input_files/col_complex.pdb
-in:file:native input_files/1v74.pdb
-unboundrot input_files/col_complex.pdb
-nstruct 1
-partners A_B
-dock_pert 3 8
-ensemble1 COL_D_ensemblelist
-ensemble2 IMM_D_ensemblelist
-ex1
-ex2aro
-out:path:all output_files
-out:suffix _ensemble_dock

在对接之前我们还要进行一步前处理(prepacking)。前处理可以消除由于构象异构体而产生的不同能量贡献,其设置与对接类似类似,仅仅删除-dock_pert设置.
其大约运行30s,将会得到prepacked PDBs文件,以及规范化的质心得分和全原子得分,如下:

1
2
3
4
5
6
7
8
9
input_files/COL_D_ensemble/COL_D_0001.pdb.ppk
input_files/COL_D_ensemble/COL_D_0002.pdb.ppk
input_files/COL_D_ensemble/COL_D_0003.pdb.ppk
0.77058
0
1.00377
-93.3588
-94.2715
-93.9065

注意的是如果你需要进行再次的前处理,需要删除COL_D_ensemblelistIMM_D_ensemblelist,否则可能会报错。
前处理后再进行对接命令

1
$ROSETTA3/main/source/bin/docking_protocol.linuxgccrelease @flag_ensemble_docking

官方文档建议使用较大的簇(25到100)个构象,-nstruc 5000或者更多。