ramp_new creates a color ramp based on a map potential value or based on proximity to a molecular object.
Color ramps are extremely powerful but complicated to use.
In the simplest case, they can be used to color representations based on the potential values found in a map object at the corresponding positions in space. In another simple case, representations can be colored based on proximity to a target. Note that since ramp targets must themselves be real objects (not merely selections), the "create" command may be needed in order to generate an appropriate target. In more complicated cases, they can be used to color representations on one object based atoms found in another. Ramps can operate recursively. In other words, the output color from one ramp can be used as the input color for another. For example, you could color by map potential within a certain distance of the target object, beyond which, a uniform color is applied.
# normal PyMOL usage ramp_new name, map_name [, range [, color [, state [, selection [, beyond [, within [, sigma [, zero ]]]]]]]] # in the API cmd.ramp_new(string name, string map_name, list range, list color, int state, string selection, float beyond, float within, float sigma, int zero, int quiet)
- ramp_name = string: name of the ramp object
- map_name = string: name of the map (for potential) or molecular object (for proximity)
- range = list: values corresponding to slots in the ramp
- color = list: colors corresponding to slots in the ramp or a given palette name: afmhot, grayscale, object, rainbow, traditional, grayable, hot, ocean, and sludge
- state = integer: state identifier
- selection = selection: for automatic ranging
- beyond = number: with automatic ranging, are we excluding values beyond a certain distance from the selection?
- within = number: with automatic ranging, are we only including valuess within a certain distance from the selection?
- sigma = number: with automatic ranging, how many standard deviations from the mean do we go?
- zero = integer: with automatic ranging, do we force the central value to be zero?
ramp_new e_pot_color, e_pot_map, [-10, 0, 10], [red, white, blue]
This creates a new ramp object named e_pot_color, based on the values of the potential found in e_pot_map.
Ramp + Distance Measure
Using a ramp and a distance measure, we can color the surface by some property--here, I'll chose distance from some important atom in the receptor to the ligand atom.
To reproduce the results shown here you must do the following:
- obtain a protein
- calculate some property for some set of atoms (like distance from some central location) and stuff the values into the b-factor
- create a new object from the atoms for which you just measured a property
- create a new ramp from the object with ramp_new
- set the surface color of the new object
- Load the cube file containing the ELF function, e.g. H2O_elf.cube.
- Create an isosurface with a contour level of 0.8.
isosurface elf, H2O_elf, 0.8
- Load the cube containing the basin information, e.g. H20_esyn.cube. Basically in this cube for each point in the first cube you have either one of the numbers from 1 to 5. More details on what these numbers mean can be found in the TopMod manual.
- Create a new ramp.
ramp_new ramp, H2O_esyn, [1, 2, 3, 5], [tv_orange, lightblue, palegreen, deeppurple]
- Assign the color ramp to the ELF isosurface.
set surface_color, ramp, elf
- Rebuild if necessary.
Surface Colored by Distance from a Point
See Spectrum for another method that allows for more flexible coloring schemes, but needs more work to get there.
This example shows how to color a protein surface by its distance from a given point:
# fetch a friendly protein fetch 1hug, async=0 # show it as a surface as surface # create a pseudoatom at the origin; we will # measure the distance from this point pseudoatom pOrig, pos=(0,0,0), label=origin # create a new color ramp, measuring the distance # from pOrig to 1hug, colored as rainbow ramp_new proximityRamp, pOrig, selection=1hug, range=[5,65], color=rainbow # set the surface color to the ramp coloring set surface_color, proximityRamp, 1hug # some older PyMOLs need this recoloring/rebuilding recolor; rebuild
Coloring a Viral Capsid by Distance from Core
# create a pseudoatom at the origin-- we will # measure the distance from this point pseudoatom pOrig, pos=(0,0,0), label=origin # fetch and build the capsid fetch 2xpj, async=0, type=pdb1 split_states 2xpj delete 2xpj # show all 60 subunits it as a surface # this will take a few minutes to calculate as surface # create a new color ramp, measuring the distance # from pOrig to 1hug, colored as rainbow ramp_new proximityRamp, pOrig, selection=(2xpj*), range=[110,160], color=rainbow # set the surface color to the ramp coloring set surface_color, proximityRamp, (2xpj*) # some older PyMOLs need this recoloring/rebuilding recolor