PrevICM Language Reference
Manipulations with molecules
Next

[ Build faq | Convert pdb | Regularization procedure | Molecule create | Molecular modifications | Objects merge | Merge2 | Xyz morphing | Stereo reconstruction ]

How to build new object from a sequence


The easiest way to build an object with one of several peptides is to use the build string command. There you can use a one letter code (upper case characters) or three-letter code and separate sequences of different chains by a semicolon. Examples:
 
 build string "AAAAA"       # penta-alanine 
 build string "ASFHGD;EQWR" # two chains 
To create a DNA duplex or a compound, use GUI.
For a more flexible building procedure, follow the following steps:
  1. Create the ICM sequence file either manually or using IcmSequence function, e.g.
     
       write IcmSequence( "FAASVRES", "nh3+", "coo-") "file.se" 
     
       read sequence "memb.seq" # creates the ICM sequence memb 
       write IcmSequence( memb , "nh3+", "coo-") "myseq.se" 
       build "myseq" 
    
    You can also build sequence directly without creating a file with the build string . See the build command and IcmSequence( ) function.
  2. Change the default conformation using the available information. Possibilities:

Examples:
 
 build string "se nh3+ ala his leu trp coo-"   
 set v_/3/xi1 -60. 
 minimize 


How to quickly convert a pdb file into an ICM-object


Sometimes it is necessary to have a PDB file in the form of an ICM molecular object. For example, it's a convenient way to list and/or to change a torsion angle (or a series of them). All what you need is to use convert command. One more ICM-format object will be created (use show object command to see the list of currently loaded molecular objects). The above method is good only for a limited set of tasks mostly related to structure analysis. If you want to perform further conformational sampling by energy optimization it is better to regularize the pdb-object (see the next section)

The convert command will also set selftethers to allow future restrained minimization with the "ts" term
We recommend to use the convertObject macro which optimizes hydrogens and can do some necessary cleanup.
See also strip



How to prepare a PDB structure for energy calculations (regularization)


Regularization is a sophisticated multi-step procedure. It consists of the following six steps. See macro regul .

How to create a new molecule or a residue for the ICM residue library


Let us assume that your input is a pdb file with a new small organic molecule and you want to create a proper ICM object from this molecule. What is currently missing in the description may be the following: Identify the molecule or residue you would like to transform into the ICM-residue entry. To build all the above descriptions, perform the following procedures:

How to modify an ICM-object: some standard modifications.


[ methylation | hydroxylation | glycosylation | sulfation | amidation | phosphorylation | ssbond-formation | peptide-bond ]

Methylation, hydroxylation, glycosylation, sulfation, amidation, phosphorylation, disulfide bond formation, peptide cyclization/bond,
ICM allows to perform most of the common chemical modifications of peptides and other biological molecules. It is easy to build a linear chain of amino acids and add N- and C- termini. D-amino acids can be introduced by adding capital D in front of the residue name (i.e. Dala). To make further modifications we will use the modify and the make [disulfide | peptide] bond commands. Let us consider the main categories, using the nh3-DCSTVYHCK-coo peptide as an example. Start you session with
 
 build string "se nh3+ asp cys ser thr val tyr his cys lys gly coo-" 
Now, if you like to see the results of your operations, display the molecule and do the following: The popular modifications:
The following example shows how to build a cyclic peptide cyclosporin A:
 
#  read pdb "1csa" 
#  make bond a_1csa.m/1/n a_1csa.m/11/c 
#  write library "cs" a_/1 
#  display grey 
 build string  "se thr thr gly leu val leu ala Dala leu leu val" 
 modify a_/2/og1 a_/2/hb 
 modify a_/3/hn "ch3" 
 modify a_/4/hn "ch3" 
 modify a_/6/hn "ch3" 
 modify a_/9/hn "ch3" 
 modify a_/10/hn "ch3" 
 modify a_/11/hn "ch3" 
 rename a_/1  "bmt" # actually, the residue BMT is more complex 
 rename a_/2  "aba" 
 rename a_/3  "sar" 
 rename a_/4  "mle" 
 rename a_/6  "mle" 
 rename a_/9  "mle" 
 rename a_/10 "mle" 
 rename a_/11 "mva" 
 display 
 make peptide bond a_/11/c a_/1/n 
 minimize "vw,14,to,hb,el,ss" 
 montecarlo "vw,14,to,hb,el,ss" 


How to merge two ICM-objects


(the move command). It may be necessary to merge two or several ICM-objects or molecules to one, For example, if you are dealing with a docking problem and have prepared two molecular objects separately. The ICM command move allows you to do that. Technically, it rearranges virtual connections in the ICM molecular tree responsible for the description of the molecules in one ICM-object or in several ones.
 
 read object "complex"    # load a two-molecule ICM-object 
 display virtual a_//!h*  # display molecules with virtual bonds 
 color molecule 
 show object              # one ICM-object loaded 
 
 read object "crn"        # load one more ICM-object 
 display virtual 
 color a_2. magenta 
 show object              # two ICM-objects loaded 
 move a_2.* a_1.          # merge two ICM-objects to one 
                          # with virtuals connected to the origin 
 
 show object              # now two loaded ICM-objects becomes one 
 
 connect a_1.3            # you can move newly incorporated molecule 
                          # w/respect to the original complex. 
                          # do not forget to press ESC key in the 
                          # graphics window to complete the command 
 
                          # and / or you can save the new 
                          # three-molecule object to a new file 
 write object "super_complex" 
(See connect to learn more about the command.)
If, on the contrary, you would like to have one or several molecules from an ICM-object as an independent ICM-object, you should simply delete unnecessary molecules and to save the remaining one(s) as a new ICM object, for example:
 
 read obj "super_complex" # suppose you saved "supercomplex" 
                          # from above example, then...  
 
 delete a_1.1             # all what you need is a_1.2 and a_1.3, 
 show molecule            # right? 
 write object "remains_of_super" 
                          # new ICM-object file "remains_of_super.ob" 
                          # contains the 2nd and the 3rd molecules 


How to make a hybrid model from several pdb files


To swap parts between several pdb files, read all of them to icm, and rename the chain which are you going to graft into the template, so that the template and the graft have the same name. Sometimes the two structures need to be superimposed. So, what is important for 'graftability' is
  1. the graft has the same chain name (see rename )
  2. the graft has residue numbers consistent with the template (see align number )
  3. the graft has consistent coordinates (see superimpose )
Example:
  
 read pdb "1crn" 
 read pdb "1cbn" 
 rename a_2.1 "m"  
     # or rename a_2.1 Name(a_1.1)[1]  to do it automatically 
 superimpose a_1.1 a_2.1 align   # see more specific  

The second concern is residue numbers. They need to be unique. This can be performed with the align number command, e.g.
 
 align number a_2.1/21:28 22   # renumber the loop starting from 22  

Now you can write the pieces to a file and after you read it back the pieces will become one molecule.
 
 write pdb a_1.1/1:20  "hyb" 
 write pdb a_2.1/21:28 "hyb" append 
 write pdb a_1.1/29:99 "hyb" append 
  
 read pdb "hyb"   # read the hybrid in 
 cool a_          # display it 

These operations are combined in the mergePdb macro, e.g.
 
 mergePdb a_2./20:25  a_1./300:308 # creates hybrid.pdb file 


How to generate a series of intermediates between the two given structures


The following procedure will solve the problem:
 
 read pdb "bj1bb"       # first structure  
 read pdb "bj2bb"       # second structure  
 strt = Xyz(a_1.//*)    # matrix (3, N_of_atoms) of the first ... 
 fnsh = Xyz(a_2.//*)    # ... and of the second 
 display a_1. red       # to see what is going on if you need it  
 display a_2. blue  
 nn = 300               # to generate 300 intermediate conformations  
 x = 1./nn 
 for i = 1, nn    
   set a_1.//* strt*(1.-x*i) + fnsh*x*i 
   write pdb a_1. "x"+i   
                 # uncomment the above line if you need  
                 # to save intermediates in x1.pdb, x2.pdb, etc. 
 endfor 
 quit 


How to reconstruct a structure from a published stereo picture


Follow these steps:
Example:
 
 read column "xxy"  # 3 numbers in each line + a header: #> xl xr y 
 makePdbFromStereo xl xr y 6. 
 read pdb unix cat 
 ATOM .... 
 ATOM .... 
           # Ctrl-D 
 display 


Prev
Stacks merge
Home
Up
Next
Animation