DP力场与GROMACS的融合:实现DP/MM模拟
前言
正如《DeePMD-kit v2.0.0:AI+分子模拟的新起点》一文末尾所预告的,继OpenMM之后,DeePMD-kit 如今迎来了另一个与之适配的分子动力学模拟引擎——GROMACS。作为一款优秀的免费开源软件,GROMACS常被用于生物体系(蛋白质、磷脂、DNA)的模拟当中,对Gromos,Amber,OPLS-AA力场拥有很好的支持。GROMACS的代码全部由C/C++编写,并且在经过GPU优化之后,可以拥有非常可观的计算速度。更重要的是,GROMACS拓扑文件的构建拥有很强的灵活性,这使得用户可以对复杂系统中不同种类型的相互作用有更加精细化的控制。
除全原子DP模拟外,与DP结合后的GROMACS引擎可以实现DP/MM模拟,即体系中一部分原子利用DP力场,另一部分原子采用经典的分子力学模型。与量子力学/经典力学(QM/MM)模拟一样,我们期待着DP/MM模拟可以被用于化学反应/酶催化反应的研究之中,并且借助于DeePMD机器学习框架优异的计算效率,DP/MM可以在QM/MM的基础上实现更大规模时间尺度和空间尺度的模拟。
文末附有DP+GROMACS交流群进群方式,欢迎加入交流群深入探讨。
安装
参考PLUMED对不同MD引擎的支持方式,开发者在DeePMD-kit的Github仓库里维护了对于不同版本GROMACS代码的补丁(patch),但是目前只支持2020.2版本。用户需要到Github仓库中下载最新版(2.0.2)DeePMD-kit源码并编译安装。
地址:
https://github.com/deepmodeling/deepmd-kit/releases/tag/v2.0.2
在安装目录的bin子目录下,会生成 dp_gmx_patch
的可执行文件。运行下面命令,即可实现对GROMACS源码的修改:
export PATH=$PATH:$deepmd_kit_root/bin # $deepmd_kit_root是deepmd-kit的安装目录
dp_gmx_patch -d $gromacs_root -v $version -p # $gromacs_root是GROMACS的源码目录,$version是GROMACS版本,目前只支持2020.2
GROMACS源码修改完成后,就可以参考官方手册进行正常的编译了。
手册地址:
https://manual.gromacs.org/documentation/2020.2/install-guide/index.html
DP/MM模拟
1. 拓扑准备
要实现DP/MM模拟,需要先关闭由经典力场描述的原子间相互作用。其中键连相互作用可以用[ bonds ]
, [ angles ]
, [ dihedrals ]
, [ pairs ]
等模块控制,非键相互作用(范德华相互作用、库伦相互作用)的关闭可以用[ exclusions ]
模块控制。以模拟甲烷在水溶液中的行为为例,若其中甲烷分子用DP势描述,水用TIP3P模型描述,则甲烷分子的力场文件(itp)如下图所示:
所有键的函数形式(func)被换成了5,意味着两原子之间只有键连关系,并没有相互作用
键角相互作用则直接被删除掉
甲烷分子内的非键相互作用通过
[ exclusions ]
关闭了。
关于拓扑文件的写法规范,可以进一步参考官方手册。需要指出的是,处于DP/MM区域界面上的原子,则还是需要使用vdW和Coulomb相互作用描述,因此相关参数仍要在[ atomtypes ]
和[ atoms ]
中定义清楚。
2. 输入文件准备
拓扑文件准备好后,我们需要另外编写一个DP需要的input.json文件,将DP模型推理所需要的相关信息传入:
{
"graph_file": "/path/to/graph.pb",
"type_file": "/path/to/type.raw",
"index_file": "/path/to/index.raw",
"lambda": 1.0,
"pbc": false
}
各个参数的含义如下:
graph_file
: DP二进制模型文件的位置。目前只支持DeePMD-kit 2.x版本的模型,对更低版本训练得到的模型,需要先用dp convert
将模型转化成2.x版本可以读取的模型后再使用。type_file
:原子类型文件,以空格分割,对应DeepPot.eval()中的atype
参数。示例如下:
0 1 1 1 1
index_file
:原子索引文件。存储使用DP势函数描述的原子的序号,从0开始,以空格分割。示例如下:
0 1 2 3 4
lambda
: 非必须参数,默认为1.0。用于炼金术自由能(Alchemical Free Energy)计算,在本推送中不做详细介绍。pbc
:非必须参数,默认为true
。用于控制是否采用周期性边界条件,在做DP/MM模拟时应设为false
。
3. 跑MD
编写好input.json
文件后,需要先用环境变量指定该文件的位置后再运行gmx mdrun
命令进行模拟:
export GMX_DEEPMD_INPUT_JSON=/path/to/input.json
全原子DP模拟
和LAMMPS,OpenMM一样,DP+GROMACS同样可以实现全原子DP势函数的模拟。与DP/MM模拟一样,用户只需要编写好相应的拓扑文件以关闭系统内所有的经典相互作用,再编写好DP模拟需要的输入文件即可完成全原子DP模拟了。特别地,在体系原子数比较多的情况下,使用[ exclusions ]
关闭系统内相互作用会比较繁琐,这时可以在[ atomtypes ]
和[ atoms ]
里将范德华参数和原子电荷都设置成0,也可以达到同样的效果。正如您在【DP力场与OpenMM的碰撞】中看到的一样,我们比较了在同一个graph下,OpenMM和LAMMPS,GROMACS使用DP做NVT模拟下的RDF(径向分布函数)结果。这里我们使用了0.5fs的时间步,Nosé-Hoover Thermostat,298 K, 256 个水分子的4 ns NVT模拟轨迹。最终的结果也显示这三个软件的RDF完全一致。
小结
开发者通过给源码打patch的方式实现了在GROMACS中使用DP力场进行分子动力学模拟。除了传统的全原子DP模拟外,在GROMACS中还可以进行DP/MM模拟。我们希望通过GROMACS和DeepModeling两个开源平台良好的生态,解锁DP力场更多的使用场景,帮助研究者们解决更多的实际问题。在未来,我们还会充分利用DeepModeling开发者们对GROMACS进行高性能优化的经验,进一步提升DP+GROMACS的性能。
另外请大家关注DeePMD-kit的Github仓库,后续更新会持续发布在其中。敬请期待!
DeePMD-kit Github仓库地址:
https://github.com/deepmodeling/deepmd-kit
开发者们非常期待各位老师、同学帮忙测试、使用、提issue、交pr,共同维护和改进DP+GROMACS,提升用户的使用体验!
欢迎加入我们的DP+GROMACS交流群!如二维码过期,请在深度势能公众号后台回复“DP+GROMACS”获取最新二维码。
致谢
感谢刘歆子建、昌珺涵、张与之等同学的讨论和合作!感谢张林峰、王涵老师的指导和支持!感谢曾晋哲、白晓旷为代码结构提出的宝贵意见!
相关资料
1.DP+GROMACS的安装(后续更新会持续发布):
https://github.com/deepmodeling/deepmd-kit/blob/devel/doc/install/install-gromacs.md
2.DP+GROMACS的使用(后续更新会持续发布):
https://github.com/deepmodeling/deepmd-kit/blob/devel/doc/third-party/gromacs.md
3.GROMACS 2020.2版本下载:
https://manual.gromacs.org/documentation/2020.2/download.html
4.GROMACS 2020.2官方使用手册:
https://manual.gromacs.org/documentation/2020.2/install-guide/index.html
推荐阅读