一键把所有gjf文件转成xyz文件、把所有Gaussian输出文件转成gjf文件的脚本

一键把所有gjf文件转成xyz文件、把所有Gaussian输出文件转成gjf文件的脚本

文/Sobereva@北京科音

First release: 2020-Jan-28  Last update: 2020-Feb-5


本文提供笔者写的两个Linux下的Bash shell脚本,对实际研究有一定价值,都利用了Multiwfn程序进行格式转换,因此Multiwfn必须已恰当安装从而能通过Multiwfn命令直接启动。Multiwfn可以在http://sobereva.com/multiwfn免费下载(Linux下的安装方法见手册2.1.2节),不要用老于2019-Jun-28更新的版本。这俩脚本在Multiwfn的examples\scripts目录下也可以找到。

把本文的脚本稍微改写几行,就也可以利用Multiwfn在其它格式间进行转换,非常方便。Multiwfn支持的格式详见《详谈Multiwfn支持的输入文件类型、产生方法以及相互转换》(http://sobereva.com/379)。这俩脚本利用了Multiwfn的silent运行模式,这在Multiwfn手册5.2、5.3节有明确说明。


1 一键把所有gjf文件转成xyz文件

脚本下载:http://sobereva.com/attach/530/gjf2xyz.sh

这是把当前目录下所有Gaussian输入文件(gjf)转成xyz文件的脚本,直接运行即可。gjf文件应当是以笛卡尔坐标记录。

输出信息例子
Converting AlCl3.gjf to AlCl3.xyz ... (2 of 151)
Converting Aniline.gjf to Aniline.xyz ... (3 of 151)
Converting Azetidine.gjf to Azetidine.xyz ... (4 of 151)
Converting B2H6.gjf to B2H6.xyz ... (5 of 151)
Converting Benzaldehyde.gjf to Benzaldehyde.xyz ... (6 of 151)
Converting Benzene.gjf to Benzene.xyz ... (7 of 151)
Converting Benzonitrile.gjf to Benzonitrile.xyz ... (8 of 151)
...

2 一键把所有Gaussian输出文件转成gjf文件

脚本下载:http://sobereva.com/attach/530/out2gjf.sh

这是把当前目录下所有Gaussian输出文件(out)转成gjf文件的脚本,直接运行即可。运行之前必须将Multiwfn的settings.ini文件里的iloadGaugeom设为1(否则Multiwfn在载入out文件时不会从中读取数据)。得到的gjf文件里是默认关键词,应当根据实际情况进行修改。电荷和自旋多重度和out文件里一致(用了赝势的情况除外,需要自行手动修改gjf)。坐标是输出文件里最后一次输出的(如果有输入朝向的坐标则新生成的gjf里也是输入朝向的,没有的话就是标准朝向的。不了解朝向问题的话参看《谈谈Gaussian中的对称性与nosymm关键词的使用》http://sobereva.com/297)。

2020-Apr-10补充:对于2020-Apr-10及以后更新的Multiwfn,如果把iloadGaugeom设为2,则总是载入标准朝向下的坐标。

如果你的Gaussian输出文件是log后缀,把脚本里的out替换为log即可。也可以批量把诸如xyz、mol、mol2、pdb、fch、molden等各种Multiwfn支持的输入文件转成gjf,也是同样地把这个.sh脚本里的out替换成相应后缀即可。