• 在VMD中將距離較近的分子質心連線的腳本

    在VMD中將距離較近的分子質心連線的腳本

    文/Sobereva @北京科音  2018-Mar-7


    在計算化學公社論壇上有人問下圖這種把距離較近的分子質心連線的圖怎么繪制




    其實這種問題用VMD的tcl腳本非常容易實現,下面是筆者寫的繪制這種圖的tcl腳本,20多行就實現了。可見VMD腳本稍微會一點就能解決很大問題。

    draw delete all
    draw color orange
    set nres [llength [lsort -unique [[atomselect top all] get residue]]]
    for { set ires 1 } { $ires <= $nres } { incr ires } {
    set sel [atomselect top "resid $ires"]
    set COM [measure center $sel weight mass]
    set x($ires) [lindex $COM 0]
    set y($ires) [lindex $COM 1]
    set z($ires) [lindex $COM 2]
    draw sphere "$x($ires) $y($ires) $z($ires)" radius 1.5
    $sel delete
    }

    draw color yellow
    set crit 10
    for { set ires 1 } { $ires <= $nres } { incr ires } {
    for { set jres [expr $ires+1] } { $jres <= $nres } { incr jres } {
    set dx2 [expr ($x($ires)-$x($jres))**2]
    set dy2 [expr ($y($ires)-$y($jres))**2]
    set dz2 [expr ($z($ires)-$z($jres))**2]
    set dist [expr sqrt($dx2+$dy2+$dz2)]
    if { $dist<$crit } {
    draw cylinder "$x($ires) $y($ires) $z($ires)" "$x($jres) $y($jres) $z($jres)" radius 0.5
    }
    }
    }

    原理:

    原理很簡單,先得到體系中的殘基數,然后把每個殘基的質心存到數組里,與此同時在質心位置繪制一個圓球。

    之后循環每一對殘基,如果質心距離小于閾值,就調用draw cylinder命令繪制圓柱將二者質心相連。


    用法:

    先把結構文件或軌跡載入VMD,然后把上面的腳本拷到VMD文本窗口執行,就會看到圖形窗口已經呈現下面的效果了(用的示例文件在此:snapshot-1.rar)。




    連線閾值默認是10埃,可以通過set crit那行后面的值控制。

    如果不想顯示圓球,就把draw sphere那行開頭加上#注釋掉。圓球半徑通過draw sphere末尾的radius后面的參數控制,圓球顏色通過此命令上面的draw color后面的顏色名控制。

    圓柱半徑通過draw cylinder那行末尾的radius后面的值控制,圓柱顏色通過此命令上面的draw color后面的顏色名控制。

    修改過腳本后,重新把腳本復制到文本窗口,就會自動刪掉之前繪制的圖形重新繪制一遍。如果是軌跡,當前在哪幀,就會按照哪幀的結構來繪制。
    久久精品国产99久久香蕉