<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Shawn,<div><br></div><div>  Thanks, I've added your VTK export to the Chimera daily builds.   Will be in tonight's builds.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">   </span>Tom</div><div><br></div><div><br><div><div>On Aug 8, 2013, at 12:19 PM, Shawn Waldon  wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">Hi Tom,<div><br></div><div>Thanks for the code tips and locations!  I changed my code so that it works with Multiscale surfaces and the MSMSModel surfaces.  I also handle the case where a multiscale surface piece doesn't have atoms (because it was generated as part of the biological unit) now using some helper functions from the msc command.</div>
<div><br></div><div>As far as exporting things twice, the code does technically process the molecule twice.  Once, which the model it is processing is the molecule itself, it creates points for atoms and lines for bonds and gives it some model number.  Then when it is processing the surface it exports the geometry and the data for the closest atom to each point (that is relevant to that surface piece, thanks for that tip), but assigns this a different model number. In VTK it is relatively straightforward to threshold on this model num and just get the data that is of interest.</div>


<div><br></div><div>I've attached the new version of the code.  Let me know if anything else needs fixing.</div><div><br></div><div>Shawn</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 7, 2013 at 1:46 PM, Tom Goddard <span dir="ltr"><<a href="mailto:goddard@sonic.net" target="_blank">goddard@sonic.net</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi Shawn,<div><br></div><div>  The solvent excluded surfaces produced by the surface command or menu Actions / Surface / Show are instances of Python class MSMSModel defined in share/MolecularSurface/msurf.py.  They are a subclass of SurfaceModel and the only type of Chimera surface which has a direct association between surface vertices and nearest atoms.  That association is given by s.atomMap which maps vertex number (0 based) to Python atom object.</div>


<div><br></div><div>  The MultiScale surfaces are a plain SurfaceModel.  I'd suggest adapting your current code to use</div><div><br></div><div><br></div><div>           for piece in m.surfacePieces:</div><div><div><span style="white-space:pre-wrap">            </span>if hasattr(m, 'surfacePieceAtomsAndBonds'):</div>


<div><span style="white-space:pre-wrap">          </span>   atoms, bonds = m.surfacePieceAtomsAndBonds([piece], create = False)</div></div><div><span style="white-space:pre-wrap">             </span>   # Now export associated atom (closest among atoms) for each vertex.</div>


<div><span style="white-space:pre-wrap">          </span>   …</div><div>                # Now add triangles for surface piece even if it has no associated atoms</div><div><br></div><div><br></div><div>  I didn't study your code closely but it seems you will handle molecules that belong to multiscale surfaces twice.  Not sure if that will create duplicates in your vtk output.</div>


<div><br></div><div><span style="white-space:pre-wrap"> </span>Tom</div><div><br></div><div><br></div><div><br></div></div></blockquote></div>-- <br><div dir="ltr">Shawn Waldon<div>Graduate Research Assistant</div>


<div>Department of Computer Science</div><div>University of North Carolina at Chapel Hill</div><div><br></div></div>
</div></div>
<span><ExportVTK.zip></span></blockquote></div><br></div></body></html>