使用Multiwfn計算晶體結構中自由區域的體積、圖形化展現自由區域
使用Multiwfn計算晶體結構中自由區域的體積、圖形化展現自由區域
文/Sobereva@北京科音 2021-Sep-15
0 前言
之前筆者寫過一篇《使用Multiwfn圖形化展示分子動力學模擬體系中的孔洞、自由區域》http://www.shanxitv.org/539),講解怎么用Multiwfn計算分子動力學模擬出的盒子里面的自由區域的體積(free volume)、怎么圖形化展示自由區域(free region)。最近更新的Multiwfn在這部分功能上又做了大幅強化,使得這個功能如今也特別適合用于考察實驗測定的或理論預測的晶體結構中的自由區域,對于經常和晶體打交道的人非常有用處。在本文就舉簡單的例子體現Multiwfn在這方面的重要用處,也算是對前文的補充和擴展。絕大部分細節、原理和算法在http://www.shanxitv.org/539的第3節里都詳細說過了,讀者沒看過的話一定要仔細看一下,這里就不再重復了。
讀者請務必使用2021-Sep-14及以后更新的Multiwfn,可以在http://www.shanxitv.org/multiwfn免費下載。如果你對Multiwfn不了解的話看《Multiwfn入門tips》(http://www.shanxitv.org/167)和《Multiwfn FAQ》(http://www.shanxitv.org/452)了解相關常識。使用本文的方法發表文章時請記得按照Multiwfn啟動時的提示恰當引用程序。
使用本文介紹的功能可以用各種Multiwfn支持的包含晶胞信息的文件作為輸入文件。比如含有CRYST1字段的pdb文件、GROMACS程序的gro文件、cif文件、VASP的POSCAR、CP2K的restart文件、含有平移矢量(Tv)的Gaussian輸入文件,等等,完整列舉見《使用Multiwfn非常便利地創建CP2K程序的輸入文件》(http://www.shanxitv.org/587)的相應部分。本文的例子全都用X光衍射測定的cif文件作為輸入文件。
1 例1:有機共價框架化合物
1.1 計算格點數據
Multiwfn文件包里的examples\COF_12000N2.cif是一個有機共價框架化合物(COF)的晶體結構文件,我們對它計算自由區域的體積并圖形化展現之。啟動Multiwfn,然后輸入
examples\COF_12000N2.cif
300 //其它功能(Part 3)
1 //計算自由區域體積、可視化自由區域
1 //設置格點并開始計算
[按回車] //用默認的(0,0,0)作為格點數據的起點
[按回車] //用晶胞的三個邊長作為格點數據計算范圍的三個邊長
[按回車] //格點間距用默認的0.25埃。數值越小耗時越高、圖像越精細、自由區域體積計算越準確。而同樣格點間距下,晶胞越大,格點數就越多,耗時會越高
瞬間就算完了,從屏幕上可見
Volume of entire box: 2996.151 Angstrom^3
Free volume: 1953.217 Angstrom^3, corresponding to 65.19 % of whole space
即曰自由區域的體積是1953.2 ?^3,占晶胞總體積2996.2 ?^3的65.2%。由于自由區域,即沒被原子占據的區域,都達到了差不多2/3,顯然這個體系的密度肯定比較低。注意當Multiwfn一開始載入這個cif文件時,從屏幕上可以直接讀到此體系的密度,如下所示,可見確實密度很低:
Density: 0.70565 g/cm^3 ( 705.653 kg/m^3 )
格點數據算完后就進入了后處理菜單。雖然里面的選項3可以直接觀看平滑后的格點數據等值面,但由于當前體系的晶胞是非正交的,這種情況在Multiwfn里目前還無法正常顯示等值面圖,因此我們選擇選項4將平滑化的格點數據導出為當前目錄下的free_smooth.cub,之后可以用VMD、VESTA、ChimeraX等第三方可視化程序觀看等值面。
1.2 使用VMD顯示自由區域
下面我們用VMD觀看free_smooth.cub的等值面圖。VMD可以在http://www.ks.uiuc.edu/Research/vmd/免費下載,這里筆者用的是VMD 1.9.3 Windows版。在VMD里對cub文件快速顯示效果很好的等值面的方法在《在VMD里將cube文件瞬間繪制成效果極佳的等值面圖的方法》(http://www.shanxitv.org/483)里已介紹了。簡單來說,把Multiwfn程序包里的examples\scripts目錄下的showcub.vmd復制到VMD目錄下,用文本編輯器編輯VMD目錄下的vmd.rc,在末尾插入一行source showcub.vmd并保存。之后把free_smooth.cub移動到VMD目錄下,啟動VMD,然后在文本窗口輸入cub free_smooth 0.5即可顯示出數值為0.5的等值面。然后再在文本窗口里輸入pbc box命令顯示出邊框,即看到下圖
可見綠色等值面非常理想地將自由區域展現了出來。
還可以在VMD main窗口里選Display - Orthographic改為正交視角,然后按一下鍵盤上的等號鍵重置視角,從而精確地以垂直的視角觀看此體系、更準確地觀看自由區域的輪廓,如下所示
當前等值面覆蓋的區域基本上就是不在分子范德華半徑內的區域。因此如果在VMD的"Graphics" - "Representation"里把顯示體系結構的那個表示的Drawing method改為VDW顯示其范德華表面,就會看到范德華表面和等值面幾乎精確貼合,如下所示,這體現出當前展示的自由區域的合理性
上面是對平滑化的格點數據繪制數值為0.5的等值面,大家可以在"Graphics" - "Representation"里點擊第二項(它用于顯示正值部分的等值面),修改里面的isovalue值,設得越接近1則自由區域顯得越大,越接近0則顯得自由區域越小,可以由此微調自由區域的顯示效果。
1.3 使用VESTA顯示自由區域
VESTA是常用的晶體結構可視化程序,也可以顯示等值面,在http://jp-minerals.org/vesta/en/可免費下載。用VESTA顯示自由區域甚至可以得到比VMD更好的效果,所以這里特意說一下。筆者用的是VESTA 3.5.7。
啟動VESTA后把free_smooth.cub往里一拖就可以載入,確保界面左側Style標簽頁里的Show isosurfaces是選中的狀態。然后點擊左下角的Properties,選擇Isosurfaces標簽頁,選擇列表框里面僅有的那項,把Isosurface level設為0.5。可以再修改一下Opacity 1后面的值,越接近255透明度越低,這里設為220。此時界面里的設置以及看到的圖像如下所示,可見圖像效果很不錯。
上面在VMD和VESTA里看到的自由區域對應的等值面在盒子邊緣處是封閉的,這是由于Multiwfn默認設置下做了特殊處理所致的。如果你不希望邊界被封閉,也可以在主功能300的子功能1的界面里選一次“5 Toggle making isosurface closed at boundary”選項使之狀態切換為No,之后再按照與前文相同的操作計算格點數據、導出free_smooth.cub。之后拖入VESTA,將界面左側的Show sections復選框取消選中,然后按前文的方式顯示等值面后看到的就是下圖的效果
VESTA也可以直接把上圖中的自由區域填充顯示,只需點擊界面左側的Show sections開啟section的顯示即可,此時如下所示,效果很好,特別是占據區域與自由區域之間的過渡區域用色彩漸變的方式美觀地展示了出來
可以再把顯示效果改改。這里在界面左側將等值面的顯示風格設為Wireframe,然后點Properties按鈕,在Sections標簽頁里修改透明度、要求顯示等值線、色彩刻度改為R-G-B,之后界面狀態和看到的圖像如下所示,可見非常漂亮。
2 例2:C60晶體
這個例子我們考察一下C60晶體結構中的自由區域。此體系的cif文件可以在http://www.shanxitv.org/attach/617/C60.cif下載。
啟動Multiwfn,載入C60.cif,然后輸入
300 //其它功能(Part 3)
1 //計算自由區域體積、可視化自由區域
1 //設置格點并開始計算
[按回車] //用默認的(0,0,0)作為格點數據的起點
[按回車] //用晶胞的三個邊長作為格點數據計算范圍的三個邊長
0.15 //格點間距為0.15埃
之后從屏幕上可見,自由區域占了整個晶胞的27.9%,比前例COF的情況小得多。
此例為了圖像效果理想,使用了比默認的0.25埃更小的格點間距。由于當前晶胞不大,所以也是瞬間就算完了。如果你對比一下,會發現0.15埃時候的等值面圖比0.25埃的時候更平滑。
由于這個體系的晶胞是正交的,因此可以在Multiwfn里直接顯示自由區域對應的等值面。在后處理菜單選擇3,并且勾選Show cell復選框,就可以看到下圖
如果導出free_smooth.cub后放到VESTA里繪制,且結構用Stick方式顯示,可以把自由區域看得更清楚,如下所示(這里選了View - Perspective切換為了透視視角)。可見在C60中心區域,以及六個富勒烯的接壤處(下圖中央部分)都有明顯的自由區域。
3 例3:硫花
這個例子我們考察一下硫花晶體結構中的自由區域。此體系的cif文件可以在http://www.shanxitv.org/attach/617/sulflower.cif下載。
載入這個文件,進主功能0,并且選Other settings - Toggle showing cell frame后看到的單胞結構如下。
可見晶胞把硫花分子結構截斷了,甚至連一個完整的分子都沒有。為了能清晰地觀察孔洞區域與分子位置的相對關系,我們應當先把晶胞延展復制得大一些,這可以用《Multiwfn中非常實用的幾何操作和坐標變換功能介紹》(http://www.shanxitv.org/610)里介紹的功能。在Multiwfn里輸入
300 //其它功能(Part 3)
7 //對當前體系做幾何操作
19 //構造超胞
3 //第一個方向延展成原先的3倍
1 //第二個方向保持原狀
2 //第三個方向延展成原先的2倍
此時可以選0看一下當前的結構,如下所示,可見晶胞基本上夠大了
之后可以選相應將當前結構選項保存成結構文件,而我們這里不保存,直接輸入-10返回主功能300的界面。之后使用和上一個例子完全相同的過程產生free_smooth.cub并用VESTA繪圖。恰當設置等值面數值、顏色和透明度之后看到下圖
由圖可見,硫花堆疊的方向并沒有自由區域,因為堆積得很緊密,但是硫花側向接觸的區域卻有不小的自由區域。
4 總結
本文介紹了使用Multiwfn程序計算晶體中自由體積,以及結合VMD或VESTA繪制出漂亮、清晰的描述自由區域的等值面的方法。本文的方法涉及的程序完全免免費,操作簡單,普適性強,對于常見大小的晶胞耗時非常低,因此對于經常和分子晶體、多孔材料等類型晶體打交道的人很有用處,在相關研究文章中都可以放一張這種圖。而且通過圖形化展現自由區域還便于考察小分子可能的吸附位置,有時候還可以與《談談范德華勢以及在Multiwfn中的計算、分析和繪制》(http://www.shanxitv.org/551)里介紹的對晶體計算范德華勢相結合進行更充分的討論。
另外值得一提的是,使用默認的方法(基于誤差函數,scale factor為1)產生的平滑化的格點數據不一定總是圖像效果最理想的,有時候在Multiwfn里切換成其它的函數做平滑可能效果更好,這在《使用Multiwfn圖形化展示分子動力學模擬體系中的孔洞、自由區域》(http://www.shanxitv.org/539)的第3節有專門說明。有時候0.5的等值面對自由區域的展現也不是最理想的,大家可以根據實際情況進行適當調節。
如果你不是想對晶胞、盒子里的孔洞予以展現,而只是想展現籠狀、環狀分子里的孔洞以及計算其體積,不要用本文的做法,有專門的文章:《使用Multiwfn可視化分子孔洞并計算孔洞體積》(http://www.shanxitv.org/408)。
后記:網上有個人看了本文后,問我能不能對他用CP2K做動力學模擬的兩個二維材料間的空隙區域予以展現,我遂用Multiwfn載入了他的CP2K的restart文件,按照本文方法作了圖。Multiwfn里計算時要求邊界不封閉,在VESTA里顯示時將section的透明度設為了10%,等值面數值設為了0.95(此時只有最顯著的孔洞區域會被展現),得到的圖像如下所示,可見非常清晰地把兩個片層之間的孔洞以黃色等值面表現了出來。