<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Eric,<div><br></div><div>Thanks a lot for your explanations!</div><div>In fact, I want to do this not for an amino acid side-chain (that was an easy-to-see example) but for a group in a small molecule. so I will need the  BondRotMgr module. </div><div><br></div><div>First, I need to figure out how to select the bonds explicitly in the script. I thought that something like</div><div><br></div><div>bond1 = selection.OSLSelection(':2.C@C1|:2.C@C2')</div><div><div>bond2 = selection.OSLSelection(':2.C@C5|:2.C@C7')</div><div>(...)</div><div><br></div></div><div>would work, but it doesn't.</div><div><br></div><div>So far I have fond in the examples how to go through all the bonds in a molecule (or a residue) but not how to make a explicit selection of the bond. Is that possible at all or should I go through the molecule (or residue) list of bonds and pick the one I want based on two atom selections?</div><div><br></div><div>Cheers,</div><div><br></div><div>Miguel</div><div><br><div><div>Le 10 mai 2010 à 23:33, Eric Pettersen a écrit :</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On May 9, 2010, at 10:14 PM, Miguel Ortiz Lombardia wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Dear all,<br><br>I would like to represent as a volume the space that would be covered by a set of atoms that are bound by "torsionable" bonds when one systematically modifies those torsion angles. An example would be the side-chain of an amino acid; imagine I would like to have a glimpse of what part of the space could be occupied by that side-chain. As a first approximation I wouldn't care about clashes.<br><br>I would appreciate if someone can point me to an existing way of obtaining such representation or to an algorithm that could be implemented within chimera (which I would be happy to share with other interested people; if I manage to code it, that's it!)</div></blockquote><br></div><div>Hi Miguel,</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>This problem has two parts:  adjusting the torsions and visualizing the result.</div><div><br></div><div>Adjusting the Torsions</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">  </span>If you're adjusting the chi angles of an amino acid, then this is easy in Chimera.  Each such residue has chi1/chi2/chi3 attributes that you can set, <i>e.g.</i>:</div><div><br></div><div>for chi1 in range(0, 360, 10):</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>r.chi1 = chi1</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>for chi2 in range(0, 360, 10):</div><div><span class="Apple-tab-span" style="white-space:pre">               </span>r.chi2 = chi2</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>for chi3 in range(0, 360, 10):</div><div><span class="Apple-tab-span" style="white-space:pre">                       </span>r.chi3 = chi3</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>do something</div><div><br></div><div>You'd probably actually want to write the code as a recursive routine, since otherwise it is awkward to handle the fact that some residues have different numbers of chi angles than others.  You might also want to change your angle increment based on the recursion depth.</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>If you're changing torsions that aren't the well-known amino acid chi angles, then you'll have to resort to Chimera's more generic torsion-adjustment facilities, the core of which are in the BondRotMgr module.  Specifically, if 'b' is the bond you want to adjust, then:</div><div><br></div><div>from BondRotMgr import bondRotMgr</div><div>torsion = bondRotMgr.rotationForBond(b)</div><div><br></div><div>and then torsion.increment(amount) will increment the torsion angle by 'amount' degrees (from its current position).  If you want to set the dihedral to a certain value (rather than just increment from the current position) then you will have to measure the dihedral you care about with:</div><div>chimera.dihedral(a1.xformCoord(), a2.xformCoord(), a3.xformCoord(), a4.xformCoord())</div><div>and then use the appropriate increment value, or use chimera.phipsi._setAngle(bond, newAngle, curAngle) [in the latter case you don't have to call rotationForBond yourself].</div><div><br></div><div>Visualizing the Result</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">  </span>There are a bunch of possibilities of course.  I'll touch on two: a bunch of spheres, and an actual volume.</div><div><br></div><div>1) As you change the torsion, you can use each atom's .coord() method to get Point instances which can be used to place helium atoms at those positions with BuildStructure.placeHelium().  You could put the heliums in the same model or in a new model (by providing a model name to your first call of placeHelium()).  </div><div><br></div><div>2) Computing a volume is not too hard conceptually.  Basically you decide on a grid spacing and then make a dictionary that maps xyz grid addresses to occupancy counts (omitting counts of zero).  Then you find the lower and upper bounds for each axis, create a 3D array with corresponding dimensions, and populate that array with your counts.  Then you can open that in Volume Viewer and use all the Volume Viewer facilities to look at the occupancy.</div><div><br></div><div>There is code that does just this in Movie.gui, it's MovieDialog's computeVolume method.  The line:</div><div><br></div><div>gridData = {}</div><div><br></div><div>initializes the occupancy-count dictionary and the loop that immediately follows that populates the dictionary.  Most of the loop isn't relevant for you (getting the right coordinate set and adjusting for "hold selection steady") but the very end of the loop is, the part that maps coordinates into xyz grid addresses and adjusts the corresponding count.  Then after that the loop the "generate volume" and "show volume" sections are largely relevant.</div><div><br></div><div>--Eric</div><div><br></div><div><br></div><br><div apple-content-edited="true"> <span class="Apple-style-span" style="font-size: 16px; "><div style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-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: 16.0px Helvetica"><span class="Apple-converted-space">                       <span class="Apple-converted-space"> </span></span>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: 16.0px Helvetica"><span class="Apple-converted-space">                       <span class="Apple-converted-space"> </span></span>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: 16.0px Helvetica"><span class="Apple-converted-space">                        </span><a href="http://www.cgl.ucsf.edu/">http://www.cgl.ucsf.edu</a></font></div><br class="Apple-interchange-newline"></div></span> </div><br><br>-- 
<br>This message has been scanned for viruses and
<br>dangerous content by
<a href="http://www.mailscanner.info/"><b>MailScanner</b></a>, and is
<br>believed to be clean.
</div>
</blockquote></div><br><div>
<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="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-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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><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-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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><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-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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><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-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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; 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; orphans: 2; 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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; 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; orphans: 2; 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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; 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; orphans: 2; 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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; 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; orphans: 2; 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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; 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; orphans: 2; 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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; 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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; 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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; 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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; 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; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; 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="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; 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; "><div>-- Miguel</div><div><div><br></div><div><div>Architecture et Fonction des Macromolécules Biologiques (UMR6098)</div><div>CNRS, Universités d'Aix-Marseille I & II</div><div>Case 932, 163 Avenue de Luminy, 13288 Marseille cedex 9, France</div><div>Tel: +33(0) 491 82 55 93</div><div>Fax: +33(0) 491 26 67 20</div><div>e-mail: <a href="mailto:miguel.ortiz-lombardia@afmb.univ-mrs.fr">miguel.ortiz-lombardia@afmb.univ-mrs.fr</a></div><div>Web: <a href="http://www.pangea.org/mol/spip.php?rubrique2">http://www.pangea.org/mol/spip.php?rubrique2</a></div></div><div><br></div></div></span></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></span><br class="Apple-interchange-newline">
</div>
<br></div></body></html>