VMD-L Mailing List
From: Jérôme Hénin (jhenin_at_ifr88.cnrs-mrs.fr)
Date: Thu Jun 09 2011 - 02:25:23 CDT
- Next message: Dong Luo: "Add solvation box tool"
- Previous message: Joyce Tan: "Adding missing residues"
- In reply to: DCM CA: "Tracing distances among atoms in a MD simulation"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Hi Carlos,
The curly braces in {$a1 $b1 } tell Tcl not to perform variable
substitution. Use double quotes instead: "$a1 $b1", or if you want a
more explicit style: [list $a1 $b1]
Then you should call the proc with the values:
dist_atoms_over_time 0 $a1 $b1 $a2 $b2
Cheers,
Jerome
On 9 June 2011 03:57, DCM CA <delcmca_at_gmail.com> wrote:
> Hello,
>
> I have written the following script to trace distances among atoms
> through a MD simulation
>
> My problem is that I have to write explicitly the atom's ID's ...
>
> ==============================
> ==================
> proc dist_atoms_over_time {{mol top} a1 a2 b1 b2} {
>
> set all [atomselect top all]
> #get the number of frames
> set num_steps [molinfo $mol get numframes]
> #open file for writing
> set fil [open dist_atoms.dat w]
>
> #loop over all frames in the trajectory
> for {set frame 0} {$frame < $num_steps} {incr frame} {
>
>
> # set dist_1 [measure bond {$a1 $b1 } molid $mol frame $frame
> ] <--- problem
> # set dist_1 [measure bond {$a2 $b2 } molid $mol frame $frame
> ] <---problem
>
> set dist_1 [measure bond {4115 7094 } molid $mol frame $frame
> ] <--replace with real ID's
> set dist_2 [measure bond {4129 7094 } molid $mol frame $frame ]
> set dist_3 [measure bond {4146 7094 } molid $mol frame $frame ]
> puts $fil " $frame \t $dist_1 $dist_2 $dist_3"
> }
> close $fil
> }
> =======================================================
> I would like to call this process simply as:
>
> dist_atoms_over_time { 0 a1 a2 b1 b2 },( as in the last line of the
> script below)
>
> and perform the task in the way of the two commented lines, i.e.:
>
> # set dist_1 [measure bond {$a1 $b1 } molid $mol frame $frame ]
> # set dist_1 [measure bond {$a2 $b2 } molid $mol frame $frame ]
> in the program above...
>
> but the program would not run. It needs the replacement of $a1, $b1...
> etc.,
> with the real ID's, as shown in the following lines....
> and this is cumbersome, since one would like to trace any two distances
> through the simulation...
>
> What I mean is that I have to run another script in order to get explicitly
> the ID's,
> and input from the keyboard the numbers as are shown above......!!!!
>
> The program to get the ID's is the following.... it works just fine...
>
> where a1, a2, b1, and b2 are the atomic ID's
>
>
> ==================================================
> proc dist_atom { } {
> # make the atom selections
>
> set sel1 [atomselect top "chain A and resid 255 and name CA"]
> set sel2 [atomselect top "chain B and resid 103 and name CA"]
> set a1 [$sel1 get index ]
> set b1 [$sel2 get index ]
> puts "atom1: $a1 atom2: $b1"
>
> set sel1 [atomselect top "chain A and resid 256 and name CA"]
> set sel2 [atomselect top "chain B and resid 103 and name CA"]
> set a2 [$sel1 get index ]
> set b2 [$sel2 get index ]
> puts "atom1: $a2: atom2: $b2 "
>
> dist_atoms_over_time 0 a1 b1 a2 b2 <---- this is the problem line, I don't
> know why it woudn't work
> }
>
> ================================================
>
> Can any one tell me please, why is this happening... ?
>
> Thanks in advance:
> Carlos
>
>
- Next message: Dong Luo: "Add solvation box tool"
- Previous message: Joyce Tan: "Adding missing residues"
- In reply to: DCM CA: "Tracing distances among atoms in a MD simulation"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]