计算化学公社

标题: 批量转换量子化学软件I/O文件以及提取输出信息的Shell脚本 [打印本页]

作者
Author:
冰释之川    时间: 2020-2-5 23:24
标题: 批量转换量子化学软件I/O文件以及提取输出信息的Shell脚本
本帖最后由 冰释之川 于 2024-11-3 08:03 编辑

之前看到了社长写的一键把所有gjf文件转成xyz文件、把所有Gaussian输出文件转成gjf文件的脚本:
http://sobereva.com/530http://bbs.keinsci.com/thread-16161-1-1.html

于是乎本人心血来潮,基于Multiwfn编写了多种常用量子化学程序间I/O文件转换的脚本包
1 Convert [*.gjf/*.xyz/*.fchk/*.fch/*.out/*.log] files to [*.gjf/*.inp/*.mop/*.xyz] files by Multiwfn
2 Convert [*.fchk/*.fch] files to [*.mkl] files by Multiwfn
3 Interconvert between [*.fchk/*.fch] and [*.molden] files by Multiwfn
4 Interconvert between [*.fchk] and [*.chk] Gaussian checkpoint files by formchk/unfchk tool
5 Interconvert between [*.gbw] and [*.mkl] ORCA files by orca_2mkl tool
6 Convert [*.gbw] files to [*.molden] files by orca_2mkl tool

(, 下载次数 Times of downloads: 336)


另外附上提取ORCA和Gaussian输出文件信息,利用freqchk重新计算热力学量的提取脚本
1 Extract single point energy (SPE) of DFT and HF from Gaussian16 output files
2 Extract Zero-point energy (ZPE) and thermal correction to G, H and U (Gcorr, Hcorr, and Ucorr) from Gaussian16 output files
3 Extract TDDFT information from Gaussian16 output files
4 Extract SPE from ORCA-4.2.1 output files
5 Extract Zero-point energy (ZPE) and thermal correction to G, H and U (Gcorr, Hcorr, and Ucorr) from ORCA-4.2.1 output files [ updated on 2020.04.03 ]
6 Recalculate Gcorr and Hcorr by using freqchk tool and Gaussian16 [*.fchk] files
7 Detect the status of Gaussian optimization outputs (imaginary frequency, opt/SCF convergency, etc.)
8 Extract SPE from xtb-6.3(pre) output files  [ updated on 2020.04.07 ]
9 Calculate ZPE, Gcorr, Hcorr, and Ucorr by using Shermo 2.0 [ updated on 2020.05.12 ]

P.s. Shermo 2.0 下载地址为http://sobereva.com/soft/shermo/
在~/.bashrc中设置Shermo 2.0的环境变量:
  1. export Shermopath=/sob/Shermo_2.0
  2. export PATH=$PATH:/sob/Shermo_2.0
复制代码

(, 下载次数 Times of downloads: 229)

#PS 感谢Jingdan Chen同学对Extraction_Scripts.sh脚本进行修订,修订日志如下
  1. ```ORCA version 6.0.0

  2. Line 272-289, Function extr_thermal_orca_process
  3. 1. 如果ORCA的优化任务包含Calc_Hess或Recalc_Hess关键词,与Gaussian不同,在每次频率分析后ORCA都会以相同格式输出热力学量,因此原脚本会出现拉出不止一个数值的情况,导致拿到的数值异常且有报错信息(但程序会正常跑完)。修改:  awk 加入END机制,
  4. 2. 修改: printf 补充 \n换行

  5. Line 74-75
  6. 1. 修改: 补充mainchoice == 5 的分析结束后的信息输出
  7. ```
复制代码
(, 下载次数 Times of downloads: 3) (Jingdan Chen修订版)



批量删除文件脚本 [ added on 2020.02.10 ]
(, 下载次数 Times of downloads: 86)


批量为*.gjf/*.inp/*.xyz/*.mop生成PBS作业提交文件的脚本(请酌情修改PBS模板文件)[ updated on 2022.06.23 ]
PBS模板文件为:Gaussian.pbs, ORCA.pbs, MOPAC.pbs, xtb.pbs, xtb_md.pbs和xtb_md_temp_search.pbs
其中folder_qsub_all.sh为批量提交PBS任务的脚本
(, 下载次数 Times of downloads: 125)


具体使用方法:
(1) 把*.sh脚本放到工作目录下
(2) 用bash命令 运行之
(3) 脚本会深度遍历该目录下所有的子目录,并处理目标文件。

如果发现Bug,烦请邮箱联系本人












作者
Author:
zsu007    时间: 2020-2-6 08:25

作者
Author:
冰释之川    时间: 2020-2-7 10:27
Extract_Scripts.sh 已更新,增加了下述功能:
Detect the status of Gaussian optimization outputs (imaginary frequency, opt/SCF convergency, etc.)
作者
Author:
exity    时间: 2020-2-7 11:55
冰冰姐好腻害!
作者
Author:
ggdh    时间: 2020-2-7 18:26
没有介绍用法啊,萌新一脸懵逼
作者
Author:
冰释之川    时间: 2020-2-7 19:00
ggdh 发表于 2020-2-7 18:26
没有介绍用法啊,萌新一脸懵逼

钟叔是大蟒+壳大神,瞟一眼代码就知道怎么用了
作者
Author:
小苹果    时间: 2020-2-8 15:48
非常好用,输出的坐标是小数点后6位,要是能完整取出小数点后10位就更好了,另外,输出的gjf文件怎么批量指定关键词或%部分,谢谢!
作者
Author:
冰释之川    时间: 2020-2-8 15:59
本帖最后由 冰释之川 于 2020-2-8 16:01 编辑
小苹果 发表于 2020-2-8 15:48
非常好用,输出的坐标是小数点后6位,要是能完整取出小数点后10位就更好了,另外,输出的gjf文件怎么批量指 ...

这是调用Multiwfn批量输出gjf的,要取10位小数得改Multiwfn了
关于输出的gjf如何批量改关键词,我这边提供一种方法,就是利用notepad++对要编辑的*.gjf批量打开,然后利用正则表达式查找功能进行对指定行的字符串替换(这里我对第4和第5行进行替换)。

(, 下载次数 Times of downloads: 109) (, 下载次数 Times of downloads: 100) (, 下载次数 Times of downloads: 102)



作者
Author:
小苹果    时间: 2020-2-8 16:42
冰释之川 发表于 2020-2-8 15:59
这是调用Multiwfn批量输出gjf的,要取10位小数得改Multiwfn了
关于输出的gjf如何批量改关键词,我 ...

奥利给!我用Ultraedit也可以,省了不少功夫,非常感谢,元宵节平安快乐!
作者
Author:
sobereva    时间: 2020-2-10 07:10
小苹果 发表于 2020-2-8 15:48
非常好用,输出的坐标是小数点后6位,要是能完整取出小数点后10位就更好了,另外,输出的gjf文件怎么批量指 ...

Gaussian输出文件里给出的就是6位,输出10位没有意义
作者
Author:
冰释之川    时间: 2020-2-10 19:54
2020.2.10增加:
(1)批量删除文件脚本
(2)批量为*.gjf/*.inp/*.xyz/*.mop生成PBS作业提交文件的脚本(请酌情修改模板文件)
作者
Author:
小苹果    时间: 2020-2-11 01:31
sobereva 发表于 2020-2-10 07:10
Gaussian输出文件里给出的就是6位,输出10位没有意义

一般的计算可能不需要,但如果取优化后几何做单点能量计算时,6和10位有时的差别可能不能忽略,比如比较各垂直或绝热态的能量,一般从正常终结的结果文件最后的最后坐标取出。像下边这样
\0,1\C,-0.2053340042,0.0481801158,0.\H,0.3483874757
,-0.8860944766,0.\H,-1.2892620756,-0.0010504554,0.\C,0.4570426498,1.19
83902093,0.\H,1.5384022319,1.2780758788,0.\Cl,-0.3273554376,2.76350264
8,0.\\Version=ES64L-G09RevD.01\State=1-A'\HF=-538.1853943\
作者
Author:
小苹果    时间: 2020-2-11 01:35
冰释之川 发表于 2020-2-10 19:54
2020.2.10增加:
(1)批量删除文件脚本
(2)批量为*.gjf/*.inp/*.xyz/*.mop生成PBS作业提交文件的脚本(请 ...

直接从Gaussian结果文件中批量提取TDDFT的S1态的能量和振子强度输出到txt或excel文件怎么写,在论坛中找了些,但还是没办法,对shell编程一无所知,可否请老师指点下,万分感谢。
作者
Author:
sobereva    时间: 2020-2-11 11:54
小苹果 发表于 2020-2-11 01:31
一般的计算可能不需要,但如果取优化后几何做单点能量计算时,6和10位有时的差别可能不能忽略,比如比较 ...

6和10位的差异可以充分忽略,凭我的经验小数点第七位之后的差异绝对不可能造成在电子态能量横向比较问题上产生有对研究实际问题可察觉的差异,几何优化verytight收敛限的最大位移阈值都有0.000006 Bohr。
没必要从末尾读取,非常麻烦。倘若出于特殊目的真需要更高精度的坐标,还不如从fch里读,把fch作为Multiwfn输入文件即可。
作者
Author:
sobereva    时间: 2020-2-11 12:05
小苹果 发表于 2020-2-11 01:35
直接从Gaussian结果文件中批量提取TDDFT的S1态的能量和振子强度输出到txt或excel文件怎么写,在论坛中找 ...

稍微google一下grep和awk的使用立马明白
作者
Author:
小苹果    时间: 2020-2-11 12:12
sobereva 发表于 2020-2-11 11:54
6和10位的差异可以充分忽略,凭我的经验小数点第七位之后的差异绝对不可能造成在电子态能量横向比较问题 ...

好的, 谢谢老师。
作者
Author:
冰释之川    时间: 2020-2-11 12:33
小苹果 发表于 2020-2-11 01:35
直接从Gaussian结果文件中批量提取TDDFT的S1态的能量和振子强度输出到txt或excel文件怎么写,在论坛中找 ...

脚本已更新:
Extract TDDFT information from Gaussian16 output files  [ added on 2020.02.10 ]
作者
Author:
小苹果    时间: 2020-2-11 15:01
冰释之川 发表于 2020-2-11 12:33
脚本已更新:
Extract TDDFT information from Gaussian16 output files  [ added on 2020.02.10 ]

非常感谢,我学习学习。
作者
Author:
冰释之川    时间: 2020-4-3 22:10
本帖最后由 冰释之川 于 2020-4-8 08:46 编辑

2020.04.07更新:
在Extraction_Scripts.sh脚本中新增对ORCA输出的热力学量的提取以及对xtb输出的SPE进行提取
5 Extract Zero-point energy (ZPE) and thermal correction to G, H and U (Gcorr, Hcorr, and Ucorr) from ORCA-4.2.1 output files [updated on 2020.04.03 ]
8 Extract SPE from xtb-6.3(pre) output files [ updated on 2020.04.07 ]


作者
Author:
冰释之川    时间: 2020-5-12 21:46
2020.05.12更新:
在Extraction_Scripts.sh脚本中新增利用Shermo 2.0对Gaussian/ORCA/GAMESS-US/NWChem频率任务输出文件计算热力学校正量。
9 Calculate ZPE, Gcorr, Hcorr, and Ucorr by using Shermo 2.0 [ updated on 2020.05.12 ]
作者
Author:
SherryLiu    时间: 2020-5-12 23:23
附上批量修改gjf关键词的bash脚本,是在sob老师的基础上修改的

#!/bin/bash
for inf in *.gjf
do

sed '1c %nprocshared=64' ${inf} > ${inf}.txt
sed '2c %mem=32GB' ${inf}.txt > ${inf}
sed '4c #p M062X/Def2TZVP SCRF(Solvent=Ethanol) int=ultrafine freq geom=allcheck guess=read' ${inf} > ${inf}.txt

cp ${inf}.txt ${inf}
done
rm *.txt
作者
Author:
Aridea    时间: 2021-5-16 01:55
666,很棒的脚本,谢谢分享!
作者
Author:
skdmax    时间: 2021-5-16 08:23
OPT FREQ任务的out文件可以转化成gjf文件吗?我用这个时候转出来都是空白的。
作者
Author:
冰释之川    时间: 2021-5-17 08:18
skdmax 发表于 2021-5-16 08:23
OPT FREQ任务的out文件可以转化成gjf文件吗?我用这个时候转出来都是空白的。

可以啊,我一直在用优化任务的输出文件转成gjf,你贴一下你的*.out文件看看
作者
Author:
skdmax    时间: 2021-5-17 16:50
谢谢您


作者
Author:
冰释之川    时间: 2021-5-18 08:16
skdmax 发表于 2021-5-17 16:50
谢谢您

(, 下载次数 Times of downloads: 1)
我这边转换没问题啊

作者
Author:
万卷书万里路    时间: 2021-6-24 19:31
冰释之川 发表于 2020-2-8 15:59
这是调用Multiwfn批量输出gjf的,要取10位小数得改Multiwfn了
关于输出的gjf如何批量改关键词,我 ...

请问冰老师,我用multiwfn批量生成gjf文件以后,按照这里的方法用notepad++把第一行换成了新的三行(chk路径、内存、关键词),在集群上提交一直报错。
我在windows下的notepad++窗口中看到的是三行,但是报错内容显示我的输入文件有错,显示的是前三行在一行里。
然后我在集群的ssh终端窗口中打开输入文件,显示是这样:
(, 下载次数 Times of downloads: 48)

这些 ^M, 不知道为什么在notepad++里就看不到,请问是格式的问题么?
谢谢老师!



作者
Author:
冰释之川    时间: 2021-6-24 20:46
万卷书万里路 发表于 2021-6-24 19:31
请问冰老师,我用multiwfn批量生成gjf文件以后,按照这里的方法用notepad++把第一行换成了新的三行(chk ...

linux命令dos2unix filename,直接把文件转换为unix格式
作者
Author:
万卷书万里路    时间: 2021-6-30 17:19
冰释之川 发表于 2021-6-24 20:46
linux命令dos2unix filename,直接把文件转换为unix格式

谢谢老师!处理好了
作者
Author:
Y30181009    时间: 2021-7-16 18:15
冰老师在使用Extraction_Scripts.sh 的子功能3 Extract TDDFT information from Gaussian16 output files输出S1信息的时候没有输出S1单点能,冰老师如果想输出S1单点能的话需要怎么改一下脚本?
作者
Author:
冰释之川    时间: 2021-7-17 21:22
Y30181009 发表于 2021-7-16 18:15
冰老师在使用Extraction_Scripts.sh 的子功能3 Extract TDDFT information from Gaussian16 output files输 ...

自行抓取 Total Energy, E(TD-HF/TD-KS) = 等号后面的数值
作者
Author:
Y30181009    时间: 2021-7-17 22:01
谢谢老师,我试试看
作者
Author:
冰释之川    时间: 2024-11-3 08:04
#PS 感谢Jingdan Chen同学对Extraction_Scripts.sh脚本进行修订,修订日志如下:
  1. ```ORCA version 6.0.0

  2. Line 272-289, Function extr_thermal_orca_process
  3. 1. 如果ORCA的优化任务包含Calc_Hess或Recalc_Hess关键词,与Gaussian不同,在每次频率分析后ORCA都会以相同格式输出热力学量,因此原脚本会出现拉出不止一个数值的情况,导致拿到的数值异常且有报错信息(但程序会正常跑完)。修改:  awk 加入END机制,
  4. 2. 修改: printf 补充 \n换行

  5. Line 74-75
  6. 1. 修改: 补充mainchoice == 5 的分析结束后的信息输出
  7. ```
复制代码





欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3