问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://blog.csdn.net/Huang_8208_sibo/article/details/137083054

Gromacs是一款功能强大的分子动力学模拟软件,广泛应用于生物大分子体系的模拟研究。本文将详细介绍如何使用Gromacs准备一个蛋白质-配体复合物体系,包括蛋白质和配体的预处理、拓扑文件生成、溶剂化和离子添加等关键步骤。

1. 蛋白质的准备

首先需要从RCSB蛋白质数据库下载所需的蛋白晶体结构(例如3htb)。使用文本编辑器(如Notepad)或分子可视化软件去除结构中的非蛋白分子或离子。

这里采用的是一个经过分子对接后的蛋白质PDB文件和配体小分子的PDB文件。配体是2-丙基苯酚(JZ4),这是一个非肽类分子,同时存在于3htb蛋白中。可以使用Notepad将其提取为一个单独的PDB文件。如果是一个短肽类分子,可以利用Gromacs自带的蛋白力场为其生成力场参数。

接下来,使用以下命令对蛋白质PDB文件进行处理,生成top文件和gro坐标文件。在弹出的力场选项中选择第一个CHARMM36力场:

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

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

2. 配体分子的转换

使用Discovery Studio为配体分子加氢并添加力场,然后输出为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兼容的拓扑文件。下载界面的下方有11个例子参考,可以根据例子2完成对小分子拓扑文件的生成。

操作步骤如下:

## 打开sobtop.exe
sm.mol2  # 输入小分子的mol2路径
2//  # 生成gro文件
enter # 回车键在当前路径下生成gro
1// # 生成top文件
4// # 使用sobtop自带的力场数据,缺少的就靠猜
enter # 回车键在当前路径下生成top
enter # 回车键在当前路径下生成itp

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 3.0
# 要查看每个参数是什么意思,可以用gmx editconf -h
# 这里修改了d参数为3,原先是1,这个距离在我的体系里原子挨太近了,EM过程报错

添加溶剂水:

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...-CSDN博客

这篇博客中老师的方法给了我提醒。要在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是溶剂,这里会将水分子的位置替换为离子的位置。

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

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

参考教程:

Protein-Ligand Complex

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号