Map_set provides a number of common operations on and between maps. For example, with Map_set you can add two maps together or create a consensus map from a series of maps or even take a difference map.
map_set name, operator, operands, target_state, source_state
operator may be,
* average * copy * difference * maximum * minimum * sum * unique
# add 3 maps map_set my_sum, add, map1 map2 map3 # calculate the average map map_set my_avg, average, map1 map2 map3
source_state = 0 means all states target_state = -1 means current state experimental
This example shows you how to create a consensus map of the bound ligand in a conserved pocket.
# fetch some similar proteins from the PDB fetch 1oky 1h1w 1okz 1uu3 1uu7 1uu8 1uu9 1uvr, async=0 # align them all to 1oky; their ligands # should all now be aligned alignto 1oky # highlight the ligands as sticks, org # select one of the atoms in the organic small mol sele /1uu3//A/LY4`1374/NAT # select entire molecules very near the chosen atom select bm. all within 1 of (sele) # remove the proteins; just look at small molecules remove not (sele) # create maps for all the ligands python for x in cmd.get_names(): cmd.map_new( "map_" + x, "gaussian", 0.5, x) python end # calculate the average map map_set avgMap, average, map* # show as transparent surface set transparency, 0.5 isosurface avgSurface, avgMap, 1.0 orient vis