Color

From PyMOLWiki
Revision as of 14:28, 17 November 2009 by Inchoate (talk | contribs)
Jump to navigation Jump to search

color changes the color of an object or an atom selection. For a script that enumerates all the colors see, List_Colors.

USAGE

color color-name
color color-name, object-name
color color-name, (selection)

PYMOL API

cmd.color( string color, string selection )

Using RGB for Color

If you prefer RGB to color any object

set_color newcolor, [r,g,b]
color newcolor

List of Color Values

EXAMPLES

Color all carbons yellow

color yellow, (name C*)

RGB Example

set_color khaki, [195,176,145]
color khaki

Color by Spectrum Example

Color by spectrum is in the GUI menu but did you realize that the spectrum is not limited to a simple rainbow?

spectrum count, x, object_name

x can can be anyone of the following: blue_green, green_white_magenta, red_cyan, blue_magenta, green_white_red, red_green, blue_red, green_white_yellow, red_white_blue, blue_white_green, green_yellow, red_white_cyan, blue_white_magenta, green_yellow_red, red_white_green, blue_white_red, magenta_blue, red_white_yellow, blue_white_yellow, magenta_cyan, red_yellow, blue_yellow, magenta_green, red_yellow_green, cbmr, magenta_white_blue, rmbc, cyan_magenta, magenta_white_cyan, yellow_blue, cyan_red, magenta_white_green, yellow_cyan, cyan_white_magenta, magenta_white_yellow, yellow_cyan_white, cyan_white_red, magenta_yellow, yellow_green, cyan_white_yellow, rainbow, yellow_magenta, cyan_yellow, rainbow2, yellow_red, gcbmry, rainbow2_rev, yellow_white_blue, green_blue, rainbow_cycle, yellow_white_green, green_magenta, rainbow_cycle_rev, yellow_white_magenta, green_red, rainbow_rev, yellow_white_red, green_white_blue, red_blue, yrmbcg

B-Factors

The command to color a molecule by B-Factors (B Factors) is:

cmd.spectrum("b", selection="SEL");

where SEL is a valid selection, for example, "protA and n. CA", for protein A's alpha carbons.

You can choose the spectrum you want with the command:

cmd.spectrum("b", 'rainbow', selection="SEL");

where rainbow is a valid selection from the list:

  blue_green            green_white_magenta   red_cyan            
  blue_magenta          green_white_red       red_green           
  blue_red              green_white_yellow    red_white_blue      
  blue_white_green      green_yellow          red_white_cyan      
  blue_white_magenta    green_yellow_red      red_white_green     
  blue_white_red        magenta_blue          red_white_yellow    
  blue_white_yellow     magenta_cyan          red_yellow          
  blue_yellow           magenta_green         red_yellow_green    
  cbmr                  magenta_white_blue    rmbc                
  cyan_magenta          magenta_white_cyan    yellow_blue         
  cyan_red              magenta_white_green   yellow_cyan         
  cyan_white_magenta    magenta_white_yellow  yellow_cyan_white   
  cyan_white_red        magenta_yellow        yellow_green        
  cyan_white_yellow     rainbow               yellow_magenta      
  cyan_yellow           rainbow2              yellow_red          
  gcbmry                rainbow2_rev          yellow_white_blue   
  green_blue            rainbow_cycle         yellow_white_green  
  green_magenta         rainbow_cycle_rev     yellow_white_magenta
  green_red             rainbow_rev           yellow_white_red    
  green_white_blue      red_blue              yrmbcg 

Reassigning B-Factors and Coloring

It is commonplace to replace the B-Factor column of a protein with some other biochemical property at that residue, observed from some calculation or experiment. PyMOL can easily reassign the B-Factors and color them, too. The following example will load a protein, set ALL it's B Factors to "0", read in a list of properties for each alpha carbon in the proteins, assign those new values as the B-Factor values and color by the new values. This example is possible because commands PyMOL does not recognize are passed to the Python interpreter --- a very powerful tool.

# load the protein
cmd.load("protA.pdb")

# open the file of new values (just 1 column of numbers, one for each alpha carbon)
inFile = open("newBFactors", 'r')

# create the global, stored array
stored.newB = []

# read the new B factors from file
for line in inFile.readlines(): stored.newB.append( float(line) )

# close the input file
inFile.close()

# clear out the old B Factors
alter protA, b=0.0

# update the B Factors with new properties
alter protA and n. CA, b=stored.newB.pop(0)

# color the protein based on the new B Factors of the alpha carbons
cmd.spectrum("b", "protA and n. CA")

If you want to save the file with the new B Factor values for each alpha carbon,

cmd.save("protA_newBFactors.pdb", "protA")

or similar is all you need.

A script (data2bfactor.py) that loads data into the B-factor (b) or occupancy (q) columns from an external file can be found in Robert Campbell's PyMOL script repository (http://pldserver1.biochem.queensu.ca/~rlc/work/pymol/)

Expanding to Surface

See Expand_To_Surface.

If you have run the above code and would like the colors to be shown in the Surface representation, too, then you need to do the following:

# Assumes alpha carbons colored from above.
create ca_obj, your-object-name and name ca 
ramp_new ramp_obj, ca_obj, [0, 10], [-1, -1, 0]
set surface_color, ramp_obj, your-object-name

Thanks to Warren, for this one.

Getting Atom Colors

stored.list = []
iterate all, stored.list.append(color)
print stored.list

Or, you can label each atom by it's color code:

label all, color


Color States Individually

fetch 1nmr
set all_states

# the object has 20 states, so we can set separate line colors
# for each state as follows:
for a in range(1,21): cmd.set("line_color","auto","1nmr",a)

Or, we can do it differently,

# start over,
fetch 1nmr

# break apart the object by state
split_states 1nmr

# delete the original
dele 1nmr

# and color by object (carbons only)
util.color_objs("elem c")

# (all atoms)
util.color_objs("all")