<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Sebastian,<div><span class="Apple-tab-span" style="white-space:pre">      </span>Between Chimera and your script, there are a couple of problems with the RMSD calculation.  The executive summary of the solution is:  explicitly list the atoms being matched in the RMSD calculation, <i>i.e.</i>:</div><div><br></div><div>rmsd #0@pg@pb@o1b@o2b... #1.1@p3@p2@o6@o10...</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>To figure out the names that Chimera assigned to your SDF molecules, you will have to open one and look at it.  The above approach explicitly ignores the hydrogens, so you can skip that in your script.  I would imagine that you might want to skip matching the oxygens of the terminal phosphate as well since that phosphate freely rotates and it's impossible to know which oxygen should match with which.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">       </span>So, the problems are:</div><div><br></div><div>1) Chimera doesn't do a connectivity analysis of the atoms in the rmsd command to figure out which to match with which.  In cases where the atoms aren't explicitly specified, it orders them by name (if the same name then by input order).  The names given to the atoms in the SDF file is completely different from those in the PDB file.</div><div><br></div><div>2) When you do "set operations" like intersect (&) and union (|), Chimera may lose track of the ordering of the atoms.  Chimera should do a better job of maintaining the ordering with intersection (and I will work on that) nonetheless commands like "rmsd #0 #1" or "rmsd #0:12 #1:1" will work (assuming the names of the atoms match) whereas more complicated commands involving intersection, union, or filtering by attribute values may not.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>I'll be opening a ticket in our Trac bug database for maintaining better ordering on intersection, with you on the cc list.</div><div><br></div><div>--Eric</div><div><br><div apple-content-edited="true"> <span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 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; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="5" style="font: 16.0px Helvetica"><span class="Apple-converted-space">                       <span class="Apple-converted-space"> </span></span>Eric Pettersen</font></p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="5" style="font: 16.0px Helvetica"><span class="Apple-converted-space">                       <span class="Apple-converted-space"> </span></span>UCSF Computer Graphics Lab</font></p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="5" style="font: 16.0px Helvetica"><span class="Apple-converted-space">                        </span><a href="http://www.cgl.ucsf.edu">http://www.cgl.ucsf.edu</a></font></p><br class="Apple-interchange-newline"></div></span> </div><br><div><div>On Aug 24, 2009, at 4:43 AM, Sebastian Kruggel wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><span class="Apple-style-span" style="font-family: monospace; ">Dear Chimera team and users,<br><br>I tried to write a small chimera / python script to calculate rmsd to the crystal structure for a bunch of docked ligands and transform the values in a nice csv - because fred22 doesn't do this for me...<br><br>The core function rms2ref is the one calculating the rmsd, than I save the reply log and afterwards transform this text file.<br><br>Things worked out fine BUT than I started the script several times, and I got different orders in my list every time. Because I want to assign rmsd values to scores etc it is essential to keep the order provided in the sdf/mol2. I thought about problems with the format but the problem exists with mol2 and sdf files. Than I thought, chimera would change the order in opening the multimolecule files - but saving the #1.1 molecule and opening it in a new session showed - even more strange - that the molecule is exactly the same every time. So there is only the possibility that either the calculation of the rmsd or the order of the list (extraction of the replyLog.txt) doesn't work - which I *really* don't understand at all...<br><br>Here is a small example where the rmsds-list has different orders every time I start the script...<br><br><br>##############################<br>from chimera import runCommand<br>from chimera.tkgui import saveReplyLog<br><br>def rms2ref(ref, pose, no):<br>  runCommand('open %s; open %s' % (ref, pose))<br>  i = 1<br>  while i <= no:<br>     # only hetatms are included --> ~@/element=h<br>     runCommand('sel #1.%i & ~@/element=h' % i)<br>     runCommand('rmsd #0 sel')<br>     i += 1<br><br>rms2ref('lig_cryst.pdb', 'poses.sdf', 10)<br><br># generate output from replyLog.txt<br><br>saveReplyLog('replyLog.txt')<br><br>rmsds = []<br>for i in open('replyLog.txt').readlines():<br>  if i.startswith('RMSD between'):<br>     rmsds.append(i.split()[-2])<br><br>print rmsds<br>##############################<br><br><br>Maybe anybody can help me and tell me about the probably stupid mistake I am making - would be really great! I attached the lig_cryst.pdb and poses.sdf files just in case that anybody wants to try out ;-)</span></span></blockquote></div><br></div></body></html>