利用Rosetta进行蛋白质柔性对接

 

1. 基本原理与流程

以Local Docking为例,Rosetta将初始结构中配体与受体两者拉开一定距离后,将配体随机旋转与平移特定角度/距离后再逐步靠近受体形成复合物,并评价结合的稳定性。Rosetta实现Local Docking具有较高的精度,但很大程度上依赖于提供的初始结构,一般要求受配体的结合位点方向相对。并保持距离在10 Å 以内。

考虑到结合过程中受配体会发生一定的柔性变化,在对接之前,分别对受配体进行relax以生成多种构象(ensemble),并以此进行对接,从而反映对接过程中的构象可变性。一般情况下,我们仅对侧链进行relax而保持骨架结构基本不变。

因此,Rosetta中进行蛋白-蛋白柔性对接的基本流程为:

  1. 输入结构准备:受体PDB文件(R.PDB)、配体PDB文件(L.PDB)、初猜复合体结构(complex.PDB
  2. relax分别生成受体、配体的ensemble
  3. 进行Local Docking
  4. 分析结果,寻找最优结构

Rosetta子程序使用命令行调用时,为了方便,可以将输入的参数汇总在一个flag文件中输入

本文的例程中包括:

其中:

 

所调用的Rosetta子程序一般位于Rosetta安装目录下的:source/bin/。为了方便,这里在~/.bashrc中加入环境变量:

 

2. 输入结构准备

需要准备三个初始结构文件:

同时需要注意:

3. Relax生成不同构象

3.1 参数文件准备

本例中使用的参数文件为flag/relax_flag_ChainLflag/relax_flag_ChainR,分别用于配体、受体的relax运行

flag/relax_flag_ChainL为例,文件内容如下:

其中关键参数:

3.2 运行relax

进行relax的子程序名称为relax.xxx.xxx,如本例中为$RosettaHOME/relax.static.linuxgccrelease。调用时,使用@标签传入flag文件

这里使用自动化脚本运行两者的relax,存放于sh/relax.sh

运行后生成了不同结构的评分(位于./relax/score_output),不同relax后的PDB结构(./relax/PDB_output),以及ensemble.list文件,包含了每条链下每个relax输出结果的绝对路径。

4. 使用不同构象集进行Docking

4.1 参数文件准备

用于Local Docking的参数文件为flag/docking_prepack_flagflag/docking_prepack_flag,分别为用于预处理(打包ensemble文件)和运行Docking

其中flag/docking_flag如下:

其中关键参数:

需要注意,-partner指定的链的顺序必须和complex.PDB文件中链出现的顺序一致,且与ensemble参数的声明顺序一致,如:

complex.PDB中链出现顺序为B,C,D,A,其中B,C属于配体,则在L.PDB中出现的顺序也应为B,C;D,A属于受体,则在R.PDB中出现的顺序也应为D,A;由于BC先于DA出现,则应声明-partner BC_DA;且-ensemble1应对应于先出现的BC的L.PDB-ensemble2对应于后出现的DA的R.PDB

4.2 运行Docking

Prepacking和Local Docking所使用的子程序分别为docking_prepack_protocol.xxx.xxxdocking_protocol.xxx.xxx,如本例中分别为$RosettaHOME/docking_prepack_protocol.static.linuxgccrelease$RosettaHOME/docking_protocol.static.linuxgccrelease

批量运行的脚本sh/dock.sh如下

prepacking后,原始的ensemble目录下会生成.ppk文件;运行Docking后,其结果可在工作目录下的./docking/output中找到,包括生成的对接后PDB结构文件和评分文件score_ensemble_docking.sc

5. 结果分析

一般而言,总评分越小(一般为负值),对接效果越好。选取评分最小的多个PDB文件,查看其结构合理性。对于对接后的结构,可以进一步采用能量最小化等方法进行局部优化,排除不合理的原子接触。

示例脚本sh/rank.sh 提供了一个用于按照SCORE排序,并将前10个结果单独复制至docking/output/top

 

附:脚本和参数文件

RosettaDocking_demo