ICM Manual v.3.9
by Ruben Abagyan,Eugene Raush and Max Totrov
Copyright © 2020, Molsoft LLC
Nov 28 2023

Reference Guide
Command Line User's Guide
  clipping plane
  current map
  current object
PrevICM Language Reference

[ cavity | charge | clipping plane | coil | column | Collection | current map | current object | Current | command | comp_matrix | conf | cpk ]


is the free space inside a molecule. Here we use a limited definition of a cavity as a fully enclosed space inside a molecule. See the icmCavityFinder macro which identifies and characterizes cavities.
To generate a cavity an skin is generated and converted into grob . We then split this grob into individual connected entities.


is an electric charge in electron units. You may redefine charges with the set charge and formal charges with set charge formal commands.

Formal charges in functional groups can be changed in chemical arrays with the modify command.

The following variables and commands are related to charges in 3D objects or chemical arrays:

clipping plane

An invisible graphical plane which truncates the view. There two clippings planes: the front one and the back one. The front clipping plane determines the beginning of the visible part of your object, while the back clipping plane is where the visible parts ends. The planes can be moved independently, or in concert (so called "slicing"). In the "FOG" mode the image gradually disappears between the front and the back planes.


is an irregular conformation ("_" in one-character notation). It is displayed as spaghetti when the ribbon type of representation is used. To assign a residue fragment to coil, do something like this: assign sstructure a_/13:40 "_".


indicates a layout format of several arrays ( iarrays, rarrays, sarrays) with the same number of elements as side-by-side columns. The column format look like this:
#>  a   b   c 
   1.  15  "alpha"  
   2.  18  "beta"  
   5.  10  "gamma"  
It is also useful to show arrays of a table (see also database).

Complex data structures: Collections and general Arrays

Collection is composed of a array of unique keys and a array of values, where each key is associated with one value. Each value can either be of basic type or other collection or array of collections.

A collection can be created in different ways:

A collection can be written to a file with the write-xmlcollection filename command.


c = Collection( "firstName", "John", "lastName", "Snith", "age" 25 ) # from key/value pairs 
c = Collection( "{ 'firstName': 'John', 'lastName': 'Smith', 'age': 25 }" ) # from JSON string
c = Collection( "<firstName>John</firstName><lastName>Smith</lastName><age>25</age>" )  # from XML string
write xml c "c.xml"

Elements can be added, modified and removed dynamically

c = Collection()   # empty collection
c["count"] += 1    # accumulates count (when used the first time, creates a new key
c["name"] = "John"  # creates a new element
c["name"] = "Jack"  # overwrites an existing element
c["addressBook"] = Array()
c["addressBook",1] = Collection( "name" "Jack" "tel" "858-3452238" "cell" "858-8872676" )
c["addressBook",2] = Collection( "name" "John" "tel" "858-7878795" "cell" "858-6373913" )
# index access
c["addressBook",1]  #  first entry of the addressbook
c["addressBook",1:2]  #  first two entries of the addressbook
c["addressBook",1:2,"tel"]  #  first two 'tel' fields
# deletion
delete c["addressBook",2]  # deletes second element of the adderssbook
delete c["addressBook"]

See: Collection read xml , read json , write-xml, String( xml), xml drugbank example

current map

usually is the last map loaded by the read map command or created by the make map family of commands. The current map may be changed by the set map command. To find out which one is the current, use list maps.

current object

usually is the last object loaded by the read object command or created by the build command. The current object may be changed by the set object [ os_object ] command. To find out which is the current one, use list object or show object [ os_object].
You may refer to the current object as a_

current table

usually is the last table loaded by the read table command or created by the group table command. The current table may be changed by the set table command. To find out which one is the current, use list tables.


an instruction one can execute in the ICM-shell interactively or from an ICM script file. Typically a command consists of a verb (like read or delete ) and a bunch of arguments.

The word order in the argument list is not important, if arguments have different types. For example:

 display a_//ca,c,n yellow # is as good as ...  
 display yellow a_//ca,c,n # ... inverse  

If two or more argument of the same type are present the order becomes important, e.g.

  • if two or more arguments are of the same type, e.g. write "This line" "filename" or superimpose as_select1 as_select2 ,
  • a complex argument consists of two parts: e.g. delete label i_number or grid["x"] in the plot command. In the latter case if the "x" string is not preceded by grid word, it will not be considered.

Redefining global preferences and parameters temporarily for one command.

Sometimes you want to run a command with different values of global preference and global shell variables of the following type: integer, real, string and logical . Their values will be automatically restored after the completion of the command. E.g.

show surface area surfaceAccuracy=10 vwExpand=1.4
show energy electroMethod = "Coulomb"


a residue comparison matrix used by the alignment algorithms. The matrix is loaded automatically together with other library files from the icm.cmp file and can be reloaded later (if you need another matrix) using the read comp_matrix command.
The current matrix can be shown. All elements are properly reordered and multiplied by a factor such that the sum of occurrence-weighted diagonal elements (identities) of the matrix is 1.0 and stored in this form. You can increase all the values in the matrix (a useful operation for low sequence identities) with the set comp_matrix command which has similar effect to reduction of the gapOpen parameter.
The set comp_matrix command also allows one to modify weight for specific residue pairs (e.g. set comp_matrix 4. "CC"). Two matrices are recommended: the blosum50 with penalties 2.0/0.15 and the Gonnet matrix (the default) with penalties 2.4/0.15. A number of matrices are provided. You can use your own data file too.
Normalized matrices with diagonal elements equal to 1. Most of the matrices efficient for sequence alignment have different Cii weights. For example, two aligned tryptophanes will get better score than two aligned alanines. The Cij values can also be normalized as follows:
Cij_norm = Cij/Sqrt(Cii*Cjj) 
This normalization is used in the Score () and Rarray () functions calculating conservation values for each position in an alignment.

See also:

  • Index( compare)


a conformation (actually a set of variables determining the conformation) stored in an ICM stack . You can add a conformation to the conformational stack or load a conformation from the stack.

Individual properties, such as energies, number of visits and the total numbers of visits can be re-set with the set stack command.

% icm 
 build string "ala his trp"   
 show stack 
 iconf>       1       2       3       4       5       6       7 
 ener>    -15.1   -14.6   -14.6   -14.2   -13.9   -11.4    -1.7 
 rmsd>      0.3    39.2    48.0    44.1    27.4    56.6    39.3 
 naft>        1       0       0       1       1       1       0 
 nvis>        4       1       1       4       4       4       1 
 print Nof(conf) 
 print Iarray(stack)  # returns {4 1 1 4 4 4 1} 
 t = Table(stack)     # more conf parameters 
 for i=1,Nof(conf) 
   load conf i 
   pause  # hit return 

The stack can also be stored in the object it is associated with. It enables multiple object sessions, each object with its own stack, and ability to save the object with multiple conformations to a file. To store the stack in the object use the store conf a_ command.


abbreviation of "Corey-Pauling-Koltun" who introduced space-filling solid models of atoms. In ICM graphics it means solid representation of van der Waals spheres. Spheres are drawn at van der Waals radii. See also: display

If cpk and xstick are displayed simultaneously the cpk sphere becomes transparent. Undisplay xstick to make the spk solid again.

The spheres sliced by a clipping plane can be displayed in several ways, see GRAPHICS.cpkClipCaps .


Copyright© 1989-2024, Molsoft,LLC - All Rights Reserved. Copyright© 1989-2024, Molsoft,LLC - All Rights Reserved. This document contains proprietary and confidential information of Molsoft, LLC. The content of this document may not be disclosed to third parties, copied or duplicated in any form, in whole or in part, without the prior written permission from Molsoft, LLC.