[chimera-dev] question about rotations/translations in Chimera

Thomas Goddard goddard at cgl.ucsf.edu
Mon Jul 19 16:49:30 PDT 2010


Hi Julio,

   Chimera Python and C++ code represent rotations and translations as 3 
row by 4 column matrices with the first 3 columns being a rotation 
matrix and the 4th column being a translation.  The rotation is applied 
first (about 0,0,0) then the translation.

   Each map and atomic model in Chimera has its own local coordinate 
system.  The placement of the local coordinate frame in the Chimera 
global coordinate system (z axis points out of screen, x axis horizontal 
on screen) is given by one of these 3x4 transformation matrices.

   The origin of the local coordinate system can be at any point 
relative to the data.  It does not need to be at the corner of the map, 
nor in the center of the map.  The position is specified in the header 
of many of the map file formats (e.g. MRC).  With atomic models (PDB 
files) from crystallography the origin is usually the crystallographic 
origin (used for crystallographic point symmetry).

   There is a 3x4 transform describing how the local coordinate frame is 
positioned in the global coordinate system.  Also for maps there is 
another 3x4 transform that describes how the grid is positioned within 
the local coordinate system.  This latter transform determines where the 
data sits in the local coordinate frame the actual data -- the shift is 
determined by the origin values in map headers.  The ability to rotate 
the grid within the local coordinate frame is generally not supported by 
map file formats.  So if you want to save a rotated map you generally 
have to resample on a rotated grid -- unfortunate.

   The Chimera command language allows specifying rotations and 
translations with the "turn" and "move" commands.  These do not use a 
3x4 matrix since that is not very useful for hand-typed commands. 
Instead you can specify the center for a rotation, an axis vector and an 
angle.  For example

	turn 1,1,0 30 center 150,245.5,90 coordinateSystem #0 model #1

rotates model #1 about axis (1,1,0) by 30 degrees about with center 
(150,245.5,90) where the axis and center are in the local coordinate 
system of model #0.

   There's a lot to know about how coordinate systems are handled in 
Chimera and I'd need a more specific question to advise you further. 
Here's a little info about transforms in Python

http://www.cgl.ucsf.edu/chimera/docs/ProgrammersGuide/faq.html#q5

And here's some about the "turn" and "move" commands

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

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

	Tom



> Dear Prof. Goddard,
>
> I came recently to Pawel's group in UT Houston, and we were wondering
> about how Chimera performs rotations and translations: in which order,
> and with respect to which point (center of the map, origin of
> coordinates, corner of the map...)?
>
> Any info that you can provide to help us clarify this will be greatly
> appreciated.
>
> Best regards,
> Julio
>
>



More information about the Chimera-dev mailing list