談談量子化學中什么樣的benchmark才有意義
談談量子化學中什么樣的benchmark才有意義
文/Sobereva@北京科音 2020-Jun-5
1 前言
筆者在計算化學公社論壇、思想家公社QQ群解答量子化學相關問題時,經常看到有些對理論方法知之甚少、沒讀過什么文獻的初學者在自己的研究中亂做benchmark,還管這叫“標定”,甚至一些初學者竟然以為所謂的標定總是要做。他們所做的事幾乎純粹是在浪費計算資源,每次我都得苦口婆心地勸他們別瞎做無用功。在本文,我就再專門說一下關于benchmark的事,讓初學者知道什么樣的benchmark才是有價值的、什么時候才應當做、要做的話應當怎么做。
benchmark既是動詞也是名詞,可以稱為橫向測試。諸如測試各種顯卡在某些游戲上跑的幀率,測試一堆CPU跑某個任務的耗時,測試各種DFT泛函或基組對某類化學體系的某類問題算的結果好壞等等,都可以叫benchmark。
2 benchmark研究怎么做?
這一節談一下量子化學領域里要發表專門的benchmark文章需要考慮什么。有些人以為做benchmark、發benchmark文章是很簡單的事,其實絕非如此!benchmark絕不能瞎做,否則純粹是白浪費時間、得不到什么有意義的信息,最后也發不到什么像樣的期刊上、發表了也不會得到多少引用。
通常做benchmark有三個環節:
(1)構造測試集,包括選擇被計算的體系、獲得參照數據。參照數據可以是高精度實驗值,也可以是高精度理論計算值。測試集的構建很有學問,絕對不是隨便找點體系就可以當測試集的。測試集的選取應當有明確的意義,能讓別人能理解你為什么通過這套測試集做這個benchmark。測試的樣本應該夠大,以讓測試得到的統計數據足夠說明問題。如果測試集只有個位數,則無法充分避免巧合性導致對方法本身精度的誤判。
如果參照的數據是實驗值,必須確認來源可靠,誤差大的實驗數據應當舍棄,與理論計算的結果沒有直接可比性的數據不要用,或者在計算中進行恰當考慮。如果是以高精度的計算值當參照值,必須用沒有爭議的、能夠可靠準確計算當前問題的級別來算,而且文章里應當盡可能寫清楚計算細節。有些人以為非得CCSD(T)這種檔次的數據才能作為參照數據,這是錯誤的。只要參照數據的計算級別足夠可靠、并且比當前被測試的方法精度明顯要高就行。比如測試一批半經驗方法,那就可以用已知對當前問題表現很理想的DFT泛函結合較好的基組計算參照值。
(2)恰當選擇被測試的方法,然后以恰當的流程進行計算。被測試的方法都應當是比較有意義的,明顯不靠譜的方法毫無測試必要。被關注度比較高的,較新且有前景的方法,以及爭議比較大的方法應當優先納入考慮。影響計算結果的因素往往是多方面的,測試某種方法好壞的時候應當在計算時讓其它因素的影響盡可能小。比如對比不同理論方法的好壞,顯然不能在6-31G*級別下對比,此時基組不完備性誤差太大了,表現好的理論方法可能只是恰好與基組層面的誤差抵消得較好而已(除非你的測試目的就是想看看哪個方法搭配這種便宜基組時誤差較小,從而以較低的花費也能得到可以接受的結果)。
(3)將計算數據與參照值進行對比,討論什么方法對什么情況是最佳選擇、哪些方法雖然精度不是最佳的但是性價比高因此值得選用、哪些方法絕對不應當使用或者在特定某些情況下應當避免使用,等等。討論過程應注重展現自己對方法的內在特征的理解,試圖分析方法為什么好或者為什么不好,爭取從原理上對測試現象進行合理的解釋,而非簡單地把數據復述一遍,這樣的話別人光看表格或者圖表就夠了。最后,最好能給出一個總結,可以是文字也可以是圖表,以簡潔易懂的方式讓非內行讀者也知道怎么恰當選擇方法,而不必令讀者非得花時間努力看完你的整篇文章。
3 注意實驗數據與理論計算數據的可比性
需要注意的是,如果參照值是來自于實驗,一定要確保實驗值和你在測試中用的計算方式算的結果有足夠的可比性,否則由于某些沒有考慮的因素帶來的差異,會明顯冤枉一些方法。
比如實驗上的UV-Vis光譜的最大峰位置并非對應理論計算的垂直激發能位置,本來垂直激發就是個忽略核運動量子效應的假想過程;另外,實驗上的吸收峰可能由多個電子激發共同貢獻(參看比如《使用Multiwfn繪制紅外、拉曼、UV-Vis、ECD、VCD和ROA光譜圖》http://www.shanxitv.org/224里對UV-Vis譜的分解圖)。因此盲目地將最大峰位置和激發能的相符程度用來判斷不同方法的計算精度是明顯不嚴格的。另外,溶劑效應對吸收峰位置影響往往是非常明顯的,溶劑效應表現的誤差和激發態計算方法自身的誤差必須要分清楚、分開討論。
再比如,分子晶體環境中的柔性分子的構象和氣相中往往有明顯差異。比如聯苯在晶體環境中是平面的,而在氣相下是有一定二面角的,顯然不能因為各種計算級別優化出來都不是平的就說所有計算級別都是不合理的。另外,氣相電子衍射譜給出的分子結構對應于熱平均結構,如果用的是高溫實驗數據,那實驗結構可能和精確勢能面極小點結構有明顯差異,顯然不能拿這樣的實驗數據去衡量理論計算的精度。
還要注意,哪怕是相同條件的相同體系的實驗數據,不同實驗來源都可能有不小差異,比如反應速率常數不同實驗來源差好幾倍是常事。另外,也絕對不要盲目相信實驗數據,好多實驗數據本身就是明顯錯誤的,高精度量子化學計算推翻實驗數據是很常見的事,現在化學數據手冊里也有越來越多的數據都是理論計算給出的。更千萬別以為量子化學計算的數據肯定不如實驗數據準確,比如Wn系列高精度熱力學組合方法給出的氣相熱化學數據的平均精度可以精確到零點幾kcal/mol,這明顯高于常規熱化學實驗能達到的精度。在JCTC, 13, 5291 (2017)里作者通過對60種含過渡金屬的雙原子分子的解離能的可靠理論計算指出了實驗數據可能存在錯誤。
還有很多東西根本就是不可實驗觀測的,比如分子軌道能量。如果拿量子化學算的分子軌道能量和電化學實驗得到的氧化還原勢對比來衡量計算精度,那真是荒誕至極,詳見《正確地認識分子的能隙(gap)、HOMO和LUMO》(http://www.shanxitv.org/543)。
理論數據計算的方式也必須靠譜,比如測試柔性體系ECD的計算精度,肯定是要考慮構象平均的,參考比如《使用Multiwfn繪制構象權重平均的光譜》(http://www.shanxitv.org/383)。如果比如構象搜索方式不當,或者都沒考慮構象平均,可能導致真正好的方法和實驗偏差很大,反倒是爛的方法由于誤差抵消的巧合反倒結果顯得好。
在這一節最后,值得一提的是有這么一篇文章Benchmarking Quantum Chemical Methods: Are We Heading in the Right Direction?(Angew. Chem. Int. Ed., 56, (2017)),其中專門討論了量子化學計算的benchmark問題。這篇文章意義不是很大,大部分都是些老生常談、內行人都知道的東西,不過有里面有兩張圖挺值得給初學者看一下的:
上面這張圖充分體現了理論化學能達到的精度今非昔比,在很多情況下都足夠質疑實驗了。所以benchmark結果與實驗對比時發現有明顯違背常理的時候,不要只懷疑計算方法,也要考慮實驗數據有問題的可能性。疑點比較明顯的實驗數據應當從測試集里剔除,或者嘗試找其他人的實驗數據。
上面這張圖警示大家,實驗數據中蘊含著很多對于理論計算的人來說是妖魔鬼怪的因素,計算中不去恰當考慮這些東西就無法讓實驗數據與計算數據合理地對比,搞計算的人也可以專門去收集涉及的亂七八糟因素少的實驗數據,這樣更容易與理論計算結果對比。而對于實驗化學家,也可以試圖在接近理論計算理想化的條件下來做實驗(比如低溫、氣相或非極性溶劑,選熱可及構象少的體系等等),從而給計算化學家提供容易作為測試集的參考數據。
4 什么樣的benchmark有價值?
什么樣的benchmark才是有價值、因此能在不錯的學術期刊上發表的?這里就列舉一下
?(1)某類問題之前還沒有過benchmark文章;或者雖然有,但文章都較老,沒有涉及較新方法;或者之前考慮的方法較少、水準不高、有明顯欠缺。毫無疑問,做一個新的、嚴謹的、系統性的benchmark解決這些問題,彌補學術界對一些問題認識上的空白,或者改變人們的一些舊有錯誤的觀念,這樣的文章無疑是有意義的。
比如筆者之前寫的《原子電荷計算方法的對比》(http://www.whxb.pku.edu.cn/CN/abstract/abstract27818.shtml)和《親電取代反應中活性位點預測方法的比較》(http://www.whxb.pku.edu.cn/CN/abstract/abstract28694.shtml)就屬于這類。雖然之前也有一些文章對比討論過原子電荷的計算、預測反應位點的方法,但是都比較零散,考慮的方法不太全面,缺乏一個統一、公平的對比。這兩篇文章填補了這方面的空白,在原子電荷和反應位點的預測方法的選用方面提供了明確指導,到現在被引用次數不少。
再比如,測試有機反應的文章很多,但是測試金屬有機反應的文章則較少。Grimme的MOR41測試集(JCTC, 14, 2596 (2018))專門測試了不同泛函以及部分后HF方法對41種閉殼層金屬有機反應的計算精度,這對于研究金屬有機化學的人很有意義。
?(2)被測試的對象比較特殊、專一,這類測試對于后人研究某些特定類型的問題比較有幫助。比如PCCP, 19, 14296 (2017)測試了不同方法算的1812種C60異構體的異構化能;JPCA, 121, 2410 (2017)測試了不同方法算的2~8個金的團簇的相對能量和垂直電離能;JPCA, 123, 10454 (2019)測試了不同泛函計算各種主族團簇團簇的精度;JCTC, 16, 2355 (2020)提出的HB375×10和IHB100×10測試集分別包含了375個中性氫鍵二聚體和離子氫鍵二聚體解離路徑上的10個點的結合能;JCTC, 9, 1918 (2013)提出的XB51測試集專門測試鹵鍵二聚體結合能;JCP, 137, 054103 (2012)提出的C21測試集專門測試分子晶體中的相互作用能;JPCA, 113, 11974 (2009)中提出的ACONF測試集專門測試烷烴的構象能量差;JCTC, 14, 1254 (2018)提出的MPCONF196測試集包含了13個小肽的共196個構象來測試小肽構象的計算精度;JCIM, 60, 1453 (2020)提出的PLF547測試集構造了547個藥物分子與蛋白質片段的局部復合物結構,衡量不同方法算的結合能,對于量子化學研究小分子與蛋白結合的人有幫助。
?(3)測試的角度新穎、獨特、彌補之前類似問題測試的盲點。比如測試幾何優化的準確度,大多數文章都是拿晶體結構當做參照,但是ROT34測試集(JCC, 35, 1509 (2014))卻用實驗的轉動常數作為參照來判斷幾何優化準確度,這就顯得比較新穎,而且原理上比用晶體結構當參照更合理,畢竟晶體環境中的分子間相互作用、堆積效應會影響結構,特別是柔性的部分。另外,JCTC, 2, 1282 (2006)還使用氣相電子衍射測定的結構來測試泛函優化配位鍵的精度。
再比如,弱相互作用方面研究得比較多的是兩個分子間的相互作用能,而JCTC, 11, 3065 (2015)里提出的3B-69測試集收集了69個三聚體,用于測試不同理論方法算的三體結合能,這能體現不同方法對協同作用的表現能力,因此此測試有一定新意。
再比如,弱相互作用領域里通常考察的是氣相下的結合能,但是現實當中更感興趣的往往是液相下的。在JCTC, 11, 3785 (2015)里提出的S30L測試集中給出收集了30個主-客體復合物的溶液下的結合過程的自由能變,溶劑有氯仿、甲苯、CS2、水等等諸多情況。此文測試了COSMO-RS和SMD溶劑模型結合多種泛函和半經驗方法,此研究對于溶液環境中大體系的結合能的計算方法學很有價值。
?(4)測試集構建合理、數據質量很高。比如S66是弱相互作用計算方法學領域里最知名的測試集之一,原文是JCTC, 7, 2427 (2011),前身是S22。此測試集包含了66種分子二聚體,為了讓此測試集的結果比較能反映實際問題,作者特意讓色散主導的、靜電主導的和介中情況的弱相互作用體系都各占一部分(分別是27、23、16個),而且氫鍵、普通色散作用、pi-pi堆積等常見類型相互作用都有出現,作為小分子的二聚體測試集來說構建得算是比較周到了。而且文章里給出了一般被視為金標準的CCSD(T)/CBS級別的高精度作用能,可以讓后人以此為參照可靠地測試文中未考慮的計算級別的精度。
再比如電子激發研究領域里知名的TBE2測試集(JCP,133,174318 (2010)),包含了28個中等尺寸的有機分子,使用LR-CC3或者MS-CASPT2結合aug-cc-pVTZ下計算了非常高精度的垂直激發能。TBE2成為了后來很多人測試電子激發計算方法準確性的標準測試集之一。
再比如W4-17測試集(JCC, 38, 2063 (2017)),使用了目前最精確的熱力學組合方法W4計算了200個原子化能,而原子化能通常是最難算準的熱力學量之一,因此這樣的數據集對于評判理論方法的精度比較有意義。
?(5)測試集規模特別大,被測試的方法非常多,因此工作量巨大、考察的對象非常系統和全面,給人以thorough的感覺。例如Grimme的GMTKN55大型測試集(PCCP, 19, 32184 (2017))包含共55個子集,共1505個相對能量,含有各種類型體系的各種與能量相關的問題(勢壘、反應能、解離能、異構化能、電子親和能、電離能、弱相互作用能等)的高精度實驗值或理論值,文中測試了多達83個泛函。像這樣的工作對于泛函的選擇是很有指導意義的。
再比如,JCP, 150, 074108 (2019)里收集了多達155個分子的1468個價層和深層的垂直電離能,測試了IP-EOM-CC系列以及其它的計算電離能的方法,對于電離能的研究很有價值。
再比如測試帶隙的文章已經很多了,而JCTC, 15, 5069 (2019)構造了更大的測試集,囊括了多達472個非磁性材料的實驗結構和帶隙,涵蓋周期表里大多數元素,顯然這樣的benchmark比前人的同類研究更有說服力。
?(6)測試有明確的目的性。比如Head-Gordon想測試明尼蘇達系列泛函在近10年來的發展,在JCTC, 12, 4303 (2016)中用含有84個測試集的將近5000個數據的大型測試集測試了14個明尼蘇達系列泛函。從此文的TOC立馬可見,在M06-2X之后,對于主族元素計算來說,明尼蘇達系列泛函的精度并沒有什么實質性的進展。
再比如PCCP, 20, 23175 (2018)里使用GMTKN55測試集專門測試不同類型雙雜化泛函,從而分析半經驗和非經驗性方式提出的雙雜化泛函的整體表現情況。
5 針對特定研究的計算級別的篩選
有的時候我們本身不是為了做benchmark而做,而是有亟待研究的問題而不得不做benchmark。比如當前要研究一批體系,體系比較特殊,雖然已知用NEVPT2、CCSD(T)等昂貴的方法肯定結果準確,但都算不動;而用那些算得動的方法,又不知道哪個最好,或者哪個性價比比較高,那么可以做一下篩選,選出最適合的用于后面的研究,對于以后其他人研究類似的體系也有幫助。
比如要研究的體系是主族元素的團簇里摻了幾個過渡金屬,想知道各種異構體的結構和能量。像這種體系就不是很好算的,有過渡金屬的體系通常比純主族體系難算,有較多過渡金屬就更麻煩。雖然憑研究經驗一般能估計出有好幾個泛函都可能能用,但都有些不放心,也不知道誰最理想。此時可以先選少數幾個異構體,用高精度但昂貴的理論方法計算出參照值,再用各種候選的泛函也都算算,把表現最佳的泛函用于算全部的異構體。
值得一提的是,2019年首次在實驗上觀測到的18碳環在化學界引起了廣泛關注,見此文的相關信息:《一篇最全面、系統的研究新穎獨特的18碳環的理論文章》(http://www.shanxitv.org/524)。這個體系的電子結構非常特殊,即便是理論化學專家也沒有誰敢打包票說哪個泛函肯定能算得合理,像這種情況要做DFT研究肯定要進行泛函的測試。在筆者研究18碳環成鍵問題的Carbon, 165, 468 (2020)一文中,根據筆者的benchmark,發現常用的B3LYP、PBE0等HF成份不高的泛函對于結構優化完全失敗,而wB97XD則表現良好,和很可靠的CCSD結合較小基組優化的結構也較吻合,因此最終確定使用wB97XD用于18碳環的各種問題的研究,包括后來研究18碳環的電子光譜和非線性光學的Carbon, 165, 461 (2020)一文也是用的這個泛函。類似地,如果還要研究其它尺寸的碳環,根據這個測試也都可以有理有據地使用wB97XD。
再比如,在《透徹認識氫鍵本質、簡單可靠地估計氫鍵強度:一篇2019年JCC上的重要研究文章介紹》(http://www.shanxitv.org/513)介紹的筆者的JCC, 40, 2868 (2019)一文中,要通過SAPT2+(3)δMP2對氫鍵作用能做能量分解考察其本質。雖然在JCP, 140, 094106 (2014)中他人已經證明過此級別算氫鍵作用能可以算得很準,但是并沒有測試過用于離子型氫鍵的情況,而筆者這篇文章又涉及不少離子型氫鍵體系。于是在文中筆者對SAPT2+(3)δMP2算離子型氫鍵結合能與金標準CCSD(T)算的進行了對比,證明了其合理性。
6 做benchmark前要多讀前人文章
我看到過太初學者不肯讀前人文章,就愿意自己做benchmark,還自以為自己所做的是很有意義的事,能獲得同行們不知道的新發現,然而他們的做法在內行人眼里完全是胡搞瞎搞。在這里我就專門說說讀他人benchmark文章的重要性。
決定做benchmark之前一定要確保已經看了足夠的前人的文章!這點極其重要!!!有太多的初學者老想做benchmark是因為他們太無知了。雖然這話難聽,但卻是就是這么回事。因為初學者讀的太少、缺乏對不同類型問題該用的計算方法的常識,于是就總以為什么都得實測一下才能選出合適的,殊不知他們打算通過測試來說明的問題,99.99%的概率早就在前人的benchmark文章里得到解答了。千萬別以為benchmark文章很稀少,實際上幾乎所有稍微常見的問題絕對至少有10篇文章進行過benchmark,比如(超)極化率的benchmark文章我隨便收在硬盤里的都有24篇。哪怕很冷門的問題也都有人發過benchmark文章,比如電場梯度(EFG)的計算(Dalton Trans., 39, 5319 (2010))。而一些比較熱門的問題,比如弱相互作用的計算,光是有點名氣的測試集都有好幾十個,近15年最最起碼有100篇算是弱相互作用benchmark的文章發表。把主流期刊上的benchmark文章看了,有>95%的可能性會打消初學者自己做benchmark的念頭。別人已經充分研究過的問題直接借鑒前人的成果就行了,不僅免得自己花大量時間測試,還避免被審稿人質疑你做的測試不專業、結論不可靠、不足矣說明問題。而且根據別人的高水平的benchmark文章選擇要用的方法的話,當審稿人對你選擇的方法指指點點的時候,你還可以直接拿那些已發表的benchmark文章非常有理有據地回擊。
如今benchmark文章可謂層出不窮、鋪天蓋地、增速迅猛。如果你訂閱了常見理論化學期刊的郵件通知,比如JCTC、JCC、PCCP、JCP、JPCA、CPL、TCA、CTC、JMM等,一個月就能看見N篇benchmark文章。特別是在JCTC上這類文章奇多,基本每期都有至少一篇。由于benchmark文章的引用數整體比一般的研究性文章要高,JCTC的IF很大程度也是被這類文章撐起來的。
由于benchmark文章實在太多,甚至可以說泛濫了,所以想發新的專門的benchmark文章也越來越不容易,在創意、計算水平、數據量等方面要求也越來越高,而且做之前還需要花越來越多的精力消化前人的文章。如果不是很內行,對領域了解很多的話,隨便腦袋一熱就做個benchmark并投到有一定水準的期刊上,有極大的幾率會被審稿人指出這測試根本沒意義、早就有其它更深入系統全面的benchmark文章考察過類似問題、得到過比當前文章更嚴謹的結論了。內行審稿人甚至都可能覺得你的benchmark連看都不用看,測試結果憑經驗都能猜得八九不離十,測試結論都已經是業內的常識知識了。因此,在做benchmark之前,一定要先好好搜搜前人的工作、仔細閱讀。可以把被研究問題的關鍵詞和benchmark一詞一起寫到Google學術搜索的搜索框里,把前10頁的文章列表看看(對初學者囑咐:千萬別用搞笑的百毒學術!)。
另外值得一提的是,除了專門的benchmark文章,幾乎所有理論方法的原文里作者也都會做benchmark,用來對比當前的新方法和其它流行的方法的精度。所以不要說由于自己用的方法新,所以就一定不知道其精度的好壞、于是就非得做過benchmark才肯用,你起碼應先把原文看了,看原文里的測試結果是否已經能夠打消你的疑慮。
看benchmark文章從而了解各種計算方法的精度的時候,要特別注意的是絕對不要只相信一篇文章的結論!每篇文章用的測試集都不同,一些技術上的細節也不同,作者在分析討論的時候也都帶著不同程度的主觀性。如果你只看一篇文章,容易一葉障目,產生偏見。尤其是理論方法的提出者他自己在原文里或者他額外發的文章的benchmark中,經常傾向于找對自己的方法有利的測試集測試、給讀者看能證明他的方法好的數據,以使得他的方法能夠流行開來。而且有的理論方法里面是有經驗擬合參數的,如果就拿訓練集或者與訓練集差不多類型的體系去測那個方法,那個方法比大多數同類方法都更好簡直是一定的。值得一提的是,我知道有個開發雙雜化泛函的人,每次測試都是拿一些比較爛的方法跟他的方法比,導致每次都能名列前茅,然而每當其它研究者公正、全面地進行測試的時候,他的那個泛函總是名落孫山。不過也有一些研究者比較誠實,比如Grimme,他不試圖掩蓋自己的方法表現不佳的情況,有時候他新提出的方法甚至不如老方法,他也如實交代。總之,某類問題的benchmark絕對不要只看一篇,以防被誤導,而應當從大量文章中歸納總結出自己的觀點,并且在實踐中以及未來看新的benchmark文章中不斷去驗證、更新自己的觀點。我寫過《簡談量子化學計算中DFT泛函的選擇》(http://www.shanxitv.org/272)一文,此文就是我看過無數篇benchmark文章并結合我實際的研究經驗所總結的,是已經反復錘煉到很穩定的觀點了。按照此文選用泛函,倘若被外行審稿人質疑,我總能從硬盤里找出相應的benchmark文章懟回去。
還要注意的是,對于發展比較快的領域,不要拿比較老的benchmark文章當做方法選用的判斷依據,否則會與主流形勢脫節。比如弱相互作用計算的發展非常迅猛,基本上08年以前的benchmark文章對如今就已經沒多大指導價值了,其中與DFT有關的觀點更是100%過時了。在量子化學書里往往也有benchmark,對于年代稍早的書,要注意里面的作者的觀點可能是過時的。比如2001年的A Chemist's Guide to Density Functional Theory 2ed是一本很好的由淺入深地介紹DFT的書,此書后一半主要都是應用介紹和方法對比,顯然那個年代的對比數據明顯不足以成為如今選用泛函的依據。還要小心有些書有嚴重誤導性,比如知名的Exploring一書,在其第三版中,居然從頭到尾都極力試圖讓讀者用APFD泛函,然而此泛函不僅嚴重非主流,而且如GMTKN55測試集所體現的,其整體精度還不如B3LYP-D3(BJ),因此絕對不要用。用了的話很容易被審稿人質疑,被質疑后你還找不到任何benchmark文章能成為你使用這個泛函的依據。
7 初學者做benchmark容易犯的錯誤
做benchmark一定要有足夠的計算經驗、有足夠的常識才行,尤其是發專門的benchmark文章,只有對被測試的問題有充分的理解、有扎實的理論功底,才有可能在像樣的期刊上發得出來文章。上面給出了很多主流期刊上的測試文章,去看看那些文章就知道主流期刊的benchmark文章是大概怎樣的水平。如果對理論都還是一知半解、研究經驗還尚淺,寫出來的benchmark文章絕對漏洞百出,數據的可信度和結論無法令人信服,甚至內行人看了都想笑。這種垃圾灌水benchmark想發到IF=1.0左右的期刊上都得撞大運,得碰上非內行或者特別寬松的審稿人才行,若想發到JCTC、JCC、PCCP、JCP、JPCA等主流期刊上更是絕對不可能。
有很多初學者在測試用什么泛函算自己體系合理的時候總是莫名其妙地考慮一堆亂七八糟、如今根本無人問津的詭異非主流泛函,比如mPW1B95、mPW1K、BB1K、B3P86等等,真是完全莫名其妙!也不知道他們哪兒看來的這些泛函。所有內行人都明白,不管對什么類型的問題,總有主流泛函,或者相對來說更知名、更常見一些的泛函會比這些莫名其妙的泛函表現得更好。對于常見問題,比如熱力學數據的計算、激發能等,比這些垃圾泛函表現更好的泛函更是一大把,根本輪不到測試這些冷門泛函。而且就算拿這些初學者能收集到的有限的測試集,確實測出來這些冷門泛函當中的某個誤差確實很小,那又能說明什么?初學者搞的測試集的質量、測試方式的可信度堪憂,而且樣本又少,測試結論根本沒有說服力,別人看了此文之后照樣不敢拿這種泛函算別的,哪怕是算類似的體系。在我看過的無數benchmark文章里,我沒見過哪個靠譜的文章里體現出這些詭異的泛函表現出什么特別優異的性能、并因此值得對某類體系某些問題的研究上使用。依我來看,如果經過測試,發現某非主流泛函誤差最小,那最好也別用,而應當用測試過的主流泛函里表現相對最好的。主流泛函那么多,通常不可能在沒有一個基本能用的情況下卻唯獨有某個非主流表現得極好。用主流泛函可以減少被審稿人質疑的概率,而且主流泛函由于被用得很多、被研究者們檢驗得也比較多,依然能存活下來沿用至今,往往說明其比較“皮實”。相反,非主流泛函則極有可能只在某測試集下表現得恰好不錯,而換個體系就表現得令人大跌眼鏡。
還有的初學者測試泛函的時候,只要表面上看某個泛函和實驗誤差小,就認為哪個泛函好,這是極具誤導性的!一定要搞清楚誤差來源都有什么,不要把什么誤差都算在泛函的頭上!前面第3節我提到過好多個將理論計算與實驗數據對照時需要考慮的問題,如果由于忽略了這些因素,將導致理論算的數據都和實驗本身就沒有嚴格的可比性,這樣篩選出來的表面上看誤差小的泛函其實可能反倒誤差很大,而真正從本質上表現好的泛函反倒被忽略掉了。之前還見到有個初學者說,他經過測試,發現用STO-3G基組計算碘的時候結果滿意。這明顯就是瞎貓碰見死耗子,是good result due to wrong reason,要么是由于巧合導致誤差恰好抵消得不錯(肯定換個體系就完蛋),或者是由于他太沒常識,連判斷標準本身都嚴重不科學(比如以為鍵長誤差在0.2埃以內就算不錯),或者建模、計算流程、數據讀取都是錯的。用STO-3G算碘這種毫無常識做法寫的文章,就連國內SCI都鐵定發不出去。
做benchmark的時候不要選擇一看就不靠譜的方法。比如計算弱相互作用,明顯不能用B3LYP,要用也得是加色散校正,我在《談談“計算時是否需要加DFT-D3色散校正?”》(http://www.shanxitv.org/413)里已經寫得非常充分了,這早就是業內共識了,不需要再通過測試來體現。顯然,如果測試的時候還把B3LYP加進去,完全就是浪費篇幅和計算資源了,是個內行人都知道這個方法肯定精度墊底。倘若你真的測出來B3LYP算某體系弱相互作用能好,也顯然不能輕易告訴讀者應該用B3LYP算這類問題,而應當分析這違背一般常識的現象到底是怎么出現的,要懷疑是不是自己的測試有bug。
有的初學者是不管算什么都想測一測方法。前面說了,只有算一些又新奇特、又缺乏前人相關的benchmark文章的時候才有必要自己去測。在計算化學公社論壇里,有個人就是算個酯化反應,居然也非要做benchmark來“標定”一下,這完全毫無意義。本來有機體系就好算,酯化反應又是典型得不能再典型的有機反應,計算起來一點難度和特殊性都沒有。在前文里就已經提到諸如GMTKN55測試集了,那里面就已經充分包含了熱化學計算、勢壘計算的子集,那個文章里的結論已經可以充分體現不同泛函算這種很普通的有機反應的精度了,還自己測它干嘛?純屬浪費計算資源,而且還不如直接引GMTKN55這篇頂級專家寫的很有影響力的文章更讓內行審稿人覺得在泛函選用問題上站得住腳。可能他還想用更高級別的方法,比如DLPNO-CCSD(T),這也不用自己通過測試來驗證啊,此方法的原文JCP, 138, 034106 (2013),以及之后的涉及了此方法的測試文章JCTC, 11, 4054 (2015)、JPCA, 121, 4379 (2017)都已經足夠體現此方法算有機體系熱化學數據是很準確的,就連GMTKN55測試集里面作為參照的數據都有不少是DLPNO-CCSD(T)算的。
之前還看到有一個缺乏常識的人做的測試,他說:
“分別在6-311G、6-311++G、6-311G(2d,2p)、6-311G(3d,3p)、6-311++G(2d,2p)、6-311++G(3d,3p)、cc-pvtz下計算了中等大小有機體系(約30個碳原子)的偶極矩,泛函分別考慮b3lyp和CAM-b3lyp兩種情況(在C-PCM溶劑模型下進行計算)。結果發現CAM-b3lyp、6-311G(2d,2p)下計算的偶極矩與實驗值最符合。”
懂得偶極矩計算的人明顯能看出來這測試純粹是瞎測。6-311G連極化函數都沒有測什么?明顯沒有最基本的基組選用常識,基組該用什么這里都說了:《談談量子化學中基組的選擇》(http://www.shanxitv.org/336),里面還專門說了算偶極矩該用的基組。想算準偶極矩是要帶彌散函數的,測試6-311G(2d,2p)、6-311G(3d,3p)、cc-pvtz這種彌散函數都沒有的基組有什么意義?即便被測的基組里面有些是帶彌散函數的,但只考慮Pople基組是明顯不妥的,明明def2系列、cc-pVnZ系列用得也非常多,帶彌散函數版本的def2、cc-pVnZ為什么不納入測試?這完全說不過去。實際上Pople系列基組即便帶上彌散函數算偶極矩依然比較糟糕,而能夠算偶極矩算得很理想的是def2-TZVPD,用法見《給ahlrichs的def2系列基組加彌散的方法》(http://www.shanxitv.org/340),便宜一些的話可以用aug-cc-pVDZ。他為什么專門測B3LYP和CAM-B3LYP這倆泛函也完全意義不明。他如果去搜搜偶極矩的benchmark,比如把"dipole moment"和"benchmark"放到Google學術里,肯定能搜到How Accurate Is Density Functional Theory at Predicting Dipole Moments? An Assessment Using a New Database of 200 Benchmark Values這篇,即JCTC, 14, 1969 (2018)。文中明確體現出普通泛函里PBE0算偶極矩是幾乎最好的,因此用什么泛函根本都不用自己測,直接引這篇文獻、用PBE0就行了。而且我在《談談隱式溶劑模型下溶解自由能和體系自由能的計算》(http://www.shanxitv.org/327)里還明確說了Gaussian里不應當用比默認的IEFPCM更差的CPCM,非要用CPCM完全是莫名其妙。最后他居然測出來CAM-B3LYP結合6-311G(2d,2p)計算的偶極矩與實驗值最符合,這結論明顯違背常理。內行人都懂彌散函數對于計算偶極矩必不可少,當前測出來沒彌散函數結果反倒更好,碰見內行人能不被質疑么?屆時要怎么解釋?實際上,溶液環境下的分子的偶極矩根本就是無法實驗直接測定的,明顯是因為他的實驗數據本身和他的計算方式沒有可比性,導致他不合理的計算級別的結果恰好與實驗數據較為接近。