[chimera-dev] Creating graphics objects from Python code

Tom Goddard goddard at sonic.net
Fri Jan 7 10:12:25 PST 2011


Hi Konrad,

   You can use the Chimera BILD format without creating a temporary file 
by creating a string containing the commands, then use StringIO to make 
a file object from that string and open it.  For example,

     from StringIO import StringIO
     bild = StringIO(".cylinder %g %g %g %g %g %g %g\n"
                 % (end1[0], end1[1], end1[2], end2[0], end2[1], 
end2[2], radius))
     from chimera import openModels
     model = openModels.open(bild, type="Bild", identifyAs='My 
annotations', sameAs = mol)

The identifyAs argument assigns the name to the new model that will be 
shown in the Model Panel dialog.  The sameAs argument says that the new 
model should be aligned with the specified model (same positioning 
transform).

   I stole this example from the Chimera Axes/Centroids/Planes code, 
found in the Chimera distribution in

     chimera/share/StructMeasure/Axes.py

   The BILD format produces a VRML model in Chimera and VRML models are 
horribly inflexible.  For instance you cannot change the color of an 
object in a VRML model without destroying the model and building a new 
one.  Basically the VRML is immutable after it is created.

   To avoid that limitation I have sometimes resorted to using (some say 
abusing) the Chimera Molecule object for showing annotations.  The 
Chimera Volume Tracer tool lets you place spherical markers and connect 
them by cylindrical links, and you can move, delete, recolor, resize, 
add text labels ... the markers.  This is  implemented as a Molecule in 
Chimera, the relevant code is

     chimera/share/VolumePath/markerset.py

A third approach to showing annotations that are geometric shapes is to 
use the Chimera "shape" command.

     http://www.cgl.ucsf.edu/chimera/docs/UsersGuide/midas/shape.html

This can make spheres, cylinders, tubular paths, and a few other shapes 
-- not many though.  The shapes can be created with the Chimera command 
or via Python calls to the Shape module

     chimera/share/Shape

None of the annotation display techniques combine flexibility with ease 
of use.  I suggest using BILD if possible.

   Tom

> Hi everyone,
>
> I would like to add non-molecular graphics objects to my molecules for illustration. The obvious way to do so is to load a BILD or VRML file, but since I create these objects in Python scripts, I'd prefer to a direct Python interface rather than write a temporary file and load it. Is there a reasonably stable interface for doing this?
>
> Thanks in advance,
>    Konrad.
> --
> ---------------------------------------------------------------------
> Konrad Hinsen
> Centre de Biophysique Moléculaire, CNRS Orléans
> Synchrotron Soleil - Division Expériences
> Saint Aubin - BP 48
> 91192 Gif sur Yvette Cedex, France
> Tel. +33-1 69 35 97 15
> E-Mail: research AT khinsen DOT fastmail DOT net
> ---------------------------------------------------------------------




More information about the Chimera-dev mailing list