用Multiwfn+VMD做RDG分析時的一些要點和常見問題
用Multiwfn+VMD做RDG分析時的一些要點和常見問題
文/Sobereva @北京科音
First release: 2015-Jun-2 Last update: 2022-Mar-8
用Multiwfn (http://www.shanxitv.org/multiwfn)結合VMD繪制RDG填色等值面圖是研究弱相互作用的必不可少的法寶,廣為流行,詳見《使用Multiwfn圖形化研究弱相互作用》(http://www.shanxitv.org/68)。這里說幾點RDG分析經常被問到的一些問題。其中很多討論對于繪制IGM圖、IGMH圖、IRI圖也是通用的,IGM方法介紹見《通過獨立梯度模型(IGM)考察分子間弱相互作用》(http://www.shanxitv.org/407),IGMH方法介紹見《使用Multiwfn做IGMH分析非常清晰直觀地展現化學體系中的相互作用》(http://www.shanxitv.org/621),IRI方法介紹見《使用IRI方法圖形化考察化學體系中的化學鍵和弱相互作用》(http://www.shanxitv.org/598)。
1 和改進圖像質量有關的問題
這里的例子用的是大家習慣用的白背景(設置方法:Graphics-Color-Display-Background-white)。
1.1 關掉Depth cueing
默認情況下VMD是開著Depth cueing的,這可以使距離觀測者越遠的部分被霧化得越重,以突出離屏幕較近的部分。但是對于白背景的情況,在繪制RDG圖時會使得圖像變得有些朦朧,很多人都沒注意到這個問題。如下圖
建議選擇Display-Depth cueing將這個設定關掉,圖像就鮮艷、通透多了,如下所示
注:目前最新版本的Multiwfn里自帶的RDG作圖腳本默認就是將Depth cueing關閉的,故不需要自己改。
1.2 抗鋸齒
VMD顯示的圖形在白背景下邊緣的鋸齒看起來往往比較明顯,建議開啟抗鋸齒。如果Display里能選Antialiasing,點它就行了。如果這是灰色的,可以在顯卡的驅動面板里強行開啟抗鋸齒(具體操作視顯示芯片而定)。還一種方法就是用Tachyon渲染器渲染,也能起到抗鋸齒的效果(具體步驟見第1.4節)。下圖左邊是默認情況,右邊是用Tachyon渲染后有抗鋸齒效果的情況,圖片進行了放大,可見邊緣圓潤多了。
另外順帶一提,也可以先獲得沒有抗鋸齒的大尺寸的圖像,然后用ps等程序把尺寸縮小,在這個重新采樣的過程中也會等效地實現抗鋸齒效果。
1.3 光源
默認光源設定下,有些等值面可能看起來偏黑,不好看甚至影響對顏色的判斷。此時可以選Display里面的Light 2或3開啟沒使用的光源,以使得暗處被照亮。還可以用Mouse - Move Light,選擇新開的光源編號,然后在圖形窗口中拖動來自行移動光源。上圖把Light 3開啟后,可見左側苯環中央的梭型等值面從原來的暗紅變成鮮紅了。注:目前最新版本的Multiwfn里自帶的RDG作圖腳本默認就是開啟Light 3光源的,故不需要自己改。
1.4 圖像尺寸與渲染器
很多人都是直接用鍵盤的printscreen鍵直接截圖再粘貼,或者用File-Render-Snapshot再點Start Rendering來得到圖像的bmp文件,得到的效果都一樣,都是屏幕上實際看到的。圖像尺寸取決于窗口的尺寸,把窗口拉大,或者在窗口里把分子放大,都可以讓圖像中的體系更大(注意如果在窗口里把分子放得過太大,邊緣區域會有透視畸變)。以這樣的方式獲得圖像,顯然圖像的最大像素取決于屏幕的分辨率,屏幕分辨率低的話自然就不能得到高像素的圖像文件。
VMD還可以用File-render-POV-Ray產生著名的POV-Ray渲染器的輸入文件.pov,再用POV-Ray渲染,這樣可以抗鋸齒,也可以任意指定分辨率。但是需要獨立安裝POV-Ray,而且POV-Ray沒法結合VMD渲染出RDG等值面圖的填色效果(會看到等值面上都是灰白色),所以這里就不多說了。
作RDG圖我比較推薦用Tachyon渲染。Tachyon是個渲染器,VMD已經將它附帶了,不需要額外安裝,只要選File-Render-Tachyon (interal, in-memory rendering),點Start Rendering,就可以直接調用Tachyon渲染當前窗口里的圖像,得到.tga文件,可以用IrfanView等看圖程序或ps等圖像編輯程序打開。用Tachyon渲染的圖像默認就有抗鋸齒效果。另外,如果顯卡比較老或者驅動有兼容性問題,沒法開啟Display-Rendermode-GLSL的話,很多VMD里的效果都沒法正確顯示,比如最基本的透明效果,而使用Tachyon渲染則所有效果都可以正確表現出來。
按上述的方法調用Tachyon渲染出的圖像和窗口尺寸相同。如果想渲染出更大尺寸的圖像可按照此步驟:進入File-render,選擇Tachyon,點Start Rendering,在VMD目錄下就得到了Tachyon渲染器的輸入文件vmdscene.dat。然后在VMD目錄下建立一個文本文件,后綴為.bat,內容為
tachyon_WIN32.exe vmdscene.dat -aasamples 24 -mediumshade -trans_vmd -res 1024 768 -format BMP -o vmdscene.bmp
雙擊運行此bat文件就重新渲染得到了vmdscene.bmp。Tachyon命令行參數中-res控制分辨率。-aasamples越大鋸齒越不明顯。若想調節圖像內體系的尺寸,修改vmdscene.dat里的zoom,越大則圖像里的物體越大。
有的版本VMD里自帶的Tachyon渲染器可能不叫tachyon_WIN32.exe,請讀者將以上命令的此文件名改成實際Tachyon渲染器的可執行文件名。
2 其它問題
2.1 等值面邊緣有鋸齒、等值面中間有窟窿怎么辦?
格點間距越小,等值面邊緣就會越平滑,中間有窟窿的可能性就會越低。因此,指定用更高數目的格點,或者等價地,指定更小的格點間距就可以解決這個問題。如果你對Multiwfn的格點設置方面不了解,務必參看《Multiwfn FAQ》(http://www.shanxitv.org/452)一文的Q39。在RDG分析的設定格點的界面里,low、medium、high quality grid這三個選項對應于不同的格點總數,這里low/medium/high質量都是對于中、小體系而言的。對于大體系,往往不得不用較大盒子尺寸的時候,此時即便high quality grid的格點數所對應的格點間距也會偏大,導致圖像質量差。此時建議自行選擇"4 Input the number of points or grid spacing in X,Y,Z, covering whole system"選項然后輸入一個恰當的格點間距。下圖對比了對于苯酚二聚體體系,不同的預置的格點選項(括號里是對于當前體系的默認盒子尺寸的格點間距),以及自設為0.08 Bohr格點間距時的圖像。
PS:如果改用《使用Multiwfn做IGMH分析非常清晰直觀地展現化學體系中的相互作用》(http://www.shanxitv.org/621)介紹的IGMH方法考察弱相互作用,等值面邊緣鋸齒問題會比RDG方法輕得多得多。如果你想考察特定片段間相互作用,一定要用IGMH,遠遠比RDG靈活、理想。
2.2 色彩刻度的選擇有任意性,如何設定合理?
任意性很大這是RDG的一個弱點。一般建議用-0.035~0.02,或者-0.03~0.02。下限越接近0,則吸引作用區域越容易顯藍色,反之越容易顯綠色。雖然-0.04~0.02很常用,但這樣設定下比如一些偏弱的氫鍵的區域就不怎么顯藍色了。
2.3 如何將不同體系的散點圖用不同顏色作到一起?
對每個體系分別計算sign(lambda2)rho和RDG數據,在Multiwfn后處理界面選2 Output scatter points to output.txt將散點數據導出,后兩列數據就是作當前體系散點圖需要用的x,y數據。對多個體系都這樣得到散點數據。然后把這些數據都導入到Origin里,作散點圖,設定多個Layer,一個Layer對應一個體系即可,并用不同顏色區分。
2.4 體系比較大,可否分別計算體系的幾個部分,然后同時顯示出來?
可以。計算的時候通過合理設定格點數據的計算范圍就可以只計算不同區域。VMD中顯示多少填色等值面都行,互不沖突,作為不同的id即可。Multiwfn提供的作圖腳本只能繪制一對func1.cub vs func2.cub對應的填色等值面圖,若要同時繪制很多個,可以自己重新編寫腳本,如果不會,建議還是在圖形界面操作。已提供的那個RDG繪圖腳本里的每一行命令都對應于圖形界面的一個操作,只要自己弄會了怎么通過手動在圖形界面操作來顯示填色等值面圖,就自然而然明白怎么再顯示更多的填色等值面。簡單來說,計算體系一部分后,得到func1.cub和func2.cub,把func2.cub拖進VMD,會產生一個id,然后載入func1.cub,載入的時候選擇載入到func2.cub那個id里。然后進graphics-representation,點Create Rep新建一個等值面的層,將Drawing method改成isosurface,設置好isovalue(一般為0.5),Show設成Isosurface,Draw設成Solid Surface,然后Coloring method設為Volume,選擇func1.cub,然后在Trajectory標簽頁把Color Scale Date Range設為合適的色彩刻度。類似地,計算體系的其它部分,得到func1.cub和func2.cub,將func2.cub拖進VMD自動又產生一個新id,之后也是如上操作就行了。這樣多個id對應的填色等值面就可以顯示體系的不同區域了。
2.5 散點圖中有一些spike并未完全戳到底(雖然離底部很近),合理么?有物理意義么?
合理,這些spike一般也是有意義的。用AIM分析無法展現這些spike對應的作用,不會出現臨界點,但是用RDG方法可以表現出來,照樣可以顯示出對應的等值面。一些弱相互作用不一定有對應的BCP,但用RDG方法可以被展現出來,這是RDG方法相對于AIM的一個優勢。參看筆者發表的IRI方法原文Chemistry—Methods, 1, 231-239 (2021) DOI: 10.1002/cmtd.202100007里2.4節的深入討論。
2.6 RDG分析能定量化么?
要想定量討論,就看spike的位置,或者結合AIM定量分析,參看《AIM學習資料和重要文獻合集》(http://bbs.keinsci.com/thread-362-1-1.html)里面的資料了解相關基礎知識以及如何在Multiwfn里做AIM分析。順帶一提,對于氫鍵靠AIM理論可以準確地估計作用能,見《透徹認識氫鍵本質、簡單可靠地估計氫鍵強度:一篇2019年JCC上的重要研究文章介紹》(http://www.shanxitv.org/513)。也有人提出積分RDG等值面內部區域的做法(J. Phys. Chem. A, 115, 12983 (2011)),也通過Multiwfn強大的域分析功能實現,實例見手冊4.200.14.1節。
2.7 能繪制周期性體系的RDG圖么?
從Multiwfn 3.8版開始支持繪制周期性體系的RDG圖,但不是所有主流的第一性原理程序都支持,通常建議結合CP2K實現。詳情和例子見《使用Multiwfn結合CP2K通過NCI和IGM方法圖形化考察固體和表面的弱相互作用》(http://www.shanxitv.org/588)。另參考《使用IRI方法圖形化考察化學體系中的化學鍵和弱相互作用》(http://www.shanxitv.org/598)和《使用Multiwfn做IGMH分析非常清晰直觀地展現化學體系中的相互作用》(http://www.shanxitv.org/621)中提到的IGMH官方教程中的考察周期性體系的例子。
實際上你看過《使用Multiwfn非常便利地創建CP2K程序的輸入文件》(http://www.shanxitv.org/587)就會發現借助Multiwfn時CP2K的使用非常簡單。如果你之前用的是別的第一性原理程序算的,可以把已有的結構用CP2K算個單點來得到Multiwfn支持的波函數文件繪制RDG圖。
對于Multiwfn不直接支持的程序,可以基于promolecular近似來作RDG圖,只需要坐標信息就夠了。也就是用周期性體系計算程序優化好結構后,把得到的結構輸出為.pdb、.xyz、.mol、.cif等普通的記錄坐標的格式,載入到Multiwfn里,然后基于promolecular近似來做RDG分析。雖然結果肯定遠不如基于波函數時的準確,但一般是定性正確的。
2.8 體系比較大,RDG等值面太多不便于分析,怎么只考察部分區域?
用Multiwfn的主功能13處理一下RDG格點數據把不感興趣的部分屏蔽掉,參見Multiwfn手冊4.13.4節的實例,在《使用Multiwfn結合CP2K通過NCI和IGM方法圖形化考察固體和表面的弱相互作用》(http://www.shanxitv.org/588)的3.6節也有這種做法的例子。要么就在Multiwfn讓你設置格點的時候恰當設置,讓計算格點數據的空間范圍只涵蓋你感興趣的區域。還有一種辦法是借助liyuanhe寫的程序,見http://bbs.keinsci.com/thread-16243-1-1.html,其做法可以控制每個單獨的等值面是否顯示。
真正完美且明顯更方便的做法是改用IGMH方法,直接就可以指定只考慮哪些部分間的相互作用,見《使用Multiwfn做IGMH分析非常清晰直觀地展現化學體系中的相互作用》(http://www.shanxitv.org/621),強烈建議用IGMH代替RDG!
2.9 一個體系有好多種相互作用,散點圖上有好多spike,怎么區分哪個相互作用對應哪個spike?
區分方法有三:
(1)用Multiwfn做AIM分析(見http://www.shanxitv.org/108),可以得到各個弱相互作用區域對應的BCP的sign(lambda2)rho值,然后跟散點圖對照一下,就知道哪個spike對應什么位置了。
(2)設定格點數據計算范圍的時候,讓計算的盒子中心處在某個弱相互作用區域中央,適當調節盒子的延展范圍,讓計算的空間區域恰好囊括那個弱相互作用區域。然后得到的散點圖的spike就只對應那個弱相互作用了。
(3)從散點圖中可以看到每個spike對應的sign(lambda)2rho范圍。假設一個spike大約在-0.034到-0.03,想弄清楚這個spike對應哪個RDG等值面,就可以選-3 Set function2 value where the value of function1 is out of a certain range,然后輸入-0.034,-0.03,然后輸入一個很大的值比如100。這樣sign(lambda)2rho小于-0.034或大于-0.03的格點的RDG值就被設為了100,再做RDG等值面圖的時候,就只出現這個弱相互作用對應的等值面了,其它弱相互作用區域的等值面就被屏蔽掉了。(順帶一提,利用這個屏蔽方法去掉無關區域,往往可以使得RDG值設定得較高也不會出現其它無關區域,這樣RDG等值面可以變得比豐滿,從而減少鋸齒、窟窿現象)
(4)用http://www.shanxitv.org/399文中的做法繪制帶有填色效果的散點圖,這樣通過對比等值面的顏色和散點圖的顏色就可以判斷對應關系。但是當多個spike出現位置都相近的時候顯然就區分不開了。
2.10 老師,您看我的散點圖(發來圖片...),能說明其中有弱相互作用么?
絕對不要光看散點圖!要先看RDG填色等值面圖,弱相互作用在什么位置、什么特征一目了然。有那么直觀的等值面圖不看干嘛非要只看一張特別抽象的散點圖?光給出散點圖的話別人都不知道你的體系是什么結構。僅當需要定量考察、對比的時候才應當結合散點圖一起看。
2.11 能用其它程序作RDG圖么?
VMD作出來的RDG填色等值面圖效果又好又方便。Chemcraft也能作填色等值面圖,但是難看多了。Jmol、Gabedit、AIMALL等其它一些程序也開始支持繪制RDG填色等值面圖了,但是比VMD效果差得太遠,而且計算速度也遠不如Multiwfn快、操作不如Multiwfn方便,也沒法給出散點圖、屏蔽等值面、利用promolecular近似等等。Multiwfn+VMD是RDG分析的黃金組合。另外,基于Multiwfn輸出的格點文件用Pymol也可以繪制RDG填色圖,著色效果更鮮亮一些,感興趣可以看http://bbs.keinsci.com/thread-15756-1-1.html。
2.12 作圖時往往看到里面藍外面紅的環狀等值面,是怎么回事?
此圖是一個典型情況:

這種情況一般出現在相互作用很強的兩個原子間。settings.ini文件的默認設置是RDG_maxrho=0.05,這即是說將電子密度大于0.05 a.u.的區域屏蔽掉,因為這樣就可以只把體系中弱相互作用區域,也就是電子密度較小的區域展現出來。但是有些弱相互作用其實強度已經甚強了,甚至已經不屬于弱相互作用的范疇,而是較弱化學鍵的范疇,這種情況下兩個原子相互作用區域的中央部分電子密度會超過0.05 a.u.,而在外圍部分電子密度小于0.05 a.u.,因此默認情況下這塊相互作用區域的RDG等值面的中間部分就會被屏蔽掉,而只剩下周圍一圈。這種環狀區域往往看著很礙眼,可以直接ps掉,也可以索性把RDG_maxrho設為0,不對任何區域進行屏蔽,此時就會看到完整的圓片形等值面了,但這時候在化學鍵區域會出現沒有什么意義的等值面。
如果你想把當前體系中所有相互作用無論強弱全都清晰地在一張圖里展現出來,強烈建議使用筆者提出的IRI方法,見《使用IRI方法圖形化考察化學體系中的化學鍵和弱相互作用》(http://www.shanxitv.org/598)。上圖那種情況已經涉及到化學鍵程度的相互作用了,用IRI明顯比用RDG合適得多。
2.12_2 為什么藍色等值面外面一圈是紅色的?
此圖是一個典型情況:
這是由于投影到等值面上的函數sign(lambda2)rho自身的特征所致,這個函數的sign(lambda2)部分不是一個平滑的函數。在某些地方,lambda2的數值非常接近0,此時它的符號是正還是負在化學意義上并沒有本質的區別,但是lambda2的輕微變化就會影響sign(lambda2)rho的符號、使之發生突變。像上面那張圖,等值面外圈藍色一下子變成紅色就是這種突變。那一圈是紅色顯然沒有任何化學意義,無法做任何化學上的解釋,因此直接無視掉就完了。如果想避免出現那圈紅色就加大RDG等值面數值,讓等值面稍微收縮一點,避免RDG等值面涉及到sign(lambda2)rho為正的區域而被投影成紅色。
2.13 為什么有的弱相互作用區域沒顯示出來?
有些弱相互作用實際上強度很強,比如那種鍵能都能超過100 kJ/mol的共價成分已經較明顯的氫鍵,其相互作用區域電子密度已經很大了,這時候默認的RDG_maxrho=0.05太小,會導致這些地方被屏蔽掉。適當調大RDG_maxrho,重新作圖即可(或者改用前述的IRI代替RDG,所有類型相互作用都能清晰展現而不需要設置閾值。我總是建議用IRI代替RDG方法)。記住,使用RDG方法前一定要優化結構,對于從晶體中截取的結構,氫原子的位置是不準的,若不優化氫,可能會由于氫的位置距離氫鍵受體原子太近從而沒能出現它們之間的等值面(即這部分的電子密度被嚴重高估了)。
2.14 怎么在第三方程序里繪制RDG散點圖?
在Origin里的繪制過程看此視頻的演示:《用Multiwfn+Origin繪制RDG(NCI)方法的散點圖》(https://www.bilibili.com/video/av27535384)。通常來說更推薦在gnuplot里繪制,又方便,又免費,又有著色效果,看《繪制有填色效果的用于弱相互作用分析的RDG散點圖的方法》(http://www.shanxitv.org/399)。
2.15 為什么我的散點圖里面spike上的點顯得比較散?意味著什么?
不要想太多,這不體現什么化學意義上的問題。比較散說明落在弱相互作用區域的格點比較少而已,要么是格點間距偏大,要么是弱相互作用區域比較小。如果想看起來密集一些,在第三方程序里繪制散點圖的時候可以讓點的尺寸加大一些,或者在RDG分析前設定格點的那一步把弱相互作用區域的格點間距改小一些。關于格點設定方面的基本知識和相關問題,看《Multiwfn FAQ》(http://www.shanxitv.org/452)第3節的相關條目。
2.16 怎么我繪制出來的RDG等值面都是灰色的?
這是因為VMD和顯卡有兼容性問題,導致顏色沒顯示出來。嘗試去下載當前顯卡的最新的顯卡驅動并裝上,或者找其它的用了與你當前機子不同顯卡的機子嘗試。或者用Tachyon渲染器渲染,這樣看到的圖像就是純軟件產生的了而不依賴于顯卡了,因此顏色肯定能照常顯示。還有一種可能是cub文件有問題而無法載入,或者cub文件太大而你用的是32bit版VMD因而無法載入,載入時注意看VMD文本窗口的提示判斷。
2.17 怎么得到高清晰度的色彩刻度條以用于我的文章當中?
最新版Multiwfn程序包的examples目錄下已提供(RGB_bar.png)。
2.18 RDG、IGM、IGMH、IRI這些圖形化相互作用分析方法該如何選用?
參看《使用Multiwfn做IGMH分析非常清晰直觀地展現化學體系中的相互作用》(http://www.shanxitv.org/621)第3節的詳細討論。