一鍵把所有gjf文件轉成xyz文件、把所有Gaussian輸出文件轉成gjf文件的腳本
一鍵把所有gjf文件轉成xyz文件、把所有Gaussian輸出文件轉成gjf文件的腳本
文/Sobereva@北京科音
First release: 2020-Jan-28 Last update: 2023-Jun-12
本文提供筆者寫的兩個Linux下的Bash shell腳本,對實際研究有一定價值,都利用了Multiwfn程序進行格式轉換,因此Multiwfn必須已恰當安裝從而能通過Multiwfn命令直接啟動。Multiwfn可以在http://www.shanxitv.org/multiwfn免費下載(Linux下的安裝方法見手冊2.1.2節),一定要用最新版本。這倆腳本在Multiwfn的examples\scripts目錄下也可以找到。
把本文的腳本稍微改寫幾行,就也可以利用Multiwfn在其它格式間進行轉換,非常方便。Multiwfn支持的格式詳見《詳談Multiwfn支持的輸入文件類型、產生方法以及相互轉換》(http://www.shanxitv.org/379)。筆者十分建議仔細看看《詳談Multiwfn的命令行方式運行和批量運行的方法》(http://www.shanxitv.org/612),里面對通過命令行和腳本批量運行Multiwfn做了特別透徹的說明,看過之后就可以游刃有余地改寫本文的腳本。
1 一鍵把所有gjf文件轉成xyz文件
腳本下載:http://www.shanxitv.org/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://www.shanxitv.org/attach/530/out2gjf.sh
這是把當前目錄下所有Gaussian輸出文件(out)轉成gjf文件的腳本,直接運行即可。運行之前必須將Multiwfn的settings.ini文件里的iloadGaugeom設為1(否則Multiwfn在載入out文件時不會從中讀取數據)。得到的gjf文件里是默認關鍵詞,應當根據實際情況進行修改。電荷和自旋多重度和out文件里一致(用了贗勢的情況除外,需要自行手動修改gjf)。坐標是輸出文件里最后一次輸出的(如果有輸入朝向的坐標則新生成的gjf里也是輸入朝向的,沒有的話就是標準朝向的。不了解朝向問題的話參看《談談Gaussian中的對稱性與nosymm關鍵詞的使用》http://www.shanxitv.org/297。如果把iloadGaugeom設為2,則總是載入標準朝向下的坐標)。
上面的腳本產生的Gaussian輸入文件是笛卡爾坐標的,如果要輸出為內坐標的輸入文件,改用此腳本:http://www.shanxitv.org/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://www.shanxitv.org/258)里第5節所述的方法批量把所有gjf文件里的關鍵詞替換成實際要用的關鍵詞。如果當前目錄下有個template.gjf文件,并且其中坐標部分用[geometry]或[GEOMETRY]代替,則這個文件會自動被當做模板文件產生新的gjf,而含有[geometry]或[GEOMETRY]的這一行會被替換為當前體系的坐標。如果輸入文件里某一行或幾行里有[name]字樣,則這六個字符會被替換為新產生的輸入文件名(不含后綴)。如果你載入的是Gaussian輸入或輸出文件、ORCA輸入文件或者含有波函數信息的文件,新產生的gjf文件里的凈電荷和自旋多重度會用讀入的,否則會沿用template.gjf里的。允許使用template.gjf的設計給產生特殊的輸入文件的情況來了極大的靈活性。下面是個用template.gjf的例子,方法用B3LYP-D3(BJ),給Ag用SDD贗勢基組,給C H O用6-311G*,任務是優化和振動分析,并產生wfn和chk文件,其文件名和你創建的gjf的文件名相同。
%chk=D:\[name].chk
#p b3lyp/genecp em=GD3BJ opt freq out=wfn
niconiconi
0 1
[geometry]
Ag
SDD
****
C H O
6-311G*
****
Ag
SDD
D:\[name].wfn
<---此處有空行
<---此處有空行