• 將分子結構圖和Multiwfn繪制的平面圖準確合并的方法

    將分子結構圖和Multiwfn繪制的平面圖準確合并的方法

    文/Sobereva @北京科音   2014-Dec-31


    Multiwfn的主功能4可以對各種實空間函數(如電子密度、ELF、自旋密度、靜電勢等)繪制出各種類型的平面圖,尤其是填色圖和等值線圖非常常用。但這種圖中,Multiwfn只會在圖中相應位置顯示元素名或序號,不會顯示出分子結構,有時候把分子結構附上會令圖像看起來更直觀。如果作圖平面恰好是XY,YZ,XZ平面還比較好辦,但如果作圖平面是斜著的面,就得用一些技巧了,這里通過實例來說明,我們繪制CH3NH2在C-N-H這個平面上的ELF圖。本文使用的Multiwfn 3.3.6,可以從http://www.shanxitv.org/multiwfn免費下載。

    2018-May-25注:從3.6版開始,在繪制平面圖(地形圖除外)的后處理菜單中增加了選項8,可以直接將化學鍵繪制成連線,見http://bbs.keinsci.com/thread-10079-1-1.html


    我們先用Gaussian計算CH3NH2的fch文件
    %chk=C:\gtest\CH3NH2.chk
    #p b3lyp/6-31g(d)

    B3LYP/6-31G* opted

    0 1
     C                  0.05159500    0.70381800    0.00000000
     H                  0.59439800    1.06209400    0.88166000
     H                  0.59439800    1.06209400   -0.88166000
     H                 -0.94293100    1.18451300    0.00000000
     N                  0.05159500   -0.76078400    0.00000000
     H                 -0.45830300   -1.10306000    0.81258800
     H                 -0.45830300   -1.10306000   -0.81258800


    將fch文件載入Multiwfn,在主功能0里面我們看到C-N-H平面是斜著的。

    我們下面繪制C1-N5-H6這個平面的ELF等值線圖。退回到菜單,依次輸入
    4
    9
    2
    [回車]
    4
    1,5,6

    圖像彈出后,我們看到圖中的碳上還有兩個氫的符號沒出現,這是因為它們離作圖平面太遠了。這里我們讓它們也顯示出來,這在之后在photoshop(ps)里準確定位原子位置有益(對此例其實無所謂,但對其它體系不顯示的話就可能難以在ps里定位了)。關閉圖像,選17,輸入一個很大的閾值10,這說明距離作圖平面10埃以內的原子標簽正常顯示,然后輸入y或n都行(輸入y代表距離超過閾值的原子用較細的字體顯示,n代表完全忽略掉)。選0將圖像保存為DISLIN.PNG,這幅圖主要用來在ps里定位用:

    然后我們選1讓原子標簽不顯示,再次選0輸出圖像成為DISLIN_1.PNG,這幅圖之后將與分子結構圖相合并。此時Multiwfn可以關了。


    之后我們要得到一個分子結構圖,令圖中C1-N5-H6這個平面和屏幕恰好精確平行。如果你覺得自己的眼力很好也有耐心,可以直接在可視化程序里仔細旋轉視角來滿足這一點,但是通常很難做到,這就會導致分子結構圖和Multiwfn作的平面圖的原子位置對應不上。筆者建議先用VMD(http://www.ks.uiuc.edu/Research/vmd/)讓C1-N5-H6這個平面恰好在XY平面上。具體做法是啟動VMD,然后載入CH3NH2的結構文件(一般用pdb或xyz文件,比如用Multiwfn的主功能100里的子功能2就可以導出這些格式),之后把以下代碼拷貝到VMD的文本窗口里來增加alignplane命令:

    proc alignplane {ind1 ind2 ind3} {
    set atm1 [atomselect top "serial $ind1"]
    set atm2 [atomselect top "serial $ind2"]
    set atm3 [atomselect top "serial $ind3"]
    set vec1x [expr [$atm2 get x] - [$atm1 get x]]
    set vec1y [expr [$atm2 get y] - [$atm1 get y]]
    set vec1z [expr [$atm2 get z] - [$atm1 get z]]
    set vec2x [expr [$atm3 get x] - [$atm1 get x]]
    set vec2y [expr [$atm3 get y] - [$atm1 get y]]
    set vec2z [expr [$atm3 get z] - [$atm1 get z]]
    set sel [atomselect top all]
    $sel move [transvecinv [veccross "$vec1x $vec1y $vec1z" "$vec2x $vec2y $vec2z"]]
    $sel move [transaxis y 90]
    }

    然后在文本窗口里執行alignplane 1 5 6,然后選擇display-orthographic使用正交視角,此時看到C1-N5-H6恰好平行于屏幕了,此時圖中的原子位置和DISLIN.png里已精確對應了。選Display-Axes-off關閉坐標軸,graphics-representation里適當調節分子結構顯示方式。然后把圖形窗口拉大一些,選file-render,下拉框選tachyon (internal),點start render渲染出圖像。結果如下

    接下來,把前面得到的DISLIN.png和DISLIN_1.png都在ps里放到一個窗口里作為兩個圖層顯示,且只讓帶標簽的那個層顯示。把VMD渲染出的圖像也弄到ps里,選擇“選擇”-“色彩范圍”,點擊圖中黑色背景,點擊“反相”復選框,這時分子結構就被選中了,復制粘貼到Multiwfn繪制的平面圖上作為新的圖層,并且把透明度低一些,這樣在定位時不會擋著原子標簽。然后用ctrl+T對其旋轉、縮放,直至原子核位置與Multiwfn平面圖的原子標簽準確對應上,比如下圖這樣

    然后把帶標簽的那個圖層關閉,并且將分子結構恢復為完全不透明,就得到想要的結果了,如下所示:

    還有很多技巧可以進一步改進效果,比如上圖中左下方的N-H鍵實際上是在繪圖平面下方的,因此可以用ps把這個鍵改成透明的以體現這點。這些都是零零碎碎的調整,多摸索嘗試就明白了,這里就不提了。

    久久精品国产99久久香蕉