请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 9928|回复: 39

[Gaussian/gview] 使用Gaussian时的几个实用脚本和命令

  [复制链接]

1万

帖子

25

威望

1万

eV
积分
34891

管理员

公社社长

发表于 2014-11-5 06:55:43 | 显示全部楼层 |阅读模式
使用Gaussian时的几个实用脚本和命令
文/Sobereva @北京科音  2014-Nov-5


这里提供几个平时Gaussian计算时常用的简单小脚本和命令,对于实际研究很有用处,也希望读者能举一反三。如果大家还有别的常用的脚本也欢迎在回帖中补充。


1 依次执行多个指令

比如要依次执行g09 < 1.gjf > 1.out、g09 < 2.gjf > 2.out、g09 < 3.gjf > 3.out,可以只输入一条命令,每条命令间用分号隔开:
g09 < 1.gjf > 1.out;g09 < 2.gjf > 2.out;g09 < 3.gjf > 3.out

也可以写一个文本文件比如t.sh,里面写上
g09 < 1.gjf > 1.out
g09 < 2.gjf > 2.out
g09 < 3.gjf > 3.out
然后用chmod +x *给它加上可执行权限,再输入./t.sh运行即可(后同)。

如果不让指令依次执行,而是同时执行,把每行命令后面都加上&即可。


2 一次性执行当前目录下所有Gaussian输入文件

把以下内容存到比如runall.sh里,然后执行之即可。会把每个.gjf文件用g09执行,生成同文件名但后缀为.out的输出文件。脚本会提示正在运行哪个文件,运行完之后还会输出用时多少。
  1. #!/bin/bash
  2. for inf in *.gjf
  3. do
  4. echo Running ${inf} ...
  5. time g09 < ${inf} > ${inf//gjf/out}
  6. echo ${inf} is finished
  7. echo
  8. done
复制代码

PS:如果是windows环境,需要写DOS批处理脚本,实现方式见《从高斯windows下的批量执行谈dos批处理文件》(http://sobereva.com/6


3 一次性把当前目录下所有chk文件转换为fchk文件

把以下内容存到比如chk2fch.sh里,然后执行之即可。会依次调用formchk把当前目录下每个chk转换为同文件名的.fchk文件。

  1. #!/bin/bash
  2. for inf in *.chk
  3. do
  4. formchk ${inf}
  5. done
复制代码


4 一次性执行当前文件夹下所有子目录里的Gaussian输入文件

此脚本会依次进入当前目录下的每个下一级目录,并把其中的.gjf都依次执行,产生的.out文件的文件名和所在位置都和输入文件相同。把以下内容存到比如folder_runall.sh里,然后执行它之即可。

  1. #!/bin/bash
  2. for i in `ls -F |grep /`
  3. do
  4. cd $i
  5. for inf in *.gjf
  6. do
  7. echo Running ${inf} ...
  8. time g09 < ${inf} > ${inf//gjf/out}
  9. echo ${inf} is finished
  10. echo
  11. done
  12. cd ..
  13. done
复制代码

上面的脚本只能进入下一级的目录,而再下一级的目录(或者更深的目录)里的.gjf文件,以及当前目录下的.gjf文件都不会执行。如果想把这些.gjf也都执行,应当把以下内容存到比如allfolder_runall.sh里,然后执行它。为清楚起见,每次进入新的目录时屏幕上都会提示。
  1. #!/bin/bash
  2. for i in `ls -R |grep :|tr : " "`
  3. do
  4. echo
  5. cd $i
  6. echo "****** Entered" $i folder;echo
  7. for inf in *.gjf
  8. do
  9. echo Running ${inf} ...
  10. time g09 < ${inf} > ${inf//gjf/out}
  11. echo ${inf} is finished;echo
  12. done
  13. cd -
  14. done
复制代码


5 字符替换

下面这个方法可以批量修改计算的级别和任务类型。

例如将当前目录下包括任意级子目录下的.gjf中的M062X替换为B3LYP,执行:sed -i "s/M062X/B3LYP/g" `grep M062X -rl *|grep .gjf`

如果要替换的字符有*、/这样的符号,需要前面加上\避免被sed转义。比如6-31G**需要写成6-31G\*\*,M062X/cc-pVTZ需要写成M062X\/cc-pVTZ。另外,如果有括号或空格出现,那么grep后面应该用双引号括住。
例如把MP2/6-311+G(2d,p)都替换成M062X/6-31G*:sed -i "s/MP2\/6-311+G(2d,p)/M062X\/6-31G\*/g" `grep "MP2/6-311+G(2d,p)" -rl *|grep .gjf`
例如把opt freq都替换成NMR关键词:sed -i "s/opt freq/NMR/g" `grep "opt freq" -rl *|grep .gjf`

如果只想替换当前目录下的.gjf,则把-rl改成-l即可。如果想处理所有文件而不仅限于.gjf,则把|grep .gjf部分删掉即可。


6 批量删除文件

用下面的命令可以删除当前目录和任意级子目录下的所有.out文件
find ./ -name "*.out"|xargs rm -f


7 显示几何优化收敛情况

这个很简单。比如C4H8.out是几何优化输出文件,执行
grep Converged C4H8.out -A4
就会把当前的优化收敛情况输出出来。

如果执行
grep Converged C4H8.out -c
就会输出匹配的次数,也就是相当于显示优化到了第几步了。

也可以执行grep -E "out of|Converged" C4H8.out -A4。这样步数和收敛情况都会输出。

评分

参与人数 16eV +69 收起 理由
Chenglong_li + 5 谢谢
江月照相似 + 3 赞!
ericzhou93 + 5 好物!
Krypto_N + 4 好物!
zsu007 + 15 赞!
尚艳磊 + 1
aqhuangry + 5 赞!
一直在路上 + 4 好物!
琦思2007 + 5
greatzdk + 5 谢谢
chittyda + 4 牛!
fishhope + 1 赞!
小菜鸟求关照 + 5 赞!
bingdiaodeleier + 2
ter20 + 4
captain + 1 好物!

查看全部评分

北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)
计算化学公社论坛:http://bbs.keinsci.com(高水平、高人气、综合性计算化学交流论坛)
思想家公社QQ群1号:18616395,2号:466017436。用于讨论理论、计算化学,两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。研究方向和理论、计算化学无关者勿加,以免浪费宝贵的空位

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

19

帖子

0

威望

850

eV
积分
869

Level 4 (黑子)

发表于 2014-11-5 08:39:56 | 显示全部楼层
学习了,值得推荐!

61

帖子

0

威望

1317

eV
积分
1378

Level 4 (黑子)

发表于 2014-11-5 08:41:53 | 显示全部楼层
很使用。谢谢!:)

148

帖子

0

威望

2584

eV
积分
2732

Level 5 (御坂)

发表于 2014-11-5 09:01:29 | 显示全部楼层
方便了很多

22

帖子

0

威望

320

eV
积分
342

Level 3 能力者

发表于 2014-11-5 10:01:21 | 显示全部楼层
楼主不是一般的牛

177

帖子

0

威望

1556

eV
积分
1733

Level 5 (御坂)

发表于 2014-11-5 11:49:23 | 显示全部楼层
如果能评100分,我一定评120分

15

帖子

0

威望

158

eV
积分
173

Level 3 能力者

发表于 2015-3-18 14:15:14 | 显示全部楼层
例如将当前目录下包括任意级子目录下的.gjf中的M062X替换为B3LYP,执行:sed -i "s/M062X/B3LYP/g" `grep M062X -rl *|grep .gjf`

我在linux下执行:sed -i "s/pbe1pbe/B3LYP/g" `grep pbe1pbe -rl *|grep .gjf`时,出现如下错误:sed: no input file。可是我的当前目录下有13个gjf文件呢!

36

帖子

0

威望

871

eV
积分
907

Level 4 (黑子)

发表于 2015-3-18 15:11:14 | 显示全部楼层
脚本1可以都简化成 g09 1.gjf &; g09 2.gjf &;  g09 3.gjf &  和
g09 1.gjf
g09 2.gjf
g09 3.gjf
吗?   到用时候试一下

1万

帖子

25

威望

1万

eV
积分
34891

管理员

公社社长

 楼主| 发表于 2015-3-18 17:59:04 | 显示全部楼层
jiameiye 发表于 2015-3-18 15:11
脚本1可以都简化成 g09 1.gjf &; g09 2.gjf &;  g09 3.gjf &  和
g09 1.gjf
g09 2.gjf

也可以,这样的话输出文件名会和输入文件名相同,并且后缀是log(对于Linux版来说)
北京科音自然科学研究中心:http://www.keinsci.com  致力于计算化学的发展和传播,不定期开办各层次量子化学、分子动力学、波函数分析与Multiwfn程序等主题的培训。欢迎加入“北京科音”微信公众号获取培训最新消息和计算化学资讯
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最流行的量子化学波函数分析程序)
计算化学公社论坛:http://bbs.keinsci.com(高水平、高人气、综合性计算化学交流论坛)
思想家公社QQ群1号:18616395,2号:466017436。用于讨论理论、计算化学,两个群讨论范畴相同,可加入任意其一但不可都加入,申请信息必须注明具体研究方向,否则一概不批。研究方向和理论、计算化学无关者勿加,以免浪费宝贵的空位

此账号为诸Sobereva共用
Money and papers are rubbish, get a real life!

36

帖子

0

威望

871

eV
积分
907

Level 4 (黑子)

发表于 2015-3-18 19:07:36 | 显示全部楼层
谢谢。

39

帖子

0

威望

957

eV
积分
996

Level 4 (黑子)

发表于 2015-3-21 16:20:18 | 显示全部楼层
谢谢分享!

289

帖子

0

威望

2890

eV
积分
3179

Level 5 (御坂)

发表于 2015-5-9 13:24:51 | 显示全部楼层
很适合初学者的脚本

593

帖子

0

威望

877

eV
积分
1470

Level 4 (黑子)

发表于 2015-5-9 15:59:11 来自手机 | 显示全部楼层
大神给力 又学到了

29

帖子

0

威望

2376

eV
积分
2405

Level 5 (御坂)

发表于 2015-5-30 16:26:45 | 显示全部楼层
1 依次执行多个指令
并行  ls *gjf|xargs -I @ echo "nohup g09 @ &" >list;sh list
串行  ls *gjf|xargs -I @ echo -e "nohup g09 @ &\nwait\n" >list;sh list
python perl学习,推荐微信公众号 pythonperl

29

帖子

0

威望

2376

eV
积分
2405

Level 5 (御坂)

发表于 2015-5-30 16:28:07 | 显示全部楼层
3 一次性把当前目录下所有chk文件转换为fchk文件
ls *.chk|xargs -I @ echo "formchk  @"  >list;sh list
python perl学习,推荐微信公众号 pythonperl
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2018-10-19 18:13 , Processed in 0.201108 second(s), 25 queries .

快速回复 返回顶部 返回列表