Sidechaincenters
Jump to navigation
Jump to search
Pseudo single-atom representation of sidechains. Usefull for pair potential calculation for example.
Example
fetch 2x19
pseudo_sidechaincenters scc, 2x19
The Script
<source lang="python"> (c) 2010 Thomas Holder
from pymol import cmd from chempy import Atom, cpv, models
sidechaincenteratoms = {
'GLY': ('CA',), 'ALA': ('CB',), 'VAL': ('CG1', 'CG2'), 'ILE': ('CD1',), 'LEU': ('CD1', 'CD2'), 'SER': ('OG',), 'THR': ('OG1', 'CG2'), 'ASP': ('OD1', 'OD2'), 'ASN': ('OD1', 'ND2'), 'GLU': ('OE1', 'OE2'), 'GLN': ('OE1', 'NE2'), 'LYS': ('NZ',), 'ARG': ('NE', 'NH1', 'NH2'), 'CYS': ('SG',), 'MET': ('SD',), 'MSE': ('SE',), 'PHE': ('CG', 'CD1', 'CD2', 'CE1', 'CE2', 'CZ'), 'TYR': ('CG', 'CD1', 'CD2', 'CE1', 'CE2', 'CZ', 'OH'), 'TRP': ('CG', 'CD1', 'CD2', 'NE1', 'CE2', 'CE3', 'CZ2', 'CZ3'), 'HIS': ('CG', 'ND1', 'CD2', 'CE1', 'NE2'), 'PRO': ('CB', 'CG', 'CD'),
}
def pseudo_sidechaincenters(object='scc', selection='all', name='PS1', method='bahar1996'):
DESCRIPTION
Creates an object with sidechain representing pseudoatoms for each residue in selection.
Sidechain interaction centers as defined by Bahar and Jernigan 1996 http://www.ncbi.nlm.nih.gov/pubmed/9080182
USAGE
pseudo_sidechaincenters object [, selection]
ARGUMENTS
object = string: name of object to create
selection = string: atoms to consider {default: (all)}
name = string: atom name of pseudoatoms {default: PS1}
SEE ALSO
pseudo_sidechaincentroids, pseudoatom atmap = dict() if method == 'bahar1996': modelAll = cmd.get_model('(%s) and resn %s' % (selection, '+'.join(sidechaincenteratoms))) for at in modelAll.atom: if at.name in sidechaincenteratoms[at.resn]: atmap.setdefault((at.segi, at.chain, at.resn, at.resi), []).append(at) elif method == 'centroid': modelAll = cmd.get_model('(%s) and not (hydro or name C+N+O)' % selection) for at in modelAll.atom: atmap.setdefault((at.segi, at.chain, at.resn, at.resi), []).append(at) else: print 'Error: unknown method' return
model = models.Indexed() for centeratoms in atmap.itervalues(): center = cpv.get_null() for at in centeratoms: center = cpv.add(center, at.coord) center = cpv.scale(center, 1./len(centeratoms)) atom = Atom() atom.coord = center atom.index = model.nAtom + 1 atom.name = name for key in ['resn','chain','resi','resi_number','hetatm','ss','segi']: atom.__dict__[key] = at.__dict__[key] model.add_atom(atom) model.update_index() if object in cmd.get_object_list(): cmd.delete(object) cmd.load_model(model, object) return model
def pseudo_sidechaincentroids(object='scc', selection='all', name='PS1'):
DESCRIPTION
Sidechain centroids. Works like "pseudo_sidechaincenters", but the pseudoatom is the centroid of all atoms except hydrogens and backbone atoms (N, C and O).
NOTE
If you want to exclude C-alpha atoms from sidechains, modify the selection like in this example:
pseudo_sidechaincentroids newobject, all and (not name CA or resn GLY)
SEE ALSO
pseudo_sidechaincenters return pseudo_sidechaincenters(object, selection, name, method='centroids')
cmd.extend('pseudo_sidechaincenters', pseudo_sidechaincenters) cmd.extend('pseudo_sidechaincentroids', pseudo_sidechaincentroids)
- vi: ts=4:sw=4:smarttab:expandtab
</script>