本帖最后由 mizu-bai 于 2024-2-28 10:49 编辑
openmm-g96-reporter:让 OpenMM 保存 GROMACS 兼容的 g96 格式轨迹的 reporter author: mizu-bai 一、简介
笔者之前一直在用 GROMACS 跑分子动力学,最近出于某些原因开始使用 OpenMM 跑。如果说 GROMACS 是自动档的话,OpenMM 简直是给一堆零件自己去搭。在 OpenMM 中如果要保存轨迹的话,需要对 simulation 添加 reporter。目前 OpenMM 支持的 reporter 有 PDBReporter,DCDReporter,XTCReporter 等。笔者想偷懒使用之前分析 GROMACS 写的代码,就想了个办法让 OpenMM 导出 GROMOS 的 g96 文件,再转成 GROMACS 的 trr 与 xtc 格式。代码在 GitHub 以 BSD-2 协议开源 https://github.com/mizu-bai/openmm-g96-reporter。
二、安装
由于 OpenMM 在使用时主要用 Python API,这里笔者假定使用者会 Python。进入安装了 OpenMM 的环境后,可以直接使用 pip 安装
- $ pip install git+https://github.com/mizu-bai/openmm-g96-reporter
复制代码
如果机器不联网的话,可以把代码压缩包上传后解压,进入目录后运行如下命令
- $ cd openmm-g96-reporter
- $ pip install .
复制代码
三、使用
使用方法基本和其他 reporter 一样,在构建完模拟用的 simulation 后,把 G96Reporter 添加进去即可
- from g96reporter import G96Reporter
- simulation.reporters.append(G96Reporter("traj.g96", 1000))
复制代码
模拟完成后,可以使用 GROMACS 将 g96 文件转为 trr 或 xtc。g96 文件里同时包括坐标和速度,如果不需要速度,可以在转换为 trr 时指定。同时也可以添加 -pbc 等 gmx trjconv 支持的选项对轨迹进行处理。由于 g96 文件是纯文本文件,占地面积比较大,可以考虑转换为 trr 或 xtc 后删除。
- $ gmx trjconv -f traj.g96 -o traj.trr # keep positions and velocities
- $ gnx trjconv -f traj.g96 -o traj.trr -novel # positions only
- $ gmx trjconv -f traj.g96 -o traj.xtc
复制代码
四、例子
代码包的 examples 目录下有一个例子,是 OpenMM 官方的从 PDB 构建模拟系统的,笔者把原本的 PDBReporter 换成了 G96Reporter,完成模拟并将轨迹转为 trr 或 xtc 后,可以正常用 VMD 或 PyMOL 打开查看。
|