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 < scot...@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 < > scot...@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
-- gmx-users mailing list gmx-users@gromacs.org http://lists.gromacs.org/mailman/listinfo/gmx-users Please search the archive at http://www.gromacs.org/Support/Mailing_Lists/Search before posting! Please don't post (un)subscribe requests to the list. Use the www interface or send it to gmx-users-requ...@gromacs.org. Can't post? Read http://www.gromacs.org/Support/Mailing_Lists