ICM Manual v.3.6
by Ruben Abagyan Copyright © 2008, Molsoft LLC Sep 1 2010
|
[ add | alias | align | Append command | assign | break | build | call | center | clear | color | Color chemical | Color accessibility | Compare | compress | connect | continue | convert | copy | crypt | Date array | Delete | display | edit | elseif | endfor | endif | endmacro | Enumerate chiral | Enumerate tautomer | Enumerate library | endwhile | exit | find | fix | for | fork | fprintf | Global | goto | group | Gui | help | history | if | info | keep | join tables | Learn | Link group | Link variables | Link ms2ali | list | List binary | List database | list molcart | load | Macro | make | minimize | menu | modify | Modify chem | montecarlo | move | pause | plot | Plot area | print | Print bar | printf | print image | Query molcart | quit | randomize | read | rename | return | rotate | select | Set | show | sort | split | sprintf | store | ssearch | strip | superimpose | Superimpose minimize | Sys | test | then | transform | translate | undisplay | undisplay window | unfix | wait | web | while | write ]
[ Add column | Add matrix | Add slide | Add table ]
A family of commands adding things. Some commands use append syntax instead
It is also used as an option equivalent to append in write command.
add one or several columns or header elements to an existing table |
[ Add column function ]
Adding a single column/header
add column T I|R|S|P|i|r|s [name= s ] [index= i_pos] [mute]
add header T I|R|S|P|i|r|s|M|etc [name= s ] [mute]
(to add a row see add table args )
Adding multiple column/headers
add column T I|R|S|P|i|r|s I|R|S|P|i|r|s .. [name= S] [index= i_pos ] [mute]
add header T I|R|S|P|i|r|s|M|etc I|R|S|P|i|r|s|M|etc .. [name= S] [index= i_pos ] [mute]
this command adds one or several columns to an existing table in the i_pos column
(in other words if you want you column to be in the 2nd position, specify 2 as an argument).
The columns are append to the end of the table by default.
If the table does not exist the command will create a new table.
It an integer, string, or real are specified as an argument instead of a column-array, this
value is multipled to create a column of the appropriate size.
The mute option suppresses the info (equivalent to temporarily setting l_info=no ).
Examples:
add column t {1 2 3} # create a new table
add header t "A new table" name="title" # add a string to the header section
add column t {"a","b","c"} name="AA" # column AA is appended
add column t {"x","y","z"} index = 2
# adding a chemical array
add column t Parray({"CC","CC(O)=O","CCO"} smiles) name = "mol" index = 1
# adding multiple arrays
add column t {1 2 3} {3 2 1} {"a","b","c"} Parray({"CC","CC(O)=O","CCO"} smiles) name={"A","B","C","mol"}
t
#>T t
#>-A-----------B-----------C-----------mol--------
1 3 a "CC"
2 2 b "CC(O)=O"
3 1 c "CCO"
See also: move column
add column T function=s_expression [name=s] [index= i_pos]
Adds a column defined by the s_expression, which may contain operations with
other columns in the same table.
The generating expression information is attached to the column,
which allows to recalculate the values in the column using the same expression.
The following functions are supported:
"Ceil", "DrugLikeness" "Floor", "IupacName" "Log", "Max", "Mean", "Min", "MoldHf" "MolFormula" "MolLogP" "MolLogS"
"MolPSA" "MolSymmetry" "MolVolume" "MolWeight" "Nof_Atoms" "Nof_Chirals" "Nof_HBA" "Nof_HBD"
"Nof_Molecules", "Nof_RotB" "NofSites", "Normalize", "Real", "Rmsd", "Sign", "String", "Sum".
Examples:
add column T Chemical( {"c1(c(nc(N)nc1O)O)N", "c1c[nH]c2C(N=C(N)Nc12)=O"} ) name="mol"
add column T function="MolWeight(mol)" name="MW"
add T # add new row
T.mol[3] = Chemical("CC")
build column T.MW # recalculate mol. weights, setting the value for the new row
add column T2 {1 2 3} {4 5 6}
add column T2 function = "A+B" # sum of two columns
See also: build column
Adding real arrays as matrix rows |
add matrix [ M ] R
adds a matching row R to matrix M . If the matrix does not exist it is created
with the default name (the name is saved in s_out )
Example:
add matrix M {1. 2.} # creates new matrix M
add matrix M {3. 3.} # adds a row
show M
#>M M
1. 2.
3. 3.
add slide to a slideshow. |
add slide [i_posInCurrentSlideshow] [s_slideTitle] [comment = s_slideComment] [ display= "-option|-option" ]
adds a slide to the slideshow table.
This table contains one parray, called slideshow.slides .
If the slide position is not specified the slide will be added to the end.
Alternatively, it will be inserted after the specified i_posInCurrentSlideshow
Normally the slide is saved with window layout, and graphical parameters. Those can be ignored if you add the display="-.." option.
The options can be used either in the on mode, e.g. "-layout", or in the off mode, e.g. "+layout" (all on by default) :
- "-layout" # ignores the window/panel layout
- "-smooth" # ignores smooth view transitions between slides
- "-add" # do not overwrite the previous slide views, just add to it
- "-gf" # ignore graphical representations, inherit them
- "-color" # ignore colors , inherit them
- "-labeloffs" # do not display labels
- "-viewpoint" # ignore viewpoint changes
- "-graphopt" #
- "-mol" # do not display the chem-table window
- "-grob" # do not display grobs
- "-map" # do not display maps
- "-all" # switches off all the above properties
Example:
build string "ala ala ala"
display ribbon a_
display xstick a_/12,13 magenta
add slide "My View" comment = "These two residues are particularly dear to me" display="-layout"
undisplay # hide all
# wait..
display slide "My View" # bring it back
See also: display slide , Slide
Add / insert table rows. Append tables. |
add T_1 [ i_RowNumber ] [ T_2 | row_selection ]
add/insert rows (or another table with the same coloumns)
to table T_1 at the target row position i_RowNumber .
Use 1 (one) if you need to insert the first line.
If the second table or selection is not provided, the command adds an empty row.
The row_selection can contain rows from the same table or from a different table
with a matching column structure.
In the latter case, the columns may be matched by their names regardless of column order.
Default values are inserted for all absent columns.
The defaults for an empty line are empty string or zero value for strings or numbers, respectively.
The target position will then
correspond to the index of the first inserted row.
From version 3.6-1e the add tableName command also returns the current row as i_out .
Examples:
group table t {1 2 3} "a" {"b","d","e"} "b"
show t
#>T t
#>-a-----------b----------
1 b
2 d
3 e
add t 1 # insert empty line before 1st
show t
#>T t
#>-a-----------b----------
0 ""
1 b
2 d
3 e
group table t {1 2 3} "a" {"b","d","e"} "b" # recreate the table
add t 3 t[1] # insert a duplicate of 1st row after the 2nd
show t
#>T t
#>-a-----------b----------
1 b
2 d
1 b
3 e
group table t {1 2 3} "a" {"b","d","e"} "b" # recreate the table
group table tt {1 2 3} "c" {"b","d","e"} "b" {4 5 6} "a" # another table
# order is diffferent, extra column present
add t 3 tt[1:2] # or add t 3 tt.aa<3
show t
#>T t
#>-a-----------b----------
1 b
2 d
4 b
5 d
3 e
alias abbreviation word1 word2 ...
create alias
alias delete abbreviation
delete alias
It is important that the abbreviation is not used in the ICM-shell.
The same names can not be given later to ICM-shell objects.
Alias may contain arguments $0, $1, $2, etc. ICM-shell will pick space-separated words
following the alias name and substitute $1, $2, etc. arguments by the specified argument.
$0 stands for all the arguments after the alias name.
Examples:
alias seq sequence # seq will invoke sequence
alias delete seq # delete alias name seq
alias dsb display a_//ca,c,n # abbreviate several words to
# reduce typing efforts
# aliases with arguments
alias NORM ($1-Mean($1))/Rmsd($1)
show NORM {6,7,8,4,6,5,6,7,5,6} # make sure there is no space
[ Align res numbers | Align sequence | Align fragments | Align 3D | Align 3D heavy ]
align number: renumber residues sequentially |
align number rs_residuesToBeRenumbered i_first|s|I|S [molecule]
align number ms_chainsToBeRenumbered [ i_firstNumber ]
renumber selected residues, or residues in selected molecules or objects sequentially in
all of them from starting one or the specified first number.
May be useful to deal with messy numbering in some pdb-files.
Option molecule will start numbers from 1 or i_first in each molecule.
Chain ids are also allowed, e.g. set number a_/13 "13A".
Multiple residues can be set with integer or string arrays of labels.
If integer array contains the same numbers, e.g. 10,10,10 the labels will get
the insertion characters, e.g. 10,10A,10B .
Examples:
read pdb "1crn"
align number a_1 # renumber all res. 1 to N
align number a_1/10:20 101 # just the selected residues from 101
align number a_1 101 # renumber all res. 101 to 100+N
read pdb "2ins"
align number a_/* 1
align number a_/* 1 molecule # each chain starts from 1
align number ms_chainsToBeRenumbered seq_master [ i_offset ]
renumber the residues of the selected molecule according to seq_master
master sequence which is aligned to the sequence of the selected chain.
The alignment (pairwise or multiple) need to be linked
to the molecule/chain and both the chain sequence and the master sequence
need to be covered by the alignment. The molecular sequence can be generated with
the make sequence [ ms_chainsToBeRenumbered ] command.
This command may be useful in cases in which a structural model does not represent
the entire sequence because of omitted loops, N- and C- termini, while you still want to
keep the numbering according to the full master sequence.
You might want to use the command also on models by homology generated with the
build model command.
Example:
seqmaster = Sequence("ACDEFGHIKLMNPQRST")
build string "--DEFGH-----PQRST" # dashes are skipped
make sequence a_1 name="seqmodel" # sequence is auto-linked
a = Align(seqmodel,seqmaster) # linked alignment
align number a_1 seqmaster
# Info> residues of a_def.m renumbered by sequence 'seqmaster' from alignment 'a'
display residue label
align: ICM multiple alignment algorithm |
align ali_SequenceGroupName [ tree=|filename= s_epsFileName ]
align sequence [selection] | seq1 seq2 .. | seedSequence [ min_seqID (20.)] [ name=s ]
make a multiple alignment of specified sequences.
The sequence group may result from the group sequence s_groupName command.
The input arguments include the following:
- seq1 seq2 ... : explicitly specified
- sequence : all sequences in the shell
- sequence selection : all sequences selected in GUI
- seqGroup : sequences grouped together previously
- seedSequence : sequences in the shell similar to the specified with optional min_seqID (default 20%).
For pairwise alignment use the Align( seq1 seq2 ) function.
The algorithm includes the following steps
(inspired by corridor discussions with Des Higgins, Toby Gibson and Julie Thompson
):
-
align all sequence pairs with the ICM ZEGA algorithm,
and calculate pairwise distances between
each pair of aligned sequence with the Dayhoff formula, e.g. the distance between
two identical sequences will be 0. , while the distance between two 30% different sequences
will be around 0.5. The distance goes to an arbitrary number of 10. for completely
unrelated sequences. The distance matrix Dij can later be extracted from the alignment with
the Distance( ali_ ) function.
-
build an evolutionary tree from Dij with the "neighbor-joining algorithm" of
Saitou, N., Nei, M. (1987)
to determine the order of the alignment and calculate relative weights
of sequences and profiles from the branch lengths.
The tree will be saved in the file defined by the tree= s or filename= s option . Starting from version 3.5-2 the aligTree.eps file is NO LONGER saved by default). The so-called
Newick tree
description
string will be saved in
s_out .
-
traverse the tree from top to bottom, aligning the closest
sequences, sequence and profile or two profiles. After each
Needleman and Wunsch alignment, build the profile.
-
generate the final neighbor-joining evolutionary tree and write the
PostScript file with the tree to disk.
Examples:
read sequences s_icmhome+"zincFing"
list sequences # see them, then ...
group sequence alZnFing # group them, then ...
align alZnFing # align them
align alZnFing filename="znTree.eps" # eps file with a tree
read sequence swiss web "12S1_ARATH"
read sequence swiss web "12S2_ARATH"
group sequence arath
align arath
EST,DNA alignment and assembly |
[ sim4 ]
align new ali_sequenceGroup [ seq_seed ]
multiple alignment of ESTs and genomic DNA and consensus derivation.
This command uses the external the sim4 program to generate pairwise alignments between expressed DNA sequence
and a genomic sequence.
The
program can be downloaded from the
http://globin.cse.psu.edu/globin/html/docs/sim4.html
site.
The procedure has the following steps:
- sequences are sorted by length
- the longest sequence is chosen as the seed sequence unless it is explicitly
provided
- the longest sequence from the remaining set is aligned to the seed sequence
using the external sim4 program.
- the output of this program is parsed and translated into the icm alignment
- the consensus sequence is created and becomes the master sequence
- the procedure is repeated until all the sequences are processed
- the multiple sequence alignment is further cleaned to compress spurious
gaps when possible. This cleaning makes the consensus much more compact.
The result of this command is best displayed with the
show color ali_ command.
|
|
An example:
read sequence "http://www.ncbi.nlm.nih.gov/UniGene/" + \
"download.cgi?ID=5198&ORG=HsLINE=1" #
read sequence "../Hs5198"
group sequence unique u # squeeze out obvious redundancies and form group 'u'
align new u # form multiple alignment and build consensus
show color u
See also:
align two molecules by their backbone topology |
align [ distance ] ms_1 ms_2 [ i_windowSize (15) ] [ r_seqWeight (0.5) ]
|
This command finds the residue alignment (or residue-to-residue correspondence) for
two arbitrary molecules having superposable parts of the backbone conformations.
The structural alignment identification and optimal superposition is primarily
based on the C-alpha-atom coordinates, but the sequence information
can be added with a certain weight (the default value of
r_seqWeight is 0.5 which was found optimal on a benchmark).
The structural alignment algorithm is based on the
ZEGA (zero-end-gap-alignment) dynamic programming procedure in which
substitution scores for each i,j-pair of residues contain two terms:
|
|
- structural similarity in a i_windowSize window between
two fragments surrounding residues i and j, respectively. This
similarity is calculated as local Rmsd of the residue label atoms
(these atoms are C-alpha atoms by default but can be reset to other atoms with the
set label command, e.g. set label a_*.//cb ).
If the option distance is specified the deviation of the interatomic distances between
equivalent pairs of atoms (so called distance rmsd ) is calculated instead
of a more traditional root-mean square deviation between atom coordinates of equivalent atoms.
The latter method is less accurate but an order of magnitude faster.
- sequence similarity (if r_seqWeight > 0.).
Average local sequence alignment score in the i_windowSize
window is calculated for i,j-centered pair of fragments.
In this sense this sequence similarity is different from the one used in pure
sequence alignment (see the
Align function), in which just the i,j
residue pair is evaluated. The default value of r_seqWeight
of 0.5 is rather mild (about a half of the structural signal).
The output:
-
ali_out contains structural alignment (if sequences
linked to the molecules do not exist, they will be created on the fly).
The alignment can be further edited with the interactive alignment
alignment editor.
-
as_out contains the residue selection of the aligned residues in the first molecule
-
as2_out contains the residue selection of the aligned residues in the second molecule
-
M_out , the matrix of local structural/sequence similarity in a window
is retained and can be visualized by:
Example:
read pdb "1ql6"
read pdb "2phk"
align a_1ql6. a_2phk.
make grob color 10.*M_out name="g_mat # x,y,z scales
display g_mat
# or
plot area M_out display grid link
See also:
-
Align( seq_1 seq_2 distance|superimpose ).
This function creates the first unrefined structural alignment as described above.
-
find alignment which refines initial structural
alignment.
The overall result of the align command is equivalent to:
a = Align(... superimpose ) # superposition/RMSD based local str. alignment
a = Align(... distance ) # distance RMSD based local str. alignment
find a superimpose 4.0 0.5
Example:
read pdb "1brl"
read pdb "1nfp"
rm a_*.!A
display a_*.//ca,c,n
color molecule a_*.
align a_2.1 a_1.1
center
show String(as_out) String(as2_out)
color red as_out
color blue as2_out
show ali_out
align heavy command for multiple alternative structural alignments. |
align heavy rs_1 rs_2 [ r_rmsd ] [ i_windowSize [ i_minFragment]] [ r_elongationWeight]
This method, as opposed to the default
align ms_1 ms_2 generates many possible solutions and
does not depend on sequential order of the secondary structure elements.
However, it leads to a combinatorial explosion and is intrinsically less
stable computationally, and generally requires more time.
The command finds the optimal 3D superposition between
two arbitrary molecules/fragments
(two residue selections rs_1 and rs_2 ).
The procedure generates structural fragments of certain initial length and
superimposes all of them to calculate the structural similarity distance.
Then the "islands" of similarity are merged into larger pieces.
This process is controlled by the following arguments:
i_windowSize is the residue length of structural fragments for the initial fragment superposition.
Fragment pairs with the rms deviation less than r_rmsd are then combined,
giving composite solutions of total residue length larger than i_minFragment.
Acceptance or rejection of the composite solutions is governed by the following score
(the smaller, the better)
score = rmsd - (1.37 + Sqrt(1.16 * length - 15.1)), length >= 14
If length > 14 , we use linear extrapolation of the score dependence:
score = rmsd - (1.37 + 1.068*(length-13))
The score is required to be less than r_rmsd. Practically, for longer fragments one
can find much larger RMS deviations according to the length correction of the score.
Defaults:
- r_rmsd = 1. A
- i_windowSize = 15 residues
- i_minFragment = i_windowSize
- r_elongationWeight=0.1
There may be several different reasonable solutions.
All the solutions are sorted, shown and stored in the memory.
The two output selections as_out and as2_out
contain the best scoring solution. Any solution can be
loaded and displayed.
Additionally, a residue alignment is created for each solution.
The decision about which residues are aligned is based on the overall score described above
for the of combined fragments.
See also:
How to optimally superimpose without the residue alignment
Example:
read pdb "4fxc"
read pdb "1ubq"
display a_*.//ca,c,n
color molecule a_*.
align heavy a_1.1 a_2.1 12 1.5 .1
center
load solution 2 # load the second best solution
color red as_out
color blue as2_out
for i=1,10
load solution i
color molecule a_*.
color red as_out
color blue as2_out
pause # rotate and hit 'return'
endfor
Note. Increase i_minFragment parameter (12 in the above example)
to something like 20 if the program hangs for too long. Interrupt execution with the
ICM-interrupt (Ctrl \) if you want only the top solutions.
[ Append sequence | Append stack | Append column ]
There is a family of commands starting with the append keyword.
They are usually used to add sub-elements to a compound object like an alignment or a stack.
In many cases ICM uses add syntax instead of append.
Appending sequences to a sequence group or an alignment |
append ali_seqGroup seq_1 seq_2 .. .
appends sequences to a sequence group. This may be required if you
formed a sequence group for future alignment or filtering/compression
and you want to append additional sequences to it.
Examples:
read sequence group "bunch.seq" name="xx" # group xx is formed
append xx my_seq # appending your sequence to xx
group xx unique # filter out identical ones
align xx
read sequence swiss web "12S1_ARATH"
read sequence swiss web "12S2_ARATH"
group sequence name="arath"
read sequence swiss web "14310_ARATH"
append arath 14310_ARATH
align arath
Appending a molecule or a ligand stack to an existing stack |
append stack s_ligandStackFileName [i_maxConf]
append stack os_ligandObject
this command takes a stack which corresponds to a receptor object and appends each conformation
in the stack with a conformation of the ligand.
If the ligand conformation can be taken from either from a stack file, this command will combine
each conf from the main stack with all conformations from the file. The i_maxConf argument
will set the limit on how many conformations are taken from the ligand stack (i.e.
append stack "lig.cnf" 1 will combine only the first conformation of the ligand )
If the second argument is an ICM object, each conf of the current stack will be extended with
the variables from the ligand. Now the ligand object can be appended to the receptor object
with the move command and the new combined object can use the expanded stack.
build string "ACDEF" # the "ligand" peptide
rename a_ "Lig"
translate a_ {10. 0. 0.} # shift not to overlap with a_Rec.
montecarlo v_//!?vt* # created Lig.cnf stack
build string "RSTVW" # the "receptor" peptide
rename a_ "Rec"
montecarlo v_//!?vt* # created Rec.cnf stack
move a_1. a_2. # ligand must be the 1st argument
append stack "Lig.cnf" 4 # combine up to 4 best ligand confs
minimize stack # minimizes each stack conf
load conf 1 # check them out
append two tables via two columns with matching values |
append t1.A t2.B
Append rows of table t2 to table t1 by rows corresponding to unique column t2.B .
The t1.A column values do not need to be unique.
group table people {"J","C","M"} "p" {"MS","MS","MS"} "orgid"
group table orgs {"MS"} "id" {"Molsoft"} "name"
append people.orgid orgs.id
people
#>T people
#>-p-----------orgid-------name-------
J MS Molsoft
C MS Molsoft
M MS Molsoft
This command is a particular case of a more general join command.
See also the add table command for adding rows from a column with identical column structure (e.g.
add t tt ).
[ Assigns structure | assign sstructure segment ]
assign sstructure: derive secondary structure from a pattern of hydrogen bonds |
assign sstructure rs_ [{ s_SecondaryStructTypeCharacter | s_SSstring }]
Manual assignment of a desired secondary structure annotation to a residue fragment
assign specified secondary structure to the selected residues rs_ , e.g.
read pdb "1crn"
assign sstructure a_/* "_" # make everything look like a coil
cool a_
assign sstructure a_/1:10 "HHHH_EEEEE"
cool a_
|
This command does not change the geometry of the model, it only formally
assigns secondary structure symbols to residues.
Note: to change the conformation of the selected residue fragment,
according to a desired secondary string, use the ICM -object and
the set command applied to both sequences and molecular objects.
|
Automated derivation and assignment of secondary structure from atomic coordinates
assign sstructure rs_
If the secondary structure string is not specified, apply ICM modification of the
DSSP algorithm of automatic secondary structure assignment (Kabsch and Sander, 1983)
based on the observed pattern of hydrogen bonds in a three dimensional structure.
The DSSP algorithm in its original form overassigns the helical regions. For example,
in the structure of T4 lysozyme (PDB code 103l ) DSSP assigns to one helix
the whole region a_/93:112 which actually consists of two helices a_/93:105 and
a_/108:112 forming a sharp angle of 64 degrees. ICM employs a modified algorithm
which patches the above problem of the original DSSP algorithm.
Assigned secondary structure types are the following:
"H" - alpha helix, "G" - 3/10 helix, "I" - pi helix,
"E" - beta strand, "B" - beta-bridge, "_" or "C" - coil.
Examples:
nice "1est" # notice that many loops look like beta-strands
assign sstructure # now the problem is fixed
cool a_
See the
set rs_ s_SecStructPattern
command to actually set new phi, psi angles to a peptide backbone according to the
string of secondary structure.
assign sstructure segment |
assign sstructure segment [ ms_molecules ] # ms_ICMmoleculesPreferable
create simplified description of protein topology (referred to as segment
representation). Segments shorter than segMinLength are ignored.
The current object is the default.
This command will work both on un converted pdb files as well as the pdb files.
However the resulting secondary structure will be BETTER when the structure is converted and
hydrogens are added.
See also
show segment,
ribbonStyle,
display ribbon.
convert
convertObject
is one of the ICM flow control statements.
It permits a loop ( e.g. for or while )
to be broken before calculations have completed.
Examples:
for i = 1, 8
print "Now i = ", i, "and it goes up"
if (i == 4) then
print "... but at i=4 it breaks, Ouch!"
break
endif
endfor
See also
goto .
[ Build atom | Build column | Build sequence | Build model | Build loop | Build smiles | Build string | Build hydrogen | Build molcart ]
The build family of functions allows to create molecular objects
It also
adds implied hydrogens ( build hydrogen ) to a molecule
and to find a loop in a database ( build loop)
build one atom and rebuild hydrogens |
build atom as1 [simple] [s_elementName=("c")] [i_bondType=(1)]
by default it will add a carbon to the selected atom in a non-ICM object
and rebuild hydrogens for the affected atoms.
Use the strip command for ICM objects.
Options and arguments:
- simple does not rebuild hydrogens.
- s_elementName is a string with the name of the chemical element.
- i_bondType is 1 for a single bond (the default), 2 for a double bond and 4 for a triple bond.
Example:
build smiles "CC(C)Cc1ccc(cc1)C(C)C([O-])=O" name="ibuprofen"
strip a_ibuprofen.
build atom a_ibuprofen.m//c1 "n"
build atom a_ibuprofen.m//c1 2
See also:
Recalculating dependent columns |
build column T.col
Rebuilds all values in a dependent column T.col
build column T_ | T_row_selection
Rebuilds all dependent columns in the table T_ or row selection (e.g. T[12], or
T.ID==123 )
If column A depends on column B and column B depends on other columns,
column B will be calculated before column A.
Examples:
add column T {2 5 1} name="B"
add column T function="A + B" name="C"
add column T function="C + B" index=1 name="D"
T.A[1] = 10
build column T[1] # should change values of C and D in the first row
See also: add column function
Building object from sequence file |
build s_IcmSeqFileName [ library= { s_libFile | S_libFiles} ] [ delete ]
reads s_IcmSeqFileName.se
ICM-sequence file and builds an ICM molecular object.
This sequence file is different from a simple sequence file and contains three
(sometimes four) character residue names defined in the
icm.res residue library file (try show residue types to see the list).
Use command build string if you want to build an object from a string with
one letter coded sequences or a named sequence.
E.g. build string "ASDGF" or "ASD;DERR" or "nh2 ala his cooh"
To get a D-amino acid instead of L-ones simply
use D as a prefix: Dala Darg. Specify N- or C-terminal modifiers directly
in the file if needed. The build command will create them in some default
conformation (extended backbone with different molecules oriented around
the origin as a bunch of flowers). Several molecules can be specified in
the ICM sequence file.
Residue names may contain numbers (i.e. 4me ). However, the residue numbers
with a modification character, such as 44a, 44b should contain a
slash before the modification character (i.e. 44/a , 44/b ). An example
in which we create a sequence of residues ala and 4me with numbers 2a and 2b,
respectively: "se 2a ala 2b 4me".
The library option lets to temporarily switch the library file. The same result may
also be achieved by redefining the LIBRARY.res array of the LIBRARY table.
The delete option temporarily sets the l_confirm flag to no
and the old object with the same name gets overwritten.
Examples:
build "def" # def.se file
build s_icmhome + "alpha.se" # alpha.se file
build "wierd" library="mod.res" # get residues from mod.res
#
LIBRARY.res = {"icm","./myres"}
build "s"
Building model by homology |
[ Homology steps | Loop search | The output ]
build model seq_1 seq_2 ... ms_Templates ... [ ali_1 ...] [ margin= { i_maxLoopLength, i_maxNterm, i_maxCterm, i_expandGaps }
build a comparative model (homology model) of the input sequences based on the similarity
to the given molecular objects. The margin arguments:
| name | default | description
|
|---|
| i_maxLoopLength | 999 | longer loops are dropped
| | i_maxNterm | 1 | the maximal length of the N-terminal model sequence which extends beyond the template
| | i_maxCterm | 1 | the maximal length of the C-terminal model sequence which extends beyond the template
| | i_expandGaps | 1 | additional widening of the gaps in the alignment. End gaps are not expanded
|
Possible modes:
- simple one-to-one mode: build model seq_1 [ms_1] [ali_1]
- N sequences - N corresponding molecules:
build model seq_1 seq_2 .. seq_N ms_1,2,..N
This mode requires the minimize tether command to complete the construction.
Examples:
l_autoLink = yes
read pdb "x"
read alignment "sx"
build model ly6 a_
ribbonColorStyle = "alignment" # grey-gaps, magenta-insertions
display ribbon
read pdb "2ins" # multichain
a = Sequence( "GIVEQCCASV CSLYQLENYC N" )
b = Sequence( "VNQHLCGSHL VEALYLVCGE RGFFYTPKA" )
c = a
d = b
build model a b c d a_1.
minimize v_//V "tz" 1000
# or minimize tether
# Now optimize the side chains
selectMinGrad = 1.5
set vrestraint a_/*
montecarlo fast v_/!I/x*
# !It means residues which are not Identical to their template residues
# use refineModel to energetically optimize the model
The algorithm performs the following steps: |
Alignment adjustment: modifies the alignment according to i_expandGaps, and
prepare a sequence with the ends and the long loops truncated according to the
alignment and the { i_maxLoopLength , i_maxNterm , i_maxCterm } parameters.
Building a straight polypeptide from the model sequence: builds a full-atom polypeptide chain for this new sequence. The residues in your model
are numbered according to the template and all the inserted loops residues are indexed
with 'a','b', etc. E.g. the numbering may look like this:
200,201,203,204,204a,204b,204c,205 ...
This numbering allows one to follow more easily the correspondence between the template and
the model. If you do not like this numbering scheme, just use the
align number a_/*
command and the model residues will be renumbered from 1 to the number of residues.
Backbone topology transfer: inherits the backbone conformation from the aligned (but not necessarily identical)
parts of the known template
Identical side-chain building: inherits conformations of sidechains identical to their template in the alignment
Non-identical side-chain placement: assigns the most likely rotamer to the side chains not identical in alignment.
If you want to do more than that apply:
set vrestraint a_/* # assigns the rotamer probabilities
montecarlo fast v_/Cx/x* # x* selects for all chi (xi) angles
You can also manually re-optimize any side chains either interactively
(right-mouse click on a residue atom, then select Shake Amino-Acid Side-Chain)
or from a script, e.g. for residue 14:
set vrestraint a_/* # assigns the rotamer probabilities
montecarlo v_/14/x*
ssearch v_/14/x* # systematic conformational search for the 14-th sidechain
searches the icm.lps which may contain entire PDB-database for suitable loops
with matching loop ends and as close
loop sequence as possible, inserts them into the model and modifies the side-chains according
to the model sequence.
The loop file can be easily customized, updated and rebuilt with the
write model [append] command in a loop over protein structures.
To use your custom loop file, redefine the LIBRARY.lps variable.
Loop refinement and storing alternatives: adjusts the best loops found and keeps a stack of loop alternatives which can later be
tested (see the Homology gui-menu).
The build model command returns the following variables:
LoopTable master table containing list of all the loops, their conformation in alphanumeric code,
a measure of the deviation of the database loop ends and the model attachment sites,
the loop length
and the numerical conformation type (not really important). E.g.
#>T LoopTable
#>-1_Loop------2_Conf------3_Rmsd------4_Nof-------5_Type-----
a_ly6.a/7:10 31R21 0.1 11 1
a_ly6.a/60:63 1RRR32 0.1 8 1
a_ly6.a/43:46 211331RRRR 0.240658 4 1
Individual loop tables
Tables called LOOP1 , LOOP2 , etc. for each inserted loop.
The tables contain the coded conformational string, relative energy,
the position of the offset in the structure database file ( offset )
to be able to extract this loop again,
and the rmsd of the loop ends. Example:
icm/ly6> LOOP1
#>T LOOP1
#>-Conf--------energy------offset------rmsd-------
31R21 0. 3623594 0.092104
31RR2 1.519275 3427772 0.083372
R1121 1.612712 3750108 0.097777
R1R32 1.639177 1529882 0.087113
R1RR2 1.880638 3806768 0.079335
31R32 3.714823 4561270 0.053853
R3RR2 4.531406 4003324 0.042881
Writing and restoring the tethers Objects, alignments and tethers can be written to a single binary project
file (see write binary all )
Trouble shooting build model may crash. A possible reason of the crash is
that the pdb file is not correctly parsed due to formatting errors.
Many pdb files still have formatting errors, especially those which are generated by
other programs or prepared manually. In this case the read pdb command
is trying to interpret the field shifts and, as with any guess work, frequently gets it
wrong.
For example, try 2ins and you will see that the atom or residue names are shifted.
To fix the problem, try to use the exact option of the read pdb command.
Building loop to a model by homology |
build loop rs_fragments
rebuild specified loop based in a PDB-database search
(see build model ).
An example:
read object s_icmhome+"crn"
build loop a_/20:26 # rebuild this loop
Building object from a chemical smiles string |
build smiles s_smiles_string [ name= s_ObjName]
|
create an ICM-object from the smiles -string, respectively.
Set l_readMolArom to no if you do not want to assign aromatic rings from
a pattern of single and double bonds
(and formal charge and bond symmetrization for CO2, SO2, NO2or3, PO3 ) upon building.
To suppress suppress the symmetrization and consequential charging of CO2, set the
l_neutralAcids flag to yes .
|
Examples:
build smiles "CCO" # ethanol
build smiles "Oc(cc1cc2)ccc1cc2N"
build smiles "Oc(cc1cc2)cc(ccc3)c1c3c2"
build smiles "C/C=C\C" # cis-2-butene
build smiles "C/C=C/C" # trans-2-butene
# dicoronene
build smiles "c1c2ccc3ccc4c5c6c(ccc7c6c(c2c35)c2c1c1c3c5c6c"+\
"(c1)ccc1c6c6c(cc1)ccc1ccc(c5c61)cc3c2c7)cc4"
# NAD
build smiles "[O-]P(=O)(OCC1OC(C(O)C1O)N1C=2N=CN=C(N)C=2N=C1)"+\
"OP(=O)([O-])OCC1OC(C(O)C1O)N=1C=CC=C(C=1)C(=O)N"
# Hexabenzo(bc,ef,hi,kl,no,qr)coronene
build smiles "c1c2c3c4c(ccc3)c3c5c(c6c7c(ccc6)c6c8c(ccc6)c6c9"+\
"c(ccc6)c(cc1)c2c1c9c8c7c5c41)ccc3"
# rubrene
build smiles "c1c2c(c3ccccc3)c3c(c(c4ccccc4)c4c(cccc4)c3c3ccccc3)"+\
"c(c2ccc1)c1ccccc1" name="rubrene"
Sometimes the build smiles command is not sufficient. The molecule needs
to be optimized in the mmff force field and several conformations
need to be sampled.
A more rigorous conversion is provided by the convert2Dto3D macro.
See also: Smiles , find molecule.
Building object from string |
build string s_IcmSequence [ name= s_ObjName ] [ delete ]
create an ICM-object from a s_IcmSequence string (see the
build command above).
To get a D-amino acid instead of L-ones simply use D as a prefix: Dala Darg.
Specify N- or C-terminal modifiers directly
in the file if needed.
The build command will create them in some default conformation.
The build string command also understands short one line version
of the full format.
The short format looks like "ASD" or "ala his" and
can not start from "ml " or "se ".
The possibilities are the following:
- one letter code, - it needs to be specified in upper case letters, e.g. "DD";
- full three-four letter code, e.gg. "nter ala hise Dala cooh"
- multiple molecules - just use a comma, a semicolon or a dot as a separator,
e.g. "WWWW;AAAA;EEE" or "ala his trp; nh3+ gly coo-"
Option delete temporarily sets the l_confirm flag to no
and the old object with the same name gets overwritten.
Examples:
build string "ADGHRTE" # the charged terminal groups will be added
build string "ADGH;RTE" # two peptides, a and b
build string "nter ala Dhis cooh" name="pep" # one peptide named a_pep.
build string "ml a \nse nh3+ his coo- \nml b \nse trp" # molecules a and b
build string IcmSequence("GHFDSFSDRT","nter","cooh") # translate and add termini
#
# Using alias BS build string "se $0"
BS ala his trp
See also: Sequence, IcmSequence.
Building hydrogens according to topology and formal charges. |
build hydrogen [ as_heavyAtoms ] [ i_forcedNofHydrogens ] [cartesian]
adds hydrogens to the specified heavy atoms according to their type and
formal charge.
All heavy atoms of the current object are used by default.
If your have hydrogens already and their configuration is wrong, you can
delete them with the
delete hydrogen command.
The number of hydrogens may be enforced if the optional
i_forcedNofHydrogens argument is specified.
Option cartesian means that no new hydrogens are added, but, rather, the existing ones
are set to new coordinates according to the heavy atoms (a better syntax for this action is
set hydrogen ).
See also the set bond type command, set hydrogen .
Examples:
read mol s_icmhome+ "ex_mol" # several small molecules
display a_4.
build hydrogen a_4. # added and displayed
#
undisplay
display a_3.
build hydrogen a_3.
# move one of the nydrogens
build hydrogen a_3. cartesian # should put the hydrogen back at a correct position
Building molcart indices for substructure, similarity or exact search |
build molcart {s_tableName|S_tableNames} [sstructure|similarity|exact]
builds (or rebuilds) various keys for molcart table.
call s_ScriptFileName [ only ]
invokes and executes an ICM-script file. End the script with the
quit command, unless you want to continue to work interactively, or
use it in other script.
The option only allows to suppress opening the script file
if the call command is inside a block which is not executed.
By default the script file is opened and loaded into the ICM history
stack anyway, but the commands from the file are not executed.
The absolute path of the script can be obtained by calling the Path ( last )
function.
Example:
call _startup # execute commands from _startup file
show Path( last )
Example of calling scripts inside conditional expressions.
if Type( CONSENSUS ) != "table" then
call _startup only # only means do not read if the table is already loaded
endif
center [ { as_ | grob } ] [ only ] [ static ] [ margin= r_margin ]
centers and zooms the screen on selected atoms as_ or graphics objects.
Default objects: all existing atoms and graphics objects.
The r_margin argument is
given in Angstrom units and can be used to set a relative size of the selection and the frame.
Normally all dimensions of the molecule/grob are taken into account, so that the molecule
can be rotated without changing scale.
Options:
- only : do not rescale, translate only, i.e. move the selected atoms to the center of the graphics window
- static : scale only according to the visible X-Y dimensions and the margin.
Do not take the Z-dimension into account in the size calculation as if you
do not intend to rotate objects.
That implies an assumption that the orientation of molecules/grobs/maps will not be changed.
Examples:
nice "1est"
center
center Sphere ( a_/15:18 )
center a_/1:2 only # keep the scale
read grob s_icmhome+"beethoven" # a genius
display beethoven smooth
center beethoven static # 10 A margin
[ clear-error ]
clear
clear terminal screen
clear selection
clear the graphical selection as_graph
Example:
nice "1crn"
as_graph = a_/1:5 # select five residues
clear selection # nothing again
clear pattern chemarray
clear SMARTS search attributes in the input chemical array.
Example:
add column t Chemical("[C;D2]")
clear pattern t.mol # D2 attribute will be cleared
See also: Exist pattern
clear graphic [ os_ ]
clears display properties , graphic representation memory and reset the graphic planes to the default.
clear error
clears all error and warning bits previously set by ICM. See also Error ( i_code )
[ Color specification | Color object ]
The color command colors different shell objects, their parts,
or different graphical representations with by colors specified in various ways.
The main color commands are listed below:
- : color all|{wire|xstick|cpk|surface|skin|[residue|atom|variable|string] label|ribbon [base]} [full]
- : color {molecule|object|alignment | R_values [window=] } [full] [all]
- : color background|volume # volume for the depthcuing fog color
- : color chemical { | pharmacophore }
- : color site index=
- : color distance|hbond|angle|torsion
- : color accessibility ([0:1]) # occlusion coloring
- : color [add|pseudo] GROB.atomColorRadius=
- : color map []
- : color |grob potential [ fast ] [ reverse | simple ] [] # electrostatic coloring
- : color [ ] [ ] [ auto ]
Options:
- full : allows to set colors for atoms that are not displayed in addition to the displayed ones.
The default only changes colors of the atoms visible in a given representation. (this option has been added in
versions compiled after Sep 15, 2009). This option replaces the set color command for batch coloring.
- all : colors all graphical representations (by default it colors only the specified ones)
See also set color to set atom or residue color directly and without graphics.
There are various ways to specify a color in ICM: by name, index or RGB representation.
color_name | color[i_index] | i_Color | r_Color | rgb=rgb_color
Specifying color by name:
color red
Other color name examples: black, white, grey, blue, red, yellow, green,
orange, magenta, lightblue.
Color names may be observed and changed in the icm.clr file.
Requesting contrasting colors by index:
color color[4]
This call uses color number 4 from the list of "named"
colors (first section of the icm.clr
file). Colors with their numbers can be listed by the
show color
command and their total number is accessible via the
Nof( color)
function. This mode is useful if you need to color selected
elements with contrasting colors rather than with a smooth spectrum.
Example:
read pdb "1crn"
display ribbon a_1crn.
show colors
color a_/1:5/* color[89]
for i=1,Nof(a_/*)
color a_/$i color[i] # speckled coloring
endfor
Specifying color by index:
color 3
Color indices are taken from the "rainbow" section of the
icm.clr file. Currently there are 128 colors (i=0,127) in this section and
they form a smooth transition from blue to red via white (not really a rainbow). You may
change the "rainbow" colors in the icm.clr file. Number 128 becomes blue again.
Using integer color indices is convenient for automatic coloring within ICM loops.
Example:
display "Colors"
for i=1,255
color background i
print i
endfor
See also color background example .
Specifying colors interpolated between indexed colors:
color 4.5
The color 4.5 will be the average between the "rainbow color" 4 and "rainbow color" 5.
Specifying colors by their RGB representation
Color is defined as a combination of red, green and blue components.
The triple may be specified in different formats:
rgb = R_3rgb
- as an array of 3 reals in 0..1 range
rgb = I_3rgb
- as an array of 3 integers in 0..255 range
rgb = s_#rrggbb
- as a string where each component is defined by two characters in hexadecimal form.
Optionally prefixed with a hash symbol ("#").
Examples setting magenta color (mixture of red and blue):
color rgb={255,0,255}
color rgb={1.,0.,1.}
color rgb="#ff00ff"
color rgb="ff00ff"
In case the requested RGB color is not available for the graphics system,
ICM finds the closest color.
Coloring molecular objects |
The main color command:
color [ as_ ] graphic_representation [ color_spec ]
color [ as_ ] graphic_representation [ I_colors | R_colors ] [window = R_2MinMax]
graphic_representation, when specified, must be one of the following
wire | hbond | cpk | ball | stick | xstick | surface | skin | site | ribbon [base]
This command colors selected atoms ( as_ ) or graphics object(s) according
to the specified color.
It is possible to either specify a single color color_spec,
or provide an array ( rarray or iarray ) of colors to color each element of the selection
according to a certain property, as electric charge or Bfactor.
The scale is determined by the minimal and the maximal elements of the array,
independently of the array length.
First the numbers in the array are scaled so that its minimum corresponds to the
first color in the "rainbow" section and its maximum to the last color. Then the scaled
numbers are applied sequentially to the elements of the selection.
If the number of elements
in the array is shorter than the number of elements in the selection, the array is applied
periodically.
If the color array is longer than the selection, the excessive numbers are not used
for coloring but (attention!) they will be used for scaling.
The window={ minValue, maxValue } option allows to provide a range for color mapping.
It will be used instead of the array minimum-maximum value range as the range from which
the color array elements will be mapped into
the rainbow colors. Moreover, values in the color array will be clamped to be in
the window range.
In the following example the Bfactor(a_/ simple) values which
may range from large negative values to large values will be clamped to the [4.,40.] range.
nice "1ekg"
color ribbon a_/ Bfactor(a_/ simple) window=4.//40.
Another example:
read object s_icmhome+"crn"
display a_crn.
color a_//* Charge(a_//*) window={-1.,1.}
It is also possible to show a color bar in the graphics window by changing
the GRAPHICS.rainbowBarStyle property.
Each of the command arguments has a default:
- objects as_: the current object ( a_ ) only. Hint: to color all objects, use a_* .
- graphic_representation: all except ribbon. Ribbons should be colored explicitly
using a color ribbon command.
- color_spec. The default coloring is by atom type, except for the
ribbon representation which is colored by secondary structure by default.
All default values can be changed by editing the icm.clr file.
In DNA and RNA ribbons, bases can be colored
separately (e.g. color ribbon base a_1/* white ),
the default coloring being A-red, C-cyan, G-blue, T or U-gold.
Examples of how the defaults work:
nice "1crn"
display # also displays wire
color # all except ribbon colored by atom type
color ribbon # only ribbon of a_ by secondary structure type
color ribbon red # only ribbon as specified
color a_/1:10 ribbon yellow # parts
More examples:
build string "ASDWER" # hexapeptide
display
color a_/1:4 green # the first four residues in green
color # return to default colors by atom type
read pdb "1crn"
display a_1crn. only
# color atoms according to their B-factor
color a_1crn.//* Bfactor(a_1crn.//*)
# crambin's ribbon
# from blue N-term to red C-term gradually
display a_/* ribbon only
color a_/* Rarray(Count(1 Nof(a_/* ))) ribbon
# another crambin's ribbon
# from blue N-term to red C-term gradually
# thick worm representation
assign sstructure a_/* "_"
GRAPHICS.wormRadius= 0.9
display a_/* ribbon only
color a_/* Count(1 Nof(a_/* )) ribbon
Coloring 2D molecules in a chemical table |
color chemical X_chemarray P_model
calculates atom contributions to the total value calculated by the
P_model if this model is
- linear. (PLS)
- built using counted fingerprints (no external column-descriptors)
color chemical X_chemarray pharmacophore
color by built-in pharmacophoric definitions
The list of definitions can be listed like this:
icm/def> show pharmacophore type
name codesmarts color
-------------------------------------------------------
Negative [Qn]C(~[O;D1])~[O;D1] #87cefa
Negative [Qn]P(~[O;D1])(~[O;D1])(~[O;D1])~*#87cefa
Negative [Qn]S(~[O;D1])(~[O;D1])(~*)~* #87cefa
Positive [Qp][N;D3;$(N(-[*;^3])(-[*;^3])-[*;^3])]#fa8072
Positive [Qp][N;D2;$(N(-[*;^3])-[*;^3])] #fa8072
Positive [Qp][N;D1;$(N-[*;^3])] #fa8072
Positive [Qp]C(~[N;D1])~[N;D1] #fa8072
HBA [Qa][O,S&v2,N&^2&X2,N&^1&X1,N&^3&X3]#98fb98
HBD [Qd][!C;!H0] #ee82ee
Aromatic [Qm]a #ffa500
Hydrophobic [Qh][C&!$(C=O)&!$(C#N),S&^3,#17,#15,#35,#53]#e0ffff
How to color grob surface by depth |
[ Color molecule | color background | color by alignment | color grob | color label | color map | color volume ]
color accessibility g_mesh [ r_maxShade ]
modify the color of each surface element of a grob to create perception of depth.
The procedure calculates for each surface element (triangle) the extent it is occluded from ambient light by other parts of the molecule, and makes the elements darker proportionally to occlusion. Thus, concave regions such as pockets become dark since the surrounding bulk of the protein blocks the light from most directions, while protrusions remain bright since they are well exposed.
Repeated application of the
command or using a larger r_maxShade (the default is 0.8) generates a more dramatic
shading of the shape.
Example:
color accessibility g_electro 0.7
color accessibility g_electro 0.7 # applying it two times may help to create a more dramatic effect
To be able to come back to the initial coloring you may need to do this:
clrs = Color(g_electro)
# change grob color, e.g. with color accessibility
color grob clrs
Uniquely coloring by object, molecule, residue or atom |
color graphic_representation [ as_molecules ] [object|molecule|residue|atom]
a special command to color the displayed and selected
molecules differently. The graphic representation field can be either empty, or one of those:
wire xstick cpk surface skin ribbon, residue label, atom label, site label, variable label .
E.g. select graphically some atoms and do this:
color xstick as_graph & a_*.//c* molecule
color ribbon as_graph object
color cpk as_graph molecule
color residue label as_graph residue
color background color_spec
sets the background to the specified color color_spec in
one of the supported formats .
Examples:
color background blue
color background lightyellow
color background rgb={255,255,255} # white. integers in 0..255 range
color background rgb={0.,1.,0.} # green. reals in 0.. range
See also: rgb, color background example .
color as_ [wire|cpk|skin|ribbon|xstick|ball|stick|surface..] alignment
colors specified graphics representations of the selected residues by
the colors of an alignment as you see it in the alignment window of
the Graphics User Interface. The color of a residue is controlled by the following
factors:
- residue type
- consensus character at the residue position in the alignment
- colors as provided by the CONSENSUSCOLOR table.
Note that the CONSENSUSCOLOR table can be divided into sub-sections, and
the active subsection can be selected from GUI.
Example:
read sequence s_icmhome+"sh3"
nice "1fyn"
make sequence a_1 # extract 1st sequence
group sequence sh3
align sh3
color a_1 ribbon alignment
display skin white a_1 molecule
color a_1 alignment # colors all representations including skin
[ Color grob unique | Color grob matrix | Color grob by atom selection | Color grob map | Color grob potential ]
Color is a powerful mechanism of showing extra information on ICM grobs
ICM grobs may have individual colors assigned to each vertex, which allows to use grob
coloring to illustrate properties of 3D surfaces.
The simplest way to set grob color is to paint it to a single color.
color g_grobName color_spec
colors the whole g_grobName grob to the color_spec color.
color grob color_spec
colors all grobs to color_spec.
Check out the color specification section for available color_spec options.
Example:
torus = Grob("TORUS",3.,1.)
display torus
color torus black # paint it black
color background white # this should improve the visibility
color torus rgb={127,255,212} # aquamarine, as some people call it
Automatic assignment of different colors to different grobs |
color grob unique
In addition to the main color command which colors grobs
there is a special command to automatically assign the displayed
grobs to different colors.
See example for the split grob command.
Coloring grob by matrix of RGB values for each vertex. |
color g_grob M_rgbMatrix
allows to set individual colors to grob vertexes.
Colors are specified in RGB format in the M_rgbMatrix.Each row of the matrix is an RGB triple.
This type of matrix may be obtained by the Color( g_grob ) function.
Examples:
torus = Grob("TORUS",3.5,0.5)
display torus smooth
n = Nof(torus)
R_rgb = Count(1 n/2)/Real(n/2) // Count(n-n/2 1)/Real(n-n/2)
add matrix M_rgb R_rgb
add matrix M_rgb Rarray(n,0.3)
add matrix M_rgb Rarray(n,0.7)
color torus Transpose(M_rgb)
This command allows to create special effects,
like gradual disappearance of a grob into background:
# set the scene
color background black
# uncomment these lines to get a more sophisticated example
# torus = Grob("TORUS",3.5,0.5)
# display torus smooth
# color torus blue
# the active grob
g = Grob("SPHERE",3.,5) # a wire sphere
display g smooth
color g Random(Nof(g),3, 0., 1.) # color randomly
M_colors = Color(g) # extract current colors
# make the sphere disappear (modern poetry)
for i=1,20 # shineStyle = "color" makes it disappear completely
color g (1.-i/20.)*M_colors
endfor
for i=20,1,-1 # bring the sphere back
color g (1.-i/20.)*M_colors
endfor
Coloring grob by proximity to atoms |
color g_grobName as_closeAtoms color_spec [add|pseudo]
colors vertices of the grob which are less than GROB.atomSphereRadius to
any of the selected atoms. The default value for the radius is 4Å.
Options:
- add : adds van der Waals radius for each atom to the GROB.atomSphereRadius parameter
- pseudo : for hydrogen bonding acceptors considers distances from LONE-PAIR centers at 1.7A distance from the acceptor atoms. If an atom is not an acceptor, the atom itself is considered. Note that a_//HA
is a selection for hydrogen bonding acceptors and a_//HD is the donor selection.
Example in which we color 1.3 radius sphere around the lone pairs of hydrogen bonding acceptors:
color a_REC.//HA g_pocket magenta pseudo GROB.atomSphereRadius=1.3
See color specification for the definition of color_spec.
See also: Grob( g R_6) function to return a patch of certain color.
Example:
nice "1crn"
make grob skin a_1crn. name="g_1crn"
display g_1crn
color g_1crn green
color g_1crn a_1crn.//1:60 red # color a patch by atom proximity
See also: make grob skin, make grob potential .
Coloring surfaces by 3D scalar field |
color g_grob map map_Name I_transferFunction R_2mapValueBounds [ color_spec ]
colors vertices of the g_grob by the values of the map_Name .
The map values at each grid point are first clamped into the R_2mapValueBounds range,
then this range is divided according to the number of elements in the transfer function
and each point is colored according to the value of the transfer function.
The optional color_spec parameter is explained in the color specification section.
The new color will be mixed with the current color of grob points.
Therefore if you want to color each of 3 RGB channels with a different
normalized property value, first color the grob black, and then color with
the red , green , or blue color depending on which channel you intend to
use. Note that zero in the transfer function correspond to no color .
Corresponding grob nodes will not be colored.
Transfer function is the same to the one in color map but has certain differences.
This function (e.g. {0 0 0 1 2 3} ) contains any number of positive integers.
0 means "do not color", and each positive value is a scaling factor
for the color provided as an argument, or a parameter to select
a color from a predefined rainbow. In the above example,
the R_2mapValueBounds range will be divided into 6 ranges and each value
range will be colored accordingly.
Example in which we color the vertices of a grob by inverted values of truncated hydrophobic potential:
read obj s_icmhome+"data/xpdb/1sre.ob"
display a_
make grob skin a_2 a_2 name="g_pocket" # create g_pocket
make map potential "gs" Sphere( g_pocket a_1)
compress g_pocket 1.
color g_pocket black
color g_pocket map -m_gs { 0,0,0,3,4,5 } { 0. 0.5 } green
display g_pocket
h = Transpose( Color( g_pocket ) )[2] # extract hydrophobicity
Coloring grob by electrostatic potential |
color g|grob potential [ fast ] [ reverse | simple ] [ms_sourceAtoms]
(REBEL feature) calculates electrostatic potential waterRadius
away from the surface of the g_skin graphics object and color surface elements
according to this potential from red to blue.
Important the location of the center of the water probe is
determined by the grob normal ( you can change it with the set g_ reverse command).
If you compute the potential at a blob outside the molecule but with the normals
point outwards, use the reverse option. To compute potential without any positional correction
including normals use the simple option.
The potential is calculated either by the REBEL
boundary element solution of the Poisson equation, or, if option fast
is specified, by a simple Coulomb formula with the dielConstExtern
dielectric constant (78.5 by default).
|
|
The local value of potential is clamped to the range
[ -maxColorPotential, +maxColorPotential ].
It means that a potential larger than maxColorPotential is represented by
the same blue color, while values smaller than maxColorPotential are
represented by the same red color.
The real range is reported by the command and you can adjust
maxColorPotential to cover the whole range.
To suppress the absolute maxColorPotential threshold and use auto-scaling
instead set maxColorPotential to 0.
The color bar with values will appear according to the
GRAPHICS.rainbowBarStyle preference.
There are two macros to generate potential-colored skins:
rebel and rebelAllAtom
The second one (given below) considers all the atoms (including hydrogens)
with their charges.
The mean value of the potential at the surface is returned in r_out ,
and the root mean square deviation of the potential is return in r_2out
shell variables, respectively. The averaging is free from bias due to
uneven density of grob points. It uses equal size cubes distributed
evenly over the surface. The number of representative cubes used for
the calculation is return in i_out .
Examples:
read object s_icmhome + "crn"
display a_1
make grob skin a_1 name="g_crn"
make boundary a_1
display g_crn
color g_crn potential
See also:
electroMethod,
make boundary,
delete boundary,
show energy "el",
Potential( ).
color label [ as_ ] color_spec
color label as_ [ I_colors | R_colors ]
Colors labels associated with the selected residues or atoms.
A simple option is to specify a single color using color specification formats.
It is also possible to provide colors for each atom using
an iarray I_colors or rarray R_colorsIf no atom selection is specified, all labels are colored.
Examples:
read object s_icmhome + "crn"
display a_//n,ca,c white
display label residue
color label a_/* Count(1 Nof(a_/*))
#
color label a_/5:10 magenta
read object s_icmhome + "crn"
display a_//n,ca,c white
display label residue
color label lightyellow
See also:
display label, color object, resLabelStyle .
color map_Name [ I_colorTransferFunction ] [ R2_fromTo ] [ auto ]
color the current or the specified map according to the color transfer
function supplied as I_colorTransferFunction.
The default:
By default the maps are colored in such a way that points with zero map values become
transparent while values above and below zero are colored by shades of blue or red,
respectively.
The R2_fromTo array of two elements allows to set the lower and the upper boundaries
for the red and blue colors, respectively. All values above and below will be trimmed to the
range. For electrostatic maps the array is set to -5.,5. by default.
In the auto mode all grid points are divided to Nof( I_colorTransferFunction ) color classes according
to the normalized function value (sigma units around the mean value) and each class
is colored as specified in the I_colorTransferFunction (0 means transparent).
If the number of I_colorTransferFunction elements is odd (2* n+1 ) the class boundaries are
the following:
- -infinity
- Mean- n *sigma,
- Mean-( n -1)*sigma,
- Mean-( n -2)*sigma,
- ...
- Mean- 1*sigma,
- Mean
- Mean+ 1*sigma,
- ...
- Mean+( n -1)*sigma,
- Mean+( n )*sigma.
- +infinity
For even number of elements (2* n ), boundaries are shifted by half a sigma, so that the
middle class is between Mean-0.5*sigma and Mean+0.5*sigma.
Color codes are in arbitrary units since the array is normalized so that
the highest value corresponds to the red color. Deep blue is 1.
Zero is always the transparent color (no coloring).
The spectrum is defined in the icm.clr file. Examples of coloring:
- {0 0 0 0 0,0 0 0 3 10} default map coloring, color only high densities
(blue from 3 to 4 Sigma, red >4 Sigma).
Comma only shows you where the mean is.
- {0 1 0} color only Mean+- 0.5*sigma nodes, ignore high and low densities.
- {1 0 2} color low and high densities by different colors, ignore densities around the mean.
- {1 2 3 0 5 6 7} similar the previous one, but with more grades
Examples:
read pdb "1crn"
make map potential name="mpot"
color mpot {1 2 0 4 5}
# OR
color mpot
color volume color_spec
determines the color of the fog in the depth-cueing mode ( activated with Ctrl-D ).
Format of color_spec is explained here.
For example, if you want that distant parts of you structure are
darker (black fog), but the background is sky-blue, you will
do the following:
color background lightblue
color volume black
compare: setting conformation comparison parameters for the montecarlo command |
[ Compare atom | Compare variables | Compare surface ]
compare vs_ | as_ [ static | chemical | surface ] | [ compareMethod=.. ]
sets a metric for calculating a distance between different conformations in a stack .
The goal of the two following compare commands is to provide a desired
setting before the montecarlo command and stack operations.
This command defines a filter which is used to decide how many and what conformations
from the stochastic optimization trajectory are kept as low energy representatives of
a certain area in conformational space.
This metric is also used for the subsequent stack manipulations,
e.g. compress stack.
The compare command defines the distance measure between molecular conformations
which is used to form a set of different low energy conformers
in the course of the stochastic global optimization procedure.
The defined distance is compared with the vicinity
parameter and determines whether two conformations should be considered
different or similar (i.e. belonging to the same slot in the
conformational stack).
The compare command determines the spectrum of conformations that
will be retained in the stack, accumulated during a montecarlo procedure.
The default comparison set is a set of all free torsion variables
(see compare vs_ ).
Other methods compare atom RMSD with and without superposition,
using chemical superposition, and
compare only the atoms in the interface with a molecule ( compare surface ).
Please note that the compare command can change the compareMethod preference.
Example:
montecarlo v_//2 compareMethod ="chemical static" # suitable for docking
See also montecarlo, compareMethod.
Compare by deviations of cartesian coordinates with or without superposition |
compare [ static ] as_
The command needs to be run when Cartesian root-mean-square deviation for positions of
selected atoms ( as_ ) as a distance measure between
stack conformations.
Set the vicinity parameter to about 2.0 Angstrom if you want to
consider conformations deviating by more than 2 A as different conformational families.
By default the selected atoms in different conformations
will be optimally superimposed before the coordinate RMSD is calculated.
The static option suppresses superposition and measures
absolute deviation of the coordinates between conformations.
The static option is relevant for ligand atoms in docking simulations
to a static receptor.
The result of this procedure is that an internal flag is set
to perform cartesian RMSD calculations during montecarlo run,
and a set of selected atoms is marked for comparison.
Compare by deviations of internal coordinates/torsions. |
compare vs_
use angular root-mean-square deviation for selected internal variables
(usually torsion angles) as distance (set
vicinity to at least 30.0 degrees accordingly)
Examples:
compare v_//phi,psi # compare ONLY the backbone angles
vicinity=30.0 # consider two conformations
# with phi-psi RMSD < 30. as similar
compare a_2//ca static # compare Cartesian deviations
# of the second molecule's alpha-carbon atoms
# without prior optimal superposition
vicinity=3.0 # consider two conformations with second
# molecule deviation < 3 A as similar
Compare by coordinate deviations of the surface patches only |
Compare by surface patch rmsd: dynamically selecting comparison atoms
compare surface as_currentObjSelection | as_staticReferenceObject.
Similarly to compare static as_ it will look at absolute deviations
of coordinates, but the comparison will be applied dynamically
only to a patch sub-selection of the atoms in the current object in the
selectSphereRadius (default 5. A) proximity to the non-current-object atoms
of the as_ selection.
The selection typically would look like this:
a_activeIcmObject.//ca | a_staticPdbReceptorObject.//ca
Example:
compare a_runObj.//ca | a_recName.//ca surface
Note that this command dynamically calculates a subset of as_currentObjSelection near
as_staticReferenceObject . This distance (static RMSD) is used inside montecarlo command
or in compress stack .
The surface mode is useful for protein-protein docking simulations when you want to measure
the sRmsd distance between the current conformation and the stack conformations
ONLY for the interface residues of the moving molecule. The interface residues
are dynamically determined as those which are close to the static receptor specified
in the second part of the selection. This static receptor should reside in a separate
object.
The vicinity size is determined by the selectSphereRadius parameter
An example in which we sRmsd-compare only those carbons of barstar
which are next to the barnase surface.
read pdb "1bgs" # a complex
read pdb "1a19.a/" # the protein ligand only
convert
... # make maps and other actions to prepare protein-protein docking
compare a_//c* | a_1.1 surface # will use only
selectSphereRadius = 7.
...
montecarlo
[ Compress grob | Compress stack | Compress binary ]
compress grobs or stacks
compress graphical objects |
compress g_grobName1 g_grobName2 .. [ r_minimalEdgeLength=.5 ]
compress grob [ selection ] [ r_minimalEdgeLength=.5 ]
simplify a grob (graphical object) by eliminating/merging small triangles into bigger ones.
This procedure allows to generate very "low-resolution" molecular surfaces.
The default value of the r_minimalEdgeLength is 0.5 Angstroms.
Typically compression with the 1. A minimal edge parameter reduces the
number of triangles by an order of magnitude.
The compression algorithm does not change the connectivity of the
surface. Therefore you can still split the compressed grob and
find the fully enclosed cavities.
The compress command returns the new number of verteces in i_out and the new number
of triangles in r_out variables, respectively (for the last compressed grob only).
Example:
read pdb "1crn"
make grob skin smooth name="g_1crn" # creates a grob with many triangles
display g_1crn
compress g_1crn 1. # significantly reduces the number of triangles in the grob
display g_1crn
compress g_1crn 4. # further simplification of the grob
display g_1crn
It is important in this example to use the make grob skin command with the smooth option,
since it closes the cusps.
compress stack of molecular conformations |
compress stack [ fast ] [ i_fromConfNumber i_toConfNumber ] [r_enerDiff]
Remove similar and/or high energy conformations from the conformational stack.
During a montecarlo run, some conformations of the generated conformational stack
may be substituted by newly calculated ones with lower energies.
New conformations may violate the initially correct distribution of
the conformations in the slots of the stack as defined by the vicinity
parameter and by comparison mode specified by the compare command.
The compress command compares all the pairs of the stack conformations,
identifies pairs of conformations in which two conformations
are separated by a distance less than the vicinity threshold,
and removes the higher energy stack conformation from each close pair.
Optional arguments i_fromConfNumber and i_toConfNumber
define a subset of the conformations in the stack which are to be
analyzed and compressed (if any). The whole stack (from the first to
the last conformations) is processed by default.
Note that if two close conformations are compressed into the better energy one,
the number of visits of the resulting conformation will be a sum of the two
numbers of visits.
The fast option applies an iterative compression algorithm which can be several
orders of magnitude faster but the result may slightly differ form the default
compress. The fast algorithm algorithm performs the following steps:
- sort conformations by energy
- start from the lowest energy conformation
- find all conformations with higher energy than the current conformation within vicinity .
- delete similar conformations with higher energies and compress stack
- move to the next conformation in the new sorted stack, make it current and go back to step 3
See also
How to merge and compress several conformational stacks
Example (define a distance and compress) we generate two stacks,
merge them and re-compress two sets with a different comparison criterion:
build string "VTLFVALY"
mncallsMC = 5000
montecarlo # generates stack
write stack "f1"
delete stack # clean up and
montecarlo # generates another stack
read stack append "f1" #
compare v_/2:5/phi,psi # compare settings are different
vicinity = 40. #
compress stack fast
vicinity = 20. # new vicinity
compress stack
compress stack 2.0 # remove confs > 2 kcal/mole higher than the lowest one
compress binary s_inputfile [ filename=s_gzipfile | delete ]
Compresses the s_inputfile file using GZIP algorithm.
If the filename is specified, the compressed file will be saved as s_gzipfile.If the delete option is specifeid, the compressed file replaces the input file (in place compression).
Otherwise (by default) .gz extension is added to produce the compressed file name.
Example:
read pdb "1crn"; make map potential name="x"; write map x # create x.map file
compress binary "x.map" delete # compress in place
[ Connect molcart ]
connect [ append ] [ none ] [ ms_molecule | g_grob ]
connect none
connects selected molecules to the mouse for independent rotation
(by the LeftMouseButton) and translation (MiddleMouseButton) with respect to
the original coordinate frame.
|
|
Option append will add selected molecule to the previously connected molecules
Note, that rotations/translations in the connect mode
actually change the atomic coordinates of the selected molecules and keep
the coordinate system unchanged in your graphics window.
To restore the usual global mode (i.e. all objects/molecules are disconnected and
the mouse does not change their absolute positions, but rather the point of view),
hit the Esc key when the cursor is in the graphics window.
To restore the global mode temporarily press the Shift button.
Use: connect none to switch back to the global connection
Examples:
read pdb "1eff"
copy a_1eff. # create something else in the scene
display ribbon a_*.
connect a_1eff.
# move it around now
connect none # disconnect
Connect to a Mysql database or database file |
connect molcart {S_host_user_pass_db|s_host s_user s_pass s_db} [name=s_connectionID]
Connects to the database server specified by the command parameters. It is possible to also specify the s_connectionID which will be assigned to the connection.
Parameters returned by the Name(sql connect) may be used in this command.
connect molcart on
Reconnects to the current Molcart.
connect molcart refresh
Reconnects to Molcart using settings stored in user's preferences.
connect molcart filename=s_file [s_db] [name=s_connectionID]
Opens a Molsoft database file. Database name s_db and the s_connectionID may be specified.
connect molcart s_connectionID off
Disconnects specified Molcart connection. See molcart connection options for explanation
connect molcart local off
Closes all open database files.
See also: molcart, molcart connection options, list molcart, set molcart, Name molcart.
continue
skip commands until the nearest endfor or endwhile .
Example:
for i=1,5
if i==3 continue # do not print 3
print i
endfor
See also: flow control statements.
[ Convert comp | Convert fragments | Convert mol | Convert and reroot ]
convert [ exact ] [ charge ] [graphic] [ tether ] [selection] [auto] [ os_non-ICM-object | as_newRoot ] [ s_newObjectName ] [ sstructure=as ]
converts an incomplete non-ICM-object (e.g. object of type 'X-Ray'
resulting from the read pdb
command) into a true ICM-object for which you may
calculate energy, build a molecular surface and perform all operations.
There are two principally different modes of conversion.
In the default mode the program looks at the residue name and tries to
find a full-atom description of this residue in the icm.res file.
This search is suppressed with the exact option.
Hydrogen atoms will be added if the converted residues are known to the program and
described in the icm.res library.
If the object selection is omitted, the current object will be converted.
If default s_newObjectName is generated by adding number "1" to the source object name.
If s_newObjectName is the same as a name of the input object, the input object will be overwritten. (in-place conversion)
The default convert command is best used to convert
PDB entries which have explicit residue descriptions and usually
do not have hydrogen coordinates. In this mode each residue name is
searched in the icm.res file and the coordinates of the present heavy
atoms are used to calculate the internal geometrical variables (bond
lengths, bond angles, phase and torsion angles) for the full
atom model.
The exact option: converting protein with unusual amino-acids
Some pdb-entries may contain non-amino acid residues, or modified amino-acid
residues which do not need to be replaced by standard full atom library entries
with the same name . In this case use the exact option.
This option suppresses interpretation by short residue name and
converts the existing atoms and bonds in
single-residue molecules (amino acids in peptides and proteins will still
be extended by hydrogens upon conversion, to suppress that conversion
write the molecule as mol and read it back, then convert exact ).
Option exact may be necessary because chemical compounds with a
four-letter short name identical to one of the amino-acid residues, could be mistakenly
converted into an amino-acid with a corresponding name.
The charge option
Normally, upon conversion, the atomic charges are taken from the icm.res library entries.
Option charge tells the program to inherit atomic charges from the os_non-ICM-object.
For small molecules, use set charge, set bond type and, possibly,
build hydrogens before conversion of a new compound.
i_out will contain the number of heavy atoms missing from the pdb-template.
The graphic option preserves the graphical representations and colors as is.
The selection option preserves the atom selection bit during the conversion.
Useful for in-place convert.
The sstructure= tree_substructure option makes sure that the tree is drawn through the substructure. It also needs a consistent entry atom provided as as_newRoot argument.
The auto option converts in-place preserving graphics and selection information. This is a convenient shortcut for
the following combination:
- graphic
- selection
- s_newObjectName is set to the input object name
Additional cleanup
Actually more procedures need to be performed to prepare a functional object from crystallographic
coordinates, e.g. identifying optimal positions of added polar hydrogens, assigning the most
isomeric form of histidine , and finding a correct orientation of side-chain groups for glutamine
and asparagine.
We recommend the convertObject macro instead of the plain convert command to
achieve those goals.
Refining the model
To refine a model use the refineModel macro.
convertObject macro
The convertObject macro is a convenient next layer on the convert command.
The macro may convert only a few molecules out of your pdb file, optimize
hydrogens and do some other useful improvements of the model.
Example:
read pdb "1crn"
display
as_graph = a_//c*
convert auto # converts in-place preservinf slection and graphics
strip virtual
convert # creates new a_1crn_1. object
If single atom is provided as an input selection it will be taken as a new ICM tree root. See convert and reroot for details.
See also:
Comparing convert, minimize tether and regularization. |
It is important to understand the difference between the convert
command, the minimize tether command and the
regularization procedure implemented in the macro regul .
All three create ICM-objects from PDB coordinates, but details of
generated conformations and the amount of energy strain will differ.
We recommend to use convertObject macro for most serious applications involving
energy optimization.
convert
- uses all-atom residue templates (including hydrogens) from the icm.res library
- creates temporary ICM-library descriptions for unknown residues
- makes geometry identical to the PDB coordinates: bond length
and bond angles may be distorted.
- the converted structure will be energy strained because of common
imperfections of the PDB entries and the hydrogen atoms added by the procedure
- C-alpha-only structures will not be properly converted because a special
prediction algorithm is required to extrapolate the coordinates of all atoms from C-alpha atom positions.
- these objects are good enough for graphics, skin, secondary structure assignment, rigid body docking.
They are not good for loop modeling and side-chain modeling.
- needs to be followed by polar hydrogen placement and histidine state prediction
( implemented in the convertObject macro )
minimize tether threading a regular polypeptide through an incomplete/gapped set of coordinates.
- you need to create a sequence file first and use the build command;
- you will need to create the missing residues manually, say, with the write library
command;
- build will use all-atom residue templates including hydrogens, and
will preserves the fixation;
- the linear chain with fixed idealized covalent geometry
or, actually, any fixation you define, will be threaded onto the PDB coordinates
in the best possible way;
- Ca-atom PDB structures will be handled properly if all backbone torsion
angles are unfixed;
- the resulting ICM-object will be strained and will need further relaxation.
full regularization and refinement
- uses minimize tether to create the starting conformation;
- employs a multi-step energy minimization (annealing) of the structure
to relief energy strain;
- these are the best objects that can create in ICM for further simulations.
(see macro regul for details).
Examples:
read pdb "1a28.a/" # reading just the first molecule
convertObject yes yes no no # the best way to prepare for docking
# convert + optimizes polar H, His and Pro
read pdb "1crn" # X-ray object, no hydrogens, no energy parameters
convert # a_1crn_icm ICM-object will be created
convert a_1. "new" # a_new. ICM-object will be created
convert a_1. exact # keep modified residues as is
read mol2 s_icmhome+"ex_mol2"
set object a_catjuc.
build hydrogen
set type mmff
set charge mmff
convert
Creating a multi-part molecule in which parts are separately controlled. |
If you want to create a local "epitope" of a protein with chain fragments around a particular area,
it can be done with the
convert rs_fragments
command. This command will create a molecule divided into fragments and each fragment will start from
virtual atoms vt1 and vt2 and will be controlled with 6 virtual variables. The first vt1 of the second, third
etc. fragments will be connected to the first real atom of the first fragment.
Example:
read pdb "1crn"
convert a_/4:10,12,27:33,41:45
Nof( a_m//vt1 ) # the number of pieces
show v_/P1/V # the pos. variables of the 1st part
show v_/P2/V # the pos. variables of the 2st part
display ribbon
color ribbon a_/P3 # showing the 3rd part
This operation is useful to create a local patch object for docking of global optimization.
Converting a chemical compound from a mol/sdf or mol2 files. |
To convert a chemical from GUI menus, follow these steps:
- make sure that bond types and formal charges are correct
- select the MolMechanics.ICM-Convert.Chemical menu item, check the parameters and press OK.
Normally to convert from 2D to 3D you need to optimize the ligand. ICM will perform
a multiple start global optimization using the MMFF94 force field ( internally it runs the convert2Dto3D macro ).
If you want to preserve the geometry, select the keepGeometry option.
Command line conversion To perform the same conversion in a batch run the convert2Dto3D macro,
or, to make a conversion without full optimization from a command line or script,
issue the following commands:
# assuming that bond types and formal charges are correct
build hydrogen
set type mmff
set charge mmff
randomize a_//!vt* 0.01 # sometimes it helps to avoid singularities
convert
set v_//T3 180. # making flat peptide bonds
fix v_//T3 # optional
Example of geometry optimization:
read mol input = String( Chemical( "C(C(O)=O)N1C(C(=Cc2ccc(c3ccccc3[Cl])o2)SC1=S)=O" ) ) # read 2D mol
convert2Dto3D a_ yes yes yes yes
# Hint: if you have forgotten a macor arguments you may always type "list <macroName>"
list convert2Dto3D
Converting a chemical compound and rerooting the tree at the same time |
convert as_rootAtom [auto]
if an atom selection is provided instead of the object selection,
the tree will be rerooted to the selected atom. The converted molecule
will have the as_rootAtom located at the root of molecular tree so that
it is convenient to modify another molecule with the converted molecule.
auto option behaves as in normal convert command. It preserves selection and graphics and preforms in-place conversion.
If you need to reroot an ICM object, do the following:
- strip it to a non-ICM object: e.g. strip virtual
- re-root and convert, e.g. convert a_//hb1 .
Example:
build smiles "C(=CC=C(C1)C(=O)O)C=1"
display wire
wireStyle = "tree"
strip a_ virtual
convert a_//h31 auto # converts from a new root
[ copy-object ]
copies stuff which CANNOT be copied by direct assignment such as:
a=b
copy os_ [ s_newObjectName ] [delete|display|graphic|selection|stack|strip|tether]
creates a copy of os_ with the specified name. Default source object is the current object.
The default name is "copy" (object a_copy. )
Options:
- delete forces the command to overwrite the object with the same name
if there is a name conflict.
- display or graphic copy the display attributes of the parent
- selection copies named selections defined on the parent object into the copy
- stack copies internal stack of the object (see store-object-stack) (the stored stack is not copied by default)
- strip applies the strip operation to the copied object. The stripped object
has a PDB type and is much smaller in memory.
- tether applies tethers from the source object to the atoms of the copy-object.
For further refinement see the refineModel macro.
Examples:
read pdb "1crn"
copy a_ # creates a_copy.
copy a_1. "aaa" # creates a_aaa.
read object s_icmhome+"crn" # read ICM object
copy a_ strip delete tether # create a_copy. and tether to it
crypt key= s_password { s_fileName | string= s_string }
encrypts the file s_fileName or string s_string in place
(the size of the encrypted file/string is exactly the same),
adds extension .e to the file name.
If string is encrypted, its name is not changed.
Apply the operation again to restore the file or string. You may encrypt both
text and binary files. Note that this command has nothing to do with the
unix crypt utility. ICM uses different algorithm.
Examples:
crypt key="HeyMan" "_secretScript" # encrypt and create *.e file
crypt key="HeyMan" "_secretScript.e" # decrypt it
ss="Secret rumour: Div(Rot(F))=0 !"
crypt key="fomka" string = ss # encrypt
show ss
crypt key="fomka" string = ss # decrypt
show ss
A basic ICM class for arrays of date objects
See also: Date.
[ Delete shell object | delete alias | Delete molcart | Delete plot | Delete selection | Delete variable | delete atom | delete directory | delete file | Delete session | delete hydrogen | delete object | delete molecule | delete bond | delete boundary | delete conf | delete drestraint | delete label | Delete label chemical | delete link | delete map | delete sequence | delete site | delete sstructure | delete disulfide bond | delete peptide bond | delete stack | Delete stack object | Delete element | delete table | delete term | delete tether | Delete parray | Delete chemical selection ]
delete shell objects or their parts.
delete [ alias ] [ alignment ] [ factor ] [ grob ] [ iarray ] [ integer ] [ logical ] [ macro ] [ map ] [ matrix ] [ profile ] [ rarray ] [ sarray ] [ sequence ] [ string ] { name1 | s_namePattern1 } name2 ...
delete all # to delete all shell objects not marked with a no delete flag
ICM-shell objects have unique names; to delete some of them just type
delete [ mute ] { icm-shell-objectName1 | s_namePattern1 } icm-shell-objectName2 ...
You may use name patterns with wildcards (see
pattern matching)
and add explicit specification of the ICM-shell object type,
if you want the search to match only the objects of particular type.
If the ICM-shell object type is not specified, all the shell-variables
will be considered.
Option mute will temporarily switch off the l_confirm flag.
delete class
delete string className
delete string command | html
to delete icm-command files or html-documents loaded into ICM
delete rarray view
to delete all the views (returned by the View() function)
Examples:
delete aaa # delete ICM-shell object aaa
delete a b c # delete ICM-shell objects a, b and c
delete "*" # delete ALL ICM-shell objects added by user
delete "mc?a*" mute # delete ICM-shell objects matching the pattern
delete rarrays # delete ALL real array
delete objects # delete ALL molecular objects, same as delete a_*.
delete rarray "a*" # delete real arrays starting with 'a'
Deleting array elements To delete a selection of array elements specified as an index expression or an integer
array of indexes, use the expression from the following example:
a={1 2 3 4 5 6} # we want to delete elements from it
a=a[2:4] # retain only elements 2:4
a={1 2 3 4 5 6}
a=a[{2,3}//{5,6}] # retain only 4 elements elements
a=Count(100)
a=a[Count(1,10)//Count(21,30)] # retain ranges 1:10 and 21 to 30
Deleting table elements table rows can be deleted directly with the delete command, e.g.
delete t.A>1
delete t[{1 3 5}]
delete alias
see
alias delete alias_name .
Example:
alias ls list
alias delete ls
delete molcart table s_dbtable [connection_options]
Deletes table from Molcart database with all index tables, related indexes and metadata.
Database connection may be specified by connection_options
Delete plots from the table |
delete plot table [name=s_handle]
This command deletes from the table all plots or only the plots with the specified name (see make plot).
ICM table plots are stored in
the table header as an sarray T.plot, so 'delete plot T' is identical to 'delete T.plot'
delete selection variable |
delete as_selectionName
or
delete vs_selectionName
delete named variable with atom or v_ selections.
The number of named selections is limited to about 10 in each category, therefore
you may need to delete them from time to time.
Important: keep in mind that deleting the named selection is not the same
as deleting actual objects, molecules or atoms selected by them.
To delete atoms selected by a named variable in an non-ICM object,
add keyword atom (see delete atom nameSelection )
Examples:
build string "ASFGD" # build a molecule
vsel = v_//phi,psi # this is a vselection
delete vsel
asel = a_//c*,n* # this an aselection (atom selection)
delete asel # delete variable asel, do not touch the atoms
delete atom asel # delete atoms in a non-ICM object
delete variable array {i_elementNumber|I_elementNumbers}
delete one or more elements from any array.
If the array is a column in a table T, use the delete T[i] command which
can delete both a single row, e.g. delete t[2], or a row selection.
Examples:
a={1 2 3}
b={1. 2. 3.}
c={"a" "b" "c"}
delete variable a 2 # deletes the 2nd element of the array
show a
{1 3}
delete variable b 2
delete variable c 2
#
a = Count(100)
delete variable a Count(50)*2 # deletes even numbers
delete variable pairdistArray I_pos
Removes elements at positions I_pos from the array
delete as_atoms
delete atoms as_namedSelection
delete selected atoms in a non-ICM object. The selection
here must be a constant atom selection, rather than a
named selection (e.g. you can say delete a_/1:10/*
but NOT aaa = a_/1:10/* , delete aaa ).
To delete a named variable, use delete atom name
Example:
read pdb "1crn"
delete a_/1:10/*
aaa = a_/18:20
delete atom aaa
See also: build atom , delete hydrogen
delete directory s_Directory
delete directory. Example:
delete directory "/home/doe/temp/"
See also: delete file rename file make directory, set directory, Path(directory)
delete system s_fileName s_fileName ...
delete file.
Example:
delete system "/tmp/aaa"
See also: delete directory rename file make directory, set directory, Path(directory)
delete session
deletes all previous history lines. Example:
call _macro
delete session
delete hydrogen as_
delete selected hydrogen atoms in a non-ICM object. See also
build hydrogen. To delete hydrogens
in an ICM object, strip it first.
delete { object | os_ }
delete molecular object. Make sure that you specify an object selection
( a_1crn. is correct, a_1crn.* or a_1crn.//*
is INCORRECT.)
To delete an object from a selection variable ( as_out,as2_out or as_graph,
or any use defined aselection variable), use delete atom as_namedSelection
(e.g. delete atom as_graph ) or specify the selection level explicitly.
Examples:
delete object # delete ALL molecular objects
delete a_*. # delete ALL molecular objects
delete a_2,4. # delete objects number 2 and 4
delete a_2a*. # delete objects with names starting from 2a
read pdb "1crn" # load crambin
convert # create the second object named 1crn_icm
# from the pdb object
delete a_1. # delete the 1st pdb-object
delete Object( as_graph ) # graphical selection
delete [ molecule ] ms_
delete separate molecules from molecular objects. The integer reference
number(s) of molecule(s) which can be shown by the
show molecule
command and used in molecule selections are redefined after deleting or
moving molecules from or in the ICM-tree, respectively.
To delete a molecule from a selection variable (as_out,as2_out or as_graph,
or any use defined aselection variable), use
delete atoms as_namedSelection (e.g. delete atom as_graph )
for non-ICM objects, or use the Mol function to specify the selection level
explicitly (e.g. Mol( as_graph ) ).
Examples:
read pdb "2ins" # load insulin with water molecules
delete a_2ins.w* # delete water molecules
delete atoms as_graph # deletes selected non-ICM atoms/molecules
delete Mol( as_graph ) # deletes selected non-ICM atoms/molecules
delete bond as_singleAtom1 as_singleAtom2
delete a covalent bond between two selected atoms.
This command is used to correct erroneous connectivity guessed by the read pdb command.
It is particularly important when you are going to create a new ICM-residue using the
write library command and the entry to it in the icm.res or your own residue file
(it has the same format).
In interactive graphics mode you may type delete bond and then click two atoms with the CTRL
button pressed.
Examples:
read pdb "newmol" # automatic bond determination is not perfect
delete bond a_/3/cg1 a_/5/ce2 # disconnect two carbon atoms
See also: make bond and make bond atom_chain .
delete boundary
an auxiliary command to free additional memory allocated by the
make boundary command.
delete conf i_stackConfNumber [os_obj]
delete conf i_confNumberFrom i_confNumberTo [os_obj]
delete conf I_stackConfNumbers [os_obj]
delete a specified conformation from the stack or a series of conformations
starting from i_stackConfNumber to i_stackConfNumberTo .
An integer array of indices can also be provided.
if the os_obj argument is provided the changes above will be applied to the local stack in the object.
delete drestraint [ as_1 [ as_2 ] ]
delete distance restraints formed between specified atom selections
as_1 and as_2.
If no selection is specified all distance restraints are deleted
Examples:
delete drestraint a_mol1 a_mol2 # intermolecular restraints
delete label i_StringLabelNumber
delete graphics string label (text in the graphics window). These strings have no
unique identification names, they are just numbered. Numbers are compressed as you
delete some labels from the middle of the list.
Examples:
delete label 1 # delete the first displayed label
See also:
delete labels from 2S chemical spreadsheets |
delete label chemarray [index=I_]
Deletes atom annotation in 2D chemical spreadsheet.
delete link ms_
delete links to sequences and alignments for selected molecules
delete link variable
delete all groups of linked variables (e.g. unlink the variables), see also link variables .
*delete { *map | s_mapName }
delete s_mapName or all maps.
delete sequence [ seq_1 seq_2 .. ]
delete sequence { selection | unknown }
- selection : delete the sequences selected through GUI.
- unknown : delete the sequences unknown to the alignments, i.e.
freely floating sequence not included in any alignments.
delete sequence i_NofLastSequences
delete sequence [ i_minLength i_maxLength ] # delete OUTSIDE range.
- no arguments: delete all ICM-sequences
- one integer argument: delete last i_NofLastSequences sequences
- two integer argument: delete sequences shorter than i_minLength or longer i_maxLength
Deleting some sequences from an alignment
delete alignmentName only selection
delete alignmentName only seq1 seq2 ...
To delete sequences selected via the graphics user interface from an alignment without
deleting them from the shell.
Example
delete sh3 only Fyn
delete sh3 only selection
delete site seq_ [{s_Site|i_number|I_numbers|pattern=s_}]
delete site ms1_ [{s_Site|i_number|I_numbers|pattern=s_}]
delete site rs_
delete the sites of the selected molecules. The sites can be specified
by their name, or number, or residue selection. All sites are deleted by default.
Example:
nice "1as6" # has 3 sites, one in each molecule.
delete site a_1.1 {1}
delete sites # delete all of them
See also: site
delete sstructure seq_1 seq_2 ..
delete sstructure select
delete the assigned secondary structure to prepare the sequence for
the secondary structure prediction (see the Sstructure function).
The selection option allows to delete secondary structure only for the sequences
selected through GUI.
delete disulfide bond [ all ] [ { rs_Cys1 rs_Cys2 | as_atomSg1 as_atomSg2 }]
delete specified or all disulfide bridges in ICM objects.
Examples:
# SS-bond specified by residue, or
delete disulfide bond a_/15 a_/29
# by atoms
delete disulfide bond a_/15/sg a_/29/sg
# remove all SS-bonds in the current object
delete disulfide bond all
See also:
make disulfide bond and (important!)
disulfide bond.
delete peptide bond [ as_N as_C ]
delete specified extra peptide bonds in ICM objects (e.g. imposed to form a cyclic peptide).
Example:
delete peptide bond a_/15/c a_/29/n
See also:
make peptide bond and peptide bond.
delete stack
delete the main stack of conformations in ICM shell. Be careful,
there is a single share stack in the shell (deleted by this command) and
each ICM object can also store a compressed stack of conformers.
See also
read stack,
read stack,
write stack,
and
delete conf.
delete conformational stack inside an object |
delete stack os
deletes the compressed stack inside the specified object.
See also:
delete parray[i_index]
delete parray[I_index_list]
deletes specified elements from a parray.
Example:
C = Chemical({"C","CC","CCC","CCCC","CCCCC"})
delete C[{1,3,5}]
delete C[1]
delete { T_table | table_expression }
delete the specified complete table or just the entries selected
by the expression.
Examples:
group table t {1 2 3} "a" {4. 5. 7.} "b"
delete t.a == 2 # the second entry
show t
delete t[2] # the second entry
show t
delete t # the whole thing
group table t {1 2 3} "a" {4. 5. 7.} "b"
delete t.a > 1 # 2nd and 3rd
delete term s_terms
switch off the specified terms of the energy/penalty function.
Examples:
delete terms "tz,sf" # do not consider tethers and solvation contributions
delete tether [ as_]
delete tethers of the specified atoms ( as_ ),
if no selection is specified all tethers in the current object are deleted.
delete tether loop [ as_]
- this tool deletes tethers for residues flanking insertions and deletions (one residue on each side), as well as N- and C- termini. The tool is used to help the minimize tether command to build a more relaxed loop or end.
delete a tree from a table header array |
delete variable treeParray i_treeIndex
deletes a tree object (generically considered as a parray )
Example:
make tree T
delete variable T.cluster 1
delete selected chemical fragments |
delete chemical chemarray
deletes selected parts of the chemicals. See select chemical command.
[ display model | Display new | Display offscreen | display origin | Display rotate | display stack | display box | display clash | display drestraint | display gradient | display grob | Display grob label | display hbond | Hbond color | display label | display map | Display trajectory | display ribbon | display site | Display skin | display slide | display string | display tethers | display volume | display window | Display gui ]
display molecules or graphical objects
display [wire|cpk|ball|stick|xstick|surface|skin|ribbon [base]] [as_ [as_2]] [ color ] [virtual] [center [center_options]]
display [transparent] [stick|skin|ribbon [base]] [as_ [as_2]]
display specified graphics primitives for selected atoms or residues.
Once something is displayed and your cursor is in the graphics window
you may rotate, translate, zoom and move both clipping planes with the mouse
and keystrokes.
To refer to the base part of DNA/RNA represented as ribbon , use the additional
specifier called base, which can be separately displayed and colored. E.g.
makeDnaRna "ACTG" "mydna" yes yes "dna"
display ribbon
color ribbon base a_1 blue
Display surface atoms may be defined by TWO arbitrary selections
(it would mean: display surface of atoms as_1 as they are surrounded by atoms as_2 )
Note that the GRAPHICS.hydrogenDisplay preference may affect the displayed atoms.
To be able to display all atoms set GRAPHICS.hydrogenDisplay to "all".
Defaults: wire representation, all atoms (corrected by the GRAPHICS.hydrogenDisplay),
coloring according to atom type.
color options
The color can be specified by a number of ways (see the color command for a more detailed description) :
Color (e.g. red ), s_Color (e.g. "red"), numerical color:
i_Color | r_Color | I_Color | R_Color [ window= R_2minmax ]
The window array of min and max values allows to clamp the value you want to map to a color to the specified
range.
Other options:
center : will perform the center command on the displayed object(s).
transparent : will display the ribbons, skins or sticks as transparent objects,
read pdb "1crn"
display transparent ribbon
display skin transparent
display surface refresh : will rebuild the surfaces with new GRAPHICS.surfaceDotSize values.
intensity= r_fraction : renders the image with fractional intensity by merging the source display image with the
background.
virtual : additionally displays the coordinate axes, virtual atoms and virtual bonds starting from the origin.
It is a good way to visualize the whole ICM molecular tree as it grows from the origin.
This option is applicable only to the ICM molecular objects.
More examples:
build string "AFSGDH;QWRTEY" # two peptides
display # display current object and color atoms
# according to atom type
display a_1 red # display the first molecule and color it red
display skin a_/5 a_* yellow # display skin of the 5th residue
# as surrounded by all the atoms
display ribbon # display ribbon for all the residues
read pdb "2drp" # a pdb file
assign sstructure a_a/123:134,153:165 "H" # No sstructure in 2drp
assign sstructure a_a/109:114,117:121,141:144,147:151 "E"
display a_a ribbon red # two Zn-fingers
display a_a/113,116,143,146/!n,c,o xstick blue # Cys residues
display a_a/129,134,159,164/!n,c,o xstick navy # His residues
display a_m,m2 cpk magenta # Zn-atoms
adna1=a_b//p,c3['],c4['],c5['],o3['],o5['] # two DNA chains
adna2=a_c//p,c3['],c4['],c5['],o3['],o5[']
display adna1 xstick white
display adna2 xstick aquamarine
display adna1 adna1 surface white
display adna2 adna2 surface aquamarine
center
display "Zn-finger peptides complexed with DNA" pink
# display 4 chains of insulin as 4 thick worms colored from N-to C-terminus
read pdb "2ins"
color background blue
assign sstructure a_/* "_" # thick worm representation
GRAPHICS.wormRadius= 0.9
display a_/* ribbon only
color a_1/* Count(1 Nof(a_1/* )) ribbon
color a_2/* Count(1 Nof(a_2/* )) ribbon
color a_3/* Count(1 Nof(a_3/* )) ribbon
color a_4/* Count(1 Nof(a_4/* )) ribbon
# examples of DNA and RNA ribbons
nice "4tna"
resLabelStyle = "A"
display residue label
color residue label a_/?u gold # ??u also selects modified Us
color residue label a_/?a red
display new: refresh or unclip view |
display new
display restore
display restore plane
commands to mimic some of the interactive controls.
These commands are primarily used in GUI commands ( see icm.gui file) and scripts/macros.
new :
rebuilds some graphical representations (e.g. your as_graph has been
changed in the shell and you need to refresh the image, or
you changed the orientation and want to redisplay the labels
elevated above the skin surface by resLabelShift ).
restore :
a softer action than new .
restore plane :
moves the clipping planes beyond the displayed objects
(keystroke: Ctrl-U, or the 'Unclip' button) .
display off [ i_Width i_Height ]
Sometimes you want to generate some images in a script without opening an explicit graphics
window. The display off command opens an off-screen rendering buffer
of i_Width by i_Height size in pixels, in which all the usual display/color/undisplay/center
commands work as usual.
NOTE: one cannot have both off-screen and on-screen displays in one ICM session.
An example script (can also be performed interactively):
display off 400 300
nice "1est"
rotate view Rot( {0. 1. 1.} 50.)
write image "est1"
unix xv est1.tif
set window 700 800 # NB: 'center all' will be applied
write image "est2"
unix xv est2.tif
display a_/4/o cpk
center a_/3,4
write image "est3" rgb
unix xv est3.rgb
build string "se ala trp"
display off 400 300
display skin
write image "est3" rgb delete
unix xv est3.rgb
display the axis of the coordinate frame. The length of the arrows is defined by the axisLength parameter.
Use undisplay origin to undisplay it.
E.g.
read pdb "1crn"
display
display origin
undisplay origin
Setting rotation or rocking mode |
display rotate [on|off] [ i_NofCycles ] [pause]
The graphics view can be set so that molecule is continuously rotating or rocking, but the ICM session remains interactive.
This mode can be set with the above command. The style of continuous
interruptable movement is controlled with the GRAPHICS.rocking
preference.
Specifying the number of rotation or rocking cycles i_NofCycles is useful for
movie making. The pause option forces the command to finish the
requested number of rotations before proceeding to the next commands,
as opposed to just launching the rotation and proceeding with the rest of the script.
Example:
GRAPHICS.rocking = "xY-rocking"
display rotate on 3 # three cycles
See also:
write movie , GRAPHICS.rocking
display stack [ os_withStoredStack ] [iFrom iTo] [loop [=nCycles]] [r_NofInterpolationFrames [simple|cartesian]] [center] [sstructure] [auto]
interpolated display of conformational stack of its parts.
Aruments and options:
- optional os_withStoredStack . If this argument is missing, the global stack will be used. With the argument the built-in local object stack will be played out.
- optional start and end frames: iFrom iTo
- option loop [ = nCycles ] : the command makes a video loop and repeats it 99999 times. Optional nCycles redefines the number of repetitions.
- r_NofInterpolationFrames [ simple | cartesian ] ] (e.g. 10.0 cartesian ) : determines the number of intermediate frames.
The following interpolations are currently provided:
- simple : just wait for the specified number of frames
- cartesian : perform linear interpolation between stack conformations
The default interpolation is simple .
- option center : centers on the displayed atoms
- option sstructure : recomputes secondary structure for each stack conformation.
- option auto : extracts the number of cycles (1 or endless loop) and the number of interpolated frames ( no interpolation or a fixed number of interpolated frames) from the stack itself. The two parameters can be set with the set stack os loop|fast [off] command. The GUI interface for the object stack display uses the auto option.
Example:
build string "ASDFW"
montecarlo v_//x* mncalls=10 vwMethod=2 # create a conformational stack
display xstick cpk only
# the previous commands just prepare stack and display
display stack 20. cartesian loop=4 center # repeat 4 times and stop
Another example in which the displayed trajectory is dumped into a movie file.
# make the same preparations
write movie "peptamovie" on exact
display stack 20. cartesian loop=1 center # repeat 4 times and stop
write movie exit
The display stack command is somewhat similar to the display trajectory command.
The display stack command has the following benefits:
- it recomputes the skin if the skin is present
- does not mess up the C-terminus in case of local deformations
- does not save or use any external files.
- it allows easy looping with the loop [= nCycles ] option.
One relative disadvantage of the command is that only the cartesian interpolation is available, while
display trajectory has other types of interpolations ( e.g. cosine weighting, mixed cartesian/angular interpolation) .
See also:
display box [ R_6boxCorners ]
display graphics box specified by x,y,z coordinates of two opposite corners of a parallelepiped.
This box can be resized and translated interactively with the Left and Middle mouse buttons:
- Resizing: Grab a corner of the box with the Left-Mouse-Button and drag it to resize the box
- Translating: Grab a corner or a center of the box with the Middle-Mouse-Button and translate
See also the
Box () function which returns six parameters describing the box.
Examples:
build string "se ala his gly met" # a peptide
display
display box # the default box
display box {0. 0. 0. 2. 2. 2.} # define position/size
display box Box(a_/2 ) # surround the a_/2 by a box
display box Box(a_/2 1.2) # or add 1.2A margin
display clash [ as_1 ] [ r_clashThreshold ]
display all the interatomic distances for selected atoms which are
shorter than the sum of van der Waals radii multiplied by the
r_clashThreshold parameter. The default value is taken from the
clashThreshold variable. Initially it is set to 0.82 but can be redefined.
IMPORTANT: this will work only for the ICM-objects. For hydrogen bonded atoms
the threshold is additionally multiplied by 0.8.
Use the show energy "vw" command (and pay attention to the current fixation)
to precalculate interaction lists.
This command may show some irrelevant short contacts.
calcEnergyStrain , display gradient , etc. seem to be more informative.
See also:
GRAPHICS.clashWidth , clashThreshold ,
show clash, undisplay and atom energy gradient (force) analysis with:
show a_//G or display a_//G.
Example:
read object s_icmhome+"crn"
show energy "vw"
display a_
display clash # all clashes, default clashThreshold=0.82
undisplay clash
display clash a_/11 0.95 # distances < (R1+R2)*0.95
# this is an alternative method which analyzes the gradient
selectMinGrad = 100. # analyzes forces greater than 100
display ribbon grey
display Res( a_//G )
display gradient a_//G
color Res( a_//G ) ribbon magenta
display drestraint as_
displays
drestraints,
disulfide bonds, and
peptide bonds imposed on selected atoms.
See also:
read drestraint,
set drestraint,
make disulfide bond,
make peptide bond,
make drestraint.
Example:
build string "se ala his trp ala gly gly"
display
set drestraint a_/1/hn a_def.a1/6/o 2
show energy "cn"
display drestraint
minimize "vw,14,to,cn"
display gradient as_
display vectors of energy derivative with respect to atom positions or selected
atoms as_
.
Important: the gradient must be pre-calculated by using one of the
following commands: show energy or minimize .
The values of gradient components (lengths of vectors for each atom)
can be shown by
show gradient as_.
When a gradient vector is displayed, two transformations are performed:
it is scaled and colored to represent the range of values in the most
convenient and natural way while still being able to deal with a wide
range of gradient values from negligible to 10 to the thirtieth power, as
may be the case for a strong van der Waals clash. When all gradient vectors
are under 20 kcal/mole*A they will be colored by the "cold" colors
(blue...green...yellow) and will be assigned a length less than 2 Angstroms.
If you see a red and long vector you may have a problem. Check it by
zooming in and using show gradient as_.
You can also select only atoms with gradient greater than the threshold value
selectMinGrad by typing a_//G
and display only specified strained atoms. It helps to get rid of
little blue arrows for unstrained atoms.
Examples:
build string "ala his trp glu leu"
randomize v_//phi,psi
show energy
selectMinGrad= 20.
display a_
display gradient a_//G
display grob [ solid ][ smooth ][ dot ][ reverse ] [ transparent ]
display g_Name1 g_Name2 ... options
display grob selection ... options
display all, specified, or graphically selected graphics object(s) .
They are referred to as grob in the ICM-shell and as "3D meshes" in the
GUI interface.
The display grobs command will display all existing graphics objects.
Options:
- dot will show only dot-vertices of the object.
- reverse to invert lighting; this option will change directions of
the grob surface normals (will turn the grob inside-out)
- smooth enforces the Gouraud shading method to smooth the solid surface.
- solid allows solid surface representation of the object and requires that
the original object has information about triangles forming the solid surface.
- transparent makes solid grob transparent
One can also color and undisplay graphics objects, as well as connect to them.
Examples:
read matrix s_icmhome+"def.mat" # 2D sin(r^2)/r^2 function of a grid
make grob solid def # convert matrix into a graphics object g_def
display g_def smooth # a hat of the 22st century
rotate view Rot({1. 0. 0.}, 45.) #
display g_def reverse # shine light from inside the head
display grob smooth transparent # like Lenin in Mausoleum
display g_label [bold ] [ italic ] [ underline ] i_Size [font=s_FontName] [rgb=R_3rgb|"#xxyyzz"]
displays g_label text (technically it is a grob with a single point and
associated text) in a particular font.
Example:
read pdb "1crn"
display a_
label3d = Grob("label",Mean(Xyz(a_/3,4)), "3D label for res 3,4")
set font label3d times 36 rgb="#00ffdd"
display label3d
select edit label3d # makes it movable, press Esc to get rid of the cursor
display hbond [ as_ ] [ r_maxHbondDistance ] [ only ]
Only hydrogen bonds of the current object may be displayed.
Before calling this command, you should use any of the following commands:
show hbond, show energy, minimize
to calculate the list of hydrogen bonds. The real argument
r_maxHbondDistance defines an upper bound of the distance
between a hydrogen and a potential hydrogen acceptor to place
the pair to the hydrogen bond list. (Default value of
r_maxHbondDistance parameter is 2.5 A.) The list is
recalculated for each new loaded molecular object.
Hydrogen bonds on display are colored according to their
hydrogen-acceptor distances. The option only allows to
display hydrogen bonds without corresponding molecular object.
Longer and shorter H-X distances in the hydrogen bond are color-coded, from red
to blue, respectively.
For ICM object the hydrogen bonds are calculated much faster because the atom pairs
are precalculated. However, the displayed hydrogen bonds will then depend on how the
model was fixed. No hydrogen bonds will be shown inside rigid bodies.
The color or hydrogen bonds will be calculated according to a calculation involving
the effective lone pair density (see hbond color ).
See also:
undisplay hbonds,
show hbonds.
Strength and color of a hydrogen bond |
The hydrogen bonds created or displayed with the make hbond or display hbond
commands are colored according to the estimated 'strength' of this hydrogen bond.
This is just an estimate since the energy of hydrogen bond is not easily decoupled
from the van der Waals and electrostatic contributions between the hbonded atoms
and their immediate environment. In ICM the strength is estimated using the following
procedure described in J Med Chem. 2003 Jul 3;46(14):3045-59.
For a hydrogen bond acceptor atom A(i) and a hydrogen atom H(j) located at
rj, the hydrogen bonding interaction was estimated
Fang(phi)Fdist (rLPi -rj)
, where phi is an angle formed by the hydrogen bond acceptor atom,
hydrogen, and the hydrogen bond donor,
and rLPi is the radius vector of the center of the lone electron
pair (LP) closest to the hydrogen. The angular function used
was defined as Fang = 1 - cos(k*phi) . Parameter k is accessible as GRAPHICS.hbondAngleSharpness in the shell. Distance function
Fdist (rLPi-rj) was constant (1.0) within LHB/2 from the lone pair
center and dropped as
exp( -(((rLPi - rj)/LHB) - 0.5)2 ) .
beyond that distance, where LHB is the characteristic range of
hydrogen bonding interaction (value of L=1.6 �was used). Lone
pair centers were placed at 1 �from the hydrogen bond
acceptor atom, assuming symmetrical planar trigonal configuration
for sp2 atoms and tetrahedral configuration for sp3
atoms. The resulting functional dependence reflects (at least
qualitatively) the physical nature and observed statistics of
the hydrogen bond interactions. The interaction is maximized
when the hydrogen atom is pointing directly to the acceptor
atom along a lone pair axis and drops quickly as the hydrogen
is moved farther away. The strength declines more gradually as the
hydrogen moves out of the LP axis or, as hydrogen bond donor,
hydrogen atom, or hydrogen bond acceptor, move out of
alignment.
See also:
GRAPHICS.hbondMinStrength
display [{ atom | residue }] label [selection]
display variable label v_selection
a graphics label with atom name, residue name,
variable name for all or selected atoms, residues or variables respectively.
The text of this label is not user-defined, although
you can control it in two different ways. First, residue label style can
be set using either Ctrl-L in the graphics window or
resLabelStyle
preference , and variable label style either by Ctrl-V, or setting
varLabelStyle preference.
Second, the ICM-shell string variable s_labelHeader
defines a prefix string for all labels. For example, if you display CPK
atoms you may move the label to the right from the atom center by
s_labelHeader=" " .
The _aliases file has convenient aliases
(e.g. ds for display, unds for undisplay, re , for residue, va for variable)
for those of us who like typing commands. In this case you may just type
ds va la to display variable labels, etc.
Examples:
build string "FAHSGDH"
display a_
display residue label #
undisplay label
display residue label a_/his
display variable label v_//phi,psi
display variable label v_//* & as_graph
display atom label a_/1:3/*
undisplay label
# or with aliases:
ds re la a_/1,3
unds la
.. etc.
display { map | map_name } [ I_colorTransferFunction ] [ R_2RangeOfMapValues ]
displays a real function defined on a three-dimensional grid (i.e., an electron density map).
Optional iarray argument defines a color transfer function according to deviation from the mean.
If you provide an explicit range of map values ( R_2RangeOfMapValues ), the
map values will be clamped into this range, divided into Nof( I_colorTransferFunction )
subranges, and colored according to the values of I_colorTransferFunction :
- 0 - transparent/invisible
- 1 - blue
- maxNumer - red
To undisplay the bounding box reset the GRAPHICS.displayMapBox parameter.
See also the color map command.
Example:
build string "se his arg"
make map potential "el" Box( a_/1,2/* , 3. )
display a_
display map m_el {1 2 0 0 0 0 3 4 5 6} {-20.,100.}
center
make grob m_el 2. name="g_1"
make grob -m_el 1. name= "g_2"
display g_1 red
display g_2 blue
In the display map m_el {0 1 2 3 4 0} {-2.,2.} example, the values will
be clamped into the -2.,2. range. The range will be divided into 6 sub-ranges:
-infnty:-2., -2.:-1, -1:0, 0:1, 1:2, 2:+infnty . The first and the last
ranges will be invisible (color 0). The four ranges in the middle will be colored
from blue to red.
See also related commands:
read map,
write map,
delete map,
show map,
set map,
make (1),
make (2)
and file format icm.map .
display trajectory : simulation trajectory |
display trajectory [s_TrjFileName] [ i_From [ i_To]] [ r_Smooth1 [ r_Smooth2]] [ as_1] [ center [ as_2 ] ] [ sstructure ] [ imageOptions ]
lets you play, stop and reverse a Monte Carlo simulation trajectory as well as write
a series of images for future assembly of those images into movies.
Arguments and options:
- Integers i_From and i_To specify the frame range.
- Real values r_Smooth1 and r_Smooth2 determine minimum and
maximum smoothing parameters (i.e. number of additional frames, inserted
if conformation change is too dramatic). For example: 100. 700.
- Specifying atom selection
as_1 defines a certain fragment on to the
initial conformation, of which subsequent conformations are superimposed.
- The image saving options include:
image [ =s_framePath ] [ rgb|targa|png|gif ]
Option image allows to automatically save a series of image files
in the s_framePath argument of the image= option or in the default s_tempDir directory.
- center option with selection as_2
determines a fragment for graphics window centering (all, if center without as_2 ).
To obtain the trajectory info use
read trajectory s_TrjFileName
When playing a trajectory, you
can use ICM interrupt ( Ctrl-\ ) to stop, and then toggle stepwise frame playing,
reverse, or quit playing. The default is to play a whole trajectory without
smoothing, superimposition or centering.
Example:
build string "ala ser ala thr ala glu ala"
mncallsMC=10000 #
montecarlo trajectory
read trajectory "def"
ds ribbon, wire
ds trajectory center sstructure 10.
Notes:
- do not forget to start ICM with the -24 flag to double the image quality.
- set IMAGE.generateAlpha to no if you want to keep the background colored and not transparent.
Allowed image formats are: rgb, targa, png, gif .
The file extensions will correspond to the image file format.
The image file names consist of the default path and name, appended with
the frame number. Example:
display trajectory image="/tmp/f"
/tmp/f_1.png
/tmp/f_2.png
...
s_tempDir = "/home/jack/X"
display trajectory image rgb
/home/jack/X_1.rgb
/home/jack/X_2.rgb
...
All the other image preferences may be predefined by the IMAGE table.
Option sstructure will dynamically reassign secondary structure
while going through conformations of each frames. This option is
very useful if you perform peptide/protein simulation and want
to see if secondary structure elements are forming transiently.
See also: trajectory file.
display ribbon rs_ color
|
displays protein or DNA backbones in ribbon presentation.
|
See also:
display site rs_ color
display site information.
Switch between different types of the site information with the SITE.labelStyle preference.
By default only non-zero priority sites are displayed.
display skin or dotted surface |
display { skin | surface } as_1 as_2
display skin as_1 molecule
display analytical molecular surface, also referred to as skin, or solvent
accessible surface area .
Each display skin command will delete the previously displayed
skin in the current plane.
To display several different skins, use the
set plane
command to change the current graphics plane before
you issue the display skin command. You can also convert the skin into a
grob with the make grob skin command.
You can co-display many grobs on the same plane, as well as make the grob transparent.
This grob can be further split into individual shells with the split command.
Options:
- molecule : (for skin) considers each molecule in isolation
See also: How to display and characterize protein cavities.
Example:
build string "se ala his glu" # test tripeptide
display # the wire model
display skin a_/1 a_/1 # skin around the 1st residue or just press <F1>
display skin a_1 molecule # equivalent to a_1 a_1
set plane move on 2 # key with your cursor in the graphics window
display skin a_/3 a_/3 # skin around the 3st residue
# now you can toggle planes with F2 and F1
display surface # solvent-accessible surface
display slide [ reverse | i_slide ] [s_slideProperties] [ view ] [ smooth ] [ add ] ]
display the next slide or slide number i_slide .
Options:
- which slide to show? if you have just said: display slide the next slide will be shown, display slide reverse will
show the previous one. A specific slide number i_slide can also be shown ( ICM also understands index=3 ).
- view : using only the viewpoint/clipping planes from a slide (see also set view ).
- smooth : or smooth= i_transition_time_in_msec will make a smooth view transition from the current state to the slide view.
(e.g. display slide smooth or display slide 5 smooth=1000
- add : adding representations to the existing display, rather than overwriting the slide (like appending a new graphical layer)
You can individuall control which sections of the slide information to use in display slide using
s_slideProperties . The syntax of this string is the following:
"sect1on;sect2on;..;-sect3off;sect4off; .."
The section names are separated by a semicolon, and plus and minus are used to switch things on and off
with respect to the default state. The allowed sections include:
| Section Name | Default | Description
|
|---|
| "layout" | - | if +, sets the layout of ICM windows and panels (if off, preserves the current layout)
| | "activewindows" | + | if +, sets the saved active window or panel in ICM gui
| | "smooth" | - | if +, makes smooth animated view transitions between slides
| | "add" | - | if +, adds the next slide as a layer to the previous, rather than overwrites it
| | "gf" | + | graphical representations (CPK, xstick, skin etc.)
| | "color" | + | colors of representations
| | "labeloffs" | + | restoring slide-specific displacements of residue labels
| | "viewpoint" | + | the view point, zoom, and clipping planes
| | "graphopt" | + | the state and parameters of rotation, rocking, etc.
| | "mol" | + | if - , do not restore any property of molecular objects in main graphics window
| | "grob" | + | if - , do not restore any property of grobs in main graphics window
| | "map" | + | if - , do not restore any property of maps in main graphics window
| | "all" | - | switches all sections, on (+) or off (-)
|
Examples:
display slide 4 "-all;+gf;+color"
display slide 4 "-viewpoint"
display slide 4 "+smooth" # enforce smooth view transitions
display slide show [ index=i_start ] [reverse]
the keyword show switches the program into the slideshow mode and makes smooth transition the default.
Other options are the same as above.
Examples :
icm -g&
read binary s_icmhome+"example_slideSGC.icb"
display slide
display slide # the next slide
display slide smooth # make a 500msec-transition
display slide 4 # 5th slide
display slide 2 view # enforce viewpoint from slide 7
display slide add 2 # display additional representations from slide 3
See also: add slide , set view .
display string s_StringText [color_spec] [font_spec] [ r_XscreenPosition r_YscreenPosition ]
|
display a text string in the graphics window. Relative X and Y screen
coordinates (ranging from -1. to 1.) of the string beginning may be
specified to display the string in a given location. Defaults are
x = -0.9, y = 0.9, i.e. upper left corner of the screen.
|
|
The string can be
dragged later to any location by the middle mouse button.
The command supports various formats for specifying the label color color_spec
and font parameters to characterize the label font font_spec.
Two fonts are at your disposal: the default font (usually times) and the auxiliary
font (usually symbol). Both fonts can be redefined by the
set font
command. You can also switch to the auxiliary font and back inside
the string by backslash-A ( \A). (.e.g "Red: \Aa\A-helix"). You can
also list and delete your string labels by the
list label
and
delete label
commands.
Examples:
display string "Crambin" # a simple string
display string "Act.site of \Ab\A-lactamase" yellow # Greek beta letter
build string "ala"
display string Name(a_1.) red 28, 0. 0.9 # first object name
# in the middle
# (font size=28)
display tethers [ as_ ] [ r_minDeviation ]
displays tethers assigned to the selected atoms as_
with deviation larger than r_minDeviation. Tethers can be imposed between
atoms of an ICM-object and atoms belonging to another object, which
is static and may be a non-ICM-object.
(0. by default).
display volume
activates fog from the command line. See also fogStart .
Accordingly, the undisplay volume switches the effect off.
display window [ i_xLeft i_yDown i_xSize i_ySize ]
undisplay window
displays/undisplays the graphics window.
When ICM is started without GUI, it is allowed to specify the window size and position.
See also: set window
display window=s_windowList
undisplay window=s_windowList
Displays/undisplays GUI windows and toolbars. s_windowList should be a comma-separated
list with ICM panel and toolbar names.
- "opengl" # undisplays the graphics window
- "all" # undisplays all except graphics window
- "alignments"
- "htmls"
- "masterview" # shows/hides workspace panel
- "moledit" # shows/hides molecular editor window
- "plotdialog" # shows plot dialog for the current table (in modal mode)
- "searchwindow" # show/hides chemical search space window. Chemical pattern can be provided optionally as an extra argument
- "columnfilter" # launches column filter dialog for specified table column
- "tablesearch" # launches table "Find and Replace" for the active table. Search string can be provided optionally as an extra argument
- "processes" # shows/hides background job list window
- "prop" # 'Display Panel' with mutiple tabs (display/light,...)
- "terminal"
- "tables"
Also the tool panels:
- "moveTools"
- "clipTools"
- "miscTools"
- "viewTools"
- "planeTools"
- "fileTools"
- "levelTools"
- "tableTools"
You can also display/undisplay individual tabs from the 'Display Panel'. To do that you need
to append a tab name to the "prop:".
Example:
undisplay window="prop:light" # hide 'light' tab from the panel
Note: This command does not affect the content of the main working area (the center)
Example:
read binary s_icmhome + "example_search.icb"
display a_
undisplay window="tables" # hides tables
undisplay window="all" # leaves only 3D graphics window
display window="moledit" Chemical("CCO") # popups Molecular Editor with compound
display window="searchwindow" Chemical("CC[O;D1]") # popups Chemical Search Space with compound
display window=s_window center
sets the specified s_window to the center. Windows which may occupy the central position are:
- "opengl"
- "alignments"
- "htmls"
- "tables"
Example:
read binary s_icmhome + "example_search.icb"
display a_
display window="opengl" center # sets graphics window to the center
display window=s_layoutString
Applies the window layout specified in the s_layoutString.
ICM stores the layout information as a string in a specific format.
Window layout information is stored, for example, in slides.
Example:
read binary s_icmhome + "example_search.icb"
sl = Slide()
display a_
display window=String(sl gui) #changes the view back to what was before the 'display' command
See also: Slide, String slide gui
display gui [off] s_window
Obsolete command. See:
display window
edit icmShellVariable
interactively edit the ICM-shell variable using your
favorite editor defined by the
s_editor variable.
Examples:
edit mncalls # actually it is easier to type: mncalls=333
edit FILTER # edit a system table, do not change names of components
#
group table t {1,2,3} "A" {"a","b","c"} "B" # create a table
t #
edit t # edit table t
elseif
is one of the ICM flow control
statements, used to realize conditional statements.
See also: if, then, and endif .
endfor
is one of the
ICM flow control
statements, used to perform a
loop in ICM-shell calculations.
See also
for .
endif
is one of the
ICM flow control
statements, used to realize
conditional statements.
See also if, elseif, and then .
A command ending a macro .
Examples:
macro threeEssentialsOfLife # declare new macro
# define essentials
l_info=no
modes={"\n\tOoops!!\n","\n\tOuch!!\n","\n\tWow!!\n"}
# randomly pick a line
print modes[Random(1,3)]
endmacro
threeEssentialsOfLife # invoke macro
Enumeration of stereoisomers |
enumerate chiral chem_array [index=I_selectedChems] [center=i_Max_Number_of_Centers] [name=s]
Generates all possible stereo isomers for each chemical compound from or from selected
chemicals ( I_selectedChems ). Important: this operation requires that two conditions are
satisfied:
- a molecule has a stereo center (i.e. an sp3 atom with four different substituents
- if a stereo center has a definite chirality ( "up" or "down", or R, or S) stereo isomers will not be generated. The center
needs a stereo bond is marked by type "off", or "either" to imply an uncertain chirality or a racemic mixture of two isomers.
Sometimes you may want to skip compounds with number of unspecified centers greater than certain value. In this case
you should provide center = i_Max_Number_of_Centers argument to the command.
The command will always generate at least one element for each compound.
Example:
group table t {"CC(N)O","CC(C)C(C)O"} "mol"
enumerate chiral t.mol name="isomers" # creates isomers.mol
enumerate tautomer chem_array [keep] [filter] [index=I_index_array] [name='T_tauto']
Generates all possible tautomers for each chemical compound from .
Returns the resulting chemical array of tautomers.
The command will always generate at least one element for each compound.
The current function only generates tautomers that preserve
the atom content (does not add or remove hydrogens).
With keep option it'll also preserve the hybridization state of each atom (i.e. does not change sp3 to sp2).
Some tautomers are formally possible but chemically do not make much sense.
To avoid generating those tautomers, Split uses the TAUTOFILTER.tab file that
contains the unwanted or chemically impossible tautomer patterns in the SMARTS
format. Feel free to add more patterns to this file.
Use filter option to enable filtering by patterns.
Example file:
#>T TAUTOFILTER
#>-sm----------------comment
"*C([OH1])=[N;R0]" "peptide bond"
p = Chemical( "C(=C(NC(=N1)N)N2)(C1=O)N=C2" )
Nof(p) # 1 element
1
enumerate tautomer p
show T_tauto
#>T T_tauto
#>-mol---------idx--------
"C1=NC2=C(NC(=N)NC2=N1)O" 0
"c1nc2=C(NC(=N)N=c2[nH]1)O" 0
"C1=NC2=C(N=C(N)NC2=N1)O" 0
"c1nc2c(nc(N)nc2[nH]1)O" 0
"C1=NC2=C(NC(N)=NC2=N1)O" 0
"c1nc2C(NC(=N)Nc2[nH]1)=O" 0
"c1nc2C(N=C(N)Nc2[nH]1)=O" 0
"c1nc2C(NC(N)=Nc2[nH]1)=O" 0
"c1nc2C(=NC(=N)Nc2[nH]1)O" 0
Combinatorial library enumeration |
enumerate library [simple] chem_scaffold_R1R2 .. chem_R1 chem_R2 .. \
[name= s_libTableName|output= s_fileName] [filter=expression]
Applies chemical arrays (usually a column in a chemical table) for each of replacement groups chem_R1, chem_R2 etc.
to the first element of the scaffold template array. (also known as enumerate library
The scaffold.The scaffold structure needs to be drawn as a Markush structure, e.g.
add column scaffld Parray( "[R2]C(C(=O)[R3])NC(=O)N[R1]" ) name="mol"
The replacement groups.Each replacement group in a chemical array (table) needs to have an attachment point specified.
In the Smiles/Smart representation used in ICM it is marked by an asterisk (e.g. "[C*]CC" ).
Marking an atom as an attachment point can also be done in the Chemical Editor ( right-click on an atom and
choose the Attachment Point menu item).
The output table or file.The output table will contain all combinations .
If the output option is specified the resulting library is saved to a file and
the table is not created.
Warning: if the number of combination exceeds 20000 the resulting library is saved to a file
automatically (to avoid memory problems).
- Option name = s_table allows to change the default name of the output table.
- Option output = s_file forces the file output and suppressed the table creation.
The output chemical table has a product column as well as the index of each R-group.
simple option toggle a special mode where instead of full enumeration it simply goes through the input substituents and take i-th element from each.
This mode requires that size of all R-group arrays should be the same. The size of the output will be equal to the size of R-group array(s)
Dynamic filtering of the output by applying a filter expression.The filter= s_expression option allows to apply a filter during the
library generation. The filter expression is a double-quoted string
with the following structure:
"Function1 relation value & or |
Function2 relation value & or | ..
"
Example:
filter = "MolLogP<5. & Nof_Frags('C(O)=O')<1"
The list of functions is expanding. The current list of the functions is the following:
| Function Name | Description | Example
|
|---|
| MolWeight | | MolWeight < 650
| | Nof_Molecules | the number of individual molecules,including ions and salts | Nof_Molecules==1
| | Nof_Chirals | the total number of racemic and chiral centers | Nof_Chirals==0
| | Nof_RotB | rotatable bonds |
| | Nof_HBA | hydrogen bonding acceptors |
| | Nof_HBD | hydrogen bonding donors |
| | Nof_Atoms | the total number of non-hydrogen atoms |
| | Nof_Frags ( s_smart ) | counts the number of fragments | Nof_Frags('[S,P](=O)=O')==1
| | DrugLikeness | a number around 0 | DrugLikeness > 0
| | MolLogP | log P prediction |
| | Volume | 3D molecule volume prediction |
| | MolPSA | polar surface area |
| | MoldHf | heats of formation |
| | MolLogS | solubility |
|
See also:
A short form of the enumerate library command and linking. The replacement group arrays can be linked to the R positions of a scaffold with
the link group command. In this case a short form of the command can be used, e.g.
link group scaffold.mol 1 r1.mol 2 r2.mol 3 r3.mol
enumerate library scaffold.mol
Example:
read binary "example_enum.icb" # contains scaffold and R1,R2,R3
enumerate library scaffold.mol[1] name=Name( "lib", unique ) R1.mol,R2.mol,R3.mol
split group scaffold.mol[1] lib.mol # if you want to split it back
The inverse operation: split the library into scaffold and replacement group arrays.A library can be also reduced back to the scaffold and replacement groups using the split group scaffold library
command. E.g. split group scaffld.mol combilib.mol
See also: make reaction , split group , Replace chemical .
endwhile
is one of the
ICM flow control
statements, used to perform a
loop in ICM-shell calculations.
See also
while .
exit [ s_message ]
exit from a script file to interactive mode.
Do not confuse this command with the exit option in, say,
highEnergyAction preference.
Similar to return [ error s_message ] from a macro .
To quit the program, use the quit command.
[ Find alignment | Find database | Find database fast | Find molecule | Find chemical | Find pdb | Find prosite | find pattern | Find molcart | Find table | Find pharmacophore ]
a family of commands for sequence and pattern searches,
chemical matching, 3D pharmacophore matching, and alignment optimization.
For chemical matching also see chemical tables, and the Nof chemical function.
find alignment : automated structural alignment |
find ali_initial [ superimpose ] [ r_threshold= 3. [ r_retainRatio= 0.5] ]
find the best structural alignment of two proteins by refining the
inaccurate initial alignment ali_initial with the goal of finding
the largest possible subset of residues which have similar
local backbone fold in 3D space.
Option superimpose automatically superimposes molecules according to the
found structural alignment upon completion of the iterations.
This command needs a starting alignment of 2 sequences linked
to the molecules with at least one atom per residue. If Ca atoms are
not found the atoms carrying the residue label (see the set label command)
are used.
Low gap penalties of 1.8 and
0.1 are recommended for the initial sequence alignment.
Algorithm : At each step aligned pairs of atoms which are further than r_threshold
from each other are disconnected so that at least r_retainRatio pairs
are be retained. Then the molecules are superimposed again and
new residue pairs are tested and accepted if it leads to a lower overall rmsd.
Warning: the result strongly depends on the relevance of the starting
alignment to the best 3D alignment. Sometimes 3D irrelevant sequence alignment
pairs do not tend to disconnect to allow transformation into a global 3D alignment:
e.g. if only one pair of elongated helixes is aligned in the starting
alignment and it is only a small part of an optimal alignment which
would be completely different, it might not be eventually found.
See also other types of structural searches and superpositions:
- find pdb:
search a database of a single structure for a fragment with a given sequence
pattern and partial structural similarity (e.g. loop ends match).
- superimpose:
performs structural superposition, the command can do it on the basis of sequence
alignment on the fly.
Example:
read pdb "1nfp"
read pdb "1brl.b/"
rm !Mol(a_*./A )
make sequences a_*.
aa=Align(1brl_1_b 1nfp_a)
ds a_1.//ca,c,n grey
ds a_2.//ca,c,n green
superimpose a_1.1 a_2.1 aa
center
find aa superimpose
show aa
gapExtension = 0.05
ab=Align(1brl_1_b 1nfp_a)
find ab 4. 0.7 superimpose
show ab # better
See also: pairwise alignment multiple alignment
find database: sequence and pattern searches |
find database [ r_probabilityThreshold ] options
find database exact [ distance= i_nOfMutations]] options
find database pattern={ s_pattern | S_patterns } options
find database write [ s_database ]
find database fast [ = i_speed] [output=s_file] [name=s_tabName]
# blast like fast search.
fast sequence or pattern search through a sequence database.
The default find database sequence search program performs a full gapped optimal
sequence alignment, which is a global alignment with zero-end-gap penalties (ZEGA).
These alignments are more rigorous (not heuristic) than popular BLAST of FASTA
searches. The latest statistics of structural significance of sequence alignments
derived for a number of residue substitution matrices will be applied (
Abagyan and Batalov, 1997 ) to assess the probability
that a matching fragment shares the same 3D fold.
The r_probabilityThreshold (default 0.00001 or 5.) option
defines the lowest acceptable probability of hit. You can also provide a -logP
number (e.g. 5.5 ) instead of a small probability ( 10^-5 ).
Threshold of 10/DatabaseSize is usually a safe threshold
(no guarantees though). Practically 10-5 is a safe threshold for a SWISSPROT search
(65,000 sequences). At 10-4 you may find interesting hits, but a more serious
analysis may be required to confirm its significance.
The second version of the command with the exact keyword performs a very fast search
for identical or almost identical sequences. The distance= i_maxNofMutations parameter
specifies the allowed number of mutations.
find database pattern
The third version of the command searches for string patterns in a sequence database.
The sequence patterns can contain while cards (e.g. "A?[LIV]?\{3,5\}[!P]").
This search is very fast.
The fourth command find database write is used to export ALL sequences from the blast-formatted
files into to an external FASTA file defined by output= string
(default s_databasePath.seq ). This option is the inverse of the
write index sequence command which creates
several BLAST files from a FASTA file.
The common options are as follows:
[ s_databasePath ("pdbseq") ] [ seq_1 .. ] [ ali_1 .. ] [ output= s_outputFileNameRoot ] [ name= s_tableName ] [ unique ] [ delete ] [ protein | nucleotide | type ]
Other important variables:
- alignMinCoverage (default 0.5)
a threshold for the ratio of the aligned residues
to the shorter sequence length.
- alignOldStatWeight (default 1.)
a parameter influencing the statistical evaluation of sequence comparison.
To use run-time statistics use alignOldStatWeight=0.
- Up to mnSolutions hits will be retained in the final table of hits.
- The parallel version of the program will use nProc CPUs
(but not more than is available in your computer). The expected time is
inversely proportional to the number of CPUs.
- maxMemory is a real ICM-shell-variable defining the size of the database buffer
memory in Mb used by the command. If this size is smaller than the database,
the sequences will be loaded in chunks.
The output table looks like this and contains the following fields:
#>T SR
#> NA1 NA2 MI MX LMIN LN H ID SC pP DE
1hiv_a POL_HV1H2 57 155 99 0.665 0.099 100.0 103.69 30.00 "POL PROT.."
1hiv_a POL_HV1BR 69 167 99 0.664 0.098 99.0 103.62 30.00 "POL PROT..
<i>... lines skipped ...</i>
1hiv_a POL_MLVAV 9 102 99 0.648 0.078 27.3 23.41 5.31 "PROTEASE.."
1hiv_a VPRT_MPMV 172 272 99 0.799 0.290 29.3 21.95 4.82 "PROTEASE.."
1hiv_a VPRT_SRV1 172 269 99 0.799 0.290 27.3 21.65 4.72 "PROTEASE.."
1hiv_a GPDA_RABIT 33 145 99 0.785 0.264 28.3 20.98 4.50 "GLYCEROL3P"
- NA1 - the query sequence (a single command can search several query sequences)
- NA2 - the name of the database sequence
- MI : MX - the matching fragment boundaries in the database sequence
- QMI : QMX - the matching fragment boundaries in the query sequence
- LMIN - the shortest sequence length in a pair (query, database sequence)
- LN - log-correction factor (not used in pP but you may want to use it to
resort the table).
- H - the fraction of the database sequence covered by the alignment
with the query. If you search against a database of domains this number should be
close to 1 (e.g. the hit is less significant if your query is only a part of a
domain). It can be taken into account by multiplying pP by this number.
- ID - percent sequence identity (number of identical residue pairs
in the alignment divided by LMIN)
- SC - normalized alignment score which is used to calculated
the Probability. The score depends on the residue substitution matrix
and gap penalties. (see the Score function).
- pP = -log10 (
Probability )
- DE - the database sequence definition
Examples:
s_searchDB = s_icmhome + "/data/blast/pdbseq"
read sequence "GTPA_HUMAN.swi"
find database s_searchDB output="gtpa1"
find database pattern="C?[DN]?\{4\}[FY]?C?C" s_searchDB margin = 5
unknown1=Sequence("TTCCPSIVARSNFNVCRLPGTPEAICATYTGCIIIPGATCPGDYAN")
find database exact unknown1 s_searchDB margin=1
find database fast : fast dictionary-based sequence search |
find database fast [ = i_speed] sequence s_dbFile [output=s_file] [name=s_tabName]
very fast dictionary-based sequence search algorithm. Requires a blast-formated database file.
Options:
- fast= i_speed # a number from 1 (slow, rigorous) to 100 (fast and only almost identical sequences).
- output= s_file # saves the output to a file.
Example:
read sequence swiss web "1433B_HUMAN" # read one sequence
find database fast=90 1433B_HUMAN # search pdbseq database (the default)
See also:
write index sequence command that creates BLAST files from a FASTA file.
find molecule: chemical substructure search |
[ find-molecule-sstructure ]
find molecule s_Smile1 { s_Smile2 | S_Smiles2 } [ atom ] [ bond ] [ simple ]
Identify a complete match of the source molecule represented by a
smiles string in another smiles string or an array of smiles strings representing
a database of chemicals. Make sure that you unselect hydrogens in your smiles string.
Options:
| atom | allow superpositions of all atom types
| | bond | allow superpositions of all bond types
| | reverse | searches
|
The following setup is optional:
- prepare the target strings with the Smiles( a_//![hdt]* ) function (exclude hydrogen, deuterium and tritium)
- search the source string made without hydrogens
Only up to mnSolutions hits will be retained in the final table of hits.
Change this shell variable if necessary.
The function will return the results in the following variables:
- i_out - contains the number of hits
- I_out - contains the integer array of the hit numbers
WARNING: This is obsolete way of chemical substructure searching.
Use: find table Index chemical other chemical functions
find molecule reverse ms_1 s_smile
WARNING: This is obsolete way of chemical substructure searching.
Use find chemical instead.
: find molecule sstructure [ all ] [ tether ]
find maximal common substructure in selected atoms of the two molecules.
Without the all option, one largest pair of matching fragments is identified.
Options:
- all : finds multiple matching fragments. Takes fragments with number of atoms >= minMCSFragmentSize (3 by default )
- tether : tethers the matching as_molIcmObj2 atoms the equivalent atoms of as_molObj1 .
The tether option is useful since once the tethers are established, you can
superimpose a_//T according to these tethers, or optimize the molecule with tethers, e.g.
build smiles "C(=CC=C(C1)CN(CCNC2)C2)C=1"
build smiles "C(=CC=C(C1)N(CCNC2)C2)C=1"
ds a_*.
find molecule sstructure all tether a_1. a_2.
superimpose a_ # uses tethers to superimpose a_ on a_1.
The tethers can also be interactively edited (see delete tether command)
find molecule [ tether ] as_subFragmentQuery as_IcmTargetContainingQueryFragment
You can also use the alternative set of arguments and use molecular selections instead
of the smiles strings. The atoms of as_IcmTargetContainingQueryFragment
aligned to each sequential atom of the query molecule
will be stored in the S_out array. The atom selection of the target will
also be returned in the as_out selection.
The tether option: After the equivalent sets of atoms in two molecules are identified,
tethers can imposed pulling atoms of as_IcmMolContainingQueryFragment
to the equivalent atoms of passive atoms as_subFragmentQuery .
The matching atoms of the second selection as_IcmMolContainingQueryFragment
which are pulled by tethers to the as_subFragmentQuery template positions
can be superimposed with the minimize "tz" v_positionalVariables command.
Important: unselect the hydrogens to speed up the matching procedure, e.g.
find molecule a_1.//!h* a_2.//!h*
An example:
build string name="a" "se nter his cooh" # query template
build string name="b" "se nter his trp cooh" # target
find molecule a_a./his/cg,nd1,ce1,ne2,cd2,cb,ca,n a_b. tether
display as_out xstick # the tethered atoms of the target
display a_*.
minimize "tz" a_b.//?vt*
show Rmsd( a_b.//* ) # will show the RMSD of the equivalent atoms
See also: Smiles function and the build smiles command.
find chemical: finds SMARTS pattern in 3D |
find chemical ms_sel s_smarts [all]
Searches using smarts pattern s_smarts in ms_sel. The result (matched atoms) will be stored in as_out
With all option it'll find all possible matchings.
Example:
build smiles "CC1=NN=C(NS(C(C=CC(N)=C2)=C2)(=O)=O)S1" name="sulfamethizole"
display wire
find chemical a_ "a" all # finds all aromatic atoms
display xstick as_out
find chemical a_ "[$(N~[a;r6])]" all # finds nitrogen bonded to 6-member aromatic ring
display cpk as_out
See also: find molecule sstructure SMILES/SMARTS description
find pdb: fragment search |
find pdb rs_fragment os_objectWhereToSearch s_3D_align_mask [ s_sequencePattern [ s_SecStructPattern ] ] [ r_RMSD_tolerance]
Find a fragment (e.g. a loop) with certain geometry, sequence and/or secondary structure. Arguments:
- rs_fragment: the search fragment template
- os_objectWhereToSearch: the other object.
- s_3D_align_mask: marks the residues to be used in the 3D
superposition and comparison in terms of r_RMSD_tolerance (see below).
The number of 'x's (or 'ON' bits) in the mask must be equal to the
query fragment length (it may be discontinuous), while the total mask length
should be equal to the found fragment length. For example, if you search for
an 11-residue loop with the same geometry of 3-residue ends, but any geometry
of the middle part your mask must be "xxx-----xxx". If you want to match
geometry of the middle part you would invert the mask: "---xxxxx---", etc.
- s_sequencePattern: Use "*" for any sequence. Otherwise you may use
regular expressions, for example: "?A[!P]???$".
- s_SecStructPattern:
Use "*" for any secondary structure pattern. Otherwise, specify a regular
expression, for example "?HHH___EE[!_]".
- r_RMSD_tolerance: RMSD threshold to accept a fragment as a solution.
To avoid time-consuming
optimal 3D superposition
during the search, distance Rmsd (i.e. root-mean-square deviation between
two Ca-atom distance matrices of the compared fragments) is used as a measure of
spatial similarity on the preliminary stage of each comparison. However, in the
resulting list of hits, collected in SearchSummary
string array
the optimal 3D superposition coordinate
Rmsd
is presented.
Therefore, RMSDs in the output list may exceed the specified threshold.
Hits will be stored in
s_out .
The following just illustrate the syntax, it does not make much sense,
since you need to loop through a database of objects to find something
interesting.
Example:
read pdb "1crn"
read object s_icmhome + "complex" # object in which to search
find pdb a_1./16:18,20:22 a_2. "xxx----xxx" "V[LIVM]?????G??" "*" 2.5
print s_out
find prosite [ append ] seq_ [ r_minScore] [ i_mnHits]
find matching prosite patterns, store results in the SITES table .
Option append indicates that the results should be appended to the existing SITES table.
The default r_minScore is 0.7 .
The default i_mnHits is defined by the mnSolutions parameter.
Examples:
read sequence "zincFing.seq"
find prosite 1znf_m
show SITES
find pattern [ number ] [ mute ] s_sequencePattern [ i_mnHits] [ { os_objectWhereToSearch | seq_Name | s_seqNamePattern } ... ]
find specified sequence pattern (i.e. "[AG]????GK[ST]" for ATP/GTP-binding
site motif A) in sequences or objects. Hits will be stored in
s_out .
r_out contains the number of found hits divided by the expected
number of hits, as suggested by random distribution of amino-acids with frequencies
from the Swissprot database. This "found/expected ratio" is also reported if l_info=yes.
If this number is 1. it does not mean anything, 10. means that you can publish the
finding and two paragraphs of speculations, 10000. means that somebody else has already
found this hit. Pattern language:
- ^ sequence beginning
- $ sequence ending
- ? one character
- * any number of any characters
- [ACD] alternatives
- [!ACD] all but the specified residues
- char \{ i_min, i_max \} : repetition. E.g. ?\{5,8\} from 5 to 8 of any character.
Other arguments and options:
- number - just report the number of hits instead of reporting each match
- mute - suppress terminal output (used in scripts)
- i_mnHits - (default mnSolutions )
- os_objectWhereToSearch - the target molecular object.
- seq_Name - the target sequence. By default, the search is performed among all currently loaded sequences.
- seqNamePattern - the target sequence name pattern to search through many sequences loaded to the shell.
Returned values
- s_out - text output of all matches
- i_out - the number of hits
- r_out - the ratio to the random expectation (it r_out>1. it means that
the number of hits is larger than the random expectation).
See also the
searchPatternPdb macro.
Examples:
read sequence s_pdbDir + "/derived_data/pdb_seqres.txt" # all pdb-sequences
find pattern "[AG]????GK[ST]" # search for ATP/GTP-binding sites
searchPatternPdb "^[LIVAFM]?\{115,128\}[!P]A$"
# ^ : seq.start; ?\{115,128\} from 115 to 128 of any res.; $ : seq.end
See also:
read prosite, s_prositeDat .
find molcart : chemical search in Molcart database |
find molcart [sstructure|similarity|exact] table=s_molcartTable [ s_smarts|S_smarts|chemarray ] [r_distCutOff] [only] [stereo] [name=s_resultName] [query=s_SQL_condition] [output=s_molcartTable] [number=i_maxHits] [exclude=s_smarts|S_smarts] [append|delete] [ connection_options ]
Performes chemical search in Molcart database.
Connection may be specified by connection_options
Supported search modes are:
- exact : exact match
- sstructure : substructure
- similarity : find similar compounds with distance cutoff r_threshold (between 0 and 1)
Other options:
- The output option allows to save search results in another database table s_molcartTable. It is possible to specify a table in another
molcart connection by using "connectionID;database.table" format.
- With append option, search results will be appended to the output table, if it exists.
- With delete option, the specified output table will be overwritten if it already exists.
Examples :
find molcart sstructure table="screenpub.AllVendors" "c1ccccc1" number=1000 name="myHits" # finds by substruture
find molcart sstructure table="screenpub.AllVendors" "c1ccccc1" number=1000 filter="=4" name="myHits" # finds by substruture (contains 4 benzene rings)
find molcart exact table="screenpub.AllVendors" t.mol # finds exact matches. chemical array pattern
find molcart similarity 0.2 table="screenpub.AllVendors" "CC1=CN(C(NC1=O)=O)[C@H]1C[C@@H]([C@H](CO)O1)O" # find by similarity with distance <= 0.2
See also: Index chemical Nof Find find table
find table : chemical search in ICM table |
find table {T_table|filename=<s_file} {sstructure [group]|similarity|exact} [ s_smarts|S_smarts|chemarray ] [r_distCutOff] [only] [stereo] [query=s_ICM_condition] [name=s_resultName|select] [index=I_index]] [append]
Performs chemical and text search in the local table.
Arguments:
- T_table : input table.
- Alternatively an SDF or CSV s_file may be specified.
- s_smarts or S_smarts chemarray : input pattern
- search type: sstructure similarity exact
- r_distCutOff distance cutoff for similarity search
- With stereo option chirality will be taken into account in substructure and similarity searches.
- group option toggles the special search mode when all atoms in the pattern except attachment points are treated "as drawn" (not other attachments are allowed)
- With only option only number of hits will be returned.
- With select option matched rows in the original table will be selected (not result table will be created)
- name=s_resultName result table name (ignored with select option)
- query=s_ICM_condition extra condition.
Using this argument you can specify an extra logical condition for the query. Column names, string constants and numnbers can be used:
For example : MolWeight<400
- With append option, search results are appended to the result table
Examples :
group table t Chemical({ "CC(=O)Oc1ccccc1C(O)=O", "CC(Nc1ccc(cc1)O)=O" } ) "mol"
add column t Mass(t.mol) name="MW"
find table t query = "MW<160" select # select rows with molecular weight < 160
group table t2 Chemical({ "CC(=O)Oc1ccccc1C(O)=O", "CCCc1c2c(C(NC(c3cc(ccc3OCC)S(N3CCN(C)CC3)(=O)=O)=N2)=O)n(C)n1" } ) "mol"
# compare chemical tables
find table exact t t2.mol select # select rows in t
find table exact t2 t.mol select # select rows in t2
find table similarity t t2.mol select 0.5
find table similarity t2 t.mol select 0.5
# Not enough? Let's increase distance cutoff
find table similarity t t2.mol select 0.8
find table similarity t2 t.mol select 0.8
# this command can also be used to select arbitrary rows in a table
find table t2 select index = {1 3 5}
Index( t2 selection )
See also: Index chemical Find find molcart SMILES/SMARTS other chemical functions
find pharmacophore : pharmacophore search in ICM table |
find pharmacophore as_pharmQuery chemarray3D [all]
Performs a pharmacophore search in chemarray3D using as_pharmQuery.
Example:
read binary s_icmhome + "example_ph4.icb"
find pharmacophore a_pharma. t_3D.mol
all option allows to score all possible mapping for each conformation
See also: Rmsd superimpose makePharma
fix vs_
fix (exclude from the free variable list) specified variables
(such as bond lengths, angles and phases or torsions) in an ICM-object.
This operation can be applied to the
current object
only (use
set object os_object
first). See also: unfix .
Examples:
set v_//omg 180. # set all omega torsions to the ideal value
fix v_//omg # fix all omega torsions
fix v_/8:16,32:40/phi,PSI,omg* # fix the backbone in two fragments
Note using
PSI
torsion reference for correct residue attribution.
for
is one of the ICM flow control statements, used to start a loop in the ICM-shell.
See also while, endfor .
a powerful tool for parallelization of ICM-shell scripts.
fork [ i_nExtraProcesses ]
spawns one or the specified number of extra copies of ICM. This command will only
work in a non interactive mode, i.e. you should run icm like this:
icm _multiProc # from the unix shell or
unix icm _multiProc # from the interactive ICM-shell
The iProc shell variable will contain the current process number.
The parent process has iProc = 0.
An example script _multiProc with a hypothetical macro bigDatabaseJob which takes two arguments:
the number of database chunks, the current chunk number, and the output file name:
read libraries
macro bigDatabaseJob i_nChunks i_Chunk s_outFile # definition
...
endmacro
read sequence "hot"
fork 4
# spawn 4 extra processes, total 5
bigDatabaseJob 5 iProc "out"+iProc
# work on section iProc,
# save results to files out1 out2 ..
wait # also quits all extra processes
unix cat out1 out2 out3 out4 out5 >! out.tab
read table "out.tab"
....
quit
fprintf [ append ] s_file s_formatString arg1 arg1 arg2 arg3 ...
formatted print to a file. The specifications for s_formatString are described in
the printf command section.
In contrast to the print and printf commands, the result of the fprintf command is not shown.
E.g.
fprintf "a.txt" "%s\n" "Day Temparature"
fprintf append "a.txt" "%s %.2f\n" "Monday", 22.4
fprintf append "a.txt" "%s %.2f\n" "Tuesday", 27.334
global any_ICM_command
guarantees that the new ICM shell variables created or read to the shell
are at the main shell level, rather than nested inside macros.
By adding global to any read command in a macro you make
the keep variableName_or_type command at the end of the macro unnecessary.
Example:
macro read_alignment s_file
global read alignment s_file
endmacro
goto
is one of the ICM flow control statements, used to jump
over a block of ICM-shell statements.
See also break , continue .
[ group sequence | Group sequence unique | group table | Group column ]
group sequence [ seq1 seq2 ... | s_seqNamePattern | alignment ] GroupName [ unique { i_MinNofMutations | r_MinDistance } [ delete ] ]
group sequences into a sequence group to perform a multiple alignment
with the align command.
Option unique allows you to select only the different sequences.
If no argument follows the word unique, only identical sequences
will be dismissed, otherwise they will be compared and retained if the
number of differences is greater than i_MinNofMutations (integer argument)
or the distance between two sequences is greater than r_MinDistance (real argument).
The comparison criterion is complex and has the following set of preferences which
may be useful in extracting a representative subset of sequences
from a PDB-database:
- longer sequence is better that shorter
- if the names contain the X-ray resolution 2 digit suffixes (like a19 and 9lyz24, for
resolutions 1.9 and 2.4 respectively), higher resolution is better (1.9 is better than 2.4).
Note Resolution suffixes are added by the read pdb sequence resolution command
- higher number in a pdb-file name is preferable, i.e. 9lyz is better than 3lyz.
(I would not die for this principle, though).
- identical chains have alphabetical preferences (e.g. 9lyz_a is better than 9lyz_b).
Suboption delete tells the program to delete from ICM-shell all the
sequences which were found redundant by the unique option.
Examples:
read sequences s_icmhome+"seqs.seq" # load sequences
group sequence aaa # group ALL the sequences into aaa
group sequence seq3 seq1 seq2 aaa # explicit version of the previous line
align aaa # multiple alignment
read sequences s_icmhome+"azurins.msf" # some of sequences are very close
# but not identical
group sequence myAzur unique 0.15 # 0.15 is a Dayhoff-corrected minimum
# intersequence distance threshold
group sequence myAzur unique 26 # all sequence pairs differ in
# more than 26 positions
group sequence myAzur unique delete # duplicates will be removed
group sequence unique: clustering, redundancy removal and assembly |
group sequence unique= "nt,junk,simple,overlap[ > nRes ]" [ i_wordLen=6 [ i_dictDepth=10 [ i_nofMutations=0 ]]] [ delete ] [ nosort ] [ seq1 seq2 ... | s_seqNamePattern | alignment ] GroupName
If you read a very large redundant set of sequences
and sequence fragments some of which may (i) overlap or (ii) be included in another
sequence, you may want to remove all the redundant fragments, and merge the overlapping sequences
into a smaller number of longer sequences.
In a simple case, if the number of sequences is not too large (less than a few hundred),
this removal of redundancies and fragments in your sequence set,
can be performed with the group sequence unique .. command described in the previous section.
To work on much larger sequences sets and allows to merge overlapping sequences a more advanced
algorithm is needed.
This ultra-fast removal of redundant protein or DNA sequences, may also assemble the sequences
into larger consensus sequences and is invoked by group sequence unique= "options" command.
The command returns the result as a sequence group GroupName.
Will work on tens of thousands of sequences at once.
The important features of the command:
- it can cluster/unique millions of sequences very quickly
(your computer just needs enough memory).
- larger sequences incorporate the matching smaller ones.
- merged or absorbed sequence names are added to the description of their master
unless nosort is specified
- merging (option "overlap") protein sequences requires sticky C-terminus letter 'X'
- the algorithm is based on a dictionary approach and allows to have mismatches
- matching rules:
- for proteins: any letter matches 'X', B=(D or N) and Z=(E or Q)
- for nucleic acids: any letter matches 'N'
- if possible, 'X','N','B','Z' are replaced by a more specific letter
from the matched sequence
Options (they can be combined in a comma-separated string, e.g. "nt,simple,junk"):
- delete - the non-unique sequences are deleted not only from the group but also from the shell
- nosort - do not merge descriptions of the merged sequences
- unique= "simple" - the fastest mode. It will eliminate only the exact duplicates.
- unique= "nt"
means that DNA or RNA sequences are compared (the program assumes protein
sequences by default and a corresponding i_wordLen of six).
This implies the alphabet of A,C,G,T (or U) and the word length should therefore be increased. The default
nucleic acid sequence word length of 13 allows to fit the entire dictionary
into the memory of 256 Mbyte. If your computer has less memory, reduce the
i_wordLen to a smaller value.
- unique="junk"
this option tells the program to remove sequences that do not contain
any meaningful sequence. This means that they are mostly composed of
'X's or 'N's and the intermittent sequence is shorter than i_wordLen.
This option is almost always useful.
- unique="stripX"
this option tells the program to strip X (or N for nucleotide) character stretches
from the beginning and from the end of the sequence. Those will be compressed into just
one character. Useful if your sequences were dusted or repeat-masked.
- unique="noX"
this option tells the program to skip the sequence quality enhancements (replacement
of 'X','N','B','Z' by a more specific letter from the other very similar sequence).
- unique="complement" with this option the complementary nucleic acid sequences
will also be considered and removed if redundant. This option can not be
combined with the "overlap" option.
- unique="overlap[>numberOfRes]"
Merge overlapping fragments in
in addition of deleting the subfragments from the set.
The number of overlaping nucleotides or amino acids can be
redefined, e.g.
unique ="overlap>25"
-
Two amino acid sequences are merged only if there is the overlap
is greater than the threshold (12 amino acids by default)
and the overlapping C-terminal residue is 'X'.
An example of the allowed merge for protein sequences:
s1 VTIKIGGQLKEALLDXGADDTVLEEMSLPGX-------
s2 ----------EALLDTGADDTVLZEMSLPGRWKPKMIG
result VTIKIGGQLKEALLDTGADDTVLEEMSLPGRWKPKMIG
If for some reason your ESTs do not terminate with 'X's, they
can be added by the following procedure:
for i=1,Nof(sequence )
sequence[i] = sequence[i] //Sequence("X")
endfor
-
Two nucleic acid sequences are merged if the overlap is 30 by default.
There are NO special requirements for an 'X' nucleotide flanking the sequences.
- i_wordLen (6 by default, 14 if the unique="nt" option
is specified). The length of a word in the dictionary. The memory
occupied by the dictionary depends exponentially on his length.
- i_dictDepth (10 by default) limits the number of sequence fragments referenced
referenced from a single 'word'. This option prevents the dictionary from growing to much
in memory (what the product of i_wordLen * i_dictDepth ) .
- i_nofMutations (zero by default) the maximal number of mutations/mismatches
between sequences which are considered to be redundant.
See also:
- Trans( seq_ frame ) - to translate a DNA sequence
- align new # to align a cluster and generate the consensus
- Find( sequence , s_keyword ) # to find a retired sequence
with the s_keyword in its title among the newly formed sequences
- show [color] ali_
group table [ copy | append ] [ t_tableName ] [ array [ s_name] array [ s_name ] .. ] header [ shellObj s_name shellObj s_name .. ]
WARNING: The append option of this function is obsolete. Use add column instead.
create a new table from individual arrays or append new columns or table header elements to an existing table.
This example shows how an ICM table including both header elements and columns may look like:
group table t {1 2} "a" {"one","two"} "b" header "trash" "comment" 2001 "year"
Info> table t (2 headers, 2 arrays) has been created
Headers: t.comment t.year
Arrays : t.a t.b
show t
#>s t.comment # TWO HEADER ELEMENTS
trash
#>i t.year
2001
#>T t
#>-a-----------b---------- # TABLE ITSELF
1 one
2 two
show t.comment t.year
trash
2001
Options:
- copy: make a copy of the original ICM-shell object and move it to the table.
- append: add specified ICM-shell objects to the table (default: overwrite).
In the header section each ICM-shell object should be followed by a string specifying
the variable name. The empty string will be interpreted as an indication to keep
the name of the variable. Unnamed constants such as {1 2 3} or "adsfasdf" will be
automatically assigned unique names.
See also: split, Table , add column (to append columns ) .
More examples:
a=1 # integer a
b=2. # real b
group table copy t header a "ii" b "rr"
# create table t with t.ii and t.rr header objects
show t
group table t header a "" b ""
# t with t.a and t.b header objects
show t
group table t {1 2 3} {2. 3. 4.}
# t with automatically named table
# arrays t.1 and t.2
show t
group table t {1 2 3} "a" {2. 3. 4.} "b"
# t with table arrays t.a and t.b
show t
split t # split the table into individual arrays
See also: group by column
group table by column with non-unique values |
group t.keyColumnToGroupBy [ {t.extraColumn|--all} [ s_colRule[,colname] ] ] ... [ separator=s_sepString ]
sorts and groups a table by unique values of the key column t.keyColumnToGroupBy .
Then applies the specified extra column value combination rules (or functions).
The following column cell merging rules can be applied to the numerical arrays:
"uniq"|"mean"|"min"|"max"|"first"|"last"|"rmsd"|"sum"
The string arrays can be grouped with the following subset of the above functions:
"uniq"|"min"|"max"|"first"|"last"
The "uniq" function is the default,
and it means that the unique column values with the same key field will be accumulated
by the group command.
| Function | Description | Array Type
|
|---|
| uniq | merge unique field values into v1,v2,v3 | I,R,S
| | first | keep the first value in the grouped table | I,R,S
| | last | keep the last value in the grouped table | I,R,S
| | mean | find the mean value with the same key | I,R
| | min | find the minimal value with the same key | I,R,S
| | max | find the maximal value with the same key | I,R,S
| | rmsd | find the root-mean-square deviation of values with the same key | I,R
| | sum | find the sum of values with the same key | I,R
|
Example:
group table t {1 2 1 1 2} {1. 2. 3. 4. 5.}
t
#>T t
#>-A-----------B----------
1 1.
2 2.
1 3.
1 4.
2 5.
group t.A
t
#>T t
#>-A-----------B----------
1 1.,3.,4.
2 2.,5.
group table t {1 2 1 1 2} {1. 2. 3. 4. 5.}
group t.A t.B "sum,C" # sum t.B values and call the column C
#>T t
#>-A-----------C----------
1 8.
2 7.
There are two special rules "refmin" and "refmax" which can be applied in conjunction with
"min" and "max" and allow to take rows corresponding to minmum or maximum values in the group.
Note that specifying all option instead of column name will apply operation for all the rest of columns.
Examples:
group table t {1 1 2 2} {2 1 3 4} {"a" "b" "c" "d"} {"a" "b" "c" "d"}
group t.A t.B "min,B" all "refmin,C" name="t1"
group t.A t.B "max,B" all "refmax,C" name="t2"
GUI and Programming Dialogs in ICM |
gui [ simple ]
start menu-driven graphical user interface from command line.
The GUI runs the icm.gui file containing all the commands
invoked by menus or pop-ups.
Option simple allows you to keep your terminal window separate from the graphics window.
% icmgl
gui simple
You can also invoke gui from the command line, e.g.
icm -g # or
icm -g mymenus.gui
icm -G mymenus.gui # keep the original terminal window
Terminal window and fonts
icm -g (or gui command) invokes a GUI frame with its own built-in terminal window .
To influence the font size in this terminal window, modify XTermFont record of
the icm.cfg configuration file, e.g.
XTermFont *-fixed-medium-*-*-*-24-*
If you prefer to keep the original terminal window use the icm -G option
or invoke the gui simple command from ICM shell (I keep alias guis gui simple
in my personal configuration file). In this case you can change the font of the terminal
window with standard means of the window manager.
3D Graphics window
GUI has a GL-graphics window which can be undisplayed with the
undisplay window
command or from GUI by choosing Clear/No_graphics menu item.
See also: gui programming
[ Help browser | help | help commands | help functions ]
get help from icm.htm file. Set s_helpEngine
variable to "icm" (internal help in the text window), "netscape" or
any other web-browser. Important, make sure that the s_webViewer variable
points to your html-browser (e.g. s_webViewer = "firefox" ), see also
File/Preferences/DisplayGeneral .
Getting help in built-in ICM html browser. |
help command|function|icmVariable|s_icmHelpAncorName
help "I:anchorName"
open the specified section in the ICM Language Reference Manual
help "G:anchorName"
open the specified section in the ICM Program Guide
help s_htmlFileName
# the file name must be followed by the pound sign
opens a single html file in the built-in ICM html browser. This file may contain
sections of icm script in the following format:
<!--icmscript name="action1"
read pdb "1crn"
display a_*.
-->
...
<a name="action1" href="#action1">click here to execute icm script</a>
help read pdb # opens the read-pdb section
help "G:learning"
help "I:montecarlo"
help "myfile.html#"
help command|function|icmVariable|icmHelpAncorName
help [ input= s_fileName ] [ word1 word2 ... ]
get full help in either text or html form, redirect it to the specified file, if the input
option is specified. Do not use plural forms of the nouns.
Examples:
help Random
help read sequence
The built-in help engine does not know about keywords.
It is recommended to use the on-line version of the
ICM manual which has a well-developed Index
(download the newest version of the manual, man.tar.gz from the Molsoft ftp site).
help commands [ s_Pattern ]
generates concise list of syntax lines for all or specified commands.
help functions [ s_Pattern ]
generates concise list of syntax lines for all or specified functions.
Examples:
help # type /stereo, and then letter n or Bar
help help # how to get help
help commands # list syntax of all commands
help commands "rea*" # list syntax of all read commands
help functions # list syntax of all functions
help functions Matrix # list syntax of the Matrix family of functions
help # start the browser to use its own search means
help montecarlo # just the command name
help real constant
help read pdb
help Split
history [ unique | full ] [ i_NumberOfLines]
display previous commands. Option unique squeezes out the
repetitive commands.
Without the full option the commands executed from the file
(rather than manually typed) will not be shown. The unique option
hides the repetitions of the same command.
For example:
history 20 # show last 20 lines
history unique
To delete all previous history lines, use the delete session
command. In this case the write session command
will save only the new history lines.
if
is one of the ICM flow control statements, used to perform
conditional statements.
See also: then, elseif, and endif .
[ Info molcart ]
info auto write
Shows information about when autosaving was performed in the current session.
Database additional statistics |
info molcart [ connection_options ]
Prints additional information about the Molcart connection. Connection may be specified
by connection_options
See also: molcart
keep ICM-shell-variable-name1 .. [global]
retain specified ICM_shell variables or their classes (e.g. real, rarray
etc.). This command is used in macros to avoid automatic deletion of
all the local ICM-shell variables.
Also note that four classes
of standard ICM-shell variables,
reals,
integers,
logicals, and
preferences, are automatically restored to their initial
values by default. You can use the keep command to retain their new values.
Examples:
macro rdseq s_pdbName # extract sequence from a pdb-file
read pdb sequence s_pdbName
rz = Resolution(s_pdbName,pdb)
mncalls = 10 # the existing standard shell variable
keep rz, sequence # retain all the sequences and rz
keep mncalls # retain its new value
endmacro
Note that by default values will be kept only for the one level higher.
With global option changes are propogated through the all nested levels to the global
namespace.
Example :
s_a = "global"
s_b = "global"
macro m1
m2
print "m2: ", "s_a =", s_a, "s_b=" s_b
endmacro
macro m2
s_a = "m2"
s_b = "m2"
keep s_a # will be kept only for m1
keep s_b global # will be kept globally
endmacro
m1
print "global: ", "s_a =", s_a, "s_b=" s_b
join [left|right] T1.co1 T2.col2 [ name= s_newTableName ] [ column=S_outputColumns ] [stereo off]
Unites some or all data of the two tables into another table. If the s_newTableName
coincides with the one of the tables, the new table will replace it. The default output table
name is T_join .
The main two arguments are two columns T1.col1 and T2.col2 with matching values.
You can use chemical structure column to join by exact structure match. stereo off option
can be added to ignore chirality.
The column= argument contains the list of column names to be retained in the output table.
Columns in the new output tables.The columns for the output table can be listed as the column=
By default action is to include all columns from both tables.
The columns by which the tables are joined will turn into one, therefore
the total number of columns by default will be N1+N2-1.
Column names of in the joined table.The column takes are preserved unless they collide (i.e. T1.B and T2.B
are both present). The the latter case the first column retains its name while the
column from the second table will be named T2name.colName , (e.g. T_join.B , T_join.T2_B ).
Types of the join commandThere are three types of the join command:
- inner join - the default mode, no keyword needs to be specified.
The inner join returns all rows from both tables where there is a match
in the order of the T1.col1 column.
If there are rows in T1.col1 that do not have matches in T2.col2, those rows
will not be included in the output column.
This table can easily be empty, if the values do not overlap.
The number of rows of the output table is less or equal to the number of rows
in the first table.
Example:
group table t1 {1 2 3} "A" # 1 has no match in t2
group table t2 {"a" "b" "c"} "A" {2 3 4} "B"
show t1,t2
#>T t1
#>-A----------
1
2
3
#>T t2
#>-A-----------B----------
a 2
b 3
c 4
join t1.A t2.B name="t3"
t3
#>-A-----------t2_A-------
2 a
3 b
- leftThe left join returns all the rows from the first table, extended with the matching rows
from the second table.
For T1.col rows there with no matches in the second table, empty fields will be added.
The number and order of rows of the output table is equal to the number of rows in the first
table.
Example:
group table t1 {1 2 3} "A" # 1 has no match in t2
group table t2 {"a" "b" "c"} "A" {2 3 4} "B"
join left t1.A t2.B
T_join
#>T T_join
#>-A-----------t2_A-------
1 ""
2 a
3 b
- rightthe right join returns all the rows from the second table, and appends fiels from the first table if a match is found. It is identical to the left join but with two arguments swapped
( join left t1.A t2.B is the same as join right t2.B t1.A ).
Example:
group table t1 {1 2 3} "A" # 1 has no match in t2
group table t2 {"a" "b" "c"} "A" {2 3 4} "B"
join t1.A t2.B right name="ttt"
ttt
#>T ttt
#>-A-----------B----------
a 2
b 3
c 4
- localthe local join returns all the rows from the first table. Values in the matching (by name) columns will be overwritten with values
from the second table for matched rows.
Example:
add column t1 {1 2 3} {1 2 3}
add column t2 { 2 3} {4 5}
join t1.A t2.A local name="t1"
See also the add table ( command for appending a table with identical column structure ) add column or add column function ( adding new columns )
<>
learn from a training data set and create a predictive model |
[ Learn atom ]
learn t.Y | { Y t } | {Y t M} [all] [ options ]
Options:
type="pls"|"pcr"
- the training method
kernel="dot"|"polynomial [iOrder C0]"|"radial [exp]"|"tanimoto"|"sigmoid [K C]"
name= s_outputModelName
column= S_columnNames
- an array of column names
all
- forces to use all numerical columns in addition to the chemical column
test [= nCross|I_excludedTestRows] # cross-validation group number or test rows
center # enforce the constant @@{w,,0} (see below) to be **zero .
select= R_2_c_eps
select= I_LatentVectorSetForPls
this command takes a real array Y and a matrix or table of descriptors
and builds an optimal cross-validated predictive model for property Y.
This command can build several different types of models:
- Partial Least Square model (PLS-regression) in which Yi = w0 + Sum( wi*Xij )
- Principal Component Regression (PCR) which is a similar linear model as PLSR, but identified and
build in a different way.
The output of this command is the following:
- a predictive model object ( one-element parray )
- a new Ypred column with self-predicted values is added to the training set table
- a new Yprex column with cross-validated values is added to the input table
- rmsError and correlation coefficient for Self- and Cross-validated (CV) predicted values (see the example) in R_out.
See also:
- show parray # to see the create model
- show modelName # to see the model details
Example:
read table "t.csv"
learn t.A
learn t.A
Info> plsRegression model for property 'Apred' built for 95 records.
Corr_R2=0.44 (CV=0.36), rmsError=0.48 (CV=0.51)
learn t.pK test=4 select={2,10,20,30} method="pls"
Models to predict single atom properties. (e.g: pKa)
learn atom chemarray { R_learnValues|RR_learnValues } print=I_fingerprintParams map=S_atomMappingParams [ exclude=r_correctionThreshold [ number=i_nofCorrectionIterations ] ]
Link or assign reaction group arrays to a Rx positions on a chemical scaffold. |
link group scaffold i_R_GroupNumber1 chem_array1 i_R_GroupNumber2 chem_array2 ..
associate corresponding Rn positions on a scaffold with the chemical arrays.
This operation copies the chem_array into the scaffold, therefore the external array
which was used to by this command will remain in place.
After the link operation the external array can be deleted.
link group scaffold i_R_GroupNumber delete
delete the association.
link group scaffold i_R_GroupNumber table
extract the R-group associated with the given position from the scaffold
into a stand-alone shell
chemical table.
One can read an RG file with a scaffold and RGroups and a scaffold with linked,
but hidden, arrays will be created. Then these arrays can be turned into external
chemical tables, edited and linked back to the scaffold.
write table mol scaffold "markush.mol" # creates an RG file
#
read table mol "markush.mol"
enumerate library scaffold.mol
link internal variables of molecular object |
link vs_varChainToBeLinked
link molecule vs_inSeveralIdenticalMolecules
impose a chain of equality constraints
(v[1] = v[2] = v[3] = ... = v[n])
on the specified variables
(or, in other words, keep the specified variables equal to each other).
If one of the variables is changed all the others will be changed.
Energy derivatives are modified accordingly.
This command is great for modeling periodic structures
(e.g. (Pro-Glu)n).
With option molecule , multiple chains of equivalent variables in several
molecules will be formed. Make sure that the variables are properly aligned
and torsion angles are not linked to phase angles.
Examples:
# single chain
build string "ala ala ala ala ala ala ala ala ala ala" # 10 alanines
link v_//phi # all the phi angles should be equal
link v_//psi # all the psi angles should be equal
montecarlo v_/2/phi,PSI v_* # sample just one residue
# multiple chains for a dimer
delete a_*.
build string "leu ala ala leu ala ala ala leu"
copy a_ "b"
mv a_2. a_1.
ds a_
set v_1//tvt1 0.
set v_2//fvt1 180.
fix v_//tvt1,fvt1 # do not link those
link v_//* molecule
montecarlo v_1/* v_/*
Be careful with selections of psi variables in peptides since they
are assigned in ICM to the first atom of the next residue. PSI
specification goes around that attribution.
Groups of linked variables can be deleted with the
delete link variable
command.
Link chains/molecules to sequences and alignments |
link ms_ [ali1 .. [only] | alignment | sequence | seq1 seq2 ... seqN]
link or associate protein molecules with separate sequences or sequences
grouped in an alignment. If alignment ali_ is given, molecules
are also linked to this alignment (note that the same sequence can be
involved in several different alignments).
Amino-acid sequences of amino- or nucleotide- chains in molecular selection
ms_ will be compared with specified ICM-shell sequences
and identical pairs will be linked. Make sure that you specify one
molecule selection, use logical or (|) between the two selections if
necessary. Linking molecules with alignments allows an automatic
residue-residue assignment by the following commands and functions:
superimpose, set tether, Rmsd and Srmsd .
Alignments can be prepared in advance either automatically by the
align command or Align
function, and/or modified by manual editing of the alignment file.
Arguments and options
- ms_ : selection of chains to be linked, for example a_*. that means all molecules of all objects. If no other arugments is specified ICM will rely on the linked sequences to find the latest alignments containing those sequences.
- only : the sequences linking is not changed but the link to the specified alignment(s) is attempted
- alignment : same as option ali .. only , but all alignments in the shell will be tried
- sequence : ICM will try to link the specified chains ( ms_ ) to the sequences in the shell. Name matching will be attempted (e.g. a_1crn.a 1crn_a ) .
- seq1 seq2 .. : try to link selected molecules with specified sequences. Note that the sequence should be idential, usually it means that the sequence was produced with make sequence ms_ .
Short forms of the command:
- link a_*. # try to find latest alignments for all the chains in the shell
- link a_*. ali_target # find the matching sequences leading to the specified alingment, establish links
- link a_*. sequence # search all sequences
Use the ribbonColorStyle="reliability" option and color ribbon
to display the local strength of the alignment.
The strength parameter will be 3D averaged with the selectSphereRadius
radius.
The following illustrates the first step of homology modeling.
Example:
build "newseq" # that is what you want to build by homology
read pdb "template.pdb" # that is the known pdb-template
read alignment "seq3Dali.ali" # prepared/modified sequence alignment
# of the two structures
set object a_1. # this is the first molecule that we
# are going to model
link a_*. seq3Dali # establish links between sequences
# and objects
set tether a_1,2.1 seq3Dali # impose tethers according to the alignment
minimize tether # fold it according to the template
See also:
[ List font ]
list [ alignment ] [ command ] [ factor ] [ function ] [ grob ] [ iarray ] [ integer ] [ logical ] [ macro ] [ map ] [ matrix ] [ object ] [ profile ] [ rarray ] [ sarray ] [ sequence ] [ string ] [ name1 ~~name2 ... ]
list find pattern|word
list ICM-shell objects matching the name pattern (all if name-pattern
is omitted). The plural form can be used for more natural expressions.
'list commands' actually means list all legal words known by ICM (ICM
command words). Use flanking asterisks to search in any position.
Option find or pattern automaticall transforms unquoted word into "*word*"
Examples:
list # list the "most wanted" object-types
list functions
list sequences # if you have aliases, you can
# type 'ls se' instead
list "*my*" # all ICM-shell variables containing "my"
list find my # the same as the previous search
list pattern my # identical to the previous too
list graphic font : listing existing fonts for 2D and 3D graphics labels |
list font graphic
show currently active fonts used in 2D and 3D labels in the GL graphics window.
The output shows the font number, font size, bold-italic-underline and the number of
labels using this font.
The font number refers to the following fonts:
- courier
- times
- arial
- symbol
Example:
list graphic font
-#-F-sz-biu-rf
1 2 24 1
list the content of the icm binary file |
list binary [ s_binaryFileName ]
list the table of contents of the icm-binary multi-object file.
The default name is -"icm.icb" and the default extension is ".icb" .
To read the whole archive, use the read binary command.
For a subset of objects, add the name= S_listOfNames option.
Note that the archive can also store graphical view parameters,
tethers between the objects, and a string buffer with the last
session.
Example:
list binary s_icmhome + "example_docking"
Binary file version: 1
1 mn_saveAll integer 4
2 a integer 4
3 sarray 28
4 sarray 28
5 sarray 396
6 grob 100992
7 grob 88596
8 m_gb map 114280
9 m_gs map 114280
10 biotin object 5490
11 DOCK1_rec object 265167
12 displayView graphical view 293
13 string 5322
read binary name={"biotin","DOCK1_rec"} "example_docking"
list available sequence databases |
list database
gives a list of BLAST databases which can be used by the find database command for fast
sequence database searches.
Normally, your system administrator should update the BLAST sequence files. ICM just needs a path
to this directory which is defined by the $BLASTDB system variable.
The output of the command is saved in the S_out array.
This array can further be processed with the Field function.
Example:
list database
dblist = Field(S_out, 2) # sarray contains search databases
show dblist
a=Sequence("PDPPLELAVEVKQPEDRKPYLWIKWSP")
find database a dblist[2]
Trouble-shooting: If you get an error message, check the following:
- check if you have a directory with the blast-formatted files.
- make sure that your s_dbDir variable is defined in your _startup file and
it contains the path to this directory (do not forget the last slash,
e.g. /data/blast/dbf/ ). You can always assign it manually from the command line.
list molcart [database=s_dbname]
gives a list of tables in the molcart database.
See also: molcart, rename molcart
list molcart connect
lists all registered database connections.
Note that they do not have to be connected to be listed.
[ Load conf | Load frame | Load molcart | Load solution | Load stack object | Load object ]
load things from the program memory (to load from disk files use read command).
The opposite action to load is store.
load conformation from stack |
load conf [os1] i_confNumber [ sstructure ]
assign the i_confNumber-th conformation from the conformational stack
and to the current object (e.g. when you browse conformations accumulated after a montecarlo run).
If i_confNumber is zero, the best energy conformation will be loaded.
Montecarlo stack conformations are sorted according to energy values,
however you may create your stack manually with an arbitrary order.
Option sstructure will automatically recalculate the secondary structure according to the hydrogen bonding pattens.
Note that the full energy of this conformation
which had been stored in the stack can be accessed by the Energy("func") function.
If an object os1 is specified, the conformation is loaded from the stack stored in the specified object.
The command will update the information about the current conformation in the object's stack.
Example:
read stack "f1" # read conformational stack
load conf 0 # set molecule into the best energy conformation
display a_//ca,c,n # display the backbone
for i=1,Nof(conf) # go through all the conformations
load conf i # load them one by one
print Energy("func") # extract its energy
pause # wait for RETURN
endfor
load trajectory frame conformation |
load frame i_trjFrameNumber [ s_trjFileName ] [ sstructure ]
load specified frame from the trajectory.
Note that the full energy of this conformation
which had been stored by the simulation procedure
can be accessed by the Energy("func") function.
Option sstructure will automatically recalculate the secondary structure according to the hydrogen bonding pattens.
Examples:
build "alpha" # build extended chain of the Baldwin peptide
read trajectory "alpha"
display trajectory "alpha" center # a-ha! conf in frame 541 is interesting
load frame 541 "f1" # extract conformation from frame 541
print Energy("func") # print its energy without recalculating
create database table view |
load molcart table[=s_sql_table] {T_|name=s_result_table} [filter=s_filter] [sort=s_sort_columns] [number=i_limit(1000)>] [ <connection_options ]
Loads rows from a database table s_sql_table.
First i_limit rows sorted by s_sort_columns according to conditions specified in the s_filter condition are loaded.
If some options are not provided in the command and the table is specified as, the following fields from the table header may be used:
- queryLimit for i_limit
- queryOrder for s_sort_columns
- queryFilter for s_filter
load molcart table T_ refresh [connection_options]
Reloads requested rows from the database based on the ID values in the primary keys column in .
Connection may be specified by connection_options .
If the connection or the table are not specified, this command tries to get their specification from the table header:
- querySource specifies the database table in database.table format
- queryConnection describes the connection (not by connectionID)
Tables produced by the load molcart command are treated as special "database view" tables in the GUI.
See also: molcart, find molcart, query molcart
load a structural alignment solution |
load solution [ i_solutionNumber ]
loads the specified solution previously stored by the
align rs_residue1 rs_residue2 .. command.
The two output selections as_out and as2_out contain equivalent residues of the
specified solution. The second object will be superimposed according to the Ca atoms of the
found equivalent residues.
Example:
read pdb "4fxc"
read pdb "1ubq"
display a_*.//ca,c,n
color molecule a_*.
align a_1.1 a_2.1 12 1.5 .1
center
load solution 2 # load the second best solution
color red as_out
color blue as2_out
for i=1,10
load solution i
color molecule a_*.
color red as_out
color blue as2_out
pause # rotate and hit 'return'
endfor
load conformational stack from an object |
load stack os
extracts the compressed stack from inside the object and overwrites
the existing stack . This mechanism can be used to switch between several
objects withing one session and use their stacks without any need to work with stack files.
Alternatively, in-object-stacks can be saved with the object and read back to a session.
Example:
read object "objeWithStack.ob"
if(Exist(a_ stack)) load stack a_
See also:
load object objArr
Example:
read pdb "1crn"
read pdb "2cpk"
p = Parray(object)
delete a_.
load object p[2]
a named group of ICM commands with arguments that can be called and executed from the ICM shell.
Macro can be :
- defined or loaded
- called/executed
Macro can call another macro (nested macros).
Syntax of the macro definition:
macro macroName [mute|auto] prefix1_macroArg1 [(default1)] prefix2_macroArg2 [(default2)] ...
icm_commands
endmacro
To invoke macro just type its name and provide arguments if necessary.
Example of a simple macro without arguments:
macro creates_a
# commands
a=1
keep a # used to push 'a' to the upper level, 'keep global' for all levels.
endmacro
creates_a # calling macro a
show a # checking if it creates variable 'a'
Example of a simple macro with arguments:
macro countMetalNeighbors as_ r_dist (5.)
l_commands = l_info = no
nMetals = Nof( Mol( Sphere( as_ , a_*.M , r_dist ) ))
print " nMetals = ", nMetals
keep nMetals
endmacro
read pdb "1are"
countMetalNeighbors a_/his,as* 4.
ArgumentsArgument names should have explicit prefixes
(i_ , r_ , s_ , l_ , p_ , I_ , R_ , S_ , M_ , seq_ , prf_ , ali_ , m_ ,
g_ , sf_ , as_ , rs_ , ms_ , os_ , vs_ , see
above
) to specify their type. If your argument list is incomplete, you will be
prompted for the missing argument. Type q or enter empty string
to quit the macro without execution.
The following features make ICM macros extremely convenient to use:
- no need to explicitly define types of arguments (implicit definition by name)
- one may specify an arbitrary subset of arguments and in arbitrary order
if the arguments have different types
- an easy and flexible way to provide defaults in parenthesis after the argument
- automatic prompting of the missing arguments by default, or substituting the default values if the macro is defined as auto .
- automatic restoration of all the changed standard ICM-shell variables upon execution.
- new variables defined in the macro are local and will be automatically deleted upon execution, unless they are protected with the
keep (or keep global ) command.
Defaults can be provided in parentheses as simple constants (i.e.
i_window (8) ), or as the whole expressions
(i.e. i_1 (mncalls) r_a (Sin(*2.)) i_2 ) . Default expressions can also be omitted.
Options
- auto automatically use defaults for the arguments missing in the command string.
Example: nice "2ins". Since the second logical argument l_wormStyle is missing its default value no
will be used automatically.
- mute will suppress automatic prompting. Do not use parenthesized defaults with
this option.
The predefined standard ICM-shell
integer,
real,
and
logical
variables, as well as
preferences
(i.e. i_out, l_warn, wireStyle, PLOT.logo etc.)
are be automatically restored upon completion, if changed in the macro, to
retain the new value use the
keep
command. Note that the string variables should be restored explicitly.
Many
macros
are supplied with the program.
Examples:
# display molecule as a worm colored from N- to C- term.
macro dsWorm ms_ (a_*) r_wormRadius (0.9)
GRAPHICS.ribbonWorm = yes
GRAPHICS.wormRadius= r_wormRadius
display ms_ ribbon only
for i=1,Nof(ms_) # color each molecule separately
color Res(ms_[i]) Count(Nof(Res(ms_[i]))) ribbon
endfor
endmacro
To invoke the macro, type
read object s_icmhome+"crn"
dsWorm a_1 0.7
or just
dsWorm # and press Enter
A set of
ICM macros
is given in the
_macro
file.
[ Make background | Make bond | Make bond multi | Make boundary | make directory | make disulfide bond | Make drestraint | Make factor | Make flat | Make grob map | Make grob from image | make grob matrix | make grob potential | Make grob skin | Make 3d label | make distance | make hbond | make angle | make torsion | Make image | make key | make map | make map cell | Make map factor | Make map potential | make molcart | SAR analysis | make pca | make peptide bond | Make map xray | Make plot | Make reaction | Make sequence alignment | Make sequence | make tree | Make unique ]
is a family of commands which create new objects of parts of them.
make background : spawning background jobs and processing their output. |
make background s_external cmds [command=s_icmCmdsUponCompletion] [info=s_Message] [name=s_jobName] [simple]
This command runs a set of external commands written in a form that can be executed
as an external process. Upon execution of these external commands the ICM client will
receive the s_Message ( by default it will be the following message:
"background job 'jobName' completed. Press OK to load the results".
You can also specify which commands can be executed by the ICM client to load
the results of this job.
Arguments:
- s_externalCommands # e.g. "grep a *.tx >! b" use Path() function to run an ICM thread
- name= s_jobName # e.g. name= "j1"
- command= s_\n_separated_list_of_ICM_commands # default is empty string.
- info= s_completionMessage # e.g. "Finished. Press OK to read the model"
The make background command the following features:
- it is portable and works under different operating systems.
- it needs ICM in the GUI mode ( icm -g )
- to specify a correct external ICM call, you can use the Path( unix, s_options ), e.g.
make background Path(unix "_action ") command="read object OUTPUT\nread stack OUTPUT"
simple option creates completely detached job. ICM will not keep any information about that process.
This option is useful if you want simply to launch an external program and don't want to have any further
interaction with it.
make background "ls > tmp.txt" command="read string \"tmp.txt\" " info="" # the empty info arg suppressed the dialog
show s_out
#
make background name="job1" Path(unix,"_myScript",{"-n","-s"}) # Path(unix,..) returns current ICM location
A Windows example:
make background "\"c:\\Program Files\\Microsoft Office\\Office10\\WINWORD.EXE\" C:\\Temp\\Doc1.doc" simple
See also:
make bond: forming a covalent bond |
make bond as_singleAtom1 as_singleAtom2 [type=i_type]
adds a covalent bond between two selected atoms in a non-ICM molecular
object (e.g. X-ray or NMR pdb-entries) or resets the bond type.
The command is used to correct
erroneous connectivity guessed by the read pdb command.
This correction makes the molecule displayed in the graphics window look
better and is necessary before conversion into an ICM molecular library entry
(see icm.res or user library files) using the write library
command.
It can also be useful to display a connected Ca-trace.
In interactive graphics mode you may type make bond
and then click two atoms with the Control button pressed.
The type= option allows to set the bond type ( i_type ={1|2|3|4} ,
for a single (default), double, triple and aromatic bond, respectively.
make bonds in an atomic chain |
make bond chain as_chainOfAtoms
connects specified atoms in a linear chain. Useful for PDB entries
containing only Ca atoms.
Examples:
read pdb "4cro" # contains only Ps and Ca's
display # Milky sausage
make bond chain a_4cro.//p # connect P atoms of the DNA backbone
make bond chain a_4cro.//ca # connect Ca atoms of the protein backbone
See also:
delete bond.
make boundary: Poisson electrostatics |
a command to prepare for the boundary element electrostatic calculation
make boundary [as_]
this is an auxiliary command which is required if you need to calculate the
electrostatic free energy with the boundary element method several times.
Optional atom selection as_ from which the electrostatic field is calculated
can be specified.
This may be the case if the charge distribution changes but the shape does not.
However, the boundary does depend on the dielectric constant parameters such as
dielConst and dielConstExtern . If you intend to change them the boundary need to
be remade every time.
This command does not generate any output by itself,
it just creates the internal table which can later be used by the
show energy command or the Potential( ) function.
The dielectric boundary is a smooth analytical surface which is built with the contour-buildup
algorithm ( Totrov,Abagyan, 1996 ). The surface looks like the skin surface, but uses
different radii which were optimized against experimental LogP data. Both skin and the dielectric
boundary uses the same water radius ( the waterRadius parameter). The "electrostatic"
radii used by ICM to calculate the boundary are stored in the icm.vwt file.
See also:
REBEL,
electroMethod,
delete boundary,
show energy",
term "el",
Potential( ).
Examples:
electroMethod="boundary element"
read object s_icmhome+"rinsr"
delete a_w* # get rid of water molecules
make boundary a_1 # calculate parameters of the dielectric boundary
show energy "el" # electrostatic energy by BEM
e1=Energy("el") # extract the energy
set charge a_/33/cd*,hd*,ne*,he*,cz,nh*,hh* 0. # uncharge arg33
show energy "el" # electrostatic energy of the uncharged Arg33
e2=Energy("el") # extract the energy
print e1-e2
delete boundary # memory cleanup
make directory s_Directory
make specified directory. Example:
make directory "/home/doe/temp/"
See also: set directory, delete directory, Path(directory)
make disulfide bond [ only ] as_atomSg1 as_atomSg2
form breakable disulfide bonds between two sets of specified sulfur Sg atoms,
regardless of the distance between them. Forming the bond means that two
Hg hydrogens of Cys residues are dismissed, a covalent bond between two Sg
is declared (but not enforced)
and four local distance restraints (see
icm.cnt)
are imposed. These restraints are indeed local, since two Sg atoms only start
feeling each other when they are really close, otherwise the energy contribution
is close to zero
. Option only causes deletion of previously formed
disulfide bonds, otherwise the new one is added to the existing list of
disulfide bonds.
Examples:
build string "se cys ala cys" # sequence containing two cysteins
display # display an extended ICM model of the sequence
# set only one SS-bond, disregard all previous
make disulfide bond a_/1 a_/3 only
montecarlo # MC search for plausible conformations
See also:
delete disulfide bond
and (important!)
disulfide bond.
make drestraint: extract distances structure |
make drestraint as_select1 as_select2 r_LowerBound r_UpperBound r_LowerCorrection r_UpperCorrection [s_fileNameRoot]
create two files containing the list of all the atom pairs specified by
two selections (i.e. a_* a_* - all the pairs; a_1//* a_2//* atom pairs
between molecules 1 and 2 for which the interatomic distance lies between
r_LowerBound and r_UpperBound.
Note: it is critical that both selections are in the same object.
Only tethers can pull to atoms of a different object.
For each pair of atoms a
distance restraint type
is created with lower bound less than the actual interatomic distance by
r_LowerCorrection and upper bound greater than the actual
interatomic distance by r_UpperCorrection. This command can be
used for example to impose loose distance constraints between two subunits.
The number of the formed drestraints is returned in the
i_out variable.
See also:
set drestraint as_1 as_2 i_Type
if you want to impose a specific drestraint.
Examples:
read object s_icmhome+"complex" # load a two molecule complex for refinement
# extract all Ca-Ca pairs between 2 and 5 A
# for each pair at distance D create distance
# restraint type with lower bound D-2.5 and
# upper bound D+2.5
make drestraint a_1//ca a_2//ca 2. 5. 2.5 2.5
make factor: FFT calculation of diffraction amplitudes and phases |
make factor map_Source {I_3Maximal_hkl | r_resolution} [s_factorTableName[s_ReName[s_ImName]]]
calculate structure amplitudes and phases from the given electron density
map by the Fast Fourier transformation. The table ' s_factorTableName'
with h,k,l and structure factors
will be created (further referred to as T for brevity).
It will contain the following members:
- three
integer arrays of Miller indices: T.h T.k T.l
- two
rarray of real and imaginary parts of the calculated
structure factors. Default names: T.ac and T.bc, respectively.
Alternative names can be explicitly provided in the command line.
If structure factor table s_factorTableName already exists,
structure factor real and imaginary components are created or updated
in place. Any other arrays containing experimental, derivative or control
information may be added to the table and participate in selections and sorting.
Example:
read map s_icmhome+"crn" # load "crn.map"
set symmetry m_crn 1
make factor { 5 5 5 } "F" # h_max=k_max=l_max=5
# F.h, F.k, F.l, F.ac, F.bc are created
show F
group table append F Sqrt(F.ac*F.ac + F.bc*F.bc) "Fc" Atan2(F.bc,F.ac) "Ph"
sort F.Fc
show F
make flat chem_array [rotate] [hydrogen] [window=r_WidthToHeightRatio] [index=I_indices]
convert a chemical array into standard automatically generated 2D chemical drawings in place
(compare with Chemical( Smiles( chem_array ), smiles ) which does not touch the source array).
A chemical array can created by the read table mol command.
The compounds in the source file can be 0D (all coordinates set to 0), 3D or 2D.
In all cases these x and y coordinates are can not be used for chemical drawing and
one needs to use the above command to generate 2D drawings.
The command also preforms rotation for optimal fit into rectangle with specified width to height ratio ( window argument ).
Default ratio is 1.5.
Other options:
- rotate : does not coordinate assignment, preforms only best fit rotation
- hydrogen : keep explicitly drawn hydrogens
- index : performs operation only on selected compounds
Example:
read table mol s_icmhome+"template_3D.sdf"
make flat template_3D.mol
See also: Chemical , read table mol .
make grob map command to contour electron density or grid potentials |
make grob m_map [header] [solid] [box] [I_indexBox[1:6]] [[exact] [field=]r_sigma|r_absValue] [as_[margin=r_]] [name=s_]
make grob m_map add r_sigmaIncrement
# build a contour that can be modified
make grob g_existingContourGrob add r_sigmaIncrement
# rebuilds and redraws an existing contour
Create graphics object by contouring electron density map at a given threshold.
threshold: By default the contouring level is calculated as the mean map value (returned
by Mean ( m_map ) ) plus mapSigmaLevel times root-mean-square deviation value.
If a real value argument is provided, the mapSigmaLevel shell variable is redefined.
Option exact allows to specify absolute value at the contouring is performed.
If atom selection is specified, contour will only be built around as_, with the optional additional margin. Helpful in contouring ligand from electron density map.
Other options:
- header this option adds the name of the source map and the command to recalculate the grob at different contour level.
Example:
build string "his glu"
make map potential Box( a_ 3.)
make grob m_atoms 3. # 3 sigmas above the mean
# make grob m_atoms .2 exact # countour at 0.2 level
# .2 or .1 exact is useful to detect almost closed pockets
display g_atoms
#
make grob m_atoms exact 0.15 # at value of 0.15
display g_atoms
#
mapSigmaLevel = 1.5
make grob m_atoms add 0. # at mapSigmaLevel
make grob g_atoms add -0.1 # at 1.4 sigma
#
loadEDS "1atp" 0.
read pdb "1atp"
make grob m_1atp 1.5 a_atp
cool a_
display g_1atp
Defaults:
- create simple chicken wire map (sections in three sets of planes, NOT solid)
- take the current map;
- generate the name of the grob which is the same as the map name except for the g_ prefix;
- contour the whole map
- use threshold value from the ICM-shell real variable mapSigmaLevel .
- mapSigmaLevel is changed if the exact option is used
Option solid tells the program to create a solid
triangulated surface which can later be displayed by
display grob solid
command. The threshold is expressed in the units of standard deviations
from the mean map value, i.e. 1.0 stands for one sigma over the mean.
I_indexBox [1:6] is optional 6-dimensional
iarray
containing
{ i_startSection i_startRow i_startColumn i_NofSections i_NofRows i_NofColumns }.
It overrides the default, contouring the whole map.
Option box adds surrounding box to the grob.
make grob image command to create a vectorized graphics object. |
make grob image [name=s_grobName]
create a vectorized
graphics object (grob)
from the displayed wire or solid objects. The information about colors will be
inherited. Very useful if you want to export wire,
ribbon
or CPK into another graphics program, since graphics objects can be
written
in portable Wavefront (.off) format. Further, graphics objects can exist
independently on the molecules which may be sometimes convenient. Also, underlying
lines and vertices can be revealed. The graphics object created from the displayed
solid representations assigns and retains color information as lit in a given
projection. These colors can not be changed. Use special
make grob skin
command to generate a more elaborate graphics object from skin .
Examples:
read object s_icmhome+"crn"
ds a_crn.//!h* ribbon # ribbon
make grob image name="g_rib"
display g_rib smooth only # try select g_rib and Ctrl-X,Ctrl-E/W etc.
# option smooth eliminates the jaggies.
write g_rib # save to a file
make grob [solid] [bar[box]] [color] M_matrixName [r_istep r_jstep r_kstep] [[name=]s_grobName]
Create a three-dimensional plot from M_matrixName, so that
x=i* r_istep, y=j* r_jstep and F(x,y)= k* M_matrixName[i,j].
Options:
- bar : generate rectangular bars for each i,j matrix value instead of a smooth surface.
- box : add a box around the 3D histogram
- color : color grob by value according to the PLOT.rainbowStyle preference.
- solid : tells the program to triangulate the surface
Examples:
read matrix s_icmhome+"def"
make grob def solid
display
# OR
read matrix s_icmhome+"ram" # phi-psi energy surface
make grob ram 1. 1. 0.1 # create the surface
display g_ram magenta # display it
make grob solid ram 1. 1. 0.08 name="g" # create the surface
display g solid gold # display it
make grob potential [solid] [as_1 [as_2]] [[field=]r_potentialLevel] [grid=r_gridCellSize] [margin=r_margin] [[name=]s_contourGrobName]
Example:
make grob potential a_lig
create graphics object of isopotential contours of electrostatic potential
which takes not only the point charges but also the dielectric surface charges
resulting from polarization of the solvent.
This potential need to be calculated in advance by the
boundary element algorithm.
Contours can be displayed in the wire and solid representations (see also
display grob). The default parameters are:
- r_polentialLevel 0. kcal/mole/electron_charge_units.
- r_gridCellSize 0.5 A (you may want to increase it up to 2A for speed).
- r_margin 5.0 A (you may want to reduce it for speed).
See also:
make map potential,
electroMethod,
make boundary,
show energy "el",
term "el",
Potential( ).
Examples:
build string "se his arg glu"
electroMethod="boundary element" # REBEL algorithm
make boundary
make grob potential solid 0.1 grid=2. margin=4. name="g_equipot1"
display g_equipot1 transparent blue
make grob potential solid field=-0.1 grid=2. margin=4. name="g_equipot2"
display g_equipot2 transparent red
ds xstick residue label
make grob skin or surface |
make grob skin [wire | smooth] [as_1 [as_2]] [[name=]s_grobName] [r_transparency]
make grob surface [color] [wire | smooth] [as_1 [as_2]] [[name=]s_grobName] [r_transparency]
create grob containing the specified molecular surface (referred to as skin).
If the wire option is given the transparent wire grob
will be created (solid grob is the default).
It will have the same default color.
The disconnected parts of this grob may later be split .
The grob will be named by the default name g_objName unless
the name is explicitly specified.
The final actual name will be returned in s_out .
The smooth option allows to close the cusps. This closure is necessary to
enable the compress grob operation.
The compress g_ command allows to dramatically simplify the triangulated surface
and reduce the number of triangles. Typically compress g_ 1. will reduce the
number of triangles by an order of magnitude.
|
|
A grob can later be colored with the color grob potential command.
Examples:
read object s_icmhome+"crn"
# skin around a substructure, (just as an example)
make grob skin a_/1:44 a_/1:44 0.6
split g_crn_m
display g_crn_m2 a_//*
show Area(g_crn_m2), Abs(Volume(g_crn_m2))
make grob skin a_ a_ name="gg1" # display gg1 now
make grob skin wire name="gg2" # display gg2 now
make grob skin smooth a_/1:20 a_/1:20 name="gg3"
compress gg3 1. # simplifies the surface
The transparency can also be set with the set grobname r_transparencyLevel
command.
See also: set color to set atom colors
Creating 3D label objects |
A number of commands in ICM allow to create "3D label" objects which help to measure and annotate geometry in the 3D space,
like distances and angles. Some 3D labels, like hydriogen bonds, illustrate concepts which depend on the geometry
and the structure of molecules.
3D labels are stored in a parray object of a "label3d" subtype.
3D labels defined on atoms are dynamic: visual angle/distance information is updated depending
on the changes in the atom geometry.
3D label creation commands have similar structure.
Commands which are currently available are:
Each of these commands has specific arguments. but there is a number of common options:
| name = s_n | the name of the created array of 3D labels
| | append | append new 3D labels to the existing array;
| | delete | forcefully delete the array before repopulating it with 3D labels;
| | refresh | keep all existing 3D labels which are outside the specified selection, rebuild 3D labels inside the selection;
| | display | display the created labels.
|
make distance as_1 [as_2|auto] [molecule|align] [r_maxdist] [3d label options]
creates a parray with distances between all atoms in as_1 and as_2,
or all atoms within as_1 if the second selection is not specified.
Output
- the distance parray
- i_out with the number of distances in that parray
Examples:
read object s_icmhome+"crn"
display ribbon wire
make distance a_//oe* a_//ne,nh* display
make distance a_//oe* a_//ne,nh* 5. delete display
See also:
make hbond as_1 [as_2 | auto] [molecule | align] [r_maxdist] [3d label options]
creates an array with all hydrogen bonds contained in as_1, or between as_1 and as_2 if the second selection is specified.
Hydrogen bonds are calculated according to several shell parameters listed below.
It is possible to specify the upper limit for the distances between atoms which will be considered as potential bond
using the r_maxdist value.
Other options and shell parameters:
Examples:
read object s_icmhome+"crn"
display ribbon wire
make hbond a_ display GRAPHICS.hbondMinStrengh=0.5 name="x"
t = Table(x,distance)
sort t.dist
show t[1]
See also:
make angle as_3_connecting_atoms [3d label options]
creates a planar angle 3d label. Requires a selection containing 3 connecting atoms.
See also: make 3d label , Table(angles,distance)
make torsion as_4_connecting_atoms [3d label options]
creates a dihedral angle 3d label. Requires a selection containing 4 connecting atoms.
Examples:
read object s_icmhome+"crn"
display ribbon wire
make angle a_/22/c | a_/23/n,ca display
make torsion a_/22/ca,c | a_/23/n,ca display
See also: make 3d label , Table(tors, distance) .
make/store graphical image to image parray |
make image [library=s_albumName] name="Party2007.png"
will save the graphical image to the internal album (a parray ).
The name will be used if you decide to save the album to a file.
Example:
make image # will create album if it does not exist
make image #
make image #
delete variable album 2
make key {s_smiles | as_} [S_arrayOfFragmentSmiles]
Note: the make key command is obsolete. The new chemical fingerprints are dynamic and
does not have a predefined set of fingerprints of variable length.
The new fingerprints are used in the following commands and functions:
This command generates a binary chemical key, i.e. a bit-string in which each bit corresponds to
a chemical substructure, converts the bit-mask into
the hexadecimal string and saves this hex-string in s_out .
The bit-string with chemical substructure information can then be
used to calculate the Tanimoto similarity distance with another chemical key.
By default the make key command uses a built-in array of 96 substructures,
and generates a 24-character hex-string ( each hex-character codes for 4 bits ),
however any string array of subfragment smile-strings ( S_arrayOfFragmentSmiles )
can be provided.
The hex-string can be converted back into an array of bits packed into
integers with the Iarray( { s_chemkey | S_chemkey } key ) function.
The bit-distance matrix between two arrays of bit-strings represented by two iarrays
can be calculated with the
Distance( Iarray( S_1 key ) Iarray( S_2 key ) i_nBits [ key ] ) or
Distance( Iarray( S_1 key ) Iarray( S_2 key ) i_nBits simple )
functions, where the number of bits, i_nBits, is usually 96,
unless you use a user defined array of fragments. There is also a weighted form
of the chemical key distance (see the Distance function).
By default, or with the key option, the function returns matrix with
the Tanimoto similarity distance (0. all bits are the same, 1. no bits in common),
while with the simple option the second chemical key is considered as
a sub-fragment and the distance becomes 0. (identity) if the sub-fragment is
present in the first bit-mask.
Examples:
read mol s_icmhome+"ex_mol.mol"
S_key = Sarray()
for i = 1, Nof(a_*.)
set obj a_$i.
build hydrogen
set type mmff
convert
smil = Smiles(a_)
make key smil
S_key = S_key // s_out
delete a_
endfor
S_key
A family of commands producing maps. It includes:
make map cell R_6cellParameters I_3NofSteps [R_6box | I_6box] ["zxy"] [as_] [name=s_mapName]
create an electron density distribution for atom selection as_
(all atoms of the current object by default) on a three-dimensional grid.
See also make map potential for a rough electron density map.
The electron density is calculated from the cartesian coordinates of the
selected atoms using a 2-Gaussian approximation. If the l_xrUseHydrogen logical
is set to no , hydrogen atoms are ignored.
The following parameters are taken into account:
- the shape of the Gaussian is influenced by the individual atomic b-factors (see set bfactor).
- addBfactor is added to individual atomic B-factors
R_6cellParameters is a real array containing { a b c alpha beta gamma } parameters. Optional
R_6box or I_6box arrays define the corner of the map box
(closest to the origin) and its sizes
( { x1 y1 z1 dx dy dz } or { nx ny nz dnx dny dnz }, respectively).
The whole cell is taken by default.
Examples:
read object s_icmhome+"crn"
make map cell {5. 5. 5. 90. 90. 90.} 0.5 a_//ca,c,n
make map factor : calculate electron density map from structure factors |
make map factor [T_factor] [m_map]
calculate an electron density distribution on a three-dimensional grid from a
structure factor table of the Miller indices, reflection amplitudes and phases.
Requires that the map is created before with the make map command.
If optional arguments are not given the current map
and/or current factor will be used.
A new empty map can be created from an empty selection by the
make map a_!*
parameters # see the
make map cell command.
make map potential: grid energies, converting crystallographic electron density maps |
|
make map potential [simple|occupancy] [s_terms | name=s_mapname] [as_] {[R_6box] [r_gridCellSize] | cell=map } [ l_ecep=no|yes ]
create a property map for the as_ selection.
This command is used for low-resolution surface generation or to make
grid potential maps for fast docking.
The optional arguments are the following:
- s_terms : a smooth Gaussian atom density map is generated by default,
otherwise the grid energy maps specified by the 2-letter terms are calculated, e.g. gc,gh,gs,ge,gp ).
The names of the generated maps are standard and can not be changed.
- as_ selection : All atoms of the current object are taken by default.
- r_gridCellSize : by default is 0.5 A for small objects, the default increases with the size of the object. We do not recommend to use values over 7 A for very large objects.
- R_6box : default it is a box around the selected atoms plus 3A margins.
The box defines coordinates of the two opposite corners of a box (see also the Box function).
- Option cell = map replaces the box and the grid size and uses the parameters from the map instead. This option also allows to use an oblique cell.
- flag l_ecep = no this option affects the "gb" hb-donor field calculation (see below). It allows to project the field from the donors (i.e. D-H) and for the hbond acceptors further away from the donor atom along D-H bond vector to map out a realistic location for a heavy atom acceptor.
Each individual term (say, "gp") may result in creation of one or several (up to seven)
different grid maps. These are the maps created under different terms:
- "gh" : m_gh (grid for hydrogen probe)
- "gc" : m_gc (grid for a standard heavy atom probe, say C,N,O), m_gl (grid for large atoms, like metals and halogens)
- "ge" : m_ge (grid for electrostatic potential)
- "ge" with Generalized Born ( electroMethod = 5): m_ge
- "gb" : m_gb (grid for the hydrogen bonding potential). Combines donor and acceptor fields. l_ecep variable affects the donor field.
- "gp" : up to seven grids named as m_g1, m_g2, m_g3, m_g4, m_g5, m_g6, m_g7
|
|
|
m_atoms contoured at 0.3 exact level. The 0.5 level is closer to the van der Waals surface.
|
- default (no terms specified): atomic density map m_atoms ; if contoured,
m_atoms generates a smooth Gaussian envelope around a molecule (see Figures)
- simple : option to enforce a single m_gc map instead of the default pair of maps: m_gc and m_gl.
- occupancy : option to attenuate the map intensity by the atom occupancy.
build string "his arg"
display cpk
make map potential Box( a_ 3.)
# wire surface
make grob m_atoms 0.3 exact # contours near vw-radius.
display g_atoms
# solid surface
make grob m_atoms solid 0.5 exact
display g_atoms smooth
- term "el", map m_el : Coulomb electrostatic grid, contributions truncated
at +-100. kcal/mol.
build string "se his arg"
make map potential "el" Box( a_/1,2/* , 3. )
display a_
display map m_el {1 2 3}
make grob m_el exact # contouring at 0. potential
display g_el
set occupancy a_/arg/!ca,c,n,o,cb 0.3
make map potential simple occupancy "gc" Box( a_/1,2/* , 3. )
# enforce a single map with attenuated side chain
- term "gh" : van der Waals grid for a hydrogen probe,
grid potential is truncated from above according to the
GRID.maxVw parameter;
- term "gc", map m_gc : van der Waals grid for a carbon probe;
grid potential is truncated from above according to the
GRID.maxVw parameter; By default, terms "gc" will generate two maps: m_gc and m_gl ,
the van der Waals map for large atoms with van der Waals radius larger than 1.8A.
To enforce pushing all non-hydrogen atoms to a single m_gc map, use the simple option.
- term "ge", map m_ge : electrostatic grid;
grid potential is truncated from above and below according to the
GRID.maxEl and
GRID.minEl parameters;
- term "gb", map m_gb : hydrogen bonding grid;
- term "sf", map m_ga : surface accessibility grid.
This map is not an independent term, but allows to correctly
calculate atomic accessible areas if a part of the system
is presented by the grid potentials. If a map named m_ga
is present it will be automatically taken into account
in energy calculations of the "sf" term.
Fine-tuning the maps
Sometimes you want the van der Waals grids, "gh" and "gc", generated from the whole receptor,
while the "ge" or "gb" grids generated only from a small region of the receptor.
In this case you can run the command two times with different source-atom selection.
Example:
read object s_icmhome+"crn"
make map potential "gh,gc" a_1 Box(a_1)
make map potential "gb,ge,gs" a_1/15:18,33:46 Box(a_1)
write m_ge m_gc m_ge # write three maps at once
A different method is to use the
Bracket( m, R_6box ) function which sets
everything beyond the box to zero. Noted that the in the above method only the selected residues make contribution.
In the following method all residues make contribution, and then the resultant map is truncated in space. Example:
rename m_ge m_ge1 # Compare with the map generated in previous example
make map potential "gh,gc,gb,ge,gs" a_1 Box(a_1)
m_ge = Bracket(m_ge, Box( a_1/15:18,33:46 )) # redefine m_ge
display m_ge
display m_ge1
See also:
make map potential m_electronDensity to generate a rectangular grid from
an oblique crystallographic density map.
make molcart table T_ name=s_dbtable [ make_options] [ connection_options ]
Imports data from ICM table T_ into database table s_dbtable.
make molcart table s_filename [ mol | smiles | separator [header] ] name=s_dbtable [ make_options] [ connection_options ]
Imports data from the s_filename file into database table s_dbtable.
The file format may be guessed from the s_filename or specified explicitly. Supported formats are:
- mol for SDF
- smiles for SMILES
- separator for CSV
For CSV files the header directive tells to treat the first row in the file as column names
Connection may be specified by connection_options .
Other options ( make_options ) available:
- append : append to an existing database table (as oppposed to overwriting it)
- column = S_column_specs : allows to specify requested columns and some other properties of them in a special format.
make molcart table input=<[s_connectionID;][s_db.]s_sourceTable> name=<[s_db].s_targetTable> [append] column=S_column_specs connection_options
Copies data from one molcart table to another.
- input : string which contains source table table name (from which data will be copied).
Optionally you may add connection ID and database name.
- name : string which contains target table and database (optionally) names.
- append : append to an exiting table. If table does not exist it will be created.
- column : sarray with column names to be copied. By default overlapping subset of column names between two tables will be used.
Example:
add column t Chemical({"CCC","CCO"}) # create a local table
make molcart table t name="test.t" # copy it to molcart
make molcart table input="test.t" name="test.tt" # make another copy
make molcart table input="test.t" name="test.tt" append # append the same table again
print Nof( "test.t" sql ), Nof( "test.tt" sql ) Nof( "test.tt" molcart unique )
See also: molcart, write molcart.
make molsar {T_chemicalTable|X_chemicalArray} X_scaffold [auto] [append] [name=s_ResultTable>]
Performs R-group decomposition using X_scaffold. This command is similar to split group command.
The only difference is that single table will be generates. For each R-group in the X_scaffold a column
will be created.
With append option the original compound will be added to the result table.
With auto option no explicit R-group specification is needed. The command will automatically find
attachment positions and create appropriate columns. Columns which are invariant (no changes in substituent)
will be excluded.
Example:
group table t Chemical( { "C1NC(C(C1O)O)CO","C1NC(C(C1O)C)CO" } )
make molsar t Chemical("C(NCC1)C1") auto name="tsar1"
make molsar t Chemical("C(NC(C1)[R1])C1[R2]") auto name="tsar2"
See also: split group , split-groupenumerate-library , make reaction , Replace chemical , Find chemical
make pca [append] T [i_nPC=3] [r_tradeoff=0.010000] [options]
Options:
- name= s_prefixForPCcolumnNames, e.g. make pca t name="pc" will create columns pc1 and pc2
- select= I_rows , allows to specify rows should be analyzed that e.g. 1,2,5,8,12. Other rows will get zero values.
- column= S_columnNames , allows to specify columns for the PCA analysis. The column names can be specified in any of these formats:
"colName" , ".colname" , "tabname.colname", e.g. {"A","B","C"} . See also Name (e.g. Name( t number ) for the names of all numerical columns .
make peptide bond as_C as_N_or_S
form the peptide bond between two selected C- and N- atoms, or the thioester bond
between C- and S- atoms. The bonds may be formed
between the terminal amino- and carboxy- groups (a_/1/n and the last c),
as well as between such amino acid side-chains groups as
a_/lys/nz and a_/asp,asn/cd, a_/glu,gln/cg.
See also:
delete peptide bond
How to modify an ICM-object .
Example:
build string "se nh3+ gly gly gly gly his coo-"
display
make peptide bond a_/nh3*/n a_/his/c # form a cyclic peptide
display drestraint
minimize "ss"
minimize "vw,14,hb,el,to,ss"
#
# form thioester bond
#
build string "se cys ala ala ala glu"
display
make peptide bond a_/1/sg a_/5/cd
minimize "ss" # term "ss" is responsible for the extra drestraints
Generate an attractive grid map from crystallographic electron density map for refinement |
make map potential map_Xray [as_] [R_6box] [r_gridCellSize] [smooth] [name=s_]
converting crystallographic density map which is not suitable for energy manipulations
to a grid potential m_xr . The source map starts at {0.,0.,0.}, can be oblique with uneven spacing.
However the resulting map is always equally spaced rectangular map in any area of space.
This grid potential can be used in real space refinement.
Find the description of the arguments in make map potential command.
Option smooth uses the Gaussian smoothing of the values.
loadEDS "1atp" 0. # downloads electron density map m_1atp
read pdb "1atp"
make map potential m_1atp a_atp # map around around ATP
m_gc = - m_xr # a possible use. Also possible with "gp"
set terms "gc" # add gc germ for minimization
See also:
make plot: Adding a scatter plot or a histogram to a table |
make plot T s_plotArgs [name=s_plotname [append]]
This command creates a plot belonging to table T .
Each table can contain multiple plots and all the plots belong to the following member of
the table header: T.plot
The s_plotArgs string contains the arguments, e.g.
x="Random(1.,10.,100)"
add column t $x $x Shuffle(Sarray(50,"red")//Sarray(50,"blue")) $x $x name={"x","y","C","S","sz"}
make plot t "x=A;y=B;color=C;shape=D;size=E;" # or
make plot t "x=A;y=B;color=C;;element=rectangle;center=1.3,2.4;radii=1.3,2.0;color=red"
The syntax of the s_descr string containing other arguments of the make plot command
is the following.
plot_element[;;plot_element2;;...][general_plot_properties]
Plot elements.Each double-semicolon separated section is either a plot/histogram or a geometrical element.
- XY scatter plot, contains both x= and y= plus optional color= , rainbow= and size= .
- histogram data plot, contains either x= OR y= , not both of them, plus
- element=rectangle;center=x,y;radii=rx,ry
- element=rectangle;x1=x1;y1=y1;x2=x2;y2=y2;
- element=ellipse;center=x,y;radii=rx,ry
- element=polygon;xy=x1,y1,x2,y2,..
Scatter plot arguments
- x=columnName # must be present
- y=columnName # must be present
- color=color_or_columnName;
- (requires color= ) rainbow=color1[/color2...][,from:to]
(e.g. make plot t "x=A;y=B;color=C;rainbow=red/white/blue,100:150,linear/0:0/0.7:0.5/1.:1"
- size=number or column;
- shape=shapeName_or_columnName. The shape names are the following:
shape=Circle|DTriangle|Diamond|Cross|DiagCross|UTriangle|LTriangle|RTriangle|Pentagon|Hexagon
(the specification is case insensitive, e.g. shape=diagcross )
- labels=columnName ( or label= )
- regression=linear|logarithmic|no
- style=dots|connected|splines|bars|triangles
Histogram plot arguments
The syntax of the columnName can refer to one or multiple columns as follows:
columnName|{columnName[,columnName...]}
A distinct columnName can be further split by another columnName as such:
columnName[:columnName]
- x=columnName or y=columnName # must be present
- pinwheel=color[/color...]
(e.g. make plot t "x={A,B,C,D};pinwheel=red/blue"
- step=bin size
(e.g. make plot t "x=A;step=20"
- binWidth=relativeBinWidth[0.,1.] # (saved on exit)
Examples:
group table t Random(1. 10. 40) Random(1. 10. 40) Iarray(20,0)//Iarray(10,1)//Iarray(10,2)
make plot t "x={A,B}"
make plot t "x=A:C"
General Properties (all are optional)
- title=plot_title
- xTitle=X-axis label
- yTitle=Y-axis label
- grid=yes|no # grid lines
- axes=no|yes # additional X=0 and Y=0 axes
- xStep=x # x tick marks
- yStep=y # y tick marks
- xRange=fr:to # shows only the plot in the specified range
- yRange=fr:to # shows only the plot in the specified range
- scale=scale # is updated upon interactive rescaling
Properties of the geometrical elements (rectangle,ellipse and polygon)
- color=color. The color is a name or a hexadecimal rgb string,
e.g. color=red or color=#ff0000
- rotate=angle_degrees (e.g. rotate=45 means 45 deg. counter-clockwise)
- fillStyle=BDiagPattern|SolidPattern|HorPattern|VerPattern|CrossPattern|BDiagPattern|FDiagPattern|DiagCrossPattern
- label=My label # each semicolon or backslash inside the label
needs a preceding backslash, i.e. \;, \\ .
- labelPos=center|left|right|top|bottom
Example
group table t {300. 200. 500.} "Volume" {390. 230. 630.} "Area" {5 3 1} "i"
make plot t "x=Volume;y=Area;color=i;size=8;;title=Volumes and areas;;element=rectangle;x1=150;y1=200;x2=550;y2=550;color=blue;fillStyle=BDiagPattern;label=Drugs;labelPos=center"
See also:
make reaction : applying reaction to the products |
make reaction reaction_R1R2 chem_R1 chem_R2 .. [name=s_table | output=s_file] [filter=s_expression] [all | only ] [ keep ]
Takes one chemical reaction (the first element of a reaction array) and applies it to
the reactant arrays. All reactants suitable for this reaction will be combined to generate
a chemical table .
The reaction drawing need to refer to replacement groups as R1 , R2 , for example:
Parray("[R1]C(=O)O.N[R2]>>[R1]C(=O)N[R2]" )
Note that here the dot . separates the reactants and the >>
indicate the reaction.
Example:
m1 = Parray( { "C(C(=O)O)(=C(C=C1)N)C=C1SC#N" "C(=CC(=C(O)C1)C=CC=1)(C(=S)N)C(=O)O" "N(=C(S1)N)C(C1=CC(C=C1)=CC=C1C(=O)O)=O" "C(C(=O)O)(C(=CC1)N)=CC=1N=C=S" } )
m2 = Parray( { "C(C(=O)O)(=C(C=C1)N)C=C1SC#N" "C(=CC(=C(O)C1)C=CC=1)(C(=S)N)C(=O)O" "N(=C(S1)N)C(C1=CC(C=C1)=CC=C1C(=O)O)=O" "C(C(=O)O)(C(=CC1)N)=CC=1N=C=S" } )
make reaction Parray("[R1]C(=O)O.N[R2]>>[R1]C(=O)N[R2]" ) m1 m2
keep options preserves SMARTS search attributes in the result
all and only options allows to handle multiple functional group mapping. The possibilities are:
- default mode : skip compounds with multiple functional group matches
- only option : take a first mapping
- all : enumerate all possible mappings
You can apply a filter expression to the output of the reaction. The following functions can be used
in the filter:
MolWeight,Nof_Molecules,Nof_Chirals,Nof_RotB,Nof_HBA,Nof_HBD,Nof_Atoms,Nof_Frags,DrugLikeness,MolLogP,Volume,MolPSA,MoldHf,MolLogS
Example:
make reaction Parray("[R1]C(=O)O.N[R2]>>[R1]C(=O)N[R2]" ) m1 m2 filter="MolWeight<400 & MolLogP<6"
You can also apply condidtion to the matched functional groups. R1,R2,...
Example:
react = Parray("[R1]C(C(=O)[R2])=O>>C1C(=C(C=CC=1)[R2])[R1]")
rct1 = Chemical( {"CC(C(C)=O)=O", "CC(C(c1ccccc1)=O)=O"} )
make reaction react rct1 filter = "R1==R2"
make reaction react rct1 filter = "R1!=R2"
Another example (provided as an example file):
read binary s_icmhome + "example_reaction1.icb"
make reaction r_han_pyr.rxn[1] name=Name( "T_react", unique ) reactant1.mol,reactant2.mol
The output. The output is generates as a table if the total number of products is less than 40,000.
For larger sets the command will automatically switch to the file mode.
- Option name = s_table allows to change the default name of the output table.
- Option output = s_file forces the file output and suppressed the table creation.
The output chemical table has the product column as well as a column for each of the R-groups.
Dynamic filtering of the output by applying a filter expression.The filter= s_expression option allows to apply a filter during the
library generation. The filter expression is a double-quoted string
with the following structure:
"Function1 relation value & or |
Function2 relation value & or | ..
"
Example:
filter = "MolLogP<5. & Nof_Frags('C(O)=O')<1"
The list of functions is expanding. The current list of the functions is the following:
| Function Name | Description | Example
|
|---|
| MolWeight | | MolWeight < 650
| | Nof_Molecules | the number of individual molecules,including ions and salts | Nof_Molecules==1
| | Nof_Chirals | the total number of racemic and chiral centers | Nof_Chirals==0
| | Nof_RotB | rotatable bonds |
| | Nof_HBA | hydrogen bonding acceptors |
| | Nof_HBD | hydrogen bonding donors |
| | Nof_Atoms | the total number of non-hydrogen atoms |
| | Nof_Frags ( s_smart ) | counts the number of fragments | Nof_Frags('[S,P](=O)=O')==1
| | DrugLikeness | a number around 0 | DrugLikeness > 0
| | MolLogP | log P prediction |
| | Volume | 3D molecule volume prediction |
| | MolPSA | polar surface area |
| | MoldHf | heats of formation |
| | MolLogS | solubility |
|
see Predict for a detailed description of some of the functions.
Splitting the library by the scaffold into the replacement group arrays.A library can be also reduced back to the scaffold and replacement groups using the split group scaffold library
command. E.g. split group scaffld.mol combilib.mol
See also: enumerate library , Split chemical , Replace chemical .
make sequences from alignment |
make sequence ali_range
take a vertical block from an alignment and convert it into a separate
alignment with independent truncated sequences.
read alignment s_icmhome+"sh3"
make sequence sh3[20:50]
See also: delete sequence unknown , Align ,
make sequence: extract from pdb or icm structure |
make sequence ms_ [name={s_name | S_names}] [resolution]
creates sequences (or, more strictly speaking, ICM-shell objects of the 'sequence' type)
of residues composing selected molecules ms_ .
One-letter equivalents of full residue names are specified in the icm.res library.
Option resolution adds the X-ray resolution value multiplied by 10 to the name
(e.g. 2ins_a25 for resolution of 2.5A) or 'No' for NMR and theoretical structures.
The group sequence command will automatically prefer a sequence from
structure with better resolution.
The resolution is not appended if option name= is specified.
The make sequence command also extracts both the secondary structure
and the site information.
See also: read pdb sequence
Examples:
read pdb "2ins"
make sequence a_2ins.a,b # two seqs 2ins_a and 2ins_b created
make sequence a_2ins.a,b resolution # resolution*10 added to the name
make sequence a_1.1 name="aa" # sequence named: aa
make sequence a_2ins.a,b name={"aa","bb"} # seqs named: aa and bb
make tree table [tree_type] [tree_name] [options]
this command builds a hierarchical data tree of the table rows and stores in the table header.
as a tree.cluster parray.
A simple example is given below:
read table "t.tab" name="t"
make tree t
Defining the tree construction type.
The main modes are the following:
- a complete tree requiring N2 comparisons. It is preferable for tables smaller
than a thousand records. For larger tables both performance and memory requirements
become prohibitive. This mode will be used by default for up to 2000 rows.
To force this mode use keyword full, i, or the method name.
- a K-means clustering requiring N*K comparisons.
To activate this mode the number of clusters i_Kclusters needs to be specified.
This method is both much faster and does not require a pre-existing NxN distance matrix.
For a small number of rows ( N under two thousands)
ICM performs data clustering based on N by N comparison between the table rows.
This method can be enforced for larger tables with the full option (e.g. make tree t full)
or using the distance = s_distMatrixName . In the latter case the matrix needs to be appended to the
table header:
read table "t.tab" name="t" # N rows
make tree t full # all distances between rows are calculated
# or
read matrix "dist.mat" name="dm" # N x N matrix
group table t append header dm
make tree t distance = "dm" # uses external distance matrix for clustering
The type ( tree_type ) of the cluster tree construction algorithm can also be explicitly defined.
This type defines how two distances from two neighboring branches are replaced with one distance.
By default the "upgma" method is used.
- "upgma" (the default) unweighted pair group method using averages,
i.e. each record has the same weight, and therefore, the distance to each branch
is weighted by the branch size: d12=(N1*d1+N2*d2)/(N1+N2) .
- "single" or "min" single linkage, if two branches with d1 and d2 are merged, the distance is replaced with the minimal distance: d12=Min(d1,d2) .
- "complete" or "max" , e.g. d12=Max(d1,d2) .
- "wpgma" : average linkage tree, each branch has equal weight regardless of the number of members: d12=0.5*(d1+d2) .
If the number of rows N is large, ICM performs the K-means clustering by default. The K-means method can
also be enforced if the number of clusters is provided as an explicit integer argument, e.g.
make tree t 100 # enforces K-means with 100 seed clusters.
This method avoids a full comparison by creating K seeds and comparing all other records with the seeds.
If neither full argument, nor the type string, nor the number of seeds for the K-means clustering is specified,
the method of construction will be determined automatically on the basis of the number of rows.
Defining the distance measure.
The distances between rows can be (1) provided externally in the table header
(option distance=s_matrixName, see below )
(2) calculated dynamically as Tanimoto distances between chemical fingerprints for chemical tables;
(3) calculated dynamically as weighted cartesian distances (options column= S_listOfColumns
and heavy= R_listOfColumnWeights ).
The tree can further be used to assign a cluster number to each table row at
a certain distance threshold ( the separator= and the split= options ).
For common tables, by default all numerical tables are used with the same weight.
For chemical tables, by default only the chemical array is used for distance calculations.
However, option all will enforce concurrent use of the chemical distances and all numerical columns.
Options column= and heavy= allow to give a specific selection of columns and their respective weight.
- all add all numerical columns to the chemical information in distance calculation
- column= S_listOfColumns numerical column used for clustering
- distance= s_distMatrixNameFromTableHeader .
The matching distance matrix must be already attached
to the table with the group table table header matrix s_distMatrixFromTableHeaderName .
This only belongs to the full tree mode.
- exact suppressed auto-normalization fo columns in calculating cartesian distances during clustering
- heavy= R_distColumnWeights numerical column weights corresponding to the column= column names
- label= s_labelFormat (e.g. label= "%COMPOUND_NAME")
- matrix add the newly formed distance matrix to the header of the table (the default name is "dimt").This only belongs to the full tree mode.
- name= s_treeName defines the name of the tab associated with this tree (the same table can have several
associated trees)
- select= I_rowNumbers (e.g. select=Count(10,30) this option allows to create a tree from a subset of
rows, e.g. from 10 to 30.
- separator= r_threshold_Dist . The minimal distance value at which elements or clusters
are considered to belong to the same group.
- sort= s_orderColName additional ordering of the branches by a table column with preservation
of the clusters ( sort="A" ). It is possible because left and right is normally undefined.
If the s_orderColName is specified, the left and right will be determined by this column values.
- split= s_colname : re-calculate the cluster numbers at a different threshold value (a.k.a. separator). s_colname is the name of a column in which the new cluster number is stored, the "splitting"
is done according to the separator value. This split level can be reset with the split tree command,
and the column name can be returned with the Name( table.cluster i_cluster split ) function.
The output.
- The tree is added/appended to the table.cluster parray.
- i_out returns the position index in table.cluster .
- a new column is added to the table with the order number of records in the tree. This column
can be used to sort the table rows in the tree order. The name of this column can be
found with the Name( table.cluster i_cluster index ) function.
- another column containing the cluster number at the split level is added if the split argument is used (see above).
Example:
read table mol s_icmhome+"/moledit/Dictionary.sdf"
make tree Dictionary
See also:
make tree ali_name [ s_epsFile ]
reconstruct the evolutionary tree from the specified sequence alignment
using the neighbor-joining method ( Saitou and Nei, 1987).
Create a PostScript image of this tree which will be saved in the
ali_name.eps file.
See also: the align command.
Examples:
read alignment msf s_icmhome+"azurins" # read alignment
make tree azurins # draw evolutionary tree
make tree M_squareDistanceMatrix[1:n,1:n] [ S_objectNames[1:n] ] [ s_epsFile]
reconstruct the evolutionary tree for arbitrary objects from the
matrix of pairwise distances. The names of
individual objects may be provided in a string array for a nicer PostScript
picture. This command is cool.
See also:
Examples:
read matrix s_icmhome+"dist" # read a distance matrix [n,n]
make tree dist
unix gs dist.eps
make unique: reorder atoms in a unique order. |
Example:
read mol s_icmhome+"ex_mol"
make unique
#
build hydrogen
set type mmff
convert
Smiles(a_) # unique smiles string
[ Minimize cartesian | Minimize loop | Minimize stack | Minimize tether ]
minimize [stack] [i_mncalls] [vs_] [s_termString] [as_1 [as_2]] [tether=as_]
minimize locally the sum of currently active, or specified, terms of the
energy/penalty function with respect to variables specified by vs_,
or all the free variables, if variable selection is skipped.
Optional arguments:
stack :
If option stack is specified, the procedure extracts each stack conformation,
minimizes it and replace the stack conformation with the optimized ones.
The stack can be generated with the montecarlo procedure, manually created
with the store conf command, or read from a stack file.
This command allows to refine your set of alternative conformations all at once.
i_mncalls :
defines the maximal number of iterations. The minimization procedure can terminate
earlier if the gradient becomes lower than the tolGrad parameter.
If i_mncalls is not provided, the default parameter mncalls defines the maximal number of function evaluations during the minimization.
vs_ :
variable selection
If selection of variables vs_ selection is specified, the object will be
refixed but the initial fixation will be restored after minimization.
s_termString :
redefines the set of terms used in the minimization dynamically (e.g. minimize "tz" ).
You may check the active terms with the show terms command, or
change them before the minimization with the set terms ".." command.
By the way, the active terms can be shown as a part of your command line prompt if you add
the %e specification to s_icmPrompt variable (like s_icmPrompt="icm/%o/%e> " ).
tether= as_ :
if term "ts" (tether to self) is active, you can select a subset of atoms to be tethered
atom pair filter:
By default all the atoms and all the atom pairs within distance thresholds vwCutoff and hbCutoff
are involved in the calculation.
However, two explicit atom selections [ as_1 [ as_2 ]] may
impose a mask on atom pairs involved in the calculation of the pairwise energy or penalty terms.
The default for the skipped as_1 is all the atoms.
If only the as_1 is specified, the as_2 is assumed to be all atoms.
Using atom selections is dangerous and is not recommended since there are many
combinations which do not make sense and give unpredictable results.
the algorithm: the minimizeMethod preference.
The type of algorithm (conjugate gradient, quasi Newton, or
automatic switching between the two) is defined by the minimizeMethod preference.
The progress bar will show you the progress of the procedure.
If minimizeMethod="auto", the progress bar of the minimization procedure will show
the 'C' character in a row of dots and colons when the quasi-Newton method switches
to the conjugate gradient method.
Dots show progression of the minimization procedure, while colons mark recalculations of neighbor lists.
The lists are updated if at least one of the atoms deviates from its previous position by more than 1.5 A.
Both basic methods use the analytical derivatives of the terms with respect to free internal variables.
the exit criteria, and interaction lists. The procedure is terminated upon any of these conditions become true:
- mncalls : the maximal number of function evaluations (`mncalls) is reached.
- tolGrad : if the gradient falls below the tolGrad parameter.
- tolFunc : if all of 6 consecutive steps do not improve the function beyond the tolFunc parameter.
- minNumGrad condition : this is a condition when the numerical gradient evaluated from the energy function
values differs too much from analytical gradient. It is usually the case when the minimum is essentially reached, but
the atoms bumped into each other and the slope is steep ( R^12).
Naturally, if the function has a strong non-harmonic behavior (e.g. a packed protein) and the numerical gradient does not match the analytical one. This is not necessarily bad, just means that you reached a packed state.
If you rerun the minimizer, it may go in a different direction and may improve the function a little more.
Suppressing updates of the interaction lists upon atom movements during the minimization. Sometimes during the course of minimization the interaction lists are recalculated.
When some atoms fall out or in the vwCutoff sphere , the value of the gradient and even the energy function
can jump. For that reason do not be surprised that the exit gradient differs from the one reported in the previous
step output. To influence the lists you have two main mechanisms:
- suppress list updates all together with l_updateLists = no . In this case, if you need to recompute the lists,
use the delete list command.
- make the updates less frequence by increasing the listUpdateThreshold parameter.
Example:
read object s_icmhome+"crn"
l_updateLists= no
minimize
show energy # still uses the same lists
delete list
show energy # makes new lists
l_updateLists= yes
listUpdateThreshold=2.
minimize
the output l_showMinSteps flag and i_out : The actual number of function evaluations during minimization is saved in the i_out variable.
The l_showMinSteps flag allows to see every iteration of the minimization procedure.
To speed up the procedure you may switch off the l_minRedraw flag to suppress redrawing
of the molecule for each new conformation.
The minimizer also returns a rarray R_out with the following values:
- R_out[1] the return code as follows:
- 0 successful completion,
- 1 mncalls expired
- 2 tolGrad is reached
- 3 tolFunc is reached
- 4 tolXdiffOK
- 5 minBadGrad
- 6 minimization was interrupted
- 7 the minimizer is lost in high energy values
- 8 whatever you do, it goes uphill
- 9 unknown failure
- R_out[2] the number of function calls spent on the minimization run
- R_out[3] the norm of the gradient (rmsd) upon completion
Examples:
build IcmSequence("HHAS;TW") # create object from "def.se" sequence file
minimize v_//xi* # do not touch the backbone torsions
minimize # use all variables
minimize 500 # run longer until number of calls is 500
minimize cartesian: full conformational optimization |
minimize cartesian [stack] [type] [charge] [i_mncalls] [s_termString] [tether=as_for_ts_term]
minimize the mmff energy for a fully flexible molecule in the space of atomic cartesian coordinates.
Before running this command please make sure that the atomic types and charges are set
and the mmff libraries are loaded.
The i_mncalls and s_termString have the same meaning as in the previous command.
Options:
- stack : if option stack is specified, the procedure extracts
each stack conformation, minimizes it and stores back to the stack.
- type : if option type is specified the set type mmff command is executed and mmff atoms are assigned.
- charge : if option charge is specified the set charge mmff command is executed and mmff partial charges are assigned
- i_mncalls : redefines the maximal number of minimization iterations ( mncalls )
- s_termString : allows to dynamically redefine the default energy terms.
- tether= as_for_ts_term : if term "ts" (tether to self) is active, you can select a subset of atoms to be tethered
Example:
build string "se nter his cooh"
display
set term "ts" # tether to the initial set of coordinates
minimize cartesian type charge tether=a_//ca,c,n
The drop and tolGrad minimization parameters will still apply.
minimize loop after build model |
minimize loop i_loopNumber
to use this command you must run the build model command first.
The build model command may not be able to find a perfectly
matching loop. Two sorts of problems may appear: the imperfections of the
loop attachments and the clashes of the loop to the body of the model.
The minimize loop command optimizes the covalent geometry at the junctions
and the clashes through an interactive procedure which maintains the loop closure.
The energy function used by the command is not as detailed as the full atom
energy. It is advisable to perform a regularization (e.g. regul a_ )
and full atom refinement.
To save all the graphical frames during this minimization set the
autoSavePeriod variable to the special value of 99 . In this case
png image files named f_x_y.png , where x is the loop number and y is
the frame number, will be saved in the current working directory.
minimize stack: minimize each stack conformation |
minimize stack [s_terms] [mncalls]
execute these steps:
- load each stack conformation
- locally minimize it
- store each conformation back to the stack
As a result, both the geometries and the energies are updated with
the optimized ones. Example:
read stack "a"
minimize stack 400
One can achieve the same result with a shell script like this:
read stack "a"
for i=1,Nof(conf)
load conf i
minimize 400
store conf i
endfor
minimize tether: threading a model with idealized geometry through a pdb-structure |
minimize tether [vs_]
regularization procedure. It creates a conformation (i.e. determines free variables)
that minimizes distances between atoms and their tethering points.
If initial model was built from standard amino-acids with idealized covalent geometry ,
this procedure will create a model with standard bonds and angles which fits the best
to the target set of atom coordinates.
The tethers may be imposed by the set tether command.
An integer variable minTetherWindow defines the maximal number of preceding torsions
which are locally minimized to best-fit the pdb-model.
Optional variable selection vs_ allows to perform fitting only for the selected
fragment of the model.
This may be convenient if you want to re-fit only a local fragment.
Variable r_out contains the RMS deviation between the template and the model.
Assigning ring conformation from a template
To assign ring conformation from a template one can use the minimize tether command.
The chemical equivalences can be found and tethers imposed with the find molecule sstructure all tether command.
The following example illustrates the principle.
read object "template.ob" name="template" # contains ring template
build smiles "C1CCCCC1" # some ring
find molecule sstructure all tether a_template. a_target. # make sure tethers exist
set object a_target.
unfix V_//r*,f*
minimize tether
minimize cartesian "mmff,ts" tether=a_//!h*
display a_template,target. center
a tool for making clickable strings in the graphics window.
menu [i_string1 i_string2 ... ]
this command declares the listed string labels as active and
returns the chosen string number in
i_out .
If no arguments are specified, only the last string will be "clickable".
See also _demo_main file.
Examples:
while(yes)
display string "Menu"
display string "Fish" -0.7, 0.6 yellow # 2
display string "Pork" -0.7, 0.5 yellow # 3
display string "Pasta" -0.7, 0.4 yellow # 4
display string "Quit" -0.7, 0.3 yellow # 5
menu 2 3 4 5
choice=i_out
delete label
if (choice == 2) then
display "Good choice.\n Our fish is the best.\nClick here"
menu
delete label
elseif(choice == 3) then
display "Good choice.\n Our pork is the best.\nClick here"
menu
delete label
elseif(choice == 4) then
display "Good choice.\n Our pasta is the best.\nClick here"
menu
delete label
elseif(choice == 5) then
quit
endif
endwhile
modify chemical structure of a molecule by replacing one part with
a specified group or "residue" from icm.res or user residue library.
Prerequisites:
- modify works only for ICM objects. convert your object to ICM type if necessary
- modify deletes the atoms which need to be replaced, so you do not need to delete them explicitly
modify atom with a library group
modify as_exitAtom s_NewSubstituent
replace the branch starting from the specified atom by another library substituent.
Suitable for standard biochemical modifications, such as glycosylation, phosphorylation,
etc. (Note that to myristoylate N-terminus you need to use "myr" as N-terminal residue,
i.e. build string "se myr ala ala coo-" ).
Examples:
LIBRARY.res = LIBRARY.res // "usr" # Use usr.res in s_icmhome in addition to icm.res as residue library
read library residue # Re-Read the library to include the additional residues in usr.res
read object s_icmhome+"crn"
display a_/8:13
color red a_/11 # serine
# O-glycosylation ("acgl", "xylo", "agal", "bgal")
modify a_crn.m/11/og "acgl" # beta-D-N-acetylglucosaminide
# Or
modify a_crn.m/11/og "xylo" # add alpha-Xylose
#
build string "se ser thr tyr asp lys his"
modify a_/ser/og "po4" # Phosphorylation
modify a_/thr/og1 "po4"
modify a_/tyr/oh "po4"
modify a_/asp/od2 "po4"
modify a_/lys/hz2 "po4"
modify a_/his/hd1 "po4"
See also: LIBRARY.res
modify: single or multiple residue mutations modify rs_ s_NewResidueName
replace selected residue(s) rs_ by another residue s_NewResidueName.
The backbone conformation is not changed, unless the new residue is "pro" and the phi angle
is outside [-90.,-30.] range.
You can replace amino acids (the usual list of three letter codes),
as well as nucleotides: "ra" "rg" "rc" "ru" for RNA and
"da" "dg" "dc" "dt" for DNA.
Examples:
# Peptides and proteins
#
read object s_icmhome+"crn"
modify a_/15,18 "his" # substitute residue 15 and 18 with histidines
modify a_/thr "val" # substitute all alanines with valines
#
# DNA or RNA
#
read pdb "4tna"
convert
modify a_/66 "dg" # substitute nucleotide 66 by Uracyl
modify by grafting parts of objects modify as_atom1 as_atom2
replace a fragment of the molecular tree in an ICM-object
starting from a specified single atom as_atom1 (e.g. a_/15/cg) by a subtree starting from
another single atom as_atom2. This subtree is simply copied and not
altered in any way. It is recommended to perform molecular building
operation interactively and with your molecule displayed in the graphics
window. Type modify and Ctrl-click the atom starting the branch
to be replaced and then the atom starting the branch to be grafted.
It does not matter where you take the modification group from. It may be
the same molecule, a group in another object, etc. You may want to load
a residue containing the group of interest directly from the icm.res
residue library by doing.
Examples:
show residue types # find out what residues are available
build string "se myr" # create a new object with myristoyl group.
After the modification you can remove objects (such as "myr"
in the above example) used for construction. Be careful if modifying atoms
within ring systems; the results may not always be obvious unless you know
how the ICM-tree is constructed (you'll be kindly warned anyway).
However, the whole ring can be modified or grafted without any difficulty.
Examples:
build string IcmSequence("MIPEAY") # build a molecule
display # display it to click two atoms and watch
modify a_/1/ce a_/1/ha # replace methyl group of Met-1 by a hydrogen
modify a_/2/hd13 a_/2/cg2 # methylate hd13 hydrogen of Ile
modify a_/3/hg1 a_/6/oh # turn proline into hydroxyproline
See also: chemical modification of chemical arrays
[ Chemcial Find and Replace | Modify chem charge | Modify chem delete salt | Modify chem normalize | Modify molcart ]
find and replace a chemical pattern, normalize/standardize a chemical, delete salts
The following types of chemical modifications can be performed on an array of chemicals:
Chemcial Find and Replace |
modify chemarray s_find_smart s_replacement_smart [exact] [ index= I_indeces ]
find a chemical pattern and performs a global replace to s_replacement_smart for all chemicals in an array.
The replacement can be done only if both the find and replace patterns contain the same marks R1,R2..
A connecting atom in the pattern can be either an undefined atom, e.g. [R1] or a defined atom, e.g. [C;R1]These marks are used to find corresponding atoms in the replacement pattern.
Hints for the Chemical Editor: use the following shortkeys:
- to mark atoms as R1 point your cursor at the connection atom and press 1
- to retain the identity of the attachment atom, (e.g. [C;R1] ) use Ctrl-1 ..
- to undo the R1 mark, label it as N,C,or O; press Ctrl-0 for [C;R1] .
E.g:
read table mol s_icmhome+"/moledit/Dictionary.sdf"
modify Dictionary.mol "[R1]CC(=O)O" "[R1]CC(=O)OC"
Option exact modifies atoms in place and requires that the number of atoms is preserved.
Charge or uncharge functional groups in compounds |
modify chemarray s_find_smart s_replacement_smart [exact] [ index= I_indeces ]
searches for a chemical group and replaces it by a group with a different charge.
Add index= I_idx if you want to apply the operation to a selection.
Carboxylic_Acids
modify chem "CC(=O)[O;D1]" "CC(=O)[O-]" exact # to charge
modify chem "CC(=O)[O-;D1]" "CC(=O)[O]" exact # to uncharge
Primary_Aliphatic_Amines
modify chem "[C;^3][N;D1]" "C[N+]" exact # to charge
modify chem "[C;^3][N+;D1]" "C[N]" exact # to uncharge
Secondary_Aliphatic_Amines
modify chem "[C;^3][N;D2][C;^3]" "C[N+]C" exact # to charge
modify chem "[C;^3][N+;D2][C;^3]" "C[N]C" exact # to uncharge
Tertiary_Aliphatic_Amines
modify chem "[C;^3][N;D3]([C;^3])[C;^3]" "C[N+](C)C" exact # to charge
modify chem "[C;^3][N+;D3]([C;^3])[C;^3]" "C[N](C)C" exact # to uncharge
Amidinium/Guanidinium
modify chem "[N;D1]C=[N;D1]" "NC=[N+]" exact # to charge
modify chem "[N;D1]C=[N+;D1]" "NC=[N]" exact # to uncharge
#
Chemical Find and Replace |
modify chemarray delete salt
retains only the largest molecule and deletes all smaller molecules.
Example:
c = Parray( {"CC=O.O"}) # has an extraowater, O
modify c delete salt
Info> 1 replacements done
show c
CC=O
Standard representation of chemical groups |
modify chem_array auto
applies a set of chemical normalization rules described in the CHEMNORMRULES.tab in the $ICMHOME directory .
Feel free to add rules to this table or replace it with your own table.
Currently it has the following rules:
"*-[N+](=O)[O-]" "*-N(=O)=O" "Nitro"
"*-N([OH])[OH]" "*-N(=O)=O" "Nitro"
"*-N(=O)[OH]" "*-N(=O)=O" "Nitro" # Sulfonyl
"S(=O)([OH])(-*)(-*)" "S(=O)(=O)(-*)(-*)" "Sulfonyl" # Azide
"*-[N-]-[N+]#N" "*-N=[N+]=[N-]" "Azide" # Diazo
"[C-]-[N+]#N" "C=[N+]=[N-]" "Diazo"
The asterisk marks "any atom". Note that if the pattern does not contain connection labels [R1], or [C;R1] , the atoms will not be considered as terminanted.
A more general syntax is described in the
chemical find and replace command.
See also:
- file CHEMNORMRULES.tab in the ICM home directory
Update database table from ICM table |
modify molcart T_ [all] [column=S_columns] [table=s_table_name] [ connection_options ]
Modifies entries in a database table based on changes made in an ICM table.
The load molcart, find molcart and query molcart create ICM tables containing subsets of database tables.
In most cases the database table has an integer primary key (ID) column, with unique values for each row.
The primary keys may be used to mark certain rows in the ICM table to request update or deletion of the corresponding
entries in the database. ICM GUI provides tools to mark rows.
The all option tells the command to treat all rows as marked for update.
Only a subset of the ICM table columns may be updated in the database by specifying S_columns.
The connection may be specified using connection_options . Database table is specified
Otherwise connection and table information may be obtained from the input table header as in the load molcart command.
See also: molcart.
[ montecarlo-fast ]
|
a generic command to sample conformational space of a molecule with
the ICM global optimization procedure.
montecarlo [ OPTIONS ] [ vs_MC [ vs_minimize ] ] [ local rs_loop ]
runs Monte Carlo simulation for specified variables vs_MC,
with local minimization with respect to the vs_minimize variables
following after each random move.
|
|
Each iteration of the procedure consists of
- a random move of one of 4 types;
- local energy minimization;
- calculation of the complete energy potentially including surface and advanced
electrostatics terms (
REBEL or
MIMEL);
- acceptance or rejection of this iteration based on the
energy and the temperature.
|
|
Three possibilities for variable
selections arguments:
OPTIONS: append
appends to the existing conformational
stack (overwrites by default).
chiral
temporarily activates the l_racemicMC variable
fast :
rapid side-chain optimization.
This option allows to accelerate the calculation by minimizing
only a subset of the strained variables
(as opposed to all minimization variables) after each step.
The strain is established on the basis of the norm of the energy gradient
after a random move. The strained variables are temporarily unfixed and
this set of variables may be different every time.
This option needs the selectMinGrad parameter to be set to about 1.5 (a
threshold for the derivative norm).
If this value is too low too many variables will be free and the procedure will
be comparable with the default (non-fast) mode, if the parameter is too high
the procedure may not be able to find the low energy conformations because
the environment will not respond to the changes properly.
Example:
build string "se ala his trp glu"
selectMinGrad=1.5
set vrestraint a_/*
montecarlo fast v_//x*
This mode is useful for side chain optimization in homology modeling.
bfactor :
you can use the bfactor option to sample 'hot' parts of structure with higher probabilities.
The relative frequencies are taken from the b-factors of the atoms
belonging to the mc-variables. Example:
build string "se ala his trp glu" # default b-factor=20
set bfactor a_/2 1000. # make 2nd his hot
montecarlo bfactor
To preserve the old bfactors, save them before the simulation and
restore after. E.g.
b_old = Bfactor(a_//*) # save
..
set bfactor a_/10:20 200.
montecarlo bfactor
..
set bfactor a_//* b_old # restore
local
local [ dash ] [ a_/residueRange1,residueRange2... ]
( this option is specified after the main variable selections [ vs_MC [ vs_minimize ] ] )
option local makes local deformation type movement for specified regions
(e.g. two loops a_/15:22,41:55). Sub-option dash chooses
angles for random deformation symmetrically with respect to the loop
center.
Note, that to avoid movements of the flanking regions around the loop,
you need to set tethers for those regions. The local deformation
only applies to the initial random move, but the subsequence local energy minimization
may move the flaking areas (in particular to the C-terminus side) away from
their correct positions.
The simplest way to set the tethers for the flanking residues (40:45 in the example
below) is the following:
copy a_ tether # create a copy of your current object
# and tether all atoms the original positions
delete tether a_//h* | a_/40:45
set terms "tz" # add "tz" to the list of terms
montecarlo v_/40:45 local a_/40:45
mute
suppresses the text output about each random move
output
shortens the output by printing out only the steps with the DY (down/yes) outcome.
The steps in which any of the simulation limits is reached are also shown.
This option may considerably shorten log files of very long simulations.
r_exitEnergy real argument determines if you want your procedure to exit upon
achievement of equal or lower energy value . For example, if you know energy of the minimum,
you may want to stop the search when this value is achieved. E.g.
build string IcmSequence("AHWEND") # hexapeptide
set vrestraint a_/* # BPMC-probability zones
montecarlo 10. # stop after energy of 10. is reached
two atom selections: montecarlo .. as_1 as_2
(this option is NOT recommended for beginners)
Atom selection arguments [ as_select1 [ as_select2 ]]
impose a filter on atom pairs considered in the terms of internal energy
like "vw,el,hb,sf". There are three possibilities:
-
no selections - the whole object (all atoms) is considered (the default)
- as_select - interactions of the specified atoms with ALL atoms
in the object.
- as_select1 as_select2 - interactions between two
selections. For example, a_dom1 a_dom1
would consider only the internal energy of the domain dom1.
reverse
this option makes a more intelligent random move
in singlechain or a multichain molecule. By default if an
angle is randomly changed near the beginning of a molecule,
the second part of this chain moves.
With the reverse the random move can occur in such a way
that a part of the chain above a randomly chosen angle
will stay the same, while the chain below the angle will move.
Actually, the parts will be compared by molecular mass and
the heavier part will be more likely to stay where it is than the lighter part.
The probability that a part stays static is proportional
to the number of atoms of this part. It is important that
the virtual variables ( v_//?vt* are not fixed).
This option is very useful in docking, since the receptor is static
and the moving molecule should try to preserve the majority of
current interactions. Also, the reverse option helps if one
simulates the N-terminus of a multi-chain protein, or a docking of
a peptide to a protein.
Example:
read pdb "1aya" # read a complex
delete a_!1,2 # keep only SH2 domain and a peptide
convert # make an ICM object with hydrogen
set vrestraint a_/* # set prob. zones
montecarlo reverse v_2 v_2 # re-dock the peptide
If you move the 1st molecule, do not forget to unfix the fvt1
variables of all other molecules, e.g.
..
unfix only v_1 | v_*//fvt1
montecarlo reverse
If you always want to keep the C-terminus static and move the N-terminus,
use the superimpose option (see below).
stack
option stack means that at the end of the simulation the stack is stored in
the current object (equivalent to the store stack object command ). This allows
to extract it later without reading it from a file.
superimpose as_3atoms_per_molecule
superimposes new generated conformations after every move. Usually if you change
backbone torsion at the N-terminus, the whole molecule moves. This option allows to
generate conformational changes at the N-terminal part of a peptide
while its C-terminus occupies the same
position in space.
After each random move the first 3 atoms
selected in molecule(s) will be superimposed on their initial position and the 6
positional variables (v_//?vt*) will be updated accordingly.
The setup:
- unselect the virtual variables from the MC selection (v_//!?vt*)
- specify three or more atoms beyond the N-term. of interest for superposition
- add virtual variables to the minimization selection (it is usually the default)
to allow positional adjustments during minimization
(the movements of C-terminus are suppressed only in the MC move, not in the following
minimization).
- if minimization is used (mncalls > 1), make a copy of the molecule and tether
the C-terminus to it.
trajectory
records all accepted conformations sequentially in a binary *.trj file.
Later one can read trajectory, display trajectory, and operate
with individual frames, e.g.
for i=1,Nof(frames)
load conf i # to extract a frame
display skin white center
write image png "f"+i
endfor
Example:
mncalls = 1 # move N-term residues a_/1:5 and while keeping
# the rest in the same position
montecarlo v_//!?vt* superimpose a_/6/c,ca,o
# virtual variables should be available for minimization
montecarlo v_/1:3/!omg,?vt* superimpose a_/6/c,ca,o
# Now a more realistic example
build string "se ala his trp ala ala ala ala"
display
display residue label
mncalls = 200
copy a_1. "original"
set tether a_/5:7 a_original./5:7
set terms "tz"
set vrestraint a_/*
mncallsMC=100000
montecarlo v_/1:4/!omg,?vt* superimpose a_/5:7/ca
The following ICM-shell variables and commands are important for the procedure.
- mncallsMC,
- mncalls,
- temperature,
- tempCycle = {tempMax,tempMin,tempPeriod}, e.g. {1200.,600.,100000.} for a cyclic temperature schedule
- mcBell to make rs-zones narrower or wider than in icm.res file
- mcJump
- mcShake - the average amplitude of the pseudo-Brownian move
- mcStep - an amplitude of the unbiased step
- l_bpmc - if no, makes simple random steps (one angle by a random value)
- l_writeStartObjMC - if yes, write the starting object with its fixation and geometry to a file.
- mnvisits three limits and three actions follow
- visitsAction ,
- mnhighEnergy ,
- highEnergyAction ,
- mnreject ,
- rejectAction ,
- vicinity ,
- compare .
EXPLANATION OF THE OUTPUT (below are 3 example lines with numbered fields):
1 2 3 4 5 6 7 8 9 10 11 12 13 14
DY Visi 600 16 gln xi3 70 -98 94 -322.04 -324.56 35 4.87 51559
__ __ 600 32 ile BPMC ipt ipt ipt -324.56 -290.80 18 65.72 51577
_Y Visi 600 16 gln BPMC qmm qmt qmm -324.56 -323.93 41 3.78 51618
-
DY = Down Yes, i.e. energy has decreased after change and new conf. is accepted
__ = up no , i.e. energy has increased and new conf. is not accepted
_Y = up Yes, i.e. energy has increased, but new conf. is accepted
- stack operation code indicates the outcome of comparison of the current conformation with the stack.
- Impr : the conformation is close to one in the stack and has a better energy. Visited and improved
- New : the conformation added as a new stack conformation
- Sbst : not found, full stack, the worst is substituted for the current
- Visi : visited and not improved
- Vlm : visited and not improved, repetition limit mnvisits is achieved
- High : not found, worse than the worst stack structure
- __ : NO in calling routine (has nothing to do with stack)
- RLim : NO limit of sequential Rejections is reached (has nothing to do with stack)
- VLim : NO Vlm (number of visits > mnvisits)
- HLim : NO High. mnHighEnergy limit is reached.
- current temperature in Kelvin;
- number of selected residue
- selected residue name
- name of randomly selected angle or BPMC to indicate the biased probability move
- internal coordinate value or name of the multidimensional zone before random change;
- internal coordinate value or name of the multidimensional zone after the random change but before minimization;
- internal coordinate value or name of the multidimensional zone after the minimization;
- energy before the random change;
- energy after the random change and subsequent minimization;
- number of function calls made during minimization;
- gradient RMS deviation ( normal completion is with low or zero gradient );
- total number of function calls in the simulation.
The logic of stack operations is the following.
There are three possible events for each slot of a stack:
- new slot creation
- energy improvement of the current slot conformational family
- replacement of the looser conformational family by a better energy
conformation
The starting conformation is placed to the first slot,
if the stack is empty. At every simulation iteration, distances (either
coordinate RMSD or angular RMSD, as defined by the
compare
command) are calculated between the current conformation and all slots.
If any of the distances is less than the
vicinity
parameter, then the energies are compared and if the current conformation
has the better energy, the stack conformation is replaced by the current
one, otherwise the visit counter of the slot is incremented. If no similar
structures are found, the conformation is appended to the stack, i.e. a
new slot is created. If the stack is full, i.e. number of slots reached
mnconf
parameter, then the worst-energy structure will be substituted by the
current, provided the latter has lower energy. Otherwise, no action is
taken and number_of_high_energy_conformation counter is incremented
( see also mnhighEnergy).
Explanation of the last section of the output. Example:
Info> 4 stack conformations saved to def.cnf [3 compressed]
Info> nSteps= 74, nTrials= 80, AcceptRatio= 0.92500,
Info> BestEnergy= -6.01, Step 37; nCalls= 2009, eachMcVar = 1.88
- the diverse low-energy stack conformations are saved in a very compact file.
The stack can be later loaded with the read stack, load conf
commands.
- nSteps - the number of accepted moves
- nTrials - the number of generated random moves
- AcceptRatio - nStep/nTrials
- BestEnergy - the best energy found by the stochastic optimizer.
- nCalls - the total number of energy evaluations (each random move includes multiple energy evaluation
performed by the local minimizer)
- eachMcVar - the average number of attempts to change each variable (if this number is less than one,
the sampling may be insufficient, also read about convergence).
[ Move molecule | Move object | Move bonding | Move element | Move column | Move sequence ]
Move objects, molecules between objects.
move ms_molecule: change tree topology |
move ms_moleculeToReconnect as_terminalAtom
changes the topology of the basic ICM-tree by reconnecting the first
virtual
bond of a specified molecule to a given atom. This allows you to move two
molecules together as one rigid body. By default, all the
molecules are connected to the origin [0,0,0] through virtual bonds.
The molecule can be connected only to the terminal atom, usually
a hydrogen. The molecule can not be connected to itself (naturally, do not
even try it). This operation is defined only for ICM molecular objects.
Examples:
build IcmSequence("AAFF;DEG") # two molecules connected by virtual bonds
display virtual # to the origin
move a_2 a_1/3/hz # graft the second molecule to a hydrogen
# on another molecule
# now the second molecule will move together
# with the a_1/3/hz branch
# if you change v_1//?vt* variables
move : move multiple molecules between objects or merge two objects |
move ms_MoleculesToMove os_destination
move os_ObjectToMove os_destination
move one, several or all selected molecules ( ms_MoleculesToMove or os_ObjectToMove)
to the
specified object os_destination. When all the molecules are moved
from the source object, the empty object is deleted.
The ms_MoleculesToMove molecule or object are appended to the end of
the os_destination object and their
virtual torsion tvt1 becomes virtual phase fvt1.
This command is used to
create one object from several components.
Examples:
read object s_icmhome+"crn" # 1st object
build string "se ala his leu" # 2nd object
move a_2. a_1. # take the 2nd obj and merge
# it with the 1st one
# Or
read pdb "1sis"
read pdb "2eti"
set object a_1.
move a_2. a_1. # two PDB structures became one
# ICM molecular object
display virtual
move several molecules into ane molecule, auto-bond several molecules |
move ms_molecules_to_merge [ s_new_mol_name ]
move only ms_molecules_to_merge
different molecules in a PDB object can be merged into a single molecule and correct intermolecular bonds can be formed with this command.
This command also automatically
bonds the closest atoms (if distance< 0.6(R1+R2) ) between the molecules being merged into a single molecules.
Helpful in dealing with PDBs with disconnected carbohydrates.
Options:
- If new name is not provided, the name is taken from the first molecule.
- only - do not merge, just make bonds between the closest atoms
Example;
read pdb "1nxc" # three parts of hetero-mol need to be merged
move a_2,3,4 "glycan" # they are merged and bonded now.
move a_1,2 only # form a bond with the protein
move a table row or parray element |
move table[i_row] [i_newPos]
moves a row, e.g. t[2] to a new position.
If the position is not specified the row is moved to the end.
move parray[i_pos] [i_newPos]
moves a parray element to a different position.
Example:
group table t {1 2 3}
move t[2] 1
move table.column [ i_newPos ]
moves the column to a new position. If the position is not specified the column is moved to the last position.
Example:
add column t {1 2 3} {3 2 1}
move t.B 1
See also: add column, add column function
move ali seq [i_new_seq_pos]
move the sequence in an alignment to a new position. If the position is not specified, the sequence is moved to the last position.
Example:
read alignment s_icmhome+"sh3"
move sh3 Eps8 1
move sh3 Fyn
See also: Resorting alignment
[ debugger ]
pause [ i_n_seconds | r_seconds ] [ s_message]
suspends execution for specified number of seconds. A fraction of a second can also be specified, e.g. pause 0.01 If no argument is specified, the program will wait until RETURN is pressed.
Examples:
pause 0.1 # hundred milliseconds
pause 5 "You have 5 secs" # pause for 5 seconds
read object s_icmhome+"dcLoop.ob" # How to analyze the conformational stack
read stack s_icmhome+"dcLoop.cnf"
display a_//ca,c,n # display backbone
for i=1,Nof(conf) # for all stack conformation
load conf i # load and redisplay each of them
pause "Press Return. N"+i # gives you time to inspect the structure
endfor # go on to the next conformation
Debugging shell scripts
The
pause
command also can set the program into a debugger mode in which you will
be prompted to confirm each command by pressing RETURN. In the debugger mode
the
l_commands flag will be automatically set to yes
and restored upon quitting.
This is how to do it:
- To start the debugger mode, add to your script: pause "START DEBUGGER"
- To quit the debugger mode, type or add to your script: pause "QUIT DEBUGGER"
create a PostScript file with a plot (for a built-in interactive plot use make plot ).
plot { R_Xdata R_Ydata | M_XmultpleYdata } [ S_PointLabels ] [ S_PlotAxisTitles ] [ { R_4Tics | R_8Tics } ] [ s_epsFileName ] [ options]
- Simple input:
Two compulsory arguments R_Xdata R_Ydata contain the X and Y
coordinates. Both arrays may also be
integer arrays.
- Matrix input:
allows you to specify several data sets. The M_XmultpleYdata matrix
may contain either X,Y1,Y2,..Yn columns or just Y1,Y2,..Yn columns if
option number is used. Matrix M[2,n] or M[n,2] is equivalent to the
simple input R_Xdata R_Ydata (Note that function
Histogram( )
returns such a matrix). Additional convenience: by default, different data
sets will be shown in different colors and a panel with series/color correspondence
will appear at the position specified by the
PLOT.seriesLabels
preference (choose "none" to suppress the panel).
To avoid ambiguity do not use explicit S_PointLabels with the matrix input.
Example:
# table t . It has columnds t.A and t.B
add column t Random(1. 5. 20) name="A"
add column t Random(1. 5. 20) name="B"
# now let us make a matrix with one column containing the order number
m=Transpose(Matrix(Rarray(Count(Nof(t))))) # 1. to 20. column in a matrix
m=m//Transpose(t.A) # add column A from t
m=m//Transpose(t.B)
# add your functions of X here
plot m display
# or
plot m square display
- Axis and Tics:
8-array R_Tics[1:8] contains information about X and Y axis:
{ Xfrom, Xto, XmajorTics, XminorTics, Yfrom, Yto, YmajorTics, YminorTics }.
If only 4 numbers are provided, they are interpreted as { Xfrom, Xto, XmajorTics, XminorTics }
while the Y axis tic marks are determined automatically.
By default, if this argument is missing, the tic marks for both axes are calculated automatically.
Example:
x={1. 3. 4. 7. 11. 18.}
y=Sqrt(x)
plot x y {0.,30.,2.,4.} # only X-axis marks are defined
plot x y {0.,30.,2.,4.,0.,10.,1.,5.} # both axes are explicitly defined
- Title and legends:
string array S_PlotAxesTitles[1:3+NofSeries] contains { "Title", "X title", "Y title" } in the
simplest case. If multiple series are plotted using M_XmultpleYdata or number M_multpleYdata
arguments, each series may be named with additional components of the array:
{ "Title", "X title", "Y title","Y1 title","Y2 title",..}.
- Plot controls:
Optional S_PointLabels has the same number of elements as R_Xdata
or R_Ydata and may contain either string to be displayed at the
corresponding X Y point, or control information about marker type, color
and size. The control string must start with underscore (_).
To display both symbols and string labels, duplicate X and Y arrays
(e.g. X//X, Y//Y) and supply the first S_PointLabel section with
the symbol information and the second one with the string label information.
Examples of string labels:
s={"1crn", "2ins", "1gpu", "3kgb","4fbr","6cia"} # text labels: show as is
s={"_red SQUARE 0.4", "", "", "_green DIAMOND","",""} # control labels
s={"_line" "" "" "_red line" "" "" "_blue line" "" ""} # control labels
The empty string tells the program to inherit all the settings for the previous
point. Individual components of the string label are (i) color, (ii) mark type
and (iii) mark size. Omitted components are not changed. Allowed mark types:
line, cross, square, triangle, diamond, circle, star, dstar, bar, dot,
SQUARE, TRIANGLE, DIAMOND, CIRCLE, STAR, DSTAR, BAR.
Uppercase words indicate filled marks.
Options.
- append - append the plot to an existing plot file.
- display - view the created postscript file with an external viewer
defined by the
s_psViewer
variable.
- grid, or grid="x", or grid="y"
- draw grid at the major tics for the specified axis.
Default: for both axes ("xy").
- exact - data points can reside exactly at a margin.
- regression - draw linear regression line.
- frame - draw NO frame around the plot (paradox isn't it? yeaah
we are tricky).
- origin - make origin at (0,0) point.
- link - enforce 1:1 aspect ratio, equivalent to
PLOT.Yratio = 1.0 .
- comment= S_xyXYtext -
this option allows to draw one line of text along all the four sides
of the plot box. The string array may contain up to four strings {s_x,s_y,s_X,s_Y}:
- s_x: lower horizontal string, i.e. comment={"xxxxxxx"}
- s_y: left vertical string, i.e. comment={"","yyy"}
- s_X: upper horizontal string, i.e. comment={"","","XXXXXXX"}
- s_Y: right vertical string, i.e. comment={"x","y","X","YYY"}
This option may be used to draw amino acid sequence around a contact plot box or
a dot plot box.
- number generates the sequential numbering for
X-array if this array is missing and sets a natural X tic style.
In case of matrix input (see above) option number
allows to omit the X-array.
String variable s_epsFileName with extension .eps
defines the name of a PostScript file where the resulting plot
is to be written to. The default of s_epsFileName is "def.eps".
Examples:
x = Rarray(90,0.,360.) # an array of angles with 4 deg. steps
plot x Sin(x) display
plot x//x Sin(x)//Cos(x) display # quick and dirty way to have two data sets.
# Now let us get rid of the defect
s = Sarray(2*Nof(x)) # S_PointLabels for both arrays
s[Nof(x)+1] = "_red line" # restart line for the first point
# of the second set
plot x//x Sin(x)//Cos(x) s display # much better
plot Transpose(x)//Transpose(Sin(x))//Transpose(Cos(x)) display
read object s_icmhome+"crn"
crn_m = Sequence(a_/A) # a_/A ignores termini
plot comment=String(crn_m)+Sstructure(a_/A) number Turn(crn_m) display # try it
plot comment=String(crn_m)+Sstructure(a_/A) number Turn(crn_m) {"Turn prediction","Res","P"}
unix gs def.eps # to see it again
See also:
make plot ,
Histogram,
plotRama
macro in the
_macro
file, and examples in the _demo_plot file.
plot area: show matrix values with color |
plot area M_XYdata options [ S_TitleXY ] [ { R_4Tics | R_8Tics } ] [ s_epsFileName ]
plot 2D data from the matrix and mark values by color. Other arguments are the
same as in the plot command.
Distribution of colors is controlled by the PLOT.rainbowStyle preference.
By default the minimal and maximal values of matrix M_XYdata
are used as extremes for coloring.
Options:
- color= R_2MinMax
option allows you to enforce specific boundaries represented by the color range.
For example, if you chose the "blue/red" PLOT.rainbowStyle
the matrix value smaller than or equal to the first element of the R_MinMax array
will be colored blue, while the matrix values larger than or equal to the second
element of the array will be colored red, the middle values will be color with
intermediate colors. The real array of boundaries contains two elements.
PLOT.rainbowStyle = "blue/white/red"
color={1. 3.} # <= 1. are blue; above 3. red
color={3. 1.} # >= 3. are blue; <= 1. are red
- link
- enforce square shape (1:1 aspect ratio) of each cell, overrides
PLOT.Yratio.
- comment= S_xyXYtext
this option allows to draw one line of text along all the four sides
of the plot box. The string array may contain up to four strings {s_x,s_y,s_X,s_Y}:
- s_x: lower horizontal string, i.e. comment={"xxxxxxx"}
- s_y: left vertical string, i.e. comment={"","yyy"}
- s_X: upper horizontal string, i.e. comment={"","","XXXXXXX"}
- s_Y: right vertical string, i.e. comment={"x","y","X","YYY"}
This option may be used to draw amino acid sequence around a contact plot box or
a dot plot box.
- transparent= R_2range
option allows you to make a certain range of matrix values invisible.
If R_2range[1] < R_2range[2], the specified range will be
excluded from the plot, while the values beyond the range will be shown.
If R_2range[1] > R_2range[2], the specified range will be
shown by color, while the values beyond the range will be excluded.
Example:
transparent={1. 3.} # values WITHIN the range are not shown
transparent={3. 1.} # values OUTSIDE the range are not shown
Data can also be transformed and clamped with the
Trim( ) function.
Examples:
read matrix s_icmhome+"def.mat"
PLOT.rainbowStyle = "blue/white/red"
plot area def display # min/max = {-3.,17.}
plot area def color = { 0., 20.} display
plot area def color={-0.,15.} transparent={-10.,5.} display
plot area def[1:12,1:10] link display comment={"X","Y axis"}
#
#
N=210
M=Matrix(N N)
for i=1,N
M[i,?]=Sin((Power(i-12.1 2)+Power(Count(N)-12.1 2)))
endfor
plot area M link display
# just a nice test, default boundaries are used
read pdb "1crn"
MDIST=Distance(Xyz(a_//ca))
s=String(Sequence(a_1./A) )
PLOT.rainbowStyle = "blue/rainbow/red"
# contact map for 1crn, values below 4.8 and
# above 10. A are not shown
plot area MDIST area color = {4.5 15.} transparent={10.,4.8} \
display link grid comment=s//s
print arg1 arg2 arg3 ...
The arguments may be variables or constants of
integer,
real,
string,
logical,
iarray,
rarray,
sarray,
matrix,
sequence,
or
alignment type.
Examples:
print "no. of atoms=", i_out, "GRAPHICS.wormRadius=", GRAPHICS.wormRadius
print bar : showing progress bar from ICM shell |
print bar { "." | " Start" | "End\n" } nSteps
Useful in showing progress in a long for loop.
Example:
l_commands = no
print bar " Start" 100
for i=1,100
read pdb "1crn"
rm a_
print bar "." 100
endfor
print bar " End\n"
a family of three functions for the formatted print:
- printf s_formatString args ... # prints to stdout and s_out
- sprintf [append] s_formatString args ... # prints to s_out only
- fprintf [append] s_file s_formatString args ... # write to a file
printf s_formatString arg1 arg1 arg2 arg3 ...
formatted print, mostly follows the C-language printf syntax.
The arguments may be variables or constants of only
integer,
real,
string type.
s_formatString may contain
-
plain characters that are directly reproduced
-
ambiguous characters:
\\ - backslash, \" - double quote, %% - percent
-
escape sequences for more tricky characters
(\a - bell, \b - backspace, \f - formfeed, \n - newline, \r - carriage return,
\t - horizontal tab, \v - vertical tab)
and
- conversion specifications for each argument of the printf command.
Each specification starts from % and may be followed by - sign
for left adjustment, and precision specification (e.g. %-5.2f ).
-
%c - unsigned character
-
%s - string
-
%d %D - integer
-
%[-] i1.i2f - float (real) in decimal notation
-
%g %G - real in either f or e style, precision specifies the number
of significant digits.
-
%e %E - real in [-]d.ddde+dd style
-
%o %O - unsigned octal
-
%u %U - unsigned decimal
-
%x %X - unsigned hexadecimal
The output is directed to the screen and is also saved in the
s_out
string which can be later written or appended to a file.
Examples:
printf "Resol. = %4.1f N_ml= %-3d\n", a, n
write append s_out "log" # append to the log file
See also:
sprintf [append] [s_] ( prints to the s_out string by default)
fprintf [append] s_file ( directly prints to a file).
print image [ window= I_xyPixelSizes]
print the current screen image to the printer defined by the
s_printCommand ICM string variable.
Use option window= to increase the resolution (however in
this case bear in mind that the lines will get thinner and labels smaller).
Be kind to your printer and color the background white (e.g. Ctrl-E ).
See also:
write image
s_printCommand,
View ( window).
Example:
read pdb "4fgf"
nice "4fgf"
color background white # or press Ctrl-E
print image
# or
s_printCommand = "lp -c -ddepartmentalColorPrinter"
print image window=View(window)*2 # increase resolution two-fold
query molcart s_sql_command|S_sql_commands [name=s_tableName] [connection_options]
Performs an SQL query in the connection specified by connection_options .
For SELECT and other queries returning data, this command creates a table.
The result table may be specified by the s_tableName parameter.
All SQL types are converted to appropriate ICM types.
Example:
query molcart "select * from asgsynth where molid=1"
See also: molcart, find molcart, load molcart
quit
Terminates ICM session.
[ Randomize angles ]
a group of commands to modify ICM objects using random numbers.
randomize internal variables in molecules |
randomize vs_ r_angAmplitude
randomly distort current values of specified variables with
either specified or default amplitude in degrees for angles and in Angstroms for bonds.
The range is [CurrentValue - r_angAmplitude, CurrentValue + r_angAmplitude ].
Default amplitude is defined by mcJump ICM-shell variable (30.0 ).
randomize variables in range
randomize vs_ r_angMin, r_angMax
assigns random values within specified range to selected variables.
randomize atom positions
randomize as_ r_amplitude
translates the specified atoms
as_
randomly and isotropically according to
Gaussian distribution with the specified sigma.
randomize molecule positions
randomize ms_ r_amplitude
translates and rotates the specified molecules ms_ randomly and
isotropically according to Gaussian distribution with the
specified sigma. We call it a Pseudo-Brownian random move.
The same moves are used in the montecarlo docking protocol.
Examples:
build string "se ala glu tyr"
randomize v_//!omg 50. # distort all variables with
# 50 degrees amplitude
randomize v_/14:21/phi,PSI -70., -50. # range [-70.,-50.]
copy a_ "ttt"
mv a_ttt. a_
randomize a_2
randomize a_/tyr/!ca,c,n,o 0.05
(Note use of PSI torsion in the last example.)
[ read from file | Read binary | Read html | Read fromstring | Read with filter | read all | Read index table | read http/ftp | read unix | read unix cat | read alignment | read color | Readcomp_matrix | Read conf | read csd | read database | read drestraint | read drestraint type | read factor | Read gamess | read grob | read iarray | read index | read library | Read librarymmff | read map | read matrix | read mol | read mol2 | read trajectory | read object | read pdb | read pdb sequence | read profile | read prosite | read rarray | read sarray | read sequence | read stack | read string | Read table | Read smiles | Read table html | Read table mmcif | Read table mol2 | Read table mol | Read column | Read variable | Read view | Readv restraint | Read vrestraint type ]
read stuff from a disk file, pipe or string.
ICM offers several ways of reading information in:
read ... s_fileName [ mute ] [ pattern= regexp ]
reading from a file. Just say way what and from what file.
The file name is a string and must be quoted.
Usually, the extension can be omitted if it is standard.
Also, in several cases the program will try to find the requested file in a special directory
( s_pdbDir for a PDB file, s_xpdbDir for an xpdb object, etc.),
if is not found in the current one.
Option mute will temporarily switch l_info to no .
Option pattern = regexp will filter out the lines of the text file that match the regular expression.
Examples:
read pdb "1crn"
# s_pdbDir will also be searched.
# It wi |