Resicolor plugin: Difference between revisions

From PyMOLWiki
Jump to navigation Jump to search
mNo edit summary
No edit summary
Line 47: Line 47:
</source>
</source>


[[Category:Plugins]]
[[Category:Plugins]] [[Category:Coloring]]

Revision as of 12:56, 28 August 2008

Description

Here is a small plugin to color proteins according to residue type. Save the following text as "resicolor.py" in your somewhere/PyMOL/modules/pmg_tk/startup directory, and it should add itself to the plugin menu at the next pymol startup. This functionality is also available as a script (resicolor).

#plugin contributed by Philippe Garteiser garteiserp@omrf.org
from Tkinter import *
from pymol import cmd
import tkSimpleDialog

def __init__(self):
    # Simply add the menu entry and callback
    self.menuBar.addmenuitem('Plugin', 'command',
                                     'resicolor',
                                     label = 'resicolor',
                                     command = lambda s=self : getselection(s))

def resicolor(selection):
    if selection:   # None is returned for user cancel
        cmd.select ('calcium','resn ca or resn cal')
        cmd.select ('acid','resn asp or resn glu or resn cgu')
        cmd.select ('basic','resn arg or resn lys or resn his')
        cmd.select ('nonpolar','resn met or resn phe or resn pro or resn trp or resn val or resn leu or resn ile or resn ala')
        cmd.select ('polar','resn ser or resn thr or resn asn or resn gln or resn tyr')
        cmd.select ('cys','resn cys or resn cyx')
        cmd.select ('backbone','name ca or name n or name c or name o')
        cmd.select ('none')     
        code={'acid'    :  'red'    ,
              'basic'   :  'blue'   ,
              'nonpolar':  'orange' ,
              'polar'   :  'green'  ,
              'cys'     :  'yellow'}
        cmd.select ('none')
        for elem in code:
            line='color '+code[elem]+','+elem+'&'+selection
            print line
            cmd.do (line)
        word='color white,backbone &'+selection
        print word
        cmd.do (word)

def getselection(app):
    selection=tkSimpleDialog.askstring('resicolor',
                                              'Please enter a selection',
                                              parent=app.root)
    resicolor(selection)