Plot 3D mode vectors in VMD
From Computational Biophysics and Materials Science Group
#########################################
## Description: TCL script for drawing mode vectors as arrows considering contribution from each modes
## Author: Kevin May 2014
## Usage: source draw_modes.tcl
## Input: idv.dat (individual contribution of modes)
## vec.dat (mode vectors)
## .xyz (coordinate of CG sites at the frame you interested, usually the last)
## Output: graphical plots
## Units:
## Other Notes:
#########################################
proc vmd_draw_arrow {mol start end} {
# an arrow is made of a cylinder and a cone
set middle [vecadd $start [vecscale 0.9 [vecsub $end $start]]]
graphics $mol cylinder $start $middle radius 0.35
graphics $mol cone $middle $end radius 0.55
}
set natoms 40
set nmodes 8
for {set i 1} {$i <= $natoms} {incr i} {
set fi [open "idv.dat" r]
set ff [open "vec.dat" r]
set fc [open "unsym+last.xyz" r]
set nlines 1
set sumv [veczero]
for {set nlines 1} {$nlines <= [expr $natoms*$nmodes]} {incr nlines} {
if {$nlines<=$i} {gets $fc start}
gets $ff vector
if {[expr ($nlines-$i)%$natoms] != 0} {continue}
if {[expr ($nlines-$i)%$natoms] == 0} {
gets $fi idv
set vector [vecscale $vector $idv]
set sumv [vecadd $sumv $vector]
}
if {[expr ($nlines-$i)/$natoms+1]==$nmodes} {set sumv [vecscale $sumv 200]}
set end [vecadd $start $sumv]
draw color ochre
#puts "$i $nlines $idv $start $end"
draw arrow $start $end
}
}