[chimera-dev] Re: Chimera at NCMI

Thomas Goddard goddard at cgl.ucsf.edu
Mon May 12 10:22:04 PDT 2003


Hi Steve

   The Chimera programming documentation is abysmal.  We usually use
the C++ header files which have equivalent Python interfaces.
Unfortunately you don't have those in the distribution.

  I've packaged up the Chimera include directory.  You can get them at

	http://www.cgl.ucsf.edu/home/goddard/chiminc.tar.gz

We keep them in /usr/local/chimera/include.  You'll want to mostly look
at include/_chimera/*.h.  Also include/otf/Geom.h is helpful.

A) how to rotate/translate the camera

>>> v = chimera.viewer
>>> c = v.camera
>>> print c.center
(5.9539999961853027, -2.186500072479248, 10.296500205993652)
>>> c.center = (x, y, z)	# to translate camera
>>> # Camera always points in -z direction.  There is no way to rotate it.
>>> v.scaleFactor = 1.5		# to zoom camera

B) how to rotate/translate individual objects
C) how to find out the current rotations/translations

>>> om = chimera.openModels
>>> mlist = om.list()
>>> m = mlist[0]
>>> xf = chimera.Xform()
>>> axis = chimera.Vector(1, 0, 0)
>>> angle = 90			# degrees
>>> xf.rotate(axis, angle)
>>> print m.openState.xform	# 3x3 rotation matrix
				# last column is translation
0.982695 0.121524 0.139793 -1.07064
0.0250348 0.660639 -0.750287 6.83425
-0.183531 0.740803 0.646164 6.35578
>>> m.openState.globalXform(xf)
# Another method
#   xf.premultiply(m.openState.xform)	# changes xf
#   m.openState.xform = xf
# To rotate relative to data axes use
#   m.openState.localXform(xf)
# or
#   xf.multiply(m.openState.xform)	# changes xf
#   m.openState.xform = xf

D) how to save the current view to a file (haven't worked on this very 
hard yet, but while I'm asking)

>>> v = chimera.viewer
>>> im = v.pilImage()		# ImagingCore object
>>> from PIL import Image
>>> image = Image.Image()._makeself(im)
>>> format = 'PNG'  # Or 'BMP', 'EPS','GIF', 'JPEG', 'PDF', 'PPM', 'TIFF'
>>> path = '/home/goddard/hoohoo.png'
>>> image.save(path, format = format)


----------------------

> Date: Sun, 11 May 2003 23:21:48 -0500 (CDT)
> From: Steve Ludtke <stevel at blake.3dem.bioch.bcm.tmc.edu>
> Reply-To: sludtke at bcm.tmc.edu
> 
> Hi again. I decided to take another stab at doing some scripted animations 
> with chimera, but got stuck. I've looked through the available docs pretty 
> thoroughly, and I've spent a lot of time interrogating a live session, but 
> there are still some serious holes, largely because a lot of the code is 
> in C and I don't have the source on that side. Most of the docs seem to 
> focus on manipulating the actual data rather than the viewing framework. 
> I know how to get access to the list of open models and to the current 
> lensviewer. However, I still can't figure out:
> 
> A) how to rotate/translate the camera
> B) how to rotate/translate individual objects
> C) how to find out the current rotations/translations
> D) how to save the current view to a file (haven't worked on this very 
> hard yet, but while I'm asking)
> 
> If you could send me any sort of code snippet indicating how to do these 
> things, I'd be grateful. I'm sure they are pretty much one-liners, but I 
> can't figure out what the 1 line is...
> 
> thx again!
> 


More information about the Chimera-dev mailing list