This is a read-only mirror of pymolwiki.org
Difference between revisions of "Sidechaincenters"
Jump to navigation
Jump to search
m |
m (9 revisions) |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | [[File:SidechaincentersExample.png|400px|thumb|right|sidechain centers]] | ||
+ | |||
Pseudo single-atom representation of sidechains. Usefull for [[AAindex|pair potential calculation]] for example. | Pseudo single-atom representation of sidechains. Usefull for [[AAindex|pair potential calculation]] for example. | ||
Line 5: | Line 7: | ||
<source lang="python"> | <source lang="python"> | ||
fetch 2x19 | fetch 2x19 | ||
− | + | sidechaincenters scc, 2x19 | |
</source> | </source> | ||
Line 42: | Line 44: | ||
} | } | ||
− | def | + | def sidechaincenters(object='scc', selection='all', name='PS1', method='bahar1996'): |
''' | ''' | ||
DESCRIPTION | DESCRIPTION | ||
Line 54: | Line 56: | ||
USAGE | USAGE | ||
− | + | sidechaincenters object [, selection] | |
ARGUMENTS | ARGUMENTS | ||
Line 66: | Line 68: | ||
SEE ALSO | SEE ALSO | ||
− | + | sidechaincentroids, pseudoatom | |
''' | ''' | ||
atmap = dict() | atmap = dict() | ||
Line 79: | Line 81: | ||
atmap.setdefault((at.segi, at.chain, at.resn, at.resi), []).append(at) | atmap.setdefault((at.segi, at.chain, at.resn, at.resi), []).append(at) | ||
else: | else: | ||
− | print 'Error: unknown method' | + | print 'Error: unknown method:', method |
return | return | ||
Line 101: | Line 103: | ||
return model | return model | ||
− | def | + | def sidechaincentroids(object='scc', selection='all', name='PS1'): |
''' | ''' | ||
DESCRIPTION | DESCRIPTION | ||
− | Sidechain centroids. Works like " | + | Sidechain centroids. Works like "sidechaincenters", but the |
pseudoatom is the centroid of all atoms except hydrogens and backbone atoms | pseudoatom is the centroid of all atoms except hydrogens and backbone atoms | ||
(N, C and O). | (N, C and O). | ||
Line 114: | Line 116: | ||
like in this example: | like in this example: | ||
− | + | sidechaincentroids newobject, all and (not name CA or resn GLY) | |
SEE ALSO | SEE ALSO | ||
− | + | sidechaincenters | |
''' | ''' | ||
− | return | + | return sidechaincenters(object, selection, name, method='centroid') |
− | cmd.extend(' | + | cmd.extend('sidechaincenters', sidechaincenters) |
− | cmd.extend(' | + | cmd.extend('sidechaincentroids', sidechaincentroids) |
+ | |||
+ | cmd.auto_arg[1].update({ | ||
+ | 'sidechaincenters' : [ cmd.selection_sc , 'selection' , '' ], | ||
+ | 'sidechaincentroids' : [ cmd.selection_sc , 'selection' , '' ], | ||
+ | }) | ||
# vi: ts=4:sw=4:smarttab:expandtab | # vi: ts=4:sw=4:smarttab:expandtab | ||
</source> | </source> | ||
+ | |||
+ | [[Category:Script_Library]] | ||
+ | [[Category:Structural_Biology_Scripts]] |
Latest revision as of 03:53, 28 March 2014
Pseudo single-atom representation of sidechains. Usefull for pair potential calculation for example.
Example
fetch 2x19
sidechaincenters scc, 2x19
The Script
'''
(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 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
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
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:', 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 sidechaincentroids(object='scc', selection='all', name='PS1'):
'''
DESCRIPTION
Sidechain centroids. Works like "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:
sidechaincentroids newobject, all and (not name CA or resn GLY)
SEE ALSO
sidechaincenters
'''
return sidechaincenters(object, selection, name, method='centroid')
cmd.extend('sidechaincenters', sidechaincenters)
cmd.extend('sidechaincentroids', sidechaincentroids)
cmd.auto_arg[1].update({
'sidechaincenters' : [ cmd.selection_sc , 'selection' , '' ],
'sidechaincentroids' : [ cmd.selection_sc , 'selection' , '' ],
})
# vi: ts=4:sw=4:smarttab:expandtab