名奢网 名表 名表日报 查看内容

使用 pmemd 运行 MD

2023-4-18 15:55| 发布者: 夏梦飞雨| 查看: 81| 评论: 0

放大 缩小
简介:介绍本教程将介绍如何使用 pmemd 在production运行条件下运行分子动力学 (MD) 模拟。它将使用教程 Tutorial 1.4: Building Protein Systems in Explicit Solvent中准备的蛋白质系统来运行模拟。请注意,本教程仅涵 ...

介绍

本教程将介绍如何使用 pmemd 在production运行条件下运行分子动力学 (MD) 模拟。它将使用教程 Tutorial 1.4: Building Protein Systems in Explicit Solvent中准备的蛋白质系统来运行模拟。请注意,本教程仅涵盖production运行,不会涉及最小化、加热或平衡。(注:这里production可以理解为自己想要跑MD的分子)

在带有 pmemd 的 GPU 上运行

Particle Mesh Ewald Molecular Dynamics (PMEMD) 是使用 AMBER 运行 MD 模拟的主要引擎。Sander依旧可以用于在CPU上运行MD production运行,但速度会慢得多。pmemd.CUDA 可执行文件提供了使用 NVIDIA GPU 的能力,从而大大减少了运行显式和隐式溶剂模拟所需的时间。以前,Sander是主要引擎,但 pmemd 在串行和并行使用 GPU 方面有一些性能改进。pmemd 的功能支持粒子网格 Ewald 模拟(PMEMD)、广义玻恩模拟、各向同性周期和、ALPB 溶剂以及使用 AMBER 和 CHARMM 力场的气相模拟。因此,我们建议尽可能使用 pmemd。请注意,pmemd 不是 sander 的完整实现。有关详细信息,请参阅Amber参考手册的 pmemd 部分。

输入文件

一旦系统建成,就会发生平衡,其中施加在系统上以最小化和加热的位置约束被缓慢消除,系统被加热。在production运行中,通常不会对系统施加位置限制,因此有时称为“无限制的MD”。production运行是任何分析的唯一焦点。

若要运行production运行,需要三个文件。这些是:

1. 由 LEaP 生成的拓扑文件(RAMP1.prmtop

2. 平衡系统的坐标文件(RAMP1_equil.rst7

3. md.in 输入文件(如下)

在本教程中,我们将使用教程 1.4 中的 RAMP1.prmtop 拓扑和该系统的平衡坐标文件 (RAMP1_equil.rst7) 运行显式溶剂 MD production运行。

md.in 输入文件指定production运行的条件。

1.下载所需的所有3个文件并将它们放在同一目录中

md.in

Explicit solvent molecular dynamics constant pressure 50 ns MD
&cntrl
imin=0, irest=1, ntx=5,
ntpr=500000, ntwx=500000, ntwr=500000, nstlim=25000000,
dt=0.002, ntt=3, tempi=300,
temp0=300, gamma_ln=1.0, ig=-1,
ntp=1, ntc=2, ntf=2, cut=9,
ntb=2, iwrap=1, ioutfm=1,
/

这些设置适用于在明确的水中溶解的截短八面体盒中蛋白质系统的短时间模拟(50 ns),但您可能需要针对自己的系统更改它的某些方面。在本教程中,我们将只讨论最重要的标志。有关其他标志的信息,请参阅Amber参考手册。

nstlim

nstlim 标志通过告诉程序要运行多少个 MD 步骤来控制模拟的时间。将时间步长乘以步数将得到模拟的长度(以 ps 为单位)。在这里,25,000,000 步相当于 50 ns 的实时仿真。如果要运行不同的时间量,则必须更改 nstlim 的值。


使用 pmemd 运行 MD

ntpr, ntwx and ntwr

ntpr、ntwx 和 ntwr 变量控制保存模拟帧的频率。在这里,ntpr=500,000 的意思是在 md.out 文件中每 500,000 步或 1 ns 保存一次。ntwx 名称列表参数是指将帧保存到重新启动文件的频率。ntwr =500,000表示每500,000 步或 1 ns 写入轨迹文件 (RAMP1_md.nc)。如果您正在查看更精细的更改,则可能需要调整此参数以更频繁地写出。

dt

此变量是以皮秒为单位的时间步长 ( 1 ps = 10^{-12} s=10^{-3}ns )。时间步长基本上是MD模拟的时间单位。在这里,它是 0.002 ps,即 2.0 fs。

至于选择模拟的时间步长,这取决于温度以及是否使用SHAKE算法。在这里,我们确实使用了 SHAKE 算法(ntb=2、btc=2 和 ntf=2),因此最大时间步长应该是 0.002(如果不使用 SHAKE 算法,则为 0.001)。对于高于 300 K 的温度,应减少时间步长。这是因为增加的速度将导致力评估之间的行进距离更长,这可能导致系统爆炸。

ntt

此变量定义使用哪个恒温器。在这里,我们使用朗格文(Langevin)恒温器(ntt=3)。Langevin 动力学容易受到“同步”伪影的影响,因此需要专门设置 ig 变量来应对这种情况。对于 ntt=3,建议将 ig 设置为 -1(默认值)。当 ig=-1 时,随机种子基于当前时间和日期,因此每次运行都会有所不同。

ntp

这是控制压力动态的变量。因为我们想在恒定压力条件下运行仿真,所以它应该设置为等于1(对应于具有各向同性位置缩放的MD)。如果系统位于正交框中(意味着所有角度均为 90 度),则应将其设置为 2。因为这个模拟的框是一个截断的八面体,我们应该把它设置为等于1。默认情况下使用贝伦森(Berendsen)恒压器。

运行 MD production

现在,我们有了运行 MD 模拟所需的所有文件,可以运行它了。在 GPU 上运行 MD 需要作业文件脚本。

2. 使用文本编辑器 vi 制作作业文件脚本

vi jobfile_production.sh

如果您不熟悉 vi 的使用,请参阅这个教程。

a. 输入jobfile_production.sh内容

#! /bin/bash -f

export CUDA_VISIBLE_DEVICES=0

$AMBERHOME/bin/pmemd.cuda -O -i md.mdin -p RAMP1.prmtop -c RAMP1_eq7.rst7\
-ref RAMP1_eq7.rst7 -o RAMP1_md.mdout -r RAMP1_md.rst7 -x RAMP1_md.nc

您也可以在此处下载作业文件。以下是jobfile_production.sh中使用的标志。

-O Overwrite output files 覆盖输出文件
-i input file (md.in, which can be found above) 输入文件
-p topology file (RAMP1.prmtop) 拓扑文件
-c the starting coordinate file (RAMP1_equil.rst7) 起始坐标文件
-ref reference coordinates; use the same as the starting coordinates 参考坐标;使用与起始坐标相同的坐标
-o output file (RAMP1_md.out) 输出文件
-r restart file (last set of xyz coordinates from the simulation) 重新启动文件(模拟中的最后一组 XYZ 坐标)
-x file with trajectory (RAMP1_md.nc) 带有轨迹的文件

b.编辑要用 GPU运行的作业文件。

CUDA_VISIBLE_DEVICES=0 行告诉计算机在指定为 0 的 GPU 上运行。您可能需要更改此设置才能在计算机上打开的 GPU 上运行。您可以使用以下命令查看打开了哪些 GPU:

nvidia-smi

这将输出一下信息。

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01 Driver Version: 440.33.01 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... On | 00000000:02:00.0 Off | N/A |
| 84% 88C P8 112W / 250W | 0MiB / 7979MiB | 97% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce RTX 208... On | 00000000:04:00.0 Off | N/A |
| 81% 86C P8 96W / 250W | 0MiB / 7982MiB | 96% Default |
+-------------------------------+----------------------+----------------------+
| 2 GeForce RTX 208... On | 00000000:05:00.0 Off | N/A |
| 77% 84C P8 122W / 250W | 0MiB / 7982MiB | 96% Default |
+-------------------------------+----------------------+----------------------+
| 3 GeForce RTX 208... On | 00000000:06:00.0 Off | N/A |
| 24% 26C P8 3W / 250W | 0MiB / 7982MiB | 0% Default |
+-------------------------------+----------------------+----------------------+

在这台计算机上,有四个 GPU(0、1、2 和 3;列在左侧)。它们各自的可用性显示在右侧。在这里,GPU 0、1 和 2 不可用,但 GPU 3 处于打开状态。因此,我们想通过更改第二行来告诉计算机在 GPU 3 上运行我们的作业以反映这一点:

export CUDA_VISIBLE_DEVICES=3

这将使作业在打开的 GPU 3 上运行。

最后一行是使用 pmemd.cuda(GPU 版本)运行模拟的内容。

3. 编写脚本后,保存脚本并通过键入以下命令在命令行中运行它:

./Jobfile_production.sh &

&符号使作业在后台运行,这意味着您可以继续使用命令行。

4. 再次使用 nvidia-smi 命令验证您的作业是否正在运行。

nvidia-smi

您应该看到您指定的 GPU 百分比增加到接近 100% 的百分比。您还可以使用“top”命令查看有关作业的信息:

top

这将向您显示PID(第一列),谁在运行作业(第二列),以及它是哪种作业(最后一列),这应该是pmemd.cuda。“顶部”屏幕将实时自动更新。要退出回命令行,请在键盘上键入“q”键。

如果您出于某种原因需要终止作业(例如在繁忙的 GPU 上运行它),那么您可以通过键入以下内容来终止作业:

kill -9 PID

如果您不知道哪个 PID 对应于需要终止的作业,则可以使用以下命令获取运行作业的目录的路径:

pwdx PID

请注意,一次只能在目录中运行一个 MD 作业。否则,事情可能会变得一团糟。

5. 监控您运行的 MD。

运行脚本将生成一个名为“mdinfo”的文件。在这里,您可以获得有关已完成的步骤数、使用此系统每天可以运行多少纳秒以及完成特定作业之前还剩多少时间的信息。

运行此脚本还将创建一个名为“nohup.out”的文件。这是输出所有错误的地方。因此,如果您运行脚本并且作业立即出错中断,则可以查看nohup.out以获取有关所发生错误的信息。通常这些是语法错误。对于运行的每个nohup作业,nohup.out都会写入该作业的任何错误。

6. 等待作业完成。

请注意,这是一个串行运行的脚本,这意味着只有一个 GPU 将用于运行此作业。并行运行将使作业运行得更快,但会占用更多 GPU。

本教程中使用和生成的所有文件都可以在下面找到:

1.RAMP1.prmtop

2.RAMP1_equil.rst7

3.md.mdin

4.Jobfile_production.sh

5.RAMP1_md.out

6.RAMP1_md.rst7

7.RAMP1_md.nc


本文来源:Running MD with pmemd (ambermd.org)


路过

雷人

握手

鲜花

鸡蛋
已有 0 人参与

会员评论

文章排行

  • 阅读
  • 评论

最新文章

文章列表

 名表回收网手机版

官网微博:名表回收网服务平台

今日头条二维码 1 微信公众号二维码 1 抖音小程序二维码 1
浙江速典奢贸易有限公司 网站经营许可证 备案号:浙ICP备19051835号2012-2022
名表回收网主要专注于手表回收,二手名表回收/销售业务,可免费鉴定(手表真假),评估手表回收价格,正规手表回收公司,浙江实体店,支持全国范围上门回收手表
返回顶部