ICM Manual v.3.8
by Ruben Abagyan,Eugene Raush and Max Totrov
Copyright © 2019, Molsoft LLC
Jun 9 2022

Reference Guide
Command Line User's Guide
  Filter functions
  Gui functions
PrevICM Language Reference

[ ecepp | fasta | grob | Filter functions | Gui functions | Gamess | Hbond | Html ]


a force field used in the ICM program. The latest version is called ECEPP/3 was described in Nemethy et al. (1992). See also the following references: Momany et al. (1975), Nemethy et al. (1983)


program FASTA ( Pearson and Lipman, 1988 ) is used for search sequence databases, evaluate similarity scores and identify sequence similarities on the basis of local sequence similarity. The program is well suited for rapid database searches, because it does not handle insertions/deletions. In ICM, fasta also specifies one of the several allowed formats of sequence data storage and representation.


an abbreviation for a general GRaphics OBject, which contains dots, and/or lines and/or solid surfaces; it can be a geometrical body, a contoured electron density, 3D plot, an arrow, etc. If the graphics object contains triangles, it can be represented by solid surfaces. The order of points in the triangles defines the direction of the normals which in turn defines which of the two sides are lit. Grob-file format is straightforward and editable.
To merge two or several grobs, use the double-slash operator (e.g. g = g1//g2//g3 ) or the write grob append command.

The default file format for grobs is Object File Format, .off the native format of the Wavefront application.

 read grob "icos"             # several example graphics objects 
 read grob "cube"             # are read in ... 
 read grob "oblate" 
 read grob "prolate" 
 gAll = g_cube//g_icos 
 display g_cube red           # ... and displayed 
 display solid g_icos blue 
 display g_oblate green 
 display g_prolate magenta 

Setting property masks Creating grobs from molecular surface.This is done with the make grob skin command. In this command one can also specify the transparency level of the grob, e.g.

make grob skin a_2 a_2 0.6

Comparing grob shapes

One method is to compare the distance histograms. For example, if one has two grobs, g1 and g2 , the code looks like this:

  dh1 = Histogram(Sort(Rarray( Distance( Xyz(g1)))),0.,20.,0.5)[?,2]
  dh2 = Histogram(Sort(Rarray( Distance( Xyz(g2)))),0.,20.,0.5)[?,2]

It goes through the following steps:

  1. computes the distance matrix between all nodes
  2. converts the distance matrix into one array and sorts it
  3. computes a histogram in fixed bins from 0. to 20. A (adjust this as needed), and takes the second column of this matrix (the first contains the distance bin position, the second contains the number of distances in this bin)

Grob functions:

  • Area ( g_solid [ error ] ) (only for triangulated grobs)
  • Color ( g ) &arrow; M_rgb
  • Grob ( g R6_colorRanges )
  • Image ( g_with_texture texture ) ⇒ P_array_of_images
  • Label ( g ) , e.g. gg = Grob("label",{0. 1. 2.},"Okidoki"); Label(gg)
  • Matrix( g wire )
  • Name ( g )
  • Nof( g {1|2|3} ) returns the number of vertexes, lines or triangles
  • Parray( g ) returns an array of grobs for tables
  • Property( g full|surface|texture|grid )
  • Trim ( g R6_xyzXYZ ) quick fix to select points with certain coordinate ranges
  • Volume( g_solid )
  • Xyz ( g [gradient] )

Supported 3D graphical object file formats

  • .gro old limited internal ICM format (obsolete)
  • .obj Wavefront .obj format, see Wiki obj
  • .off Object File Format
  • .dae (digital asset exchange ): the Collada file format.
  • .kmz (.zip) the extended Collada zipped set of files containing additional texture files.
  • .3dxml from Dassault Systemes

Built-in filter functions for arrays, chemicals and table rows

Several ICM commands use functions to filter out table rows or database entries by an expression applied to a column/field value. For example: UNFINISHED

Built-in GUI functions for dynamic and user-defined dialogs in ICM.

To see how these functions are used, open the icm.gui file and search for a function of interest. Most of those functions are just used for internal ICM purposes and we were even hesitant to document or even list those. However some of them, e.g. nIcmObj are quite general and are frequently used.

These functions can be used in different expressions

  • AnimateViewMenu :
  • Apply : generates a so called 'modal' dialog with an Apply button, rather than the default Close button.
  • Atom : indicates if the level of selection (or a right click object for a popup menu) is atomic (see also Res , Mol , Obj )
  • AtomMenu :
  • canRestoreAutosave :
  • Cell :
  • CheckItem :
  • CheckModified :
  • ChemProperties :
  • ChemSearch :
  • ClusterDialog :
  • ConnectDB :
  • connected :
  • DisconnectDB :
  • Docking : yes, if the docking (D) license is present
  • EditLabelGrob :
  • EditMenu :
  • Energy : yes, if the energy (E) license is present
  • FileNew : a dialog
  • FileOpen : a dialog
  • hasLigandRedo : checks if the LIGAND.selection in 3D editor has 'redo' states.
  • hasLigandUndo : same for 'undo' states.
  • hasReceptor :
  • hasSwissID : see also set swiss
  • HelpBrowser :
  • Hidden :
  • Homology :
  • icongf :
  • isAmino :
  • isChemTable :
  • isCurIcm :
  • isDsGBox :
  • isDsMol :
  • isDsObj :
  • isGrobDot :
  • isGrobLabel :
  • isGrobSmooth :
  • isGrobTransparent :
  • isGrobWire :
  • isHet :
  • isHetnRes :
  • isIcmObj :
  • isLigandEdit :
  • isMini :
  • isNucl :
  • isObjFolder :
  • isPharm :
  • isReadOnlyMode :
  • isSeqNucl :
  • LearnDialog :
  • ligandUndo :
  • Mol :
  • molcartCanModify :
  • molcartCanRebuildIndex :
  • molcartconnected :
  • molcartHave3D :
  • MolEdit :
  • mysqldb : see also other molcart functions
  • nAsGraph :
  • nAtomInMol :
  • nBiomtMol :
  • nChemTable :
  • nDots :
  • nDsObj :
  • nDsSelObj :
  • Neighbors :
  • nGrob :
  • nLigAsGraph :
  • nLigAsGraphTerm :
  • nLigFrag :
  • nLines :
  • nMap :
  • nModel :
  • nObj :
  • nResInMol :
  • nSelSeq :
  • nSeq :
  • nStackConf :
  • nTable :
  • nTrianges :
  • nTriangles :
  • nUserObj :
  • Obj :
  • okToConvert :
  • PredictDialog :
  • Preferences :
  • QuickImage :
  • Quit : dialog :
  • Rebel :
  • RecentFilesMenu :
  • RecentPDBsMenu :
  • Res :
  • ResAtom :
  • SaveDir :
  • SaveProject :
  • Sel :
  • Selection :
  • SelectionLevelMenu :
  • SelectionModeMenu :
  • Seq :
  • TableToolsMenu :
  • Terms :
  • Toggle :
  • ToggleButton :
  • Upgrade :
  • Version :
  • Vls :
  • WindowsMenu :


The General Atomic and Molecular Electronic Structure System (GAMESS) is a general ab initio quantum chemistry package.


You need to register on the GAMESS website and submit download request:


Few notes:
* Make sure to specify full path gamess in the dialog. (default: c:/Users/Public/gamess-64/rungms )
* Make sure to edit rungms script and set default version. Find 'SET VERSION' line and set the default according to you setup e.g. 2019.R1.P1.mlk
* It is a good idea to set NCPUS to something higher than 1 to speed up calculations. Search for 'SET NCPUS' 

<> A few comments for those of us who have never been exposed to the quantum chemistry programs:

    * The energies printed by the Gamess program are expressed in so called atomic (Hartree) units. To convert them to kcal/mole units, they need to be multiplied by 627.503 ( Ekc/m = Ea * 627.503 ). The ICM read gamess command converts the energies for you.

    * The energies produced by the Gamess program include the interaction energies of electrons with its own nuclei. Therefore the values of energies could be very large. To get a more useful value of the bonding and conformational energy the individual atomic contributions can be subtracted. These contributions, however, need to calculated consistently with the method and the basis set.

ICM can generate input files for this publically available program and parse its output. See commands:

  • write gamess to generate an input file
  • read gamess to parse the output and extract some parameters or conformations back to ICM

The following approximations in Gamess can currently be interfaced from ICM: h3-- RHF (restricted Hartree-Fock) see wiki Limitations : This method in Gamess will not work for radicals (molecules, ions or atoms with unpaired electrons ).

hbond- hydrogen bonds

There are three ways in which hydrogen bonds are evaluated or displayed in ICM.

  1. Dynamic hbonds evaluated during each energy calculation of the term hb energy term in show energy , minimize or montecarlo commands.
  2. Dynamic hbonds displayed with the display command.
  3. A special distance object of static hbonds made with the make hbond command.

The pairs of hbonded atoms found during methods 1. and 2. are calculated according to ECEPP/3 potential. One can also display hbonds with their distances, deviations from linearity, colored by the strength parameter which takes the angle into account.
Related commands are show hbond, display hbond, color, and undisplay .
See also the following parameters changing the graphics representation of static hbonds:

HTML documents in ICM

ICM can contain any number of html-pages. These pages appear in the shell as strings of the html property . To create an html document follow one of two possible routes:

read html "a.html"  # reads and sets the property mask
s = "<html><h1>TITLE</h1></html>"
set property html s

Internal tagsThe internal html documents can contain links to icm slides , viewpoints , images( both .jpg and .png ) and scripts with icm commands .

The shell objects representing slides, viewpoints, images and scripts can be linked to the html document with the following tags.

<a href="#icm/slide/slideshow.slides/1"> Link text</a>
<a href="#icm/script/scriptShellName"> Link text</a>
<a href="#icm/viewpoint/vpShellName"> Link text</a>
<a href="#icm/image/album/imageName"> Link text</a>

In the graphics editor, these tags are automatically created when images, slides, viewpoints, scripts are dragged and dropped to the Edit Source window.

Input elements

The internal html documents can contain this following input elements :


The general syntax is:

<input type="checkbox" checked={<icmVariableName>|<os><ms>} [oncheck=s_scriptOnCheck] [onuncheck=s_scriptOnUnckeck] []/>
The state of the checkbox is evaluated from the state of ICM shell variable or selection. For molecular objects or meshes 'checked' means that object or mesh is displayed. For logicals and integers - 'yes' or non-zero value.

The default 'oncheck' and 'onuncheck' actions for molecular objects and meshes are display / undisplay commands. Example:

Show Receptor: <input type="checkbox" checked="a_2jav.a" />
Show Ligand: <input type="checkbox" checked="a_2jav.a5z5" />
Show Pocket: <input type="checkbox" checked="g_2jav_a" />
<!--icmscript name="dsSurf"
display wire g_recPocketSurface

<!--icmscript name="undsSurf"
undisplay checked=g_recPocketSurface
Show Ligand Surface: <input type="checkbox" checked="g_recPocketSurface" oncheck="dsSurf" onunckeck="undsSurf" />

Custom Action: <!--icmscript name="onchk"
if (! %1) then
  print %1
  %1 = ! %1
--><!--icmscript name="onunchk"
if ( %1) then
  print %1
  %1 = ! %1
<input type="checkbox" checked="l_info" oncheck="onchk" onuncheck="onunchk" />

See also gui .

drestraint type

Copyright© 1989-2019, Molsoft,LLC - All Rights Reserved. Copyright© 1989-2019, 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.