<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Jan 21, 2010, at 3:15 PM, Yasser Almeida Hernández wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hi...<br>I'm performing a massive superposing of aminoacids in different conformations. The first model is a arginine "template" reference structure that is the fixed model in all matching iterations. I've loaded 236 models and i want to match the arginine guanidine group on the template guanidine. In each iteration i execute two matching, with different atoms selections. The first selection is the "right" selection: CD,NE,CZ,NH1,NH2 and the second is the "inverse" selection: CD,NE,CZ,NH2,NH1. I run the two superpositions, and i want to show that with the minimal RMSD between the guanidine groups. This is the code:<br></div></blockquote><div><br></div>Well, I can see a variety of problems.  Starting from the top...</div><div><br><blockquote type="cite"><div>import chimera<br>from chimera import runCommand<br><br>right = "@CD,NE,CZ,NH1,NH2"<br>inverse = "@CD,NE,CZ,NH2,NH1"<br><br>for i in range(2,328):<br></div></blockquote><div><br></div>'i' will range from 2 to 327, yet you say you've loaded 236 models.  I'm guessing you actually want 'i' to vary from 1 to 235 (or 236 if the "236 models" you mention don't include the template model).  Therefore you should be using "range(1, 236)".</div><div><br><blockquote type="cite"><div><span class="Apple-tab-span" style="white-space:pre">    </span>print "Superposing..."<br><span class="Apple-tab-span" style="white-space:pre">  </span>runCommand("match #"+str(i)+right+" #0"+right+"; close 1")<br></div></blockquote><div><br></div>What is with all the "close 1" on the end of all your commands?  Do you mean "wait 1" (to draw a new frame)?  "Close 1" will close model 1.  It makes no sense to do it over and over.  Also, since you are not saving any images in this script you don't need "wait" commands either.</div><div><br><blockquote type="cite"><div><span class="Apple-tab-span" style="white-space:pre">   </span>right_rmsd = runCommand("rmsd #"+str(i)+right+" #0"+right+"; close 1")<br></div></blockquote><div><br></div>'runCommand' doesn't return a value.  Actually it does, but it's whether or not a 'wait' is needed after the command string to update the display, not a value related to the commands' functions.  It doesn't return a command-specific value pretty much for the reason exemplified by the string you used:  it is two commands strung together, so which command's value should be returned?</div><div><br></div><div>At any rate, to get the RMSD you will need to call the underlying rmsd function directly.  It is in the Midas module.  So this:</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">       </span>from Midas import rmsd</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>right_rmsd = rmsd("#"+str(i)+right, "#0"+right)</div><div><br><blockquote type="cite"><div>       runCommand("match #"+str(i)+right+" #0"+right+"; close 1")<br><span class="Apple-tab-span" style="white-space:pre">        </span>inverse = runCommand("rmsd #"+str(i)+inverse+" #0"+right+"; close 1")<br></div></blockquote><div><br></div>You need to assign the value (once you change to the rmsd command) to inverse_rmsd, not inverse.  After the above statement, inverse no longer has the value "@CD,NE,CZ,NH2,NH1", so a lot of things will begin to go badly wrong at this point.</div><div><br><blockquote type="cite"><div><br><span class="Apple-tab-span" style="white-space:pre">     </span>if right < inverse:<br></div></blockquote><div><br></div>if right_rmsd < inverse_rmsd:</div><div><br><blockquote type="cite"><div><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>print "Minimum RMSD =",right,"\n\n"<br></div></blockquote><div><br></div>right_rmsd, not 'right'.</div><div><br><blockquote type="cite"><div><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>runCommand("match #"+str(i)+right+" #0"+right+"; close 1")<br><br><span class="Apple-tab-span" style="white-space:pre">        </span>elif right > inverse:<br></div></blockquote><div><br></div>Again, need "_rmsd" on these.  So the script does nothing if the RMSDs are exactly equal (unlikely, I know)?  It seems like you could just use a simple "else:" here instead of the elif.</div><div><br><blockquote type="cite"><div><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>print "Minimum RMSD =",inverse_rmsd,"\n\n"<br><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>runCommand("match #"+str(i)+right+" #0"+right+"; close 1")<br><br>In principle this script should show the matching with the minimum RMSD, but it doesn't work.<br><br>Please, help...<br>Thanks</div></blockquote><div><br></div><div>--Eric</div><div><br></div><div><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="5" style="font: normal normal normal 16px/normal Helvetica; ">                        Eric Pettersen</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="5" style="font: normal normal normal 16px/normal Helvetica; ">                        UCSF Computer Graphics Lab</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="5" style="font: normal normal normal 16px/normal Helvetica; ">                        <a href="http://www.cgl.ucsf.edu">http://www.cgl.ucsf.edu</a></font></div><br class="Apple-interchange-newline"></div></span></div><br><div></div><br></div><div><br></div><br></body></html>