CHARMM力场提供了很多生物分子的力场参数,如蛋白质、脂质、核酸等,Gromacs中自带了CHARMM27力场,当然也可在Gromacs官网上下载到已转换成Gromacs支持的CHARMM36力场。不过使用Gromacs做MD模拟的朋友如果想模拟一个Gromacs中没有定义力场参数的分子,如糖,就需要手动为Gromacs添加相关力场参数了。这些力场参数多数从文献中得到,并且一般都是CHARMM格式的,即.prm和.rtf格式,如何将它们转换成Gromacs支持的格式呢?这篇文章会详细讲解转换过程,并且给出python脚本以供参考。
首先分别讲解一下CHARMM软件和Gromacs软件如何完整定义一个分子的力场。在CHARMM软件中,主要通过2个文件来实现:.rtf和.prm。
.rtf文件定义了原子类型、各类型原子的质量、原子偏电荷、分子的键连接以及氢键等,它的格式如图1。MASS是用来定义原子类型的,每一行都定义了一种原子类型。
图1. TIP3水分子的.rtf文件,CHARMM中“!”后面的内容是注释
MASS后面跟着原子编号、原子类型名、原子质量和元素符号。GROUP语句用来定义一个残基(也可以是单独的分子):ATOM定义了残基中各原子的名字、所属的原子类型和该原子所带的偏电荷;BOND定义残基中原子的键连接情况,以原子对形式列出,如图1中的水分子定义了3个键OH2-H1、OH2-H2和H1-H2(最后一个键是SHAKE限制算法用到的);ANGLE定义键角;DONOR和ACCEPTOR分别用来定义氢键供体和受体。
.prm文件中定义了与能量相关的参数,如键伸缩能,键角、二面角的力常数以及范德华参数,图2给出了TIP3水分子的.prm文件。
BONDS数据块是用来定义键伸缩振动能量的,用简谐振动来近似:
BONDS数据块每行有4个字段,前两个是成键原子的类型,后两个分别是公式中的Kb(kcal/Å2/mol)和b0(Å)。
ANGLES数据块用来定义键角振动,同样是用简谐振动来近似:
ANGLES数据每行有5或7个字段,后者是加了Urey-Bradley项的。前3项是形成键角的原子的类型