计算化学公社

 找回密码 Forget password
 注册 Register
Views: 14342|回复 Reply: 12
打印 Print 上一主题 Last thread 下一主题 Next thread

[程序/脚本开发] 用Packmol建模及GMX跑动力学命令的懒人脚本

[复制链接 Copy URL]

515

帖子

1

威望

4697

eV
积分
5232

Level 6 (一方通行)

本帖最后由 tjuptz 于 2020-1-5 16:26 编辑

        模拟研究中经常涉及到换一些条件,比如分子数,配比,添加物种类等的对比研究,这些时候往往要跑十几甚至数十个动力学。为了一键操作,写了个bash脚本,md.sh和domd.sh。
        应用方法如下:1.建立某一模拟的文件夹,比如solute_in_sol1,把结构文件、拓扑文件和md.sh放进去 2.在里面建立packmol文件夹,把packmol用到的结构文件和输入文件放进去 3.重复1和2建立solute_in_sol2、solute_in_sol3……solute_in_solN 4.将1到N这些要跑到任务文件夹放到LUNIX的跑MD的文件夹如MD中,并把domd.sh拷贝进去 5.在终端里输入bash domd.sh即可。
md.sh内容如下:
  1. #!/bin/bash

  2. # bash script for MD

  3. cd ./packmol
  4. packmol < mix.inp
  5. mv mix.pdb .. -f
  6. cd ..
  7. gmx grompp -f em.mdp -c mix.pdb -p mix.top -o em.tpr
  8. gmx mdrun -v -deffnm em
  9. gmx grompp -f eq.mdp -c em.gro -p mix.top -o eq.tpr
  10. gmx mdrun -v -deffnm eq
  11. gmx grompp -f md.mdp -c eq.gro -t eq.cpt -p mix.top -o md.tpr
  12. gmx mdrun -v -deffnm md
  13. echo -e "0\n" |gmx trjconv -f md.xtc -o fixmd.xtc -s md.tpr -pbc mol -dt 10
复制代码
domd.sh内容如下:
  1. #!/bin/bash

  2. #batch script for md script

  3. for dir in `ls .`
  4. do
  5.    if [ -d $dir ]
  6.    then
  7.      echo $dir
  8.      cd $dir
  9.      bash md.sh
  10.      cd ..
  11.    fi
  12. done
复制代码
注:请根据代码内容恰当修改自己的输入文件的名称以便一键化操作; 最后会对轨迹进行修正,可根据自己实际情况修改;如有后处理操作亦可加入到md.sh中一并处理

评分 Rate

参与人数
Participants 5
eV +19 收起 理由
Reason
rdcfm1223 + 5
zsu007 + 5 赞!
明园 + 3 谢谢
少年爱吃地三鲜 + 3
sobereva + 3

查看全部评分 View all ratings

66

帖子

0

威望

6513

eV
积分
6579

Level 6 (一方通行)

2#
发表于 Post on 2019-4-22 19:48:53 | 只看该作者 Only view this author
谢谢分享!

365

帖子

5

威望

3866

eV
积分
4331

Level 6 (一方通行)

Nerv

3#
发表于 Post on 2019-4-23 17:54:36 | 只看该作者 Only view this author
沥青质+庚烷+去污剂么?我也在做这个呢0.0
God's in his heaven,all is right with the world

515

帖子

1

威望

4697

eV
积分
5232

Level 6 (一方通行)

4#
 楼主 Author| 发表于 Post on 2019-4-23 18:03:22 | 只看该作者 Only view this author
Lacrimosa 发表于 2019-4-23 17:54
沥青质+庚烷+去污剂么?我也在做这个呢0.0

哈哈,忘了去掉了。我不做,帮人算的来着。

3

帖子

0

威望

1371

eV
积分
1374

Level 4 (黑子)

5#
发表于 Post on 2020-7-29 17:13:53 | 只看该作者 Only view this author
谢谢分享!有个问题请教,就是它产生的文件名中带有空格,在centos系统或者是windows的centos子系统里,显示的都是个问号,需要在md.sh文件中相应的地方加上问号才能运行,请问这是什么原因呢?

515

帖子

1

威望

4697

eV
积分
5232

Level 6 (一方通行)

6#
 楼主 Author| 发表于 Post on 2020-7-30 12:36:38 | 只看该作者 Only view this author
不好意思,我这里没遇到过

3

帖子

0

威望

1371

eV
积分
1374

Level 4 (黑子)

7#
发表于 Post on 2020-7-30 16:31:15 | 只看该作者 Only view this author
好的,谢谢

38

帖子

0

威望

1161

eV
积分
1199

Level 4 (黑子)

8#
发表于 Post on 2021-3-8 12:57:32 | 只看该作者 Only view this author
非常感谢楼主的分享,有个问题想请教一下,楼主这个脚本是数十个独立的动力学过程的模拟,如果我们是基于第一个动力学结束后的结构重新加入某分子建模,然后在此基础上跑第二个动力学,再基于第二个MD结束结构重新建模跑第三个MD...如此多个循环的过程,那么应该如何编写脚本呢,可否指教一下,非常感谢!

515

帖子

1

威望

4697

eV
积分
5232

Level 6 (一方通行)

9#
 楼主 Author| 发表于 Post on 2021-3-8 20:30:55 | 只看该作者 Only view this author
本帖最后由 tjuptz 于 2021-3-8 20:33 编辑
侧耳倾听 发表于 2021-3-8 12:57
非常感谢楼主的分享,有个问题想请教一下,楼主这个脚本是数十个独立的动力学过程的模拟,如果我们是基于第 ...

得自己写循环,通过循环变量的增加和适当的变量名与文件名关联实现吧。还涉及到拓扑的更新,感觉不是很容易,需要自己研究研究。我也简单思考过,还挺麻烦的。如果是研究沉积问题的话,可能lammps现成的in文件能找到,也许比写脚本来的快

20

帖子

0

威望

585

eV
积分
605

Level 4 (黑子)

10#
发表于 Post on 2021-3-8 21:00:47 | 只看该作者 Only view this author
tjuptz 发表于 2021-3-8 20:30
得自己写循环,通过循环变量的增加和适当的变量名与文件名关联实现吧。还涉及到拓扑的更新,感觉不是很容 ...

好的,感谢!确实是想研究沉积过程,因为平常都是用GMX,  所以想写一个类似的脚本,真正写起来的时候发现确实是很复杂,牵扯到很多文件的更新,谢谢回复

66

帖子

0

威望

1244

eV
积分
1310

Level 4 (黑子)

11#
发表于 Post on 2021-11-20 03:30:19 | 只看该作者 Only view this author
你好请问。如果在当前目录下,进行1ns的模拟后得到1.gro。然后用1.gro之前模拟1ns,参数一样的。以此类推,循环200次,应该怎么修改这个脚本呢?

515

帖子

1

威望

4697

eV
积分
5232

Level 6 (一方通行)

12#
 楼主 Author| 发表于 Post on 2021-11-20 17:23:55 | 只看该作者 Only view this author
DwyaneWan 发表于 2021-11-20 03:30
你好请问。如果在当前目录下,进行1ns的模拟后得到1.gro。然后用1.gro之前模拟1ns,参数一样的。以此类推, ...

修改md.sh,具体地说是加入循环,你可以参考这个网页里的方法,脚本见附件
https://jerkwin.github.io/2018/04/09/%E5%AE%9E%E6%97%B6%E6%94%B9%E5%8F%98GROMACS%E6%8B%93%E6%89%91%E7%9A%84%E5%88%86%E6%AE%B5%E6%A8%A1%E6%8B%9F%E6%96%B9%E6%B3%95/
gmxC8.zip (21.26 KB, 下载次数 Times of downloads: 30)

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
rdcfm1223 + 5 谢谢

查看全部评分 View all ratings

25

帖子

0

威望

373

eV
积分
398

Level 3 能力者

快学快学,多好的东西

13#
发表于 Post on 2023-6-7 15:25:51 | 只看该作者 Only view this author
本帖最后由 rdcfm1223 于 2023-6-8 10:28 编辑
tjuptz 发表于 2021-11-20 17:23
修改md.sh,具体地说是加入循环,你可以参考这个网页里的方法,脚本见附件
https://jerkwin.github.io/2 ...

老师你好,很感谢您分享的脚本。

jerkwin1老师的脚本是使用beanshell语言编写的,用gpt技术读取了一下代码,也分享给大家。
以下是关于代码的一些基本解释:
1. 在开始部分,脚本定义了一些变量,包括模拟的名字、开始和结束的时间,以及从 grompp.mdp 文件中读取的时间步长(dt)和步数(step)。
(在这里脚本将dt和step相乘,获取每一次md运行的时间。因此初始和截至时间的设置应该是以ps为单位)
2. 然后,脚本创建了一些文件,包括初始的.gro(坐标)文件,.top(拓扑)文件,以及.mdp(模拟参数)文件。
3. `gmx grompp` 和 `gmx mdrun` 命令用于编译和运行模拟。这些命令生成一系列的输出文件,其中一些在每次模拟结束时被删除。
4. 在一个 for 循环中,脚本重复上述过程,每次都增加模拟的时间。在每次迭代中,它都会更新 .gro,.top,和 .mdp 文件,然后再次运行模拟。
5. 在循环的每次迭代中,还可能会向 .top 文件添加一些信息,这取决于迭代次数。
6. 在模拟完成后,脚本使用 `gmx trjcat` 和 `gmx trjconv` 命令处理和整合模拟的轨迹文件。
这个脚本的具体用途可能会根据 GROMACS 模拟的具体需求和 grompp.mdp 文件中的参数设置而有所不同。在大致的情况下,这个脚本运行一系列的模拟,每次模拟开始时都会从上一次模拟结束时的状态开始。这使得用户可以分步骤地运行长时间的模拟,而不是一次性运行整个模拟。

学生有几个问题想请教老师。
第一个是jerkwin老师的网站我在观看学习的时候一般只能够看到博文,但是相关的附件我都没有见过,不知道老师你这个gmxC8.zip是在哪里找到的呀?
第二个问题是学生在这个脚本的基础上,进行了一定的修改。然后在cmd和gui bash里都成功运行了。但是两者都出现了一样的问题。即不显示当前运行步数和当前运行时间。从电脑的状态、tasklist命令和相应生成文件来看,程序是在正常运行。但是这个小问题应该怎样改善呢。学生用的是2020.6GPU版本



202306071519514550..png (20.01 KB, 下载次数 Times of downloads: 31)

gmx运行但是不显示当前步数和当前运行截止时间。

gmx运行但是不显示当前步数和当前运行截止时间。

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-15 01:02 , Processed in 0.177216 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list