• OfakeG:使GaussView能夠可視化ORCA輸出文件的工具

    OfakeG:使GaussView能夠可視化ORCA輸出文件的工具

    文/Sobereva@北京科音

    First release: 2019-Jul-17  Last update: 2021-Jul-2


    1 前言

    量子化學程序ORCA用的人越來越多,功能很強大而且免費,用戶數在所有量化程序中已經是第二高(雖然跟Gaussian比還遙不可及)。但至少在筆者撰寫此文時,相對于用戶數占絕對主導地位的Gaussian程序而言,仍有一個不足之處是沒有像GaussView那樣的很理想的圖形界面。雖然也有Avogadro、Chemcraft、Gabedit等程序能支持ORCA,但都沒GaussView用著舒服。

    在產生輸入文件方面,Multiwfn已經提供了產生ORCA常見任務的輸入文件的功能,見《詳談Multiwfn產生ORCA量子化學程序的輸入文件的功能》(http://www.shanxitv.org/490),用戶只需要用GaussView畫好結構,保存為gjf/mol/mol2/pdb格式,就可以用Multiwfn很方便地得到ORCA輸入文件,所以在建模、產生輸入文件方面,對ORCA用戶沒什么困難的。在觀看ORCA產生的軌道、做波函數分析方面,Multiwfn也都提供了極其豐富的功能,相關信息見《使用Multiwfn觀看分子軌道》(http://www.shanxitv.org/269)、《Multiwfn FAQ》(http://www.shanxitv.org/452)等文章,因此ORCA用戶在后處理分析方面也沒任何壓力。另外,Multiwfn可以基于ORCA的輸出文件繪制各類光譜圖,所以ORCA用戶在光譜研究方面也已經很方便了,相關信息見《Simulating UV-Vis and ECD spectra using ORCA and Multiwfn》(http://www.shanxitv.org/485)、《Simulating UV-Vis and ECD spectra using ORCA and Multiwfn》(http://www.shanxitv.org/485)。

    雖然Multiwfn已經解決了ORCA用戶在使用方面的大量障礙,但幾何優化軌跡/收斂情況的考察以及振動模式的觀看不屬于Multiwfn的范疇,而目前卻沒有理想的解決辦法。雖然Chemcraft也能觀看ORCA的優化軌跡,但終究沒有常用的GaussView用著舒服,而且還是收費程序;Avogadro雖然也觀看ORCA的振動分析對應的振動動畫,但顯示效果不理想,在Windows下容易崩潰、出現異常(至少在筆者的Win7-64bit機子上是如此)。盡管也可以讓Gaussian與ORCA掛接,這樣可以使ORCA做計算但是輸出的是Gaussian格式的信息,從而等效實現讓GaussView觀看ORCA計算的結果的目的,見《將Gaussian與ORCA聯用搜索過渡態、產生IRC、做振動分析》(http://www.shanxitv.org/422),但這樣做稍顯麻煩、在Windows下也沒法用。

    顯然,如果能開發個程序把ORCA的優化、振動分析、優化+振動分析的輸出文件“偽造”成Gaussian的,這樣就可以令GaussView直接支持讀取ORCA的輸出文件了,使得ORCA對于常見問題的研究用起來方便得多,也明顯便于Gaussian用戶同時掌握ORCA程序。筆者開發的OfakeG程序就是實現這個目的,下面介紹一下。如果你想一睹為快這個程序的實際效果,可以看這個視頻:《基于ORCA量子化學程序對分子做優化、振動分析、觀看紅外光譜、觀看軌道的簡單演示》(https://www.bilibili.com/video/av59599938),其中用到了此程序。

    OfakeG的學術合理性聲明:本程序的開發靈感來自于Grimme的xtb程序。xtb程序做振動分析的時候會自動輸出一個偽造Gaussian的振動分析輸出文件,目的是為了讓用戶看振動模式方便;xtb程序為了兼容GSM也官方支持偽造ORCA的輸出文件。大牛Grimme直接用的就是fake這個詞。顯然令A程序輸出B程序的格式在學術界是非常正常的事情。Gaussian的輸出格式是公開的而非加密的,GaussView能讀入的格式也相當于是公開的,本文的OfakeG程序亦沒有對GaussView本身做任何篡改,明顯從各個角度上本程序的開發是完全學術正當的。本程序所做的事僅僅是將ORCA的輸出信息轉化成Gaussian的格式而已,文中所謂“偽造”只不過是常規的文件格式轉換而已,和數據層面的“造假”有天壤之別,轉換出的文件里也根本沒有任何文字體現這文件是靠Gaussian程序算出來的。此程序的開發目的是給廣大科研工作者提供個便利,開發/使用此程序不涉及任何侵權和學術不端(除非你利用OfakeG之后,把ORCA算的結果說成是Gaussian算的)。此程序愿意用就用,不愛用的、缺乏對計算化學領域程序狀況基本認識的、懷有惡意的、有特殊利益驅動的人以及杠精,不要強詞奪理在學術合理性上亂噴此程序。


    2 OfakeG程序

    2.1 介紹+使用方法

    OfakeG程序可以在官方頁面下載:http://www.shanxitv.org/soft/OfakeG
    其中帶.exe后綴的是Windows版,不帶后綴的是Linux版。

    此程序目前支持處理ORCA的opt、freq和opt freq任務的輸出文件。此程序對ORCA 4.x、5.0版經測試可用,對于其它版本可能兼容也可能不兼容,請讀者自行嘗試。等ORCA以后出新版本,并且筆者發現和OfakeG不兼容時,預計筆者會更新此程序并更新本文。

    OfakeG使用非常簡單。啟動此程序后,把上述任務的ORCA輸出文件路徑輸入進去(對于Windows也可以直接把文件拖進去,路徑會直接顯示出來),一按回車,就會在當前目錄下產生偽造的Gaussian輸出文件。如果輸入文件名字是yuri.out,則輸出文件將是yuri_fake.out。這個輸出文件可以直接載入GaussView,對opt或opt freq任務可以播放優化過程的動畫、用results - Optimization觀看優化過程的收斂情況,對freq或opt freq任務可以用results - Vibrations觀看振動模式。

    在Windows下還有更省事的運行方式,即可以直接將ORCA輸出文件拖到OfakeG.exe圖標上,此時在ORCA輸出文件的目錄下會出現文件名帶_fake的偽造的Gaussian輸出文件。

    OfakeG也可以通過命令行方式使用,比如在Linux下可以在OfakeG所在目錄下運行./OfakeG Aika.out,將在當前目錄下得到Aika_fake.out。顯然,你也可以自寫shell腳本用這個程序大批量轉換ORCA輸出文件。

    OfakeG文件包里的.out文件是一些ORCA的示例輸出文件。如果你的輸出文件轉換不成功,請嘗試通過對照這些示例文件搞清楚是怎么回事。目前OfakeG名義上只支持HF/DFT的輸出文件,其它理論方法不一定能支持。對于加了亂七八糟復雜關鍵詞的情況,OfakeG也不一定能處理。

    如果OfakeG處理你的文件時崩潰,且得到的_fake后綴的文件里只有幾行信息,很有可能是因為你的ORCA輸出文件的編碼是UTF16造成的,OfakeG是處理不了前者的情況的,是什么編碼和你用的終端有關系。比如Windows的cmd終端重定向輸出的文件是ASCII編碼的,而PowerShell是UTF16編碼的。對于UTF16編碼的輸出文件,你可以用比如Ultraedit打開,選另存為,把編碼改成Unicode或UTF8,之后再用OFakeG處理。如果你平時習慣用PowerShell且希望重定向出的文件直接就ASCII編碼,可以用諸如這樣的命令運行test.inp得到test.out:D:\study\orca\orca test.inp | out-file test.out -encoding ascii
    如果是Win10,還可以直接指定默認的重定向的編碼,詳見https://stackoverflow.com/questions/40098771/changing-powershells-default-output-encoding-to-utf-8

    如果你怎么也搞不清楚為什么你的ORCA輸出文件無法轉化成功,或者可判定OfakeG程序有bug,請在http://bbs.keinsci.com/thread-13952-1-1.html貼子里發回帖,把文件壓縮后上傳。


    2.2 OfakeG的幾個細節

    以下內容建議留意一下,以更好地理解OfakeG的細節,但初學者不看也可以。

    OfakeG給出的是簡化到不能再簡化的能令GaussView正常讀取的偽造的Gaussian輸出文件,因此如果你寫類似工具把其它程序的輸出文件也偽造成類似格式,就也可以令GaussView讀取。

    GaussView要求輸出文件里必須有basis functions、alpha electrons、beta electrons信息,但ORCA輸出文件里不直接體現,而且這仨對于觀看優化和振動分析沒有意義,因此在偽造的輸出文件開頭有這仨信息,但數值都為0。

    OfakeG從ORCA輸出文件里讀能量的時候讀的是FINAL SINGLE POINT ENERGY,即當前計算級別下的最終能量。而產生偽造的Gaussian輸出文件時,為了省事和統一,是以SCF Done標簽來輸出的。

    Gaussian做優化任務的時候,對每一步,輸出次序是[結構i]-[結構i的能量]-[結構i的受力]-[結構i的收斂情況],所以結構、能量、收斂信息都是一一對應的。而對于ORCA,輸出也是這樣的順序,但最后在第i步時發現已經滿足收斂限了,之后還會根據第i步的信息再預測出第i+1步的結構,并且計算這個結構下的能量(也順帶得到波函數),而這個i+1結構就不再計算受力了,也因此對這個結構也不再輸出收斂判斷信息。所以OfakeG產生的偽造的Gaussian輸出文件中,第1步到第i+1步的結構、能量、收斂情況都會給出,但最后一次輸出的收斂情況信息里當前值全都被設成0來占位。

    優化過程中除了像Gaussian一樣用受力/位移的最大/RMS值作為判斷標準外,ORCA還用能量變化作為判斷標準。為了體現這點,在偽造的Gaussian輸出文件中也在收斂判斷部分添加了這項,但這項不會被GaussView所讀取,大家可以自行考察。

    對于振動分析,由于ORCA不會給出約化質量和振動模式的力常數,所以偽造的Gaussian輸出文件里也沒這項,這不影響一般的分析。由于ORCA不給出振動模式的不可約表示,所以OfakeG把不可約表示都一律輸出為A。

    OfakeG把ORCA振動分析輸出的熱力學數據也都轉化為了Gaussian的輸出形式,對于用慣了Gaussian的人來說讀起來方便不少,并且還順帶多顯示了一項Electronic energy=,后面是振動分析對應的結構的電子能量。

    OfakeG以后版本也有可能支持處理ORCA的IRC任務的輸出文件,但目前沒有打算支持。因為筆者撰文時最新的ORCA 4.1.2版的IRC功能非常弱、速度慢,甚至就連反應坐標都不給出來,原理上沒法轉換成Gaussian的格式。另外OfakeG也不會去支持轉換ORCA的TDDFT等電子激發任務的輸出文件,因為做這個轉換沒有任何實際意義。Multiwfn直接就能基于ORCA的TDDFT輸出信息繪制各種電子光譜和做電子激發分析(后者我都有現成的例子,見http://www.shanxitv.org/485。Multiwfn繪制光譜的更詳細介紹見http://www.shanxitv.org/224),而且ORCA目前版本給出的是TDDFT組態函數的貢獻而不是系數,原理上也不可能轉換為Gaussian形式的輸出。

    OfakeG是100%純Fortran寫的,沒有利用任何庫和其它任何編程語言(或許有的人能猜到我為什么刻意彰顯這點)。

    久久精品国产99久久香蕉