[Chimera-users] making a plane through the atoms of a ring and Distance measurements

Eric Pettersen pett at cgl.ucsf.edu
Tue Jun 3 17:55:42 PDT 2008


Hi Dave,
	We want to make measurements of axes, centroids, and planes  
possible, and as the first step of that we have been working on  
axes.  So planes/centroids will be coming, but I can't really  
guarantee when (there's still plenty of work left for axes!).  So as  
Greg says, measuring planes/centroids has to be done using Python for  
now.
	Now, the fact that the Chimera Plane constructor requires the points  
in "ring order" (for now) is kind of a major PITA, so my suggestion  
is to do a singular value decomposition and take as the plane normal  
the cross product of the two largest eigenvectors.  This is actually  
really easy.  If you look at the axis() function of StructureMeasure/ 
__init__.py, it finds the centroid and does an SVD on a set of  
coordinates. The single largest eigenvector is the "axis" of those  
coordinates.  You would use numpy.argsort to find the two  
eigenvectors with the largest eigenvalues, and numpy.cross to get the  
cross product.  Some useful numpy docs are here: http://www.scipy.org/ 
Numpy_Example_List_With_Doc .  The other thing to know is that to get  
a bunch of atoms (say from chimera.selection.currentAtoms()) into an  
Nx3 numpy array, you use the function chimera.numpyArrayFromAtoms.
	With the centroid and the normal, you would construct a  
chimera.Point and chimera.Vector.  Then there is a chimera.Plane  
constructor that takes a Point and a Vector.  There are a bunch of  
methods of Point, Vector, and Plane for measuring distances and  
angles, etc.  You can see documentation for them by typing e.g. help 
(chimera.Vector) in the IDLE tool.  So for instance, the distance  
from an atom to the centroid is atom.coord().distance(centroid).   
Some measurements, such as angle(),  are only available as functions  
in the chimera module (so help(chimera) to see them).  So the angle  
atom-centroid-normal is: chimera.angle(atom.coord() - centroid,  
normal) [the subtraction of two Points produced a Vector].
	To show planes, you might want to construct BILD files/strings and  
open those: http://www.cgl.ucsf.edu/chimera/docs/UsersGuide/bild.html

--Eric

                         Eric Pettersen
                         UCSF Computer Graphics Lab
                         http://www.cgl.ucsf.edu


On Jun 2, 2008, at 9:02 PM, David Chenoweth wrote:

> Dear Chimera team,
>
> I would like to make a plane through the atoms of an aromatic ring and
> then measure a distance from an atom to the ring centroid. I would
> also like to measure the angle between the normal to the ring plane
> and the line joining the centroid and the atom I am measuring from. It
> would also be nice if I could specify the dimensions, color, and
> transparency of the plane. In addition it would be great to be able to
> make multiple planes through atoms, select and color them separately,
> and measure the angles at the intersection of the planes. Just
> wondering if there is a way to do this with Chimera.
>
> Thanks in advance,
> Dave
>
> **********************************************
> David M. Chenoweth
> California Institute of Technology
> Division of Chemistry and Chemical Engineering
> Mail Code: 164-30
> 1200 California Boulevard, 91125 Pasadena
> California, USA
>
> Phone: 626-395-6074
> Email: dchen at caltech.edu
> **********************************************
>
>
> _______________________________________________
> Chimera-users mailing list
> Chimera-users at cgl.ucsf.edu
> http://www.cgl.ucsf.edu/mailman/listinfo/chimera-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://plato.cgl.ucsf.edu/pipermail/chimera-users/attachments/20080603/24c3209c/attachment.html>


More information about the Chimera-users mailing list