计算化学公社

 找回密码 Forget password
 注册 Register
Views: 47504|回复 Reply: 43

[综合交流] 一键把所有gjf文件转成xyz文件、把所有Gaussian输出文件转成gjf文件的脚本

  [复制链接 Copy URL]

4万

帖子

99

威望

4万

eV
积分
89946

管理员

公社社长+计算化学玩家

发表于 Post on 2020-1-27 09:50:56 | 显示全部楼层 Show all |阅读模式 Reading model
一键把所有gjf文件转成xyz文件、把所有Gaussian输出文件转成gjf文件的脚本

文/Sobereva@北京科音
First release: 2020-Jan-28  Last update: 2022-Oct-18


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

把本文的脚本稍微改写几行,就也可以利用Multiwfn在其它格式间进行转换,非常方便。Multiwfn支持的格式详见《详谈Multiwfn支持的输入文件类型、产生方法以及相互转换》(http://sobereva.com/379)。笔者十分建议仔细看看《详谈Multiwfn的命令行方式运行和批量运行的方法》(http://sobereva.com/612),里面对通过命令行和脚本批量运行Multiwfn做了特别透彻的说明,看过之后就可以游刃有余地改写本文的脚本。


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。如果把iloadGaugeom设为2,则总是载入标准朝向下的坐标)。

上面的脚本产生的Gaussian输入文件是笛卡尔坐标的,如果要输出为内坐标的输入文件,改用此脚本:http://sobereva.com/attach/530/out2gjf_zmat.sh。注意对某些体系,比如乙炔,原理上其结构就没法用内坐标描述(除非引入虚原子),对这样的体系无法成功产生Gaussian输入文件。

如果你的Gaussian输出文件是log后缀,把脚本里的out替换为log即可。也可以批量把诸如xyz、mol、mol2、pdb、gro、wfn、wfx、cub等各种Multiwfn支持的输入文件转成gjf,也是同样地把这个.sh脚本里的out替换成相应后缀即可(对于把fch、molden、mwfn等含有基函数信息的波函数文件转成gjf文件,应当在脚本的${inf//out/gjf}下面插入内容一行,内容是n,代表不把当前波函数作为初猜信息写入gjf)。

Multiwfn产生的gjf里关键词默认为B3LYP/6-31G*。可以按照《使用Gaussian时的几个实用脚本和命令》(http://sobereva.com/258)里第5节所述的方法批量把所有gjf文件里的关键词替换成实际要用的关键词。如果当前目录下有个template.gjf文件,并且其中坐标部分用[geometry]或[GEOMETRY]代替,则这个文件会自动被当做模板文件产生新的gjf,而含有[geometry]或[GEOMETRY]的这一行会被替换为当前体系的坐标。如果输入文件里某一行或几行里有[name]字样,则这六个字符会被替换为新产生的输入文件名(不含后缀)。template.gjf里的净电荷和自旋多重度部分随意写,不会被考虑。允许使用template.gjf的设计给产生特殊的输入文件的情况来了极大的灵活性。下面是个用template.gjf的例子,方法用B3LYP-D3(BJ),给Ag用SDD赝势基组,给C H O用6-311G*,任务是优化和振动分析,并产生wfn和chk文件,其文件名和你创建的gjf的文件名相同。

%chk=C:\[name].chk
#p b3lyp/genecp em=GD3BJ opt freq out=wfn

niconiconi

0 1
[geometry]

Ag
SDD
****
C H O
6-311G*
****

Ag
SDD

C:\[name].wfn
   <---此处有空行
   <---此处有空行

评分 Rate

参与人数
Participants 11
eV +41 收起 理由
Reason
expix0 + 5 好物!
wangjinxue1989 + 3 谢谢
GN642716820 + 3 好物!
chessrein + 3 とてもいい!
醉翁 + 4 好物!
车轮滚滚来 + 4 好物!
leebo + 5 好物!
liuyuje714 + 1 GJ!
zsu007 + 5 赞!
plus + 3
978142355 + 5 好物!

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班,内容介绍以及往届资料购买请点击链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的最佳途径。培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

307

帖子

1

威望

5737

eV
积分
6064

Level 6 (一方通行)

发表于 Post on 2020-1-27 11:48:36 | 显示全部楼层 Show all
谢谢社长的分享!

4万

帖子

99

威望

4万

eV
积分
89946

管理员

公社社长+计算化学玩家

 楼主 Author| 发表于 Post on 2020-1-28 05:26:19 | 显示全部楼层 Show all
更新了此文,加入了新的脚本
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班,内容介绍以及往届资料购买请点击链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的最佳途径。培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

99

帖子

0

威望

2635

eV
积分
2734

Level 5 (御坂)

发表于 Post on 2020-1-28 12:16:53 | 显示全部楼层 Show all
tanks Mr sobereva for share scripts

1188

帖子

5

威望

2758

eV
积分
4046

Level 6 (一方通行)

发表于 Post on 2020-1-31 14:38:32 | 显示全部楼层 Show all
请问老师,有现成的工具可以方便将Gaussian优化的轨迹转化成多帧xyz的么?谢谢!(虽然手动写脚本也很方便...)

4万

帖子

99

威望

4万

eV
积分
89946

管理员

公社社长+计算化学玩家

 楼主 Author| 发表于 Post on 2020-2-1 02:11:56 | 显示全部楼层 Show all
snljty 发表于 2020-1-31 14:38
请问老师,有现成的工具可以方便将Gaussian优化的轨迹转化成多帧xyz的么?谢谢!(虽然手动写脚本也很方便.. ...

Gauopt2xyz.rar (324.33 KB, 下载次数 Times of downloads: 83)
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班,内容介绍以及往届资料购买请点击链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的最佳途径。培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

1188

帖子

5

威望

2758

eV
积分
4046

Level 6 (一方通行)

发表于 Post on 2020-2-1 08:28:40 | 显示全部楼层 Show all
本帖最后由 snljty 于 2021-7-24 16:48 编辑
sobereva 发表于 2020-2-1 02:11
当年写的程序,是否兼容目前较新版本我不确定

谢谢老师!这个功能会加入Multiwfn么?好像有个小问题,优化正常结束后目前的Gaussian(旧版本没测试)会在后面再输出一次最后一次的坐标,这样这个坐标会被读两遍。稍微改了一下,附件里的程序可以同时读取Input orientation和Standard orientation,做了简单的错误处理和支持命令行参数或者交互式输入文件名,同时解决了最后一帧坐标会读两次的问题。顺便分享给大家。
就是一个小麻烦,使用的Gaussian输出文件换行符必须对应该系统。
更新了一下软件结果之前的30多次下载数没了。。。顺便自己两年前的代码好丑
Gau_opt_traj_to_xyz.zip (98.18 KB, 下载次数 Times of downloads: 19)

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
冰释之川 + 5 GJ!

查看全部评分 View all ratings

1061

帖子

16

威望

5786

eV
积分
7167

Level 6 (一方通行)

計算化学の社畜

发表于 Post on 2020-2-2 10:04:37 | 显示全部楼层 Show all
本帖最后由 冰释之川 于 2020-2-2 10:23 编辑

这里分享一下 windows下如何利用multiwfn将Gaussian的输入文件(*.gjf)批量转换成ORCA输入文件(*.inp):

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /r %%i in (*.gjf) do (
  4. echo;
  5. echo Entering Path: [%%i]
  6. Multiwfn %%i < inputstream.txt > nul
  7. move orca.inp %%~pi > nul
  8. rename %%~pi\orca.inp %%~ni.inp
  9. if !errorlevel!==0 (
  10. echo Conversion of %%~ni.gjf to %%~ni.inp finished at !date! !time!) else (
  11. echo Warning: Conversion of %%~ni.gjf to %%~ni.inp failed at !date! !time!)
  12. )
  13. echo;
  14. echo;
  15. pause
复制代码
使用方法:
(1)将multiwfn程序、本脚本(Gen_ORCA_input.bat及inputstream.txt)以及待转换的*.gjf文件放在同一目录下。
【之所以要把multiwfn放在工作目录下,是因为有些同学不会设置windows下的环境变量  囧Rz】
(2)修改inputstream.txt (默认是产生ORCA输入文件),该文件记录的是手动使用multiwfn进行文件格式转换时的键盘输入信息,如果你要将*.gjf转成其它输出格式,需要自行修改。
(3)双击Gen_ORCA_input.bat运行之,你将会看到该目录下产生了一系列同名*.inp输入文件。

P.s.
(1)由于很多童鞋都是利用ORCA程序计算高精度单点能,这里我一并附上批量提取ORCA输出文件(*.log)单点能的脚本(Extract_SPE_ORCA.sh)作为福利。
(2)考虑到有很多小白还不会批量提交计算,这里给出PBS脚本以及批量提交脚本作为参考:
【orca.pbs】
  1. #!/bin/bash
  2. #PBS -N ORCA
  3. #PBS -l nodes=node01:ppn=32
  4. #PBS -l walltime=1440:00:00
  5. #PBS -q gentai
  6. #PBS -o jobID.$PBS_JOBID

  7. cd $PBS_O_WORKDIR
  8. touch jobID.$PBS_JOBID

  9. FILENAME=NR-2B_r_opted.inp   # input file name

  10. /home/yjy/softwares/orca-4.2.1/orca $FILENAME  > ${FILENAME/%inp/log} # running ORCA-4.2.1
  11. wait
  12. orca_2mkl ${FILENAME/%.inp} -molden
  13. wait
  14. rm ${FILENAME/%inp/gbw}
复制代码

【folder_qsub_all.sh】使用时,应和Gen_ORCA_input.bat放在同一目录下。
  1. #!/bin/bash
  2. function travel_dir(){
  3. initial_path=$(pwd)
  4. file_counter=0
  5. folder_counter=0
  6. file_extension=pbs     # Set target extension
  7. echo
  8. echo Travelling all subdirectories in the path below to find all "*."$file_extension files:
  9. echo $(pwd)
  10. for dir in $(ls -R | grep :| tr : " ")
  11. do
  12.   cd $dir
  13.   if ls *.$file_extension 1> /dev/null 2>&1;then
  14.     serial=1
  15.     let folder_counter++
  16.         echo
  17.     echo "*** No.$folder_counter folder *** >>> Entered" $dir
  18.         echo "      V V V V"
  19.         for file in *.$file_extension
  20.         do
  21.           echo "[$serial] Running $file file..."
  22.           let file_counter++
  23.           let serial++
  24.           process      # Processing files here
  25.         done
  26.   fi
  27.   cd $initial_path
  28. done
  29. echo
  30. echo "~~~~ Returned to the initial path... ~~~~"
  31. echo $initial_path
  32. echo
  33. echo "###### Total $file_counter *.$file_extension files have been processed ######"
  34. echo
  35. }

  36. function process(){
  37. qsub < $file   # Submit PBS jobs
  38. echo "    ==> $file has been submitted!"
  39. }

  40. echo
  41. echo "############  Running PBS batch script  ############"


  42. travel_dir  # Running travel_dir and process functions
复制代码


最后附上脚本包
Gen_ORCA_input.rar (899 Bytes, 下载次数 Times of downloads: 78)

评分 Rate

参与人数
Participants 3
eV +17 收起 理由
Reason
chessrein + 2 谢谢
snljty + 5 GJ!
sobereva + 10 精品内容

查看全部评分 View all ratings

Stand on the shoulders of giants

30

帖子

0

威望

604

eV
积分
634

Level 4 (黑子)

发表于 Post on 2020-2-10 04:10:58 | 显示全部楼层 Show all
想想自己一个一个地把Gaussian输出文件另存为gjf文件的场景,真是在浪费大好青春。

246

帖子

0

威望

3696

eV
积分
3942

Level 5 (御坂)

发表于 Post on 2020-2-24 11:11:30 | 显示全部楼层 Show all
openbabel可以支持很多种格式间的转化

78

帖子

0

威望

607

eV
积分
685

Level 4 (黑子)

发表于 Post on 2020-2-25 16:54:47 | 显示全部楼层 Show all
archer 发表于 2020-2-24 11:11
openbabel可以支持很多种格式间的转化

这个挺好,最新是2016年的

4万

帖子

99

威望

4万

eV
积分
89946

管理员

公社社长+计算化学玩家

 楼主 Author| 发表于 Post on 2020-4-10 18:30:04 | 显示全部楼层 Show all
补充了一句话

2020-Apr-10补充:对于2020-Apr-10及以后更新的Multiwfn,如果把iloadGaugeom设为2,则总是载入标准朝向下的坐标。
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班,内容介绍以及往届资料购买请点击链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的最佳途径。培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

2

帖子

0

威望

755

eV
积分
757

Level 4 (黑子)

发表于 Post on 2020-5-8 14:34:04 | 显示全部楼层 Show all
老师,我有个疑问
我使用这个脚本转换gjf到xyz的时候,脚本运行非常慢,半分钟才能完成一个
转换出来的文件倒是没有问题
请问是我Multiwfn设置的不太对嘛?或者因为要调用Multiwfn所以的确比较慢

4万

帖子

99

威望

4万

eV
积分
89946

管理员

公社社长+计算化学玩家

 楼主 Author| 发表于 Post on 2020-5-9 10:01:45 | 显示全部楼层 Show all
ceyu 发表于 2020-5-8 14:34
老师,我有个疑问
我使用这个脚本转换gjf到xyz的时候,脚本运行非常慢,半分钟才能完成一个
转换出来的文 ...

我从未遇到此问题,正常情况下瞬间就能转换完
你先升到Multiwfn最新版本,在Multiwfn窗口里一步一步敲命令,看到底哪一步导致非常慢,亦或是其它什么原因导致的
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办最高质量的各种计算化学类培训:初级量子化学培训班基础(中级)量子化学培训班分子动力学与GROMACS培训班量子化学波函数分析与Multiwfn程序培训班,内容介绍以及往届资料购买请点击链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的最佳途径。培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取培训最新消息、避免错过网上最有价值的计算化学文章!
欢迎加入人气最高、水准最高的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人,讨论范畴相同
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(最强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

57

帖子

0

威望

657

eV
积分
714

Level 4 (黑子)

发表于 Post on 2020-6-10 18:23:57 | 显示全部楼层 Show all
十分感谢sob老师的脚本,今天刚安装上Multiwfn, 在使用out2gjf.sh时只能输出前面几行关键词,没有输出坐标,已经将Multiwfn的setting中的iloadGaugeom改为1,请问sob老师出现这种情况的可能原因是什么呢?  在运行gjf2xyz.sh是可以正常输出的。

本版积分规则 Credits rule

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

GMT+8, 2023-2-6 05:20 , Processed in 0.244635 second(s), 31 queries .

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