Gromacs模拟一:配体-双链蛋白质复合物体系准备

1、蛋白质的准备:

RCSB网站下载想要的蛋白晶体(教程里是3htb),用notepad等编辑器或是分子可视化软件除去里面的非蛋白分子或离子。

这里采用的是一个经过分子对接后的蛋白质pdb和配体小分子的pdb。

教程里提到的配体是2-丙基苯酚(JZ4),是一个非肽类分子,同时存在于3htb蛋白里。可以用notepad给他抽出为一个单独的pdb。如果是一个短肽类分子,可以利用gromacs自带的蛋白力场为其生成力场参数(应该可以)。

将蛋白质pdb进行处理,生成top文件和gro坐标文件,命令运行后弹出的力场选项中选择第1个CHARMM36力场:

gmx pdb2gmx -f 3HTB_clean.pdb -o 3HTB_processed.gro -ter

之后,选择TIP3P模型作为水分子,选择NH3+和COO-作为蛋白链的末端原子。

2、将配体分子转为需要的mol2格式:

我还是用discovery studio进行加H(添加力场)和输出为mol2文件。

下载相关的charmm36力场charmm36-jul2022.ff.tgz和一个python脚本cenff_charmm2gmx.py,根据实际环境。下载链接http://mackerell.umaryland.edu/charmm_ff.shtml#gromacs

 将下载的tgz文件解压到存放蛋白和配体pdb文件的工作目录下,成为一个子目录。

3、为配体mol2文件生成拓扑文件:

CGenFF 服务器注册账号,然后使用这个网站完成拓扑数据的生成,但是我注册不了(填好注册信息,点击注册,卡,信息清空..)

下载Sob老师提供的Sobtop程序可以gromacs适合的拓扑文件,同时这个程序非常方便,下载后打开里面的exe文件就能运行(大佬不愧是大佬)。

下载界面的下方有11个例子参考,我根据例子2完成对小分子拓扑文件的生成。

4、建立复合物的gro文件:

用protein.gro拷贝成一个新文件,修改名为complex.gro。将ligand.gro里的原子坐标放到complex里,再在盒子数据上方空一行:

这里推荐使用notepad3进行编辑,win10自带的笔记本确实不行,不能看清楚数据之间的空格情况,容易报错。

这里不用留空行,留了会报错。
主要的问题应该还是空格没有处理好。

 蛋白有4892个原子,配体是33个原子,所以在complex.gro的第2行(表示原子数)修改为4825

配体里的原子数从1又重新排序了,这个应该不伤大雅。

5、建立复合物的拓扑文件:

同目录下有个topol,是一个包含蛋白质拓扑信息的文件(在使用pdb2gmx时生成)。这个蛋白是一个双链蛋白,因为活性口袋在两个蛋白双螺旋之间。同目录下还有两个分开的独立链的top文件。

在topol里,用#include语句导入蛋白的top信息,如果蛋白是单链的话,数据会直接导入到topol中。根据前面导入力场,导入蛋白链拓扑的命令的格式,插入导入配体拓扑的命令:

6、规避报错,关于[atomtypes]:

利用Sob老师生成的小分子itp文件中,有[atomtypes]这个部分,如果不处理,会报错。确实在官方manual里的top文件模板中,不会出现[atomtypes]这一项。

在manual里,top文件的格式如下,是没有[atomtypes]这个部分的。

;
; Example topology file
;
[ defaults ]
; nbfunc        comb-rule       gen-pairs       fudgeLJ fudgeQQ
  1             1               no              1.0     1.0

; The force field files to be included
#include "rt41c5.itp"

[ moleculetype ]
; name  nrexcl
Urea         3

[ atoms ]
;   nr    type   resnr  residu    atom    cgnr  charge
     1       C       1    UREA      C1       1   0.683
     2       O       1    UREA      O2       1  -0.683
     3      NT       1    UREA      N3       2  -0.622


[ bonds ]
;  ai    aj funct           c0           c1
    3     4     1 1.000000e-01 3.744680e+05
    3     5     1 1.000000e-01 3.744680e+05
    6     7     1 1.000000e-01 3.744680e+05


[ pairs ]
;  ai    aj funct           c0           c1
    2     4     1 0.000000e+00 0.000000e+00
    2     5     1 0.000000e+00 0.000000e+00
    2     7     1 0.000000e+00 0.000000e+00


[ angles ]
;  ai    aj    ak funct           c0           c1
    1     3     4     1 1.200000e+02 2.928800e+02
    1     3     5     1 1.200000e+02 2.928800e+02
    4     3     5     1 1.200000e+02 3.347200e+02

[ dihedrals ]
;  ai    aj    ak    al funct           c0           c1           c2
    2     1     3     4     1 1.800000e+02 3.347200e+01 2.000000e+00
    6     1     3     4     1 1.800000e+02 3.347200e+01 2.000000e+00
    2     1     3     5     1 1.800000e+02 3.347200e+01 2.000000e+00


[ dihedrals ]
;  ai    aj    ak    al funct           c0           c1
    3     4     5     1     2 0.000000e+00 1.673600e+02


; Include SPC water topology
#include "spc.itp"

[ system ]
Urea in Water

[ molecules ]
Urea    1
SOL     1000

我的做法是将这些原子添加到力场文件中。

 如图,根据topol里提供的信息,找到gromacs提供的所用力场的文件地址:

(PS:这里图截错了,实际应该是#include "amber99sb-ildn.ff/forcefield.itp"

 打开forcefield.itp文件,会发现其还是用include命令调用了两个itp文件。 将这三个itp文件拷贝到我的工作目录(存放了protein.gro、ligand.gro、topol什么的文件夹)下的子文件夹ff里:

在ffnonbonded.itp文件里有原子类型信息(用笔记本打开查看),可以将配体itp里的atomtype的数据拷贝过去,最后保存。

之后,修改topol里调用forcefield.itp的命令,将其路径改为调用修改后的forcefield.itp文件存放的位置ff文件夹:

 到这里,提示拓扑文件里有[atomtypes]的fatal报错就会消失。

7、定义盒子大小和添加溶剂分子:

定义盒子: 

gmx editconf -f complex.gro -o newbox.gro -bt dodecahedron -d 1.0
#要查看每个参数是什么意识,可以用gmx editconf -h

添加溶剂水: 

gmx solvate -cp newbox.gro -cs spc216.gro -p topol.top -o solv.gro
#没有tip3p.gro
#用spc216的gro代替,不过拓扑信息还是用tip3p的水

我觉得不一定要用tip3p.gro,不会报错就不错了 。

8、规避报错,分子数量的报错:

这里添加了水到复合物的gro文件里,但是topol文件里的[melocules]还是没有更新的状态,所以有下面的报错:

这里提示了坐标文件中原子数和拓扑文件中的原子数不同。Fatal error: number of coordinates in coordinate file (solv.gro, 29510) does not match topology...-****博客

这篇博客中老师的方法给了我提醒。要在topol文件的molecules里添加水的分子数,这里多出75549个原子,就是25183个水分子(除以3)。

这里为什么是SOL, 其实,这个记录在每个分子的itp文件的[moleculetypes]部分里。如下图,在[dir]\gmx\share\gromacs\top\amber99sb-ildn.ff文件夹下的tip3p.itp文件里的[moleculetype]:

所以,这个水的分子名是SOL。 

9、添加离子:

写一个mdp文件,重命名为ions.mdp,真不懂为什么加离子就要用到这种文件。

#生成一个tpr文件:
gmx grompp -f ions.mdp -c solv.gro -p topol.top -o ions.tpr
#添加离子,生成一个新的gro文件:
gmx genion -s ions.tpr -o solv_ions.gro -p topol.top -pname NA -nname CL -neutral

# 运行最后一个添加离子的命令后,会出现如下的选项:
Reading file ions.tpr, VERSION 2022.2 (single precision)
......
Group     8 (      SideChain) has  3352 elements
Group     9 (    SideChain-H) has  1174 elements
Group    10 (    Prot-Masses) has  4892 elements
Group    11 (    non-Protein) has 75582 elements
Group    12 (          Other) has    33 elements
Group    13 (            MOL) has    33 elements
Group    14 (          Water) has 75549 elements
Group    15 (            SOL) has 75549 elements
Group    16 (      non-Water) has  4925 elements
Select a group:
#这里输入15

输入15,因为我的topol里的溶剂分子类型写的就是SOL,查看topol文件,添加的离子文件已经更新到文件里:

采用VMD或是Pymol检查配体和蛋白之间是否存在挨太近等不合理的状况:

 参考教程:

Protein-Ligand Complex

上一篇:简单讲讲spring事务的传播机制


下一篇:window下迁移SVN仓库到新的windows服务器-二、服务端迁移