<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="">You can get a PIL (Python Image Library) image of the Chimera graphics window with<div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>import chimera</div><div class=""><span class="Apple-tab-span" style="white-space:pre">    </span>image = chimera.viewer.pilImages()[0]</div><div class=""><br class=""></div><div class="">You can supply optional width and height arguments in pixels otherwise the image size will match the graphics window size.  An example using pilImages is the Chimera image saving code in the saveImage() routine</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>share/chimera/printer.py</div><div class=""><br class=""></div><div class="">Chimera moves the models and the Chimera always points along the -z axis.  So to change the viewing angle you would rotate the models, for example:</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">  </span>import chimera</div><div class=""><span class="Apple-tab-span" style="white-space:pre">    </span>axis = chimera.Vector(1,0,0)</div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>angle = 30</div><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>r = chimera.Xform.rotation(axis, angle)</div><div class=""><span class="Apple-tab-span" style="white-space:pre">   </span>chimera.openModels.setXform(r)</div><div class=""><br class=""></div><div class="">The openModels code is in C++ and you can see the C++ header file for the OpenModels class which has equivalent Python methods here</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span><a href="http://plato.cgl.ucsf.edu/trac/chimera/browser/trunk/libs/_chimera/OpenModels.h" class="">http://plato.cgl.ucsf.edu/trac/chimera/browser/trunk/libs/_chimera/OpenModels.h</a></div><div class=""><br class=""></div><div class="">This stuff is all pretty hard to figure out.  Unfortunately we do not have adequate programming documentation for Chimera.  We are remedying this in our next generation Chimera 2 which is not yet released.</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre">     </span>Tom</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 6, 2015, at 4:15 PM, hy liao wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><div style="background-color: rgb(255, 255, 255); font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 16px;" class=""><div id="yui_3_16_0_1_1425684376051_12712" class="">Hi Tom:</div><div id="yui_3_16_0_1_1425684376051_12713" class=""><br class=""></div><div id="yui_3_16_0_1_1425684376051_12724" class="">Thanks for the great details! A snapshot on the main Chimera window is good enough! I actually do not need interaction but just the correct display. In other words, given a volume data (density map) and a viewing angle (azimuthal and elevation angles), how do I get the corresponding 2D snapshot (a surface rendering) of the volume? Once I have this snapshot, I guess I can place it in my window by assigning it to my canvas object.  </div><div id="yui_3_16_0_1_1425684376051_18161" class=""><br class=""></div><div id="yui_3_16_0_1_1425684376051_18160" dir="ltr" class="">Thanks again!<br class=""></div><div id="yui_3_16_0_1_1425684376051_18159" dir="ltr" class="">Stu<br class=""></div><div id="yui_3_16_0_1_1425684376051_12692" class=""><span class=""></span></div> <div class="qtdSeparateBR"><br class=""><br class=""></div><div style="display: block;" class="yahoo_quoted"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" class=""> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;" class=""> <div dir="ltr" class=""> <font face="Arial" size="2" class=""> On Friday, March 6, 2015 6:27 PM, Tom Goddard wrote:<br class=""> </font> </div>  <br class=""><br class=""> <div class="y_msg_container"><div id="yiv8520162761" class=""><div class="">Hi Stu,<div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">  The gui.py file I mentioned is shown with Chimera menu entry Tools / Volume Data / Values at Atom Positions.  It does not embed volume images though.</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">  Chimera is not designed to handle multiple interactive 3-d renderings, so you cannot in any simple way embed the Chimera graphics in your own Tk window.  The graphics is shown as a Togl widget (Tk OpenGL widget) that is drawn by Chimera C++ code.   Why do you want do that?  Why not just manipulate the view in the main Chimera graphics window?  The only example of embedding 3d data display in another window is the Chimera side view (menu Favorites / Side View) which has Python code in</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><span class="yiv8520162761Apple-tab-span" style="white-space:pre;">   </span>chimera/share/chimera/viewing.py</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">But it uses C++ code to handle the drawing.</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">  If your aim is to make a custom app with Chimera graphics and your own set of controls you could modify the Chimera main window with Python code in</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><span class="yiv8520162761Apple-tab-span" style="white-space:pre;">    </span>chimera/share/chimera/tkgui.py</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">  All of this is quite hard.  Another route is to take a snapshot image from the main Chimera window to put it in your own window, but then you could not rotate it.</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><span class="yiv8520162761Apple-tab-span" style="white-space:pre;">    </span>Tom</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"><div class=""><blockquote class="yiv8520162761" type="cite"><div class="yiv8520162761">On Mar 6, 2015, at 3:11 PM, hy liao  wrote:</div><br class="yiv8520162761Apple-interchange-newline" clear="none"><div class="yiv8520162761"><div class="yiv8520162761"><div class="yiv8520162761" style="background-color:rgb(255, 255, 255);font-family:HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;font-size:16px;"><div class="yiv8520162761" id="yiv8520162761yui_3_16_0_1_1425677795525_8572">Hi Tom:</div><div class="yiv8520162761" id="yiv8520162761yui_3_16_0_1_1425677795525_8818"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761" dir="ltr" id="yiv8520162761yui_3_16_0_1_1425677795525_8571">Thank you for your prompt reply. Sorry for my ignorance, but how can I run the script <span class="yiv8520162761" id="yiv8520162761yui_3_16_0_1_1425677795525_9532" style="white-space:pre-wrap;"></span>chimera/share/AtomDensity/gui.py and see the gui it actually produces?</div><div class="yiv8520162761" dir="ltr" id="yiv8520162761yui_3_16_0_1_1425677795525_10204"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761" dir="ltr" id="yiv8520162761yui_3_16_0_1_1425677795525_10419">Alternatively, this might be another way of formulating my question: to display a picture in a gui using tkinter, one can create a frame object, then a canvas object, then set the position of the canvas, then create a photoimage object, and then indicate that the picture goes in the canvas. Now, instead of a picture, how do I do the same for a chimera type of volume display? Do I have to also go through creating a frame, a canvas, and then indicate that the volume must reside in the just created canvas. It would be great if you know of any example out there. I have been relying on examples so far.   <br class="yiv8520162761" clear="none"></div><div class="yiv8520162761" id="yiv8520162761yui_3_16_0_1_1425677795525_8814"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761" dir="ltr" id="yiv8520162761yui_3_16_0_1_1425677795525_14616">Thanks again!</div><div class="yiv8520162761" dir="ltr" id="yiv8520162761yui_3_16_0_1_1425677795525_14617"><br class="yiv8520162761" clear="none"><span class="yiv8520162761"></span></div><div class="yiv8520162761" dir="ltr" id="yiv8520162761yui_3_16_0_1_1425677795525_11080"><span class="yiv8520162761">Stu</span></div> <div class="yiv8520162761qtdSeparateBR"><br class="yiv8520162761" clear="none"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761yahoo_quoted" style="display:block;"> <div class="yiv8520162761" style="font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;"> <div class="yiv8520162761" style="font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;"> <div class="yiv8520162761" dir="ltr"> <font class="yiv8520162761" face="Arial" size="2"> On Friday, March 6, 2015 4:26 PM, Tom Goddard  wrote:<div class="yiv8520162761yqt5217640028" id="yiv8520162761yqtfd78833"><br class="yiv8520162761" clear="none"> </div></font><div class="yiv8520162761yqt5217640028" id="yiv8520162761yqtfd75930"> </div></div><div class="yiv8520162761yqt5217640028" id="yiv8520162761yqtfd16103">  <br class="yiv8520162761" clear="none"><br class="yiv8520162761" clear="none"> <div class="yiv8520162761y_msg_container"><div class="yiv8520162761" id="yiv8520162761"><div class="yiv8520162761">Hi Stu,<div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">  To find out about Python functions that control volume display in Chimera that you could use from your Tkinter gui take a look at the Chimera Python scripts web page:</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><span class="yiv8520162761Apple-tab-span" style="white-space:pre;">   </span><a rel="nofollow" shape="rect" class="yiv8520162761" target="_blank" href="http://plato.cgl.ucsf.edu/trac/chimera/wiki/Scripts">http://plato.cgl.ucsf.edu/trac/chimera/wiki/Scripts</a></div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">for example the readvol.py example shows how to access volume data values.  In Python you can make use of commands that would be normally typed at the Chimera command-line in the following way</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">  from chimera import runCommand</div><div class="yiv8520162761">  runCommand(‘volume #0 level 12.5 color pink’)</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">or you could directly call functions in Python that change volume display, for example,</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><span class="yiv8520162761Apple-tab-span" style="white-space:pre;">     </span>import VolumeViewer as vv</div><div class="yiv8520162761"><span class="yiv8520162761Apple-tab-span" style="white-space:pre;"> </span>v0 = vv.volume_list()[0]</div><div class="yiv8520162761"><span class="yiv8520162761Apple-tab-span" style="white-space:pre;">  </span>v0.set_parameters(surface_levels = [12.5], surface_colors = [(1,.5,.5,1)])</div><div class="yiv8520162761"><span class="yiv8520162761Apple-tab-span" style="white-space:pre;">     </span></div><div class="yiv8520162761">To find those functions you can look at the Chimera Volume class Python code in your Chimera distribution</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><span class="yiv8520162761Apple-tab-span" style="white-space:pre;">       </span>chimera/share/VolumeViewer/volume.py</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">(on Mac in Chimera.app/Contents/Resources/share/VolumeViewer/volume.py), and you can look at how the Chimera “volume” command does it</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><span class="yiv8520162761Apple-tab-span" style="white-space:pre;">   </span>chimera/share/VolumeViewer/volumecommand.py</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">For making a Tk GUI look at a simple example in the Chimera distribution, for example, the values at atom positions dialog</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><span class="yiv8520162761Apple-tab-span" style="white-space:pre;">   </span>chimera/share/AtomDensity/gui.py</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761">  Tom</div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"><div class="yiv8520162761"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761"><br class="yiv8520162761" clear="none"><div class="yiv8520162761"><blockquote class="yiv8520162761" type="cite"><div class="yiv8520162761yqt5666582238" id="yiv8520162761yqt94915"><div class="yiv8520162761">On Mar 6, 2015, at 12:16 PM, hy liao wrote:</div><br class="yiv8520162761Apple-interchange-newline" clear="none"><div class="yiv8520162761"><div class="yiv8520162761"><div class="yiv8520162761" style="background-color:rgb(255, 255, 255);font-family:HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;font-size:16px;"><div class="yiv8520162761" dir="ltr" id="yiv8520162761yui_3_16_0_1_1425672217874_2557">Hi, I am developing a GUI with Tkinter, using anaconda's python 2.7.9. I like how chimera displays volumes (density maps), so I would like to a chimera-volume-display in my GUI. I am now disregarding anaconda and developing all within chimera's IDLE. However, I do not know which chimera commands I could use for my purpose; could you please point to some choices?</div><div class="yiv8520162761" id="yiv8520162761yui_3_16_0_1_1425672217874_2920"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761" dir="ltr" id="yiv8520162761yui_3_16_0_1_1425672217874_2805">I am new with developing chimera extension and tkinter, and I mostly look for code examples. I had a look at   <a rel="nofollow" shape="rect" class="yiv8520162761" id="yiv8520162761yui_3_16_0_1_1425672594948_5289" style="" target="_blank" href="http://www.cgl.ucsf.edu/chimera/docs/ProgrammersGuide/Examples/">http://www.cgl.ucsf.edu/chimera/docs/ProgrammersGuide/Examples/</a>, "Working with the Chimera Extension Manager," but I do not know which commands I could use to have chimera display a volume in a grid of my GUI.  <br class="yiv8520162761" clear="none"></div><div class="yiv8520162761" id="yiv8520162761yui_3_16_0_1_1425672217874_2919"><br class="yiv8520162761" clear="none"></div><div class="yiv8520162761" dir="ltr" id="yiv8520162761yui_3_16_0_1_1425672217874_2958">Thanks!</div><div class="yiv8520162761" dir="ltr" id="yiv8520162761yui_3_16_0_1_1425672217874_2918">Stu<br class="yiv8520162761" clear="none"></div></div></div>_______________________________________________<br class="yiv8520162761" clear="none">Chimera-dev mailing list<br class="yiv8520162761" clear="none"><a rel="nofollow" shape="rect" class="yiv8520162761" ymailto="mailto:Chimera-dev@cgl.ucsf.edu" target="_blank" href="mailto:Chimera-dev@cgl.ucsf.edu">Chimera-dev@cgl.ucsf.edu</a><br class="yiv8520162761" clear="none"><a rel="nofollow" shape="rect" class="yiv8520162761" target="_blank" href="http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-dev">http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-dev</a><br class="yiv8520162761" clear="none"></div></div></blockquote></div><br class="yiv8520162761" clear="none"></div></div></div></div><br class="yiv8520162761" clear="none"><br class="yiv8520162761" clear="none"></div>  </div></div><div class="yiv8520162761yqt5217640028" id="yiv8520162761yqtfd88308"> </div></div><div class="yiv8520162761yqt5217640028" id="yiv8520162761yqtfd78269">  </div></div><div class="yiv8520162761yqt5217640028" id="yiv8520162761yqtfd30067"> </div></div></div></div></blockquote></div><div class="yiv8520162761yqt5217640028" id="yiv8520162761yqtfd68669"><br class="yiv8520162761" clear="none"></div></div></div></div><br class=""><br class=""></div>  </div> </div>  </div> </div></div></div></blockquote></div><br class=""></div></body></html>