<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Shubham,<div class=""><span class="Apple-tab-span" style="white-space:pre">     </span>Looking at your graph, even the initial time is way too slow, 10+ seconds/frame.  For this kind of analysis, you should be using low level mathematical primitives rather than the graphical axes/planes/centroids, which are intended for interactive use and have a lot of additional overhead, like a triangle mesh for the graphical depiction, color information, etc.</div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>So the first thing is you will need to get is the atoms that the primitives will based on.  Assuming you know how to select the atoms with a command, you can get them with:</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>from chimerax.atomic import selected_atoms</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>run(session, "sel <i class="">some-atom-spec</i><span style="font-style: normal;" class="">")</span></div><div class=""><span style="font-style: normal;" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>atoms = selected_atoms(session)</span></div><div class=""><span style="font-style: normal;" class=""><br class=""></span></div><div class=""><span class="Apple-tab-span" style="white-space:pre">     </span>So, the low level primitives are:</div><div class=""><br class=""></div><div class=""><b class="">Centroid</b>: just an xyz point, which you can get with:</div><div class=""><span class="Apple-tab-span" style="white-space:pre">      </span>from chimerax.centroid import centroid</div><div class=""><span class="Apple-tab-span" style="white-space:pre">    </span>centroid_pt = centroid(atoms.coords)</div><div class=""><span class="Apple-tab-span" style="white-space:pre">      </span>(which is just atoms.coords.mean(0) actually)</div><div class=""><br class=""></div><div class=""><b class="">Axis</b>: as long as you not measuring <i class="">distances</i><span style="font-style: normal;" class=""> with an axis, all you need is a direction vector, which is also just an xyz value, which you can get with:</span></div><div class=""><span style="font-style: normal;" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>from numpy.linalg import svd</span></div><div class=""><span style="font-style: normal;" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>center = atoms.coords.mean(0)</span></div><div class=""><span class="Apple-tab-span" style="font-style: normal; white-space: pre;">  </span>_, vals, vecs = sud(atoms.coords - center, full_matrices=False)</div><div class=""><span class="Apple-tab-span" style="white-space:pre">      </span>xyz = vecs[vals.argsort()[-1])</div><div class=""><br class=""></div><div class=""><b class="">Plane</b>: an origin point and a normal vector, encapsulated as a chimera.geometry.Plane object, <i class="">e.g.</i><span style="font-style: normal;" class="">:</span></div><div class=""><span style="font-style: normal;" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>from chimerax.geometry import Plane</span></div><div class=""><span style="font-style: normal;" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>plane = Plane(atoms.coords)</span></div><div class=""><span style="font-style: normal;" class=""><br class=""></span></div><div class=""><span style="font-style: normal;" class="">Here are example measurements:</span></div><div class=""><span style="font-style: normal;" class=""><br class=""></span></div><div class=""><b class="">Centroid-centroid distance</b>:</div><div class=""><span class="Apple-tab-span" style="white-space:pre">   </span>from chimerax.geometry import distance</div><div class=""><span class="Apple-tab-span" style="white-space:pre">    </span>d = distance(xyz1, xyz2)</div><div class=""><br class=""></div><div class=""><b class="">Centroid-plane distance</b>:</div><div class=""><span class="Apple-tab-span" style="white-space:pre">   </span>d = abs(plane.distance(xyz))</div><div class=""><br class=""></div><div class=""><b class="">Axis-axis</b> angle:</div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>from chimerax.geometry import angle</div><div class=""><span class="Apple-tab-span" style="white-space:pre">       </span>a = angle(xyz1, xyz2)</div><div class="">This returns a value in the range 0-180.  To map that into the 0-90 range:</div><div class=""><span class="Apple-tab-span" style="white-space:pre">    </span>if a > 90:</div><div class=""><span class="Apple-tab-span" style="white-space:pre">             </span>a = 180 - a</div><div class=""><br class=""></div><div class=""><b class="">Plane-plane angle</b>:</div><div class=""><span class="Apple-tab-span" style="white-space:pre">      </span>from chimerax.geometry import angle</div><div class=""><span class="Apple-tab-span" style="white-space:pre">       </span>a = angle(plane1.normal, plane2.normal)</div><div class=""><span class="Apple-tab-span" style="white-space:pre">   </span>if a > 90:</div><div class=""><span class="Apple-tab-span" style="white-space:pre">             </span>a = 180 - a</div><div class=""><br class=""></div><div class="">--Eric</div><div class=""><span style="font-style: normal;" class=""><span class="Apple-tab-span" style="white-space:pre">   </span></span></div><div class=""><div><blockquote type="cite" class=""><div class="">On Jun 13, 2022, at 11:38 AM, Shubham Devesh Ramgoolam via ChimeraX-users <<a href="mailto:chimerax-users@cgl.ucsf.edu" class="">chimerax-users@cgl.ucsf.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Hi Eric,</div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">No, I did not.</div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">I tried it now by adding the following code at the end of the first for loop: run(session, ‘close  #1.*’)</div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">It made the issue worse, the computation took longer than before. I believe it is because it takes time to close these models.</div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><i class="">(Originally, I tried fixing the issue by closing the entire session and starting a new one. However, it took too much time for chimeraX to close a session, after defining lots of geometric objects.)<o:p class=""></o:p></i></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Is there a quicker to close these models at the end of each frame?</div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Shubham</div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Sent from<span class="Apple-converted-space"> </span><a href="https://go.microsoft.com/fwlink/?LinkId=550986" style="color: blue; text-decoration: underline;" class="">Mail</a><span class="Apple-converted-space"> </span>for Windows</div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(225, 225, 225); padding: 3pt 0in 0in;" class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif; border: none; padding: 0in;" class=""><b class="">From:<span class="Apple-converted-space"> </span></b><a href="mailto:pett@cgl.ucsf.edu" style="color: blue; text-decoration: underline;" class="">Eric Pettersen</a><br class=""><b class="">Sent:<span class="Apple-converted-space"> </span></b>Monday, June 13, 2022 20:43<br class=""><b class="">To:<span class="Apple-converted-space"> </span></b><a href="mailto:sdramgoolam@uwaterloo.ca" style="color: blue; text-decoration: underline;" class="">Shubham Devesh Ramgoolam</a><br class=""><b class="">Cc:<span class="Apple-converted-space"> </span></b><a href="mailto:chimerax-users@cgl.ucsf.edu" style="color: blue; text-decoration: underline;" class="">chimerax-users@cgl.ucsf.edu</a><br class=""><b class="">Subject:<span class="Apple-converted-space"> </span></b>Re: [chimerax-users] Trajectory computation slowing down overtime</div></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Hi Shubham,<o:p class=""></o:p></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Defining those geometric objects creates models.  Are you closing those models at the end of each frame?<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">--Eric<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Eric Pettersen<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">UCSF Computer Graphics Lab<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><br class=""><br class=""><o:p class=""></o:p></div><blockquote style="margin-top: 5pt; margin-bottom: 5pt;" class=""><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">On Jun 11, 2022, at 11:21 PM, Shubham Devesh Ramgoolam via ChimeraX-users <<a href="mailto:chimerax-users@cgl.ucsf.edu" style="color: blue; text-decoration: underline;" class="">chimerax-users@cgl.ucsf.edu</a>> wrote:<o:p class=""></o:p></div></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div class=""><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">I just wanted to specify that I am using the nogui mode of chimeraX for the computation.<o:p class=""></o:p></span></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">Shubham.<o:p class=""></o:p></span></div></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span id="cid:image002.png@01D87F76.44ECD5B0"><CB8387F6EE204E1BA668D200AE4A00A4.png></span><o:p class=""></o:p></div><div id="divRplyFwdMsg" class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class="">From:</b><span class="apple-converted-space"> </span>Shubham Devesh Ramgoolam<br class=""><b class="">Sent:</b><span class="apple-converted-space"> </span>June 12, 2022 1:38 AM<br class=""><b class="">To:</b><span class="apple-converted-space"> </span><a href="mailto:chimerax-users@cgl.ucsf.edu" style="color: blue; text-decoration: underline;" class="">chimerax-users@cgl.ucsf.edu</a><span class="Apple-converted-space"> </span><<a href="mailto:chimerax-users@cgl.ucsf.edu" style="color: blue; text-decoration: underline;" class="">chimerax-users@cgl.ucsf.edu</a>><br class=""><b class="">Subject:</b><span class="apple-converted-space"> </span>Trajectory computation slowing down overtime<span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""><o:p class=""></o:p></span></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class=""> <o:p class=""></o:p></span></div></div></div><div class=""><div class=""><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Hi all,<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">I hope you are doing well.<o:p class=""></o:p></div></div><p class="xmsonormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"> </p><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">I have a Python script for analyzing specific residue pairs for every frame in a trajectory.<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">It does so, by using 2 for loops:<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">For frame in list_frames:<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">               Set current frame to frame<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">               For pair in specific_residue_pairs:<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">                              Do computation<o:p class=""></o:p></div></div><p class="xmsonormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"> </p><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">The computation involves defining geometric objects(centroids, axes, planes) and performing calculations with them(distance, angles).<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">The issue here is that as we move further in list_frames, the computation takes longer and longer. There is a somewhat linear increase in computation time, as illustrated below:<o:p class=""></o:p></div></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><E0E35EA38D4345BE98A480EB08BE8CEC.png><o:p class=""></o:p></div></div><p class="xmsonormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"> </p><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Is there a way to maintain the same computation time for every frame in the trajectory?<o:p class=""></o:p></div></div><p class="xmsonormal" style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;"> </p><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Regards,<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Shubham Ramgoolam<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Sent from<span class="apple-converted-space"> </span><a href="https://go.microsoft.com/fwlink/?LinkId=550986" style="color: blue; text-decoration: underline;" class="">Mail</a><span class="apple-converted-space"> </span>for Windows<o:p class=""></o:p></div></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></div></div></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 9pt; font-family: Helvetica, sans-serif;" class="">_______________________________________________<br class="">ChimeraX-users mailing list<br class=""><a href="mailto:ChimeraX-users@cgl.ucsf.edu" style="color: blue; text-decoration: underline;" class="">ChimeraX-users@cgl.ucsf.edu</a><br class="">Manage subscription:<br class=""><a href="https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users" style="color: blue; text-decoration: underline;" class="">https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users</a></span><o:p class=""></o:p></div></div></blockquote></div></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">_______________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">ChimeraX-users mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="mailto:ChimeraX-users@cgl.ucsf.edu" style="color: blue; text-decoration: underline; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">ChimeraX-users@cgl.ucsf.edu</a><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Manage subscription:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users" style="color: blue; text-decoration: underline; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users</a><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote></div><br class=""></div></body></html>