技术背景
在前面的一些文章中,我们介绍过关于CudaSPONGE的安装和基础使用方法,CudaSPONGE提供的Python接口,PySAGES增强采样软件的基本使用方法,还有一篇关于CudaSPONGE和PySAGES相结合的文章,并且做了一些简单的CudaSPONGE结合PySAGES的性能测试。其中因为CudaSPONGE与PySAGES的接口实际上是可以多场景共用的,因此考虑把这部分的接口单独封装一个包出来,使得用户可以尽可能无感的在CudaSPONGE中使用PySAGES。
Pip安装
SpongeExt最新的源码存储地址为:https://gitee.com/dechin/sponge-ext/tree/master,都是非常简单的Python代码,只是对环境有一些先置条件,例如Jax、Jaxlib、Cupy等,当然,PySAGES也是必须先安装好的。用户可以下载源码进行编译安装,也可以直接用pip安装:
$ python3 -m pip install SpongeExt --upgrade
没有报错即为安装成功。
使用方法
在开源仓库的example路径中,我们已经存放了一个完整的演示案例。其目录结构大致是这样的:
.
|-- README.md
|-- protein
| |-- alad_LJ.txt
| |-- alad_angle.txt
| |-- alad_atom_name.txt
| |-- alad_atom_type_name.txt
| |-- alad_bond.txt
| |-- alad_charge.txt
| |-- alad_coordinate.txt
| |-- alad_dihedral.txt
| |-- alad_exclude.txt
| |-- alad_mass.txt
| |-- alad_nb14.txt
| |-- alad_residue.txt
| `-- alad_resname.txt
|-- pysages_metad.py
`-- workspace|-- mdbox.txt|-- mdcrd.dat|-- mdinfo.txt|-- mdout.txt|-- nvt.in|-- nvt_restart_coordinate.txt`-- nvt_restart_velocity.txt
其中pysages_metad.py
就是我们所定义的PySAGES增强采样方法,文件内容是这样的:
from SpongeExt import enhanced_spongeimport pysages
from pysages.colvars import DihedralAngle
from pysages.methods import Metadynamicsdef phi_psi():from numpy import picvs = [DihedralAngle([4, 6, 8, 14]), DihedralAngle([6, 8, 14, 16])]height = 5.0 # kJ/molsigma = [0.4, 0.4] # radiansstride = 3ngauss = 500grid = pysages.Grid(lower=(-pi, -pi), upper=(pi, pi), shape=(50, 50), periodic=True)method = Metadynamics(cvs, height, sigma, stride, ngauss, grid=grid)return methodpysages_method = phi_psi()
Calculate_Force, Mdout_Print = enhanced_sponge(pysages_method)
可以看到的是,我们只是调用了SpongeExt中的一个生成函数,没有在该脚本下直接调用CudaSPONGE底层的任何参数。而在PySAGES这边,也仅仅是定义了一个MetaDynamics的方法,没有定义任何其他PySAGES底层的SnapShot之类的参数,使用SpongeExt这个插件可以做到一个几乎无感的衔接。在protein/
路径下存放的是我们使用Xponge生成的CudaSPONGE运行所需的输入参数文件。在workspace/
路径下是我们运行的一个普通NVT的CudaSPONGE参数配置文件,其中只有一个nvt.in
文件是我们需要配置的参数输入文件,其他文件都是通过CudaSPONGE运行产生的输出文件。nvt.in
的文件内容为:
case1 MD simulationmode = NVT
default_in_file_prefix = ../protein/aladpbc=0
cutoff=999dt = 1e-3
step_limit = 2000
write_information_interval = 10thermostat = middle_langevin
middle_langevin_gamma = 10rst = nvt_restartcoordinate_in_file = ../protein/alad_coordinate.txt
plugin = /usr/local/python-3.7.5/lib/python3.7/site-packages/prips/_prips.so
py = ../pysages_metad.py
相比于普通的NVT过程,这里只是多配置了plugin
和py
这两个参数,意指通过prips这个插件来调用python文件中的相关接口函数,从而达到一个外接软件实现增强采样方法的效果。
总结概要
基于CudaSPONGE高性能分子动力学模拟采样工具,和PySAGES高性能增强采样软件,我简单的封装了一个SpongeExt插件,可以用于无感结合CudaSPONGE和PySAGES进行增强采样分子动力学模拟。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/sponge-ext.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
参考链接
- https://gitee.com/dechin/sponge-ext/tree/master