<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">This will assign attributes such as “dist_p1”, “dist_p2”, “dist_c1" etc. to every atom for every axis/plane/centroid in your session:<div class=""><br class=""></div><div class="">from StructMeasure.Geometry import geomManager</div><div class="">from chimera import openModels, Molecule</div><div class="">for item in geomManager.items:</div><div class=""><span class="Apple-tab-span" style="white-space:pre">    </span>for m in openModels.list(modelTypes=[Molecule]):</div><div class=""><span class="Apple-tab-span" style="white-space:pre">          </span>for a, d in zip(m.atoms, item.pointDistances([a.xformCoord() for a in atoms])):</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">                 </span>setattr(a, “dist_” + item.id, d)</div><div class=""><br class=""></div><div class="">For the bonus point part, if the atoms of your conformers are in the same respective order in their input files, then their m.atoms will be in the same order in Chimera.  So, if the models are ‘m1’ and ‘m2’:</div><div class=""><br class=""></div><div class="">for a1, a2 in zip(m1.atoms, m2.atoms):</div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>a1.diff_p1 = a2.diff_p1 = a1.dist_p1 - a2.dist_p1</div><div class=""><br class=""></div><div class="">—Eric</div><div class=""><br class=""></div><div class=""><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><span class="Apple-tab-span" style="white-space: pre;">    </span>Eric Pettersen</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">  </span>UCSF Computer Graphics Lab</div></div><br class="Apple-interchange-newline">

</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Feb 24, 2016, at 5:21 AM, Oliver Clarke <<a href="mailto:olibclarke@gmail.com" class="">olibclarke@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class=""><div class="">Hi,<br class=""><br class=""></div>I would like to iterate over all atoms in a model, measure the distance between each atom and a predefined axis or plane in the session, and assign the distance to an attribute associated with the atom. For bonus points I would like to do the same for two models (the same protein in different conformations), and then calculate the difference in this distance for matched pairs of atoms.<br class=""><br class=""></div>The first part of this - iterating over every atom - I know how to do, more or less, in the scripting interface (I am assuming there is no way to do this kind of "iterate/run command/ assign command output to attribute" operation in the attribute calculator).<br class=""><br class="">But how do I measure the distance between an atom and a selected plane/axis, and then assign it to an attribute that I can use for example in Render by Attribute? I can see how to measure the distance between pairs of atoms, but not between atoms and a plane or axis.<br class=""><br class=""></div>Cheers,<br class=""></div>Oli<br class=""></div>
_______________________________________________<br class="">Chimera-users mailing list: <a href="mailto:Chimera-users@cgl.ucsf.edu" class="">Chimera-users@cgl.ucsf.edu</a><br class="">Manage subscription: <a href="http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users" class="">http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users</a><br class=""></div></blockquote></div><br class=""></div></body></html>