技术背景

在前面的一些文章中,我们介绍过关于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_sponge

import pysages
from pysages.colvars import DihedralAngle
from pysages.methods import Metadynamics def phi_psi():
from numpy import pi
cvs = [DihedralAngle([4, 6, 8, 14]), DihedralAngle([6, 8, 14, 16])]
height = 5.0 # kJ/mol
sigma = [0.4, 0.4] # radians
stride = 3
ngauss = 500
grid = pysages.Grid(lower=(-pi, -pi), upper=(pi, pi), shape=(50, 50), periodic=True)
method = Metadynamics(cvs, height, sigma, stride, ngauss, grid=grid)
return method pysages_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 simulation

mode = NVT
default_in_file_prefix = ../protein/alad pbc=0
cutoff=999 dt = 1e-3
step_limit = 2000
write_information_interval = 10 thermostat = middle_langevin
middle_langevin_gamma = 10 rst = nvt_restart coordinate_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过程,这里只是多配置了pluginpy这两个参数,意指通过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

参考链接

  1. https://gitee.com/dechin/sponge-ext/tree/master

使用SpongeExt快捷完成CudaSPONGE结合PySAGES的增强采样的更多相关文章

  1. 我的VisualStudio工具箱

    代码神器 ReSharper 毫无疑问,我认为R#是目前VS插件中有史以来最强大的,各种快捷生成代码的方式, 代码重构, 很多很多的快捷键支持.相比较原生VS的,VS的智能功能简直弱爆了. dimec ...

  2. ajax单删

    通过点击事件获取相应数据的id,将id传到的控制器,根据id执行删除的sql语句,执行官删除:同时ajax的有点就是快捷方便,无刷新,增强用户的体验. <?php namespace app\i ...

  3. Android移动应用界面的模板化设计

    Android没有像苹果开发那样功能强大的界面开发工具,本身 ADT插件提供的界面编辑能力有限,没办法刻画所有的界面情况:Android的界面xml代码可以进行人工修改,而Iphone的全部在图形界面 ...

  4. 基于android studio的快捷开发(将持续更新)

    对于Android studio作为谷歌公司的亲儿子,自然有它的好用的地方,特别是gradle方式和快捷提示方式真的很棒.下面是我在实际开发中一些比较喜欢用的快速开发快捷键,对于基本的那些就不多说了. ...

  5. Sublime Text 2 快捷操作

    Sublime Text 2 包含了大量快捷操作,而且还很方便修改和追加自己喜欢的快捷键. 查看快捷键的方式也很简单: 点击菜单栏:Preferences->Key Bindings –Defa ...

  6. xcode添加快捷代码块

    添加快捷代码块 在开发过程中,一些常用的代码段,我们可以设置成快捷代码段来快速实现代码的编写. 如上图中的属性的设置,它们都有相同重复的代码@property (nonatomic, strong), ...

  7. 台式电脑、笔记本快捷选择Boot(启动项快捷键)大全

    我们在安装系统时,会去设置电脑是从硬盘启动.U盘启动.光驱启动.网卡启动. 一般设置的方法有两种:一种是进BIOS主板菜单设置启动项顺序:另一种就是我在这里要介绍的快捷选择启动项. 以下是网友整理的各 ...

  8. ThinkPHP中的快捷函数小结

    U() 制作url地址的快捷函数 C(名称) 获得配置变量(convertion.php config.php)信息C(名称,值) 设置配置变量信息 L() 获得语言变量信息E() 给页面输出错误信息 ...

  9. js快捷输入日期

    点击这里查看效果http://keleyi.com/keleyi/phtml/jstexiao/10.htm 以下式代码: <!DOCTYPE html> <html> < ...

  10. VS中如何快捷地给自己的代码添加创建信息注释

    VS中如何快捷地给自己的代码添加创建信息注释 Intro 以下讨论的都是没有使用 GIT 来管理源代码的情况,如果使用 GIT 管理源代码可直接使用VS的Git扩展就不需要考虑以下问题. 什么是创建信 ...

随机推荐

  1. Codeforces Round 987 (Div. 2)

    Codeforces Round 987 (Div. 2) 总结 A 常见的套路,将一个序列变为不下降序列所需要改变的值的最小数量,考虑最大能保留多少个,显然是求最长上升子序列,而这题给出的 \(a\ ...

  2. Tensorflow 使用TPU训练

    要用TPU训练tensorflow模型,只能使用静态图.也就是要先通过keras的sequential或者函数式定义模型,而不能直接使用重写的Model类.例子如下,其中包含层的自定义,以及子像素卷积 ...

  3. SQLSERVER 2019数据库(可疑) 数据修复案例

    2019 数据库 , 在正常使用过程中 , 服务器突然断电 , 重新启动服务器后 , 数据库变为(可疑). [数据恢复故障分析] 由于数据库在正常读写操作过 , 服务器突然断电 , 导致数据库无法把所 ...

  4. HTTP请求与响应格式解析

     HTTP是Web浏览器与Web服务器之间通信的标准协议,HTTP指明了客户端如何与服务器建立连接,如果从服务器请求数据,服务器如何响应请求,关闭连接.HTTP是使用TCP/IP协议进行传输数据的,也 ...

  5. 基于Spring源码分析AOP的实现机制

    Spring一个重要的特性就是提供了AOP,使得我们可以在原有的基础上增加我们自己的系统业务逻辑.使得我们系统业务逻辑与应用业务逻辑相分离,耦合性降低,并且大大的提高了开发的效率.Spring的AOP ...

  6. JDK中的动态代理

    江苏 无锡 缪小东 写到代理模式这章,不得不提到JDK中的动态代理,它是java语言自身对动态代理的支持,类似于JDK中在java.util包中提供Observable类和Observer接口提供对观 ...

  7. 成为Java GC专家系列(3) — 如何优化Java垃圾回收机制

    本文是成为Java GC专家系列文章的第三篇.在第一篇<成为JavaGC专家Part I - 深入浅出Java垃圾回收机制>中我们学习了不同GC算法的执行过程,GC是如何工作的,什么是新生 ...

  8. CF 3000+

    CF1981F / *3000 首先有朴素的 dp:\(f_{u, i}\) 表示以 \(u\) 为根的子树已经 finish 了,经过 \(u\) 往上走的路径 MEX 为 \(i\).\(i\) ...

  9. seldom-platform:颠覆传统的自动化测试平台

    seldom-platform:颠覆传统的自动化测试平台 seldom-platform是一个自动化测试平台,其特点是让会写代码的测试人员能够通过seldom框架高效地完成自动化用例的编写,并将剩下的 ...

  10. cv2, pil.image, plt.image 读图的差异

    人是习惯性动物,当我们第一次用opencv时,肯定会觉得opencv的imread()方式很奇怪,做图像出来天天说图像是RGB图RGB图,可opencv读出来的图,却是BGR的顺序.是不是很奇怪,还不 ...