Color by conservation: Difference between revisions
Jump to navigation
Jump to search
(Created page with "= Overview = This script reads an alignment object and colors the protein objects in the alignment by the sequence conservation found in the alignment. = Example Usage = <source...") |
mNo edit summary |
||
Line 1: | Line 1: | ||
= Overview = | = Overview = | ||
This script reads an alignment object and colors the protein objects in the alignment by the sequence conservation found in the alignment. | This script reads an alignment object and colors the protein objects in the alignment by the sequence conservation found in the alignment. | ||
[[Image:Cbcon.png|550px]] | |||
= Example Usage = | = Example Usage = |
Revision as of 12:34, 8 December 2011
Overview
This script reads an alignment object and colors the protein objects in the alignment by the sequence conservation found in the alignment.
Example Usage
# run the script
run show_conserved.py
# turn on the sequence viewer
set seq_view
# get some kinases
fetch 1opk 3dtc 3p86 2eva 3efw, async=0
# align them into the "aln" object
for x in cmd.get_names(): cmd.align(x, "3efw and c. A", object="aln")
# color
color_by_conservation("aln", as_putty=1)
The Code
def color_by_conservation(aln, names=(), color="rainbow", as_putty=0, _self=cmd):
"""
PARAMETERS
aln
(string) the alignment object name
names
(list) a list of object names that are in the alignment;
if (), then PyMOL will attempt to glean the names
from the alignment object
color
(string) valid PyMOL spectrum name
as_putty
(0 or 1) if 0 display is not changed, else participating objects are shown
as cartoon putty, colored by the 'color' field
"""
# PyMOL doesn't yet know about object:alignment
# but we need to check that this exists or we might crash
if _self.get_type(aln)!="object:":
print "Error: Bad or incorrectly specified alignment object."
return None
r = cmd.get_raw_alignment(aln)
if names==():
known_objs = []
map(known_objs.extend, map(lambda x: map(lambda y: y[0], x), r))
known_objs=set(known_objs)
# highest number of matches seen
M = max(map(len,r)) + 1
else:
known_objs = set(names)
M = len(known_objs) + 1
for obj in known_objs:
_self.alter(obj, "b=0.0")
for af in r:
c = float(1.0 + len(af)) / float(M)
for y in af:
_self.alter("%s and ID %s" % (y[0], y[1]), "b=c", space={'c':c})
if as_putty!=0:
for obj in known_objs:
_self.show_as("cartoon", "%s" % obj)
_self.cartoon("putty", "%s" % obj)
_self.spectrum('b', color, obj)
_self.sort()
_self.rebuild()
return None