[gmx-users] Re: Trouble loading User data with a Tcl script (only half the data seems to load)

J. Nathan Scott scottjn at chemistry.montana.edu
Fri May 6 17:10:32 CEST 2011


Oops, this message and the original should have gone to the VMD mailing list
and not Gromacs of course. My mistake, apologies for cluttering your inbox.
:-)

-Nathan

On Thu, May 5, 2011 at 3:35 PM, J. Nathan Scott <
scottjn at chemistry.montana.edu> wrote:

> Hello again, fellow gmx-users,
>
> I finally found my coding error that only set the User data for the first
> half of the frames loaded, it was a simple indexing error after all.
> However, I would still *greatly* appreciate any assistance with speeding up
> the following loop:
>
>
>         for {set k 6} {$k <= 141} {incr k} {
>         set prot [atomselect $mol_ID "resid $k" frame $j]
>         set num [$prot num]
>         $prot frame $j
>         set user_list {}
>         set u [lindex $efield [expr $k - 6]]
>         for {set b 1} {$b <= $num} {incr b} {
>            lappend user_list $u
>         }
>         $prot set user $user_list
>         $prot delete
>         }
>
> Is there a simpler way to accomplish the task of assigning a single User
> value to individual residues without first atomselecting each one, getting
> its number of atoms, and then finally looping over the atoms to build a
> user_list? I'm hoping that there is some better way to do this that I
> haven't thought of yet. My script runs very wonderfully except for this
> chunk.
>
> Thanks in advance for any help you can provide,
>
> -Nathan
>
>
> On Wed, May 4, 2011 at 11:06 AM, J. Nathan Scott <
> scottjn at chemistry.montana.edu> wrote:
>
>> Hello all,
>>
>> I have written a script that does per-time-step coloring of the water
>> molecules, residues, and ions in my protein based on electric field values I
>> previously calculated. I received excellent help here a few months sorting
>> out some problems with the script, but there is one big one remaining that I
>> hope someone can help with.
>>
>> The problem is that only half the frames (the first half) in my simulation
>> are getting colored, and I can't figure out why. This happens no matter how
>> many frames I load, whether the full trajectory or just a few hundred
>> frames. For what it's worth, the machine I'm running on has 12 GB of RAM, a
>> very nice video card, and a new Xeon quad core processor, so I don't think
>> this is an issue of system resources. At least I can see that there is still
>> tons of free RAM when I am experiencing this issue.
>>
>> Also, I would sincerely appreciate any advice on speeding up one of my
>> loops. To color the water molecules and ions I can simply atomselect them
>> all, and then loop through the values from the electric field data file for
>> that timestep and assign the color value to a user list either 3 or 1 times
>> respectively to color each atom.
>>
>> However, for the residues in the protein I am having to atomselect them
>> one at a time, get the number of atoms for that residue, and then do another
>> loop to build a list of the correct length to assign the user values to each
>> atom of the residue. Can anyone recommend a more efficient way of coloring
>> the residues? When the residue coloring part of the script is stripped out
>> it runs so much faster despite the fact that there are far fewer protein
>> atoms than there are water or ion atoms, so I know this method of assignment
>> is sluggish.
>>
>> Please see the script below my signature, and thank you in advance for any
>> advice you can provide.
>>
>> --
>> ----------
>> J. Nathan Scott, Ph.D.
>> Postdoctoral Fellow
>> Department of Chemistry and Biochemistry
>> Montana State University
>>
>>
>>
>>
>> #######################################################################
>> set first 0;
>> set last 1000;
>> set mut wt;
>> set mut_ wt_;
>> set i $first; #i will be timestep/filename indicator,
>> set j 0;
>>
>> mol new /data/1stn/xtc/1stn_$mut.gro type gro waitfor all
>> mol addfile /data/1stn/xtc/1stn_$mut.xtc type xtc waitfor all first $first
>> last $l$
>> set mol_ID top;
>> set n [ molinfo $mol_ID get numframes ];
>> animate goto 0
>> animate delete  beg 0 end 0 skip 0 0
>> mol delrep 0 $mol_ID
>>
>> while {$i <= $last} {
>>         set fp [open "/data/1stn/$mut/pd5/pd5.stripped/1stn_$mut_$i.pd5"
>> r]
>>         set file_data [read $fp]
>>         close $fp
>>
>>         set data [split $file_data "\n"]
>>         foreach {one} $data {
>>                 lappend efield [lindex $one 3]
>>         }
>>
>> ### Looping through residues in the for loop,
>> ### selecting one residue at a time, getting its number of atoms,
>> ### and then building a user value list for each of those
>> ### atoms in another for loop.
>>
>>         for {set k 6} {$k <= 141} {incr k} {
>>         set prot [atomselect $mol_ID "resid $k" frame $j]
>>         set num [$prot num]
>>         $prot frame $j
>>         set user_list {}
>>         set u [lindex $efield [expr $k - 6]]
>>         for {set b 1} {$b <= $num} {incr b} {
>>            lappend user_list $u
>>         }
>>         $prot set user $user_list
>>         $prot delete
>>         }
>>
>> ### Water loop works well
>>
>>         set wat [atomselect $mol_ID waters frame $j]
>>         $wat frame $j
>>         set user_list {}
>>         for {set a 136} {$a < 10233} {incr a} {
>>                 set u [lindex $efield $a]
>>                 lappend user_list $u $u $u
>>         }
>>         $wat set user $user_list
>>         $wat delete
>>
>> ### Ion loop works well too
>>
>>         set ions [atomselect $mol_ID ions frame $j]
>>         $ions frame $j
>>         set user_list {}
>>         for {set a 10233} {$a < 10243} {incr a} {
>>                 set u [lindex $efield $a]
>>                 lappend user_list $u
>>         }
>>         $ions set user $user_list
>>         $ions delete
>>
>>         unset efield
>>         incr j 1
>>         incr i 2
>> }
>>
>>
>>
>>
>
>
> --
> ----------
> J. Nathan Scott, Ph.D.
> Postdoctoral Fellow
> Department of Chemistry and Biochemistry
> Montana State University
>



-- 
----------
J. Nathan Scott, Ph.D.
Postdoctoral Fellow
Department of Chemistry and Biochemistry
Montana State University
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-users/attachments/20110506/595edec1/attachment.html>


More information about the gromacs.org_gmx-users mailing list