Andreas,

Thank you for posting that script.

One of the new features in the PyMOL 1.0 betas is the pseudoatom command
which has a similar behavior.

pseudoatom object-name, selection
show spheres, object-name

In terms of finding the center of mass, try:

center selection
print cmd.get_position()

Cheers,
Warren


> -----Original Message-----
> From: pymol-users-boun...@lists.sourceforge.net 
> [mailto:pymol-users-boun...@lists.sourceforge.net] On Behalf 
> Of Andreas Henschel
> Sent: Friday, April 20, 2007 10:51 AM
> To: Siv Midtun Hollup
> Cc: pymol-users@lists.sourceforge.net
> Subject: Re: [PyMOL] building centroids for residues
> 
> 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
> 
> 
> 
> --------------------------------------------------------------
> -----------
> This SF.net email is sponsored by DB2 Express Download DB2 
> Express C - the FREE version of DB2 express and take control 
> of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> PyMOL-users mailing list
> PyMOL-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/pymol-users


Reply via email to