计算化学公社

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

[Gaussian/gview] 写了个自动化脚本,各位可以参考用用

[复制链接 Copy URL]

5

帖子

0

威望

128

eV
积分
133

Level 2 能力者

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 raillgun 于 2014-12-30 15:04 编辑

原创内容,转帖须注明出处,虽然也没什么好转的~~

注:
14.12.26 22:05更新:
发现脚本有个错误,代码和附件部分已更新,之前如果有下过的请务必使用新版本,实在抱歉,抱歉!

初玩高斯,参考sob大大的帖子,实现如下功能:
1、批量执行计算任务,并且可以按顺序执行任务,比如可以实现先计算1.gjf,4.gjf,5.gjf,再计算2.gjf,3.gjf的功能
2、显示当前任务进度及完成时间
3、一个任务计算完后判断是否计算成功,分别将成功的和失败的任务输出到pass/和fail/文件夹内(含该任务的gjf、log、chk文件),并且将成功的和失败的任务名分别写入PASSED和FAILED文件内
4、对于计算成功的文件生成可视化.fchk文件及homo和lumo的.cube文件
5、在计算过程中可以添加当计算完当前所有任务后需要执行的计算任务,如此的话就可以实现机器的24小时不间断工作了

使用说明如下:
0、先声明一下,gjf输入文件里面的chk文件目录务必写成相对目录,即%chk=*.chk
1、将如下所给代码写到一个脚本文件里,如run.sh
2、在run.sh文件同级目录下建一个task文件夹
3、在task文件夹下面根据自己所需建立几个存放任务的文件夹,建议命名为0、1、2、3。。。
4、将计算任务文件(即*.gjf)按需放到task文件夹下面的数字目录下,比如需要计算1.gjf-5.gjf,但是根据任务急缓需要先算1.gjf,4.gjf,5.gjf,再算2.gjf,3.gjf,就把1、4、5放到0文件夹内,2、3放到1文件夹内,以此类推
5、执行sh run.sh或是nohup sh run.sh &(推荐此命令,此命令兼具忽略用户登出信号和将执行结果输出为一个文件的功能)
6、脚本执行后,会在脚本同级目录生成PASSEDFAILED文件,里面分别包含了计算成功的和失败的任务名,同时如上面所说,将计算成功的和失败的任务的全部文件分别放到fail/pass/文件夹内,方便查看
7、在nohup.out文件内(若执行命令为nohup sh run.sh &)包含了当前执行计算到哪一步,任务是否成功和失败等信息
8、在计算过程中如果想增加计算任务则将需要增加的gjf文件放到还没算到的那个文件夹里,如在nohup.out文件内看到现在算到了1文件夹里面的东西,那么就将新任务放到2文件夹里,如此种种
9、没了,就这些了


代码如下:
  1. #!/bin/bash
  2. #This script can do the Gaussian Project automaticly.
  3. #To use this,here are some tips:
  4. #trees shows below
  5. #  ./run.sh
  6. #  ./nohup.out
  7. #  ./FAILED
  8. #  ./PASSED
  9. #  ./task/??/*.gjf
  10. #  ./pass/
  11. #  ./fail/
  12. #
  13. mkdir pass
  14. mkdir fail
  15. cd task
  16. echo "~~HERE WE GO~~"
  17. echo "~~GOOD LUCK~~"

  18. judge () {
  19.         grep -q "Normal termination" $log
  20.         if [ $? -eq 1 ]
  21.         then
  22.                 mv ${gjf%.*}.* ../../fail/  
  23.                 echo "${gjf%.*} FAILED"  >> ../../FAILED
  24.                 echo -e "!!!${gjf%.*} FAILED!!!\n"
  25.         else
  26.                 formchk $chk
  27.                 cubegen 0 mo=lumo ${chk%.*}.fchk ${chk%.*}_lumo.cube 100 h
  28.                 cubegen 0 mo=homo ${chk%.*}.fchk ${chk%.*}_homo.cube 100 h
  29.                 mv ${gjf%.*}* ../../pass/
  30.                 echo "${gjf%.*} calculation finished">> ../../PASSED
  31.                 echo "${gjf%.*} calculation finished"
  32.         fi
  33. }

  34. for order in `ls -F | grep /`
  35. do        
  36.         cd $order
  37.         ls | grep -q .gjf
  38.         if [ $? -eq 0 ]
  39.         then
  40.                 echo "@@STEP $order BEGIN!@@"
  41.                 for gjf in *.gjf
  42.                 do
  43.                         log="${gjf%.*}.log"
  44.                         chk="${gjf%.*}.chk"
  45.                         echo "${gjf%.*} calculation start"
  46.                         time g09 $gjf
  47.                         wait
  48.                         judge
  49.                 done
  50.                 echo -e "@@STEP $order END@@\n"
  51.                 cd ..
  52.         else
  53.                 echo -e "***STEP $order No Input File!!***\n"
  54.                 cd ..
  55.         fi
  56. done

  57. echo "~~ALL DONE! HAVE FUN~~"
复制代码

现在应该没什么bug了,懒人版附件如下,解压即用,如有什么问题欢迎一起讨论~~

以上

run.tgz (850 Bytes, 下载次数 Times of downloads: 137)

评分 Rate

参与人数
Participants 9
eV +38 收起 理由
Reason
linux + 3 好物!
杜黎小松 + 5 好物!
zsu007 + 10 赞!
Jack + 4 233333
zidu113 + 3 好人
lei234 + 4 好人~
卡开发发 + 3 确实便宜那帮懒人了^_^
sobereva + 3
Shannon + 3 谢谢

查看全部评分 View all ratings

55

帖子

0

威望

1197

eV
积分
1252

Level 4 (黑子)

2#
发表于 Post on 2014-12-26 05:26:25 | 只看该作者 Only view this author
谢谢分享

117

帖子

0

威望

1126

eV
积分
1243

Level 4 (黑子)

3#
发表于 Post on 2014-12-26 10:50:34 | 只看该作者 Only view this author
谢谢分享!

61

帖子

0

威望

2357

eV
积分
2418

Level 5 (御坂)

4#
发表于 Post on 2014-12-29 22:31:15 | 只看该作者 Only view this author
谢谢:)

1294

帖子

0

威望

6235

eV
积分
7529

Level 6 (一方通行)

5#
发表于 Post on 2015-7-9 10:36:22 | 只看该作者 Only view this author
楼主好,我想咨询一下,你说的这个:0、先声明一下,gjf输入文件里面的chk文件目录务必写成相对目录,即%chk=*.chk
这个相对目录什么意思。
如果我现在在的位置是/home/globle/fan    同时在这个fan文件夹下面有task文件(里面包含了 0  1  2 这样的文件夹,同时每个文件夹里面有相应的gjf文件)同时还有run.sh文件,那我gjf里面的chk的路径,要写成/0/1.chk,或者是/0/2.chk等等?谢谢楼主
https://www.x-mol.com/groups/fan_jianzhong

strive for greatness

136

帖子

3

威望

4184

eV
积分
4380

Level 6 (一方通行)

6#
发表于 Post on 2015-7-9 11:12:37 | 只看该作者 Only view this author
个人认为这种脚本是要贻误像我这样的高斯新手的……
没必要那么懒吧,除非是在cluster上成批的跑高斯了……
弱弱的说一下,当更正失败任务的时候(可能是关键词写错了),重新执行这个脚本貌似不能跳过已经成功的目录,感觉楼主可以再加一个if [ ! -z ... ] 来判断一下是否已有某个fchk文件。然后是mkdir可以加一个-p参数,再次运行就不报错了。

最后看到这帖子是楼主大半年前深夜发的原创帖子,大赞一个~~

593

帖子

12

威望

4720

eV
积分
5553

Level 6 (一方通行)

密度泛函·小卒

7#
发表于 Post on 2015-7-13 11:38:35 | 只看该作者 Only view this author
laoman 发表于 2015-7-9 11:12
个人认为这种脚本是要贻误像我这样的高斯新手的……
没必要那么懒吧,除非是在cluster上成批的跑高斯了… ...

有可能是国外的说
一出生响亮登场,十几岁快乐成长,
二十岁天天向上,三十岁基本定向,
四十岁拼命打创,五十岁回首一望,
六十岁告老还乡,七十岁搓搓麻将,
八十岁躺在床上,九十岁挂在墙上,
人生一世,匆匆忙忙,生得嘹亮,走得凄凉!
生活就像五味瓶,酸甜苦辣难消停!
该吃吃,该喝喝,遇事别去心里搁,
想哭哭,想笑笑,烦恼就往云外抛,
记住甜,忘掉苦,亲人朋友好相处,
心情好,最重要,自我麻痹乐逍遥!

720

帖子

0

威望

1252

eV
积分
1972

Level 5 (御坂)

8#
发表于 Post on 2015-7-17 18:40:25 来自手机 | 只看该作者 Only view this author
非常感谢

3098

帖子

28

威望

1万

eV
积分
16892

Level 6 (一方通行)

9#
发表于 Post on 2015-7-21 01:34:34 | 只看该作者 Only view this author
感谢分享,正想自己写一个

198

帖子

0

威望

2241

eV
积分
2439

Level 5 (御坂)

10#
发表于 Post on 2016-5-17 22:11:32 | 只看该作者 Only view this author
请教楼主一个问题,我用Xshell工具远程连接服务器,用你给的run.sh运行的话,我的计算机关机会不会导致服务器上计算停止?
站在宇宙中心呼唤爱

106

帖子

1

威望

2048

eV
积分
2174

Level 5 (御坂)

11#
发表于 Post on 2017-4-5 16:06:03 | 只看该作者 Only view this author
最近超喜欢玩bash脚本,参考楼主所写,给自己脚本添加写功能,谢谢楼主分享。

362

帖子

1

威望

4368

eV
积分
4750

Level 6 (一方通行)

12#
发表于 Post on 2017-11-12 17:47:55 | 只看该作者 Only view this author
感谢楼主提供的好东西,有一个问题,如果所有的作业都跑完了。让服务器放空了一段时间然后把新的作业拷贝到0文件夹里,请问会自动开始吗?还是要重新, nohup sh run.sh一次?

99

帖子

0

威望

1382

eV
积分
1481

Level 4 (黑子)

PIG

13#
发表于 Post on 2017-11-13 09:11:10 | 只看该作者 Only view this author
用这个脚本改了个orca的
  1. #!/bin/bash
  2. #This script can do the ORCA Project automaticly.
  3. #To use this,here are some tips:
  4. #trees shows below
  5. #  ./run.sh
  6. #  ./nohup.out
  7. #  ./FAILED
  8. #  ./PASSED
  9. #  ./task/??/*.gjf
  10. #  ./pass/
  11. #  ./fail/
  12. #
  13. export PATH=/home/user/openmpi-2.0.2/bin:/home/user/module/ORCA/orca_4_0_0_linux_x86-64/:${PATH};
  14. export LD_LIBRARY_PATH=/home/user/openmpi-2.0.2/lib:${LD_LIBRARY_PATH};
  15. mkdir pass
  16. mkdir fail
  17. cd task
  18. echo "~~HERE WE GO~~"
  19. echo "~~GOOD LUCK~~"

  20. judge () {
  21.         grep -q "ORCA TERMINATED NORMALLY" $inp.out
  22.         if [ $? -eq 1 ]
  23.         then
  24.                 mv ${inp%.*}.* ../../fail/  
  25.                 echo "${inp%.*} FAILED"  >> ../../FAILED
  26.                 echo -e "!!!${inp%.*} FAILED!!!\n"
  27.         else
  28.                 /home/user/module/ORCA/orca_4_0_0_linux_x86-64/orca_2mkl `basename $inp .inp` -molden         
  29.                 mv ${gjf%.*}* ../../pass/
  30.                 echo "${inp%.*} calculation finished">> ../../PASSED
  31.                 echo "${inp%.*} calculation finished"
  32.         fi
  33. }

  34. for order in `ls -F | grep /`
  35. do        
  36.         cd $order
  37.         ls | grep -q .inp
  38.         if [ $? -eq 0 ]
  39.         then
  40.                 echo "@@STEP $order BEGIN!@@"
  41.                 for inp in *.inp
  42.                 do                     
  43.                         echo "${inp%.*} calculation start"
  44.                         time /home/user/module/ORCA/orca_4_0_0_linux_x86-64/orca $inp > $inp.out --allow-run-as-root  #非root运行就把--allow-run-as-root删掉
  45.                         wait
  46.                         judge
  47.                 done
  48.                 echo -e "@@STEP $order END@@\n"
  49.                 cd ..
  50.         else
  51.                 echo -e "***STEP $order No Input File!!***\n"
  52.                 cd ..
  53.         fi
  54. done

  55. echo "~~ALL DONE! HAVE FUN~~"
复制代码


58

帖子

0

威望

414

eV
积分
472

Level 3 能力者

14#
发表于 Post on 2017-11-13 09:37:45 | 只看该作者 Only view this author
谢谢。很实用的脚本,终于解放双手了

本版积分规则 Credits rule

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

GMT+8, 2024-11-23 19:57 , Processed in 0.750021 second(s), 25 queries , Gzip On.

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