Hi Siv,
below is a python script (I sent earlier to the mailing list) that
calculates the Center of mass for a given selection
and creates a CGO sphere there. It is is not 100% exact as it only
weighs C-Alpha atoms.
This is exactly how pymol centers selections: when you run the script,
the domain is centered and if you rotate the structure with the mouse,
the CGO will remain centered.
For side chains you could make a selection of the sidechain carbon atoms
of that residue, or all of the side chain atoms:
centerOfmass("/1n8o//E/41 and not (name c+n+o)").
Also see the ellipsoid script in the wiki.
CGOs and self defined atoms perfectly rotate along (infact you are
changing the camera view, the coordinates remain - unless you explictely
use cmd.rotate or cmd.translate).
See e.g.
http://yggdrasil.biotec.tu-dresden.de/abac/b.47.1.2___b.16.1.1___g.4.1.1.html
I hope that helps.
ha det bra,
Andreas
from pymol import cmd
from pymol.cgo import *
def centerOfMass(selection):
## assumes equal weights (best called with "and name ca" suffix)
model = cmd.get_model(selection)
x,y,z=0,0,0
for a in model.atom:
x+= a.coord[0]
y+= a.coord[1]
z+= a.coord[2]
return (x/len(model.atom), y/len(model.atom), z/len(model.atom))
cmd.load("/group/bioinf/Data/PDBLinks/1c7c.pdb")
cmd.select("domain", "/1c7c//A/143-283/ and name ca") ## selecting a domain
domainCenter=centerOfMass("domain")
print "Center of mass: (%.1f,%.1f,%.1f)"% domainCenter
cmd.as("cartoon", "all")
cmd.show("spheres", "domain")
## Creating a sphere CGO
com = [COLOR, 1.0, 1.0, 1.0, SPHERE]+list(domainCenter) + [3.0] ## white
sphere with 3A radius
cmd.load_cgo(com, "CoM")
cmd.zoom("1c7c", 1.0)
cmd.center("domain")
#...@bioinfws19:~/Projects/PyMOL$ pymol -qc centerOfMass4.py
#Center of mass: (-1.0,24.5,48.2)
#...@bioinfws19:~/Projects/PyMOL$
Siv Midtun Hollup wrote:
Hi,
I would like to examine the approximate volume of different residues in a
protein. To do this, I would like to add a centroid for each residue, and
visualise the volume by using different sphere-sizes.
Is there a built-in function to find center of mass for a selection of atoms?
The center command looks promising, can I get the coordinates of the center of
mass using that? (feks using get_view() or similar?)
Can I add a centroid "atom" to a residue in PYMOL? Would it be translated and
rotated along with the residue if I move the structure around afterwards?
Any pointers much appriciated :)
Cheers,
Siv
--
Andreas Henschel
Bioinformatics Group
TU Dresden
Tatzberg 47-51
01307 Dresden, Germany
Phone: +49 351 463 40063
EMail: a...@biotec.tu-dresden.de