Radius of gyration

From PyMOLWiki
Revision as of 14:56, 31 March 2011 by Speleo3 (talk | contribs) (example)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This script does calcualate the radius of gyration of a molecule.

Thanks to Tsjerk Wassenaar for posting this script on the pymol-users mailing list!

from pymol import cmd
from itertools import izip
import math

def rgyrate(selection='(all)', quiet=1):
    '''
DESCRIPTION

    Radius of gyration

USAGE

    rgyrate [ selection ]
    '''
    quiet = int(quiet)
    model = cmd.get_model(selection).atom
    x = [i.coord for i in model]
    mass = [i.get_mass() for i in model]
    xm = [(m*i,m*j,m*k) for (i,j,k),m in izip(x,mass)]
    tmass = sum(mass)
    rr = sum(mi*i+mj*j+mk*k for (i,j,k),(mi,mj,mk) in izip(x,xm))
    mm = sum((sum(i)/tmass)**2 for i in izip(*xm))
    rg = math.sqrt(rr/tmass - mm)
    if not quiet:
        print "Radius of gyration: %.2f" % (rg)
    return rg

cmd.extend("rgyrate", rgyrate)

# vi:expandtab

Example

Radius of gyration Example.png

This example used the radius of gyration and the center of mass to display a semitransparent sphere.

from pymol import cmd, stored, util
import centerOfMass, rgyrate

cmd.set('sphere_transparency', 0.5)

cmd.fetch('2xwu')
cmd.hide('everything')
cmd.show('cartoon', 'chain A')

stored.gyradius = rgyrate.rgyrate('chain A and polymer')
centerOfMass.com('chain A and polymer', object='com')
cmd.alter('last com', 'vdw=stored.gyradius')

util.cbc()

See Also

Center Of Mass, COM