VMD-L Mailing List
From: Amit Gupta (amit__at_outlook.in)
Date: Tue Dec 20 2016 - 06:28:54 CST
- Next message: Ashar Malik: "Re: Fw: Draw arrows in trajectory file"
- Previous message: Ashar Malik: "Re: Fw: Draw arrows in trajectory file"
- In reply to: Ashar Malik: "Re: Fw: Draw arrows in trajectory file"
- Next in thread: Ashar Malik: "Re: Fw: Draw arrows in trajectory file"
- Reply: Ashar Malik: "Re: Fw: Draw arrows in trajectory file"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Hi,
Yes I realized it and added it later on. Now I can see all the arrows, but together! I mean they are not changing with frame, rather all arrows from all frames are visible all the time
________________________________
From: Ashar Malik <asharjm_at_gmail.com>
Sent: Tuesday, December 20, 2016 5:49:33 PM
To: Amit Gupta
Cc: vmd-l_at_ks.uiuc.edu
Subject: Re: Fw: vmd-l: Draw arrows in trajectory file
Hi,
I think this maybe because you are not updating your selections properly. to see the arrow move - I guess your selections for arrows need to be updated on a frame by frame basis.
Try either "$sel update" after "$sel frame $i"
or drop the use of $sel update and use make selections like ...
set end [lindex [[atomselect top "index $n_atom" frame $i] get {x y z}] 0]
notice "frame $i" in the command you used. This will force a selection in the frame controlled by the loop.
I think this should fix it. Otherwise - write back.
Best,
/A
On Tue, Dec 20, 2016 at 10:45 PM, Amit Gupta <amit__at_outlook.in<mailto:amit__at_outlook.in>> wrote:
Sorry I sent the message below to the person who replied rather than to mailing list:
Thank you for the reply. I modified the script as written at the bottom of mail and it worked fine (did not crash). However now i notice that arrows are drawn only once, in the first frame. After which I do not see any movement in the arrows. Is there any way to draw arrows per frame?
Modified lines that worked:
set end_temp [atomselect top "index $n_atom"]
set end [lindex [ $end_temp get {x y z}] 0]
set start_temp [atomselect top "index $current_c_atom_index"]
set start [lindex [$start_temp get {x y z}] 0]
$end_temp delete
$start_temp delete
From: Norman Geist <norman.geist_at_uni-greifswald.de<mailto:norman.geist_at_uni-greifswald.de>>
Sent: Tuesday, December 20, 2016 2:07:25 PM
To: 'Amit Gupta'
Subject: AW: vmd-l: Draw arrows in trajectory file
You produced a common memory leak with many atomselects which you never clear.
After you no more need an atomselect object, you should call "delete" on it to free memory.
Eg.:
set a [atomselect top all]
set list [$a get index]
$a delete; #<-------
So whats happening is that vmd gets killed for eating up all the memory.
Best of luck
Norman Geist
Von: owner-vmd-l_at_ks.uiuc.edu<mailto:owner-vmd-l_at_ks.uiuc.edu> [mailto:owner-vmd-l_at_ks.uiuc.edu<mailto:owner-vmd-l_at_ks.uiuc.edu>] Im Auftrag von Amit Gupta
Gesendet: Dienstag, 20. Dezember 2016 07:31
An: vmd-l_at_ks.uiuc.edu<mailto:vmd-l_at_ks.uiuc.edu>
Betreff: vmd-l: Draw arrows in trajectory file
I want to draw come arrows in a lammps trajectory file, indicating movement of certain vectors.
I have written script below, it works fine for single frame, but for more than one frame, VMD crashes without any message (even in console). Can anyone suggest a reason?
draw color yellow
##-----------Draw arrow subroutine from VMD website----------
proc vmd_draw_arrow {mol start end} {
# an arrow is made of a cylinder and a cone
set middle [vecadd $start [vecscale 0.75 [vecsub $end $start]]]
graphics $mol cylinder $start $middle radius 0.1
graphics $mol cone $middle $end radius 0.3
}
##--------------------------------------------------------------------------------
set n [molinfo top get numframes]
set sel [atomselect top "all"]
set n_list [atomselect top "type 6"] #get indexes of all nitrogens in molecules
set all_n_atoms [$n_list get index]
for {set i 0} {$i < $n} {incr i} {
$sel frame $i
foreach n_atom $all_n_atoms {
set current_c_atom_index [expr $n_atom - 1] # get index of C attached to N
set end [lindex [[atomselect top "index $n_atom"] get {x y z}] 0]
set start [lindex [[atomselect top "index $current_c_atom_index"] get {x y z}] 0]
draw arrow $start $end
}
}
Sorry if certain logic seems slightly convoluted, still getting used to TCL!
-- Best, /A
- Next message: Ashar Malik: "Re: Fw: Draw arrows in trajectory file"
- Previous message: Ashar Malik: "Re: Fw: Draw arrows in trajectory file"
- In reply to: Ashar Malik: "Re: Fw: Draw arrows in trajectory file"
- Next in thread: Ashar Malik: "Re: Fw: Draw arrows in trajectory file"
- Reply: Ashar Malik: "Re: Fw: Draw arrows in trajectory file"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]