计算化学公社

 找回密码 Forget password
 注册 Register
Views: 903|回复 Reply: 4
打印 Print 上一主题 Last thread 下一主题 Next thread

[GROMACS] Gromacs非标准氨基酸残基的蛋白MD建模:sobtop产生rtp文件

[复制链接 Copy URL]

47

帖子

2

威望

859

eV
积分
946

Level 4 (黑子)

本帖最后由 JohnCase 于 2025-12-18 16:38 编辑

此教程用pymol编辑分子,multiwfn计算resp电荷,用sobtop产生.rtp文件,以及手写用于加氢的.hdb文件,可以让gmx pdb2gmx直接生成(稍加修改即可使用的)topol.top文件。
此流程摸索了一天,然后在supernova的指导下半天通关,https://zhuanlan.zhihu.com/p/87402839
确实繁琐,但是走完此流程会加深对gromacs力场文件的格式的理解。

这里以绿荧光蛋白为例,PBDID 5exb,64号发光核残基5SQ在表达时由三个氨基酸缩合而成,前一个残基是61号,后一个是65号。


一、准备mol2文件
第一件要操作的事就是改原子名,加氢,改氢原子名
原子名对于gromacs识别肽键的键连顺序至关重要,否则gromacs不知道前一个氨基酸的C要连接本残基哪一个N
根据Amber力场的标准原子命名惯例,设涉及肽键的CNOH四个原子就是分别命名为‘C, N, H, O
我们点击选择(pymol左上角Residues选择模式改成Atoms)这个5SQ残基的N端,以及C端的CO,终端输入
label sele, name

发现他们的名不是标准命名,
终端输入(直接复制粘贴,敲击回车)
  1. select C_tmp, sele and element C
  2. alter C_tmp, name='C'
  3. select N_tmp, sele and element N
  4. alter N_tmp, name='N'
  5. select O_tmp, sele and element O
  6. alter O_tmp, name='O'
  7. label C_tmp or N_tmp or O_tmp, name
复制代码
此时显示修改成标准原子名了
save 5exb_monomer.pdb, all 保存修改原子名后的pdb文件
(顺便打开文本编辑器检查一下存下来的5exb_monomer.pdb中5SQ残基前后是否有TER,有的话删掉,确保5SQ是完整融入了一条链。)

同时,Residues模式选择整个5SQ残基,
save 5SQ.pdb, sele 保存修改原子名后的5SQ残基

在新窗口打开5SQ.pdb,点击builder,画甲氨基和乙酰基,对其封端加氢,

接下来依次点击圈出来的这几个修改相应的原子名,最后label all, name刷新原子名的显示。
这一步是为了避免麻烦,N端的H必须叫H,其它4H需要修改是因为pdb2gmx -ignh的时候加上的氢的原子名有规律限制。(详见hdb文件一节)
  1. alter sele, name=’H’
  2. alter sele, name=’HA1’
  3. alter sele, name=’HA2’
  4. alter sele, name=’HB1’
  5. alter sele, name=’HB2’
复制代码

检查原子名是否有冲突。没有问题的话保存这个残基
  1. save 5SQ_capped.mol2, all
  2. save 5SQ_capped.xyz, all
复制代码
xyz格式喂给xtb(计算hessian,xtbopt.xyz喂给RESP_ORCA_noopt做RESP电荷计算
mol2格式喂给sobtop产生rtp文件

用文本编辑器打开5SQ_capped.mol2(或者保存为pdb看着更顺眼,我这里额外save 5SQ_capped.pdb, all确认25个重原子的顺序和原始pdb文件的5SQ残基的原子名是一致的,
至于后加的H和封端基团暂时不管,后续在rtp文件中删除即可。



二、手写hdb文件

这里引用supernova的贴子, https://zhuanlan.zhihu.com/p/87402839
hdb文件其实就是加氢规则,用于描述在什么原子上加什么多少氢,以及定义氢原子名,这6种氢够用了

标准氨基酸的hdb文件可以参考
gromacs2023/share/gromacs/top/amber14sb_parmbsc1.ff/aminoacids.hdb
比如GLN残基的加氢规则
  1. GLN 5
  2. 1 1 H N -C CA
  3. 1 5 HA CA N CB C
  4. 2 6 HB CB CA CG
  5. 2 6 HG CG CB CD
  6. 2 3 HE2 NE2 CD CG
复制代码
其中第一行为残基名称和行数,接下来每行列出一类待添加氢的信息:
加氢数目,加氢方式,加氢名称,原子i,原子j,原子k,原子l
其中-C”表示前一个氨基酸的原子名为C的原子,也就是羧基C原子。

那么5SQNH
可以写成
1 1 H N -C CA1
不写成1 1 H N CO2 CA1是因为前CO2是后加的cap,要换成一个氨基酸的位置,我标记为灰色。并且注意是CA1而不是CA,因为这个非标准氨基酸根本没标准意义上的alpha 碳。
并且gromacs不通过CA的识别去搭建拓扑,而是识别肽键的CN原子名。
对于某个原子上加了多个氢,比如type6,亚甲基氢,因为要加两个H,命名规则是在指定的H原子名后面写12
比如2   6   HA  CA3 N3  C ,加上的氢名为HA1HA2

5SQ.hdb完整内容如下13表示13行
  1. 5SQ 13
  2. 1   1   H   N   -C  CA1        
  3. 1   5   H06 CA1 N   CB1 C1
  4. 2   6   HA  CA3 N3  C
  5. 2   6   HB  CB1 CA1 CG1
  6. 1   1   H21 C2H N2H CG1
  7. 1   1   H20 N1H CG1 C1H
  8. 1   1   H19 C1H N1H N2H
  9. 1   1   H01 CB2 CA2 CG2
  10. 1   1   H14 CD1 CG2 CE1
  11. 1   1   H16 CE1 CD1 CZ1  
  12. 1   2   H18  OH  CZ1 CE1  
  13. 1   1   H17 CE2 CZ1 CD2  
  14. 1   1   H15 CD2 CG2 CE2
复制代码

三、获得rtp文件
包括计算hessian矩阵(我这里图省事用的xtb)
xtb *xyz --ohess --gbsa h2o -P 6

RESP_ORCA_noopt脚本计算RESP电荷,但是要修改Multiwfn_noGUI SP部分的内容
  1. ### Calculate RESP charges
  2. echo Running Multiwfn_noGUI...
  3. Multiwfn_noGUI SP.molden  << EOF
  4. 7
  5. 18
  6. 6
  7. 1
  8. chgcons.txt
  9. 2
  10. y
  11. 0
  12. 0
  13. q
  14. EOF
  15. # ### Finalize
  16. # chgname=${1//$suffix/chg}
  17. # mv SP.chg $chgname
  18. # # rm -f SP.* SP_* Nval.txt
复制代码
  1. bash RESP_ORCA_noopt.sh xtbopt.xyz 0 1 gas
复制代码

其中chgcons.txt文件用于限制封端基团都是电荷为0,那么剩下的非标准残基的电荷也自然为0,其内容为两行原子序号,后面的0表示限制这些原子组的总电荷为0
  1. 2,3,25,26,27,28 0
  2. 1,6,7,8,9,23 0
复制代码
原子序号在pymol里面看就行,label all, id,
或者写个python脚本打印选中的原子,比如名为id.py文件
  1. from pymol import cmd
  2. def printid(selection):
  3.     """Add hydrogen to selected sp2 carbon atoms with two bonds, assuming 120° bond angles."""
  4.     atoms = cmd.get_model(selection).atom
  5.     print(f'There are {len(atoms)} atoms in the selection')
  6.     ids = [atom.id for atom in atoms]
  7.     names = [atom.name for atom in atoms]
  8.     print(*ids, sep=',')
  9.     print(', '.join(f'"{name}"' for name in names))
复制代码
在pymol命令行(确保id.py在pymol的当前目录,控制台pwd/ls可以查看)
  1. run id.py
复制代码
然后printid sele,就可以打印输出当前选择的原子的id和原子名。


原子id复制粘贴chgcons.txt文件
(这里原子名的用处是在接下来的rtp文件中删除封端基团原子参数)

下一步根据RESP电荷计算结束后生成的原子电荷文件SP.chg,sobtop创建rtp文件
cd sobtop_1.0dev5目录,
  1. sobtop < EOF
  2. /root/jojo/covalent/complete/5SQ_capped.mol2
  3. 7
  4. 10
  5. /root/jojo/covalent/resp/SP.chg    //读取RESP电荷文件
  6. 0
  7. 3    // Generate GROMACS .rtp file
  8. 4    // Assign AMBER atom types as much as possibl
  9. 0
  10. 3    // 先用内置的成键参数,缺的用hessian 计算
  11. /root/jojo/covalent/complete/xtb/hessian
  12. /root/jojo/covalent/complete/gmx/01_protein_top/origin.rtp
  13. 0
  14. EOF
复制代码
这里全部指认AMBER原子类型。

得到的origin.rtp文件需要以下5处修改,我后面用一个python脚本完成

1.前两部分都注释掉,从[ bondedtypes ]部分开始保留。
2.把残基名[ MOL ]改成[ 5SQ ]
3.在[ bonds ]部分最后加上
  1. -C   N
复制代码
表示前一个氨基酸的羧基碳原子C连接此残基的N
4.在[ impropers]部分最后加上
  1. -C  CA1   N   H    4  180.0  4.60240  2  ; C-CX-N-H from ffbonded.itp
  2. CA3  +N   C   O    4  180.0 43.93200  2  ; X-X-C-O from ffbonded.itp
复制代码
CA1是N端的"alphaC", CA2是C端的"alphaC"。+N是意思是下一个残基的N。
非标准残基其实没有alphaC,但是我这里用的alphaC的参数,目的是保持肽键平面。
tips:
如果不加180.0 4.60240 2   180.0 43.93200 2这两行参数,那么pdb2gmx会从ffbonded.itp文件里面找到C CT  N H的参数(恰好跟C CX N H是一样的),因为CA1被sobtop指认为CT原子类型了。
CA3 +N C O倒无所谓,总是用ffbonded.itp文件里X  X  C  O的参数(X指代任意原子)



5.删除任何封端基团参与的参数
因为甲氨基和乙酰基不会出现在pdb文件里,跟他们有关的参数必须全部删除。

以上操作我合并在一个rtp.py脚本里了
rtp.py (3.12 KB, 下载次数 Times of downloads: 7)
执行之
  1. python rtp.py > 5SQ.rtp
复制代码

生成的5SQ.rtp 文件cp到gromacs2023/share/gromacs/top/amber14sb_parmbsc1.ff/5SQ.rtp
并且在/root/jojo/software/gromacs2023/share/gromacs/top/residuetypes.dat文件第一行插入
  1. 5SQ Protein
复制代码
表示5SQ是个有参数的残基



三、创建topol.top
终于到正题了:
  1. gmx pdb2gmx -f 5exb_monomer.pdb -o 5exb_monomer.gro -ignh -water spc -nobackup
复制代码

GROMACS reminds you: "I'm a Wishbone and I'm Breaking" (Pixies)
此时成功创建拓扑文件topol.top,但是还有点小毛病,[ dihedrals ] 部分多写了一个9或者4,这里用sed命令删除之,注意数字前后空格
  1. sed -i 's/  9    9  /  9    9  /g' topol.top
  2. sed -i 's/  9    2  /       2  /g' topol.top
  3. sed -i 's/  4    4  /       4  /g' topol.top
复制代码
然后就可以正常使用了。

最后基于这份topol.top文件可以进入正常的gromacs建模环节,比如加水、加离子,能量最小化,NPT,一步到底没问题
检查一下跑过NPT的两边肽键,完美:-)




评分 Rate

参与人数
Participants 6
威望 +1 eV +20 收起 理由
Reason
KazusaT + 1 好物!
爆旋陀螺 + 4 好物!
njust-lbc + 5 好物!
AxiEJohn + 5 厉害,当时自己走完流程想发在论坛上,结果.
student0618 + 5
sobereva + 1

查看全部评分 View all ratings

47

帖子

2

威望

859

eV
积分
946

Level 4 (黑子)

2#
 楼主 Author| 发表于 Post on 2025-12-10 14:34:36 | 只看该作者 Only view this author
我要自己顶一下,我目前网上没搜到在rtp文件的路线上能走完全流程的其它帖子

59

帖子

0

威望

1026

eV
积分
1085

Level 4 (黑子)

COFs-Hater

3#
发表于 Post on 2025-12-10 17:58:57 | 只看该作者 Only view this author
顶顶顶

2

帖子

0

威望

55

eV
积分
57

Level 2 能力者

4#
发表于 Post on 2025-12-18 09:31:35 | 只看该作者 Only view this author
大赞楼主,第一次见到这么详细的流程贴

11

帖子

0

威望

81

eV
积分
92

Level 2 能力者

5#
发表于 Post on 2026-1-6 10:43:35 | 只看该作者 Only view this author
感谢分享

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-1-24 02:42 , Processed in 0.181094 second(s), 25 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list