[ alignment | all | alpha helix | amber | append | array | atom | axis ]
group command) or actually aligned (or realigned) with
either pairwise function Align ( seq1, seq2 ) or multiple alignment command
align sequence_group
Pairwise sequence alignment is performed with the ZEGA (Zero End-Gap Alignment) algorithm. You can
read, write, list, show, delete or edit an alignment.
Flag l_showSstructure allows you to show the secondary structure string which belong to a participating
sequence to be displayed.
When you show the alignment, the consensus string appears
on top. The meaning of consensus characters is explained
below and the string can be extracted with the Consensus( ) function.
A table with relative amino acid numbers for all sequences in the alignment is returned by the Table( ali_ ) function. An array of mean scores for each column of a multiple sequence alignments is returned by the
Rarray( ali [ exact ] ) function.
Coloring 3D models by local alignment strength. Space averaging
See:
selectSphereRadius and ribbonColorStyle = "reliability"
Arithmetics:
- extracting a domain (i.e. a certain position range) from an alignment
alignment[i1:i2]oralignment[i]oralignment[I_pos ] - extracting an alignment of a group of sequences from a larget alignment
Align(aliLarge, I_seqNumbers ) - projected alignment: concatenation of two alignments sharing the same sequence. The shared
sequence serves as a ruler for merging the two alignments. The alignments can be of arbitrary
size and number of sequences.
In the simplest case of three sequences a, b, c and alignments ab and bc, the operation ab//bc
will create an alignment of three sequences a b c. The function Align(ab//bc,{1,3}) will
extract the, so called, projected alignment of a and c through b.
Example:
ali1 // ali2 returns Projected ali. a VYRWA-W b FK-WG--KW a VYR-WA---W b -FKWGKW c AKGWAPGKW b -FK-WG--KW c -AKGWAPGKW - projecting a numerical property from a sequence to alignment:
r property transfer via alignment{Rarray}( R_property,seq_,ali_,r_gapDefault ). - projecting a numerical property from alignment to a sequence :
map aa property to sequence{Rarray}( R_ali,ali_from,seq_|i_seqNumber )
Deleting some sequences from an alignment To delete a list of sequences from an alignment use the following command:
delete alignmentName only seq1 seq2 ...
To delete sequences selected via the graphics user interface from an alignment use the
delete alignmentName only selection
command.
Example
delete sh3 only Fyn
delete sh3 only selection
Alignment functions and macros:
Align( seq1n seq2m [ M_nxmPosScores | area ] ) = ali2Align( seq3D1 seq3D2 [ distance | superimpose ] ) = ali3DAlign( [selection] ) = ali2 ; first two (selected) sequencesAlign( ali seq1 seq2 ) = ali2 ; sub-alignment of seq1 vs seq2Align( ali I_seqNumbers ) = sub-alignmentConsensus( ali [ i_seq| seq ] ) # direct or projected-to-a-sequence consensus string- Distance( ali
[0|1| exact] ) - Distance( ali1 ali2 [exact] )
Index( ali [selection| seq ] )Index( ali as_ ) = Iarray ; columns indexesMatrix( ali [number] )Matrix( ali R_26aa_properties )Min( ali seq ) # index of the nearest sequence to seqName( ali [alignment] ) # returns names of sequences in alignment [or alignment itself]Name( ali seq ) # returns the name of the closest sequence in alignmentNamex( ali ) # returns the commentNof( ali ) # number of sequences in itPattern( ali [exact] ) # converts consensus into a pattern like "A?\{2:4\}C"Probability( ali2 .. ) # significanceProfile( ali .. ) # makes profile- Rarray( ali exact | simple ) # conservation values
Rarray( R_l ali_l seq_li|i ) # projects real array of length l to a sequence of li, also oppositeRes( ali seq ) # 3d residues in alignmentScore( ali [identity|similarity|comp_matrix..] ) # alignment scoreSelect( rs ali ) # propagate selection to other objects by alignmentSequence( ali ) # returns a 'consensus' chimeric sequenceSmooth( ali i_gapExpand ) # expand around gapsString( ali [tree] ) # alignment as text, or Newick tree.Table( ali [I_alipos] [number| residue| label] ) # makes a spreadsheet/ICM tablecalcPairSeqIdsFromAliali l_mode # macro returning pairwise sequence identities from alignment
align sequenceappend sequencefind alignment- linkali ms
make treeali_name [ s_epsFile ]make sequenceali_range # extract vertical blockmoveali seq [ i_new_seq_pos ] # move sequence up/down- select ali rs
set colorali s|i_schema # eg "icm-combo"set fieldali i_slot:1|2|3 [ R_aliPosValues] [ s_name ]set foregroundali # push alignment window to the topset siteset tetherali # use alignment to set tethers, also superimposeetc.
Examples:
read alignment "globins.msf"
list alignments
glob_fragment = globins[10:36]
show glob_fragment
delete alignments
How to extract a sub-alignment?If you have a large alignment and you want to select a sub-alignment without realigning, use the
Align( ali I_indexes ) function. The indexes in term can be returned by the Index( S_name .. ) function if you know the name pattern of interest. Example in which we create an alignment aln and then extract a sub-alignment with a,b,e :
make sequence 10 20 # makes rangomd sequences and names them a,b,c,..
align sequence # creates alignment aln
# preparations finished
show Index( Name(aln) "[abe]" regexp all) # indexes of sequences with names matching the expression
aln_abe = Align(aln, Index( Name(aln) "[abe]" regexp all))
GUI allows one to define how a hidden block is displayed. Two parameters can be specified directly from the Tools Panel in the alignment window:
- the
"Hidden Block Formatcan use the following special symbols:- %l number of hidden chars
- %L length of the hidden block
- %f hidden from
- %t hidden to
" %f .. %t "or" %L " - the
"Hidden block width"which defines the total length of the hidden section.
See also commands assign sstructure , set vrestraint and file
icm.rst
See
the reference.
read and write commands, for example:
write matrix "fil.mat" append
read stack "mc12" append
arrays. ICM-shell allows 4 types of arrays:
- iarray - integer array,
- rarray - real array,
- sarray - string array
- parray - pointer array of binary objects (e.g. chemicals, slides, etc.)
iarray-constant looks like this:
{2, 4, 67, -4}.
rarray-constant looks like this:
{2.0, -4., .67, -4.3433}.
sarray-constant looks like this:
{"a-word","b-word","c-word","..."} .
parray-constants do not exist, a parray can be created in ICM or read from a file.
Commas are optional unless you have negative elements in integer or real arrays.
Array ICM-shell variables can be created by direct assignment:
(e.g.
a={2, 4, 67, -4} or
b={"wow","oops","ouch"} ), read (e.g.
read iarray "numb.iar" ), and written to a file (e.g.
write numb "numb" ).
You can specify a subset
of an integer array (e.g. a[2:15]). Besides, there all kinds of
operations and
functions
on the ICM arrays. There are many ways to create an array:
- read an array from a file: read rarray "a.dat"
- create by direct assignment: a={1, -2, 3, 14}
- use arithmetic expressions: a=Sin(Cos(a))*b
- use functions
Iarray,Rarray, orSarray, e.g.: a=Rarray(15, 2.) - concatenate two elements, e.g.: a=2//3
Arrays ( array ) may appear in ICM shell as a result of the read xml command.
The following functions can be applied to arrays to convert them to a specific type
Tointeger( array )Iarray( array )Toreal( array )Rarray( array )String( array )Sarray( array )Table( array )
Index access to specific arrays (e.g. a={1,2,3,4,5,6} ):
- by number, e.g. a[1], a[3], a[$] (dollar for the last member)
- by range, e.g. a[2:4], a[4:$]
- by integer array, e.g. a[{1,4,6}], or a[3//4//$]
ICM functions related to atoms:
Here is a recipe on how to create an object with carbons as Z-axis sampling points every Angstrom:
n = 30; z_shift = 15.
build smiles String("C",n)
strip a_ virtual
delete a_//h*
#
mxyz = Matrix(n,3) # x,y,z matrix initiallized
for i=1,n
mxyz[i,3]=z_shift + i - 1.
endfor
#
set a_// mxyz # assign coordinates