iMOD Tutorial

 The iMOD Tutorial is a practical guide for researchers who want to perform NMA in Internal Coordinates to explore feasible conformations of protein and nucleic acids. We included four small tutorials with basic instructions for:

We will use the structure of the ribosomal RNA binding protein S15 (1ab3, cyan) to illustrate a simple NMA calculation

In the Download section you can be found all the binaries and example files to complete the tutorial. Please, uncompress and untar the corresponding tutorial file. You will have all the necessary files to follow the tutoriales. We recommend to create a new working directory, so all the output files will be stored on it.

1) Performing NMA in IC.


To compute the normal modes of a macromolecule, only the protein or nucleic acid structure is required in PDB format:

imode 1ab3.pdb

Please, ensure that input coordinates conform PDB format. The presence of all heavy atoms is mandatory; so be aware of missing atoms, alternative conformations, bad placed atoms and a long etc... that can eventually jeopardize your results. Use your favorite PDB checker to anticipate and fix any PDB error. We typically employ Molprobity (online), pdb2pqr (e.g. pdb2pqr file.pdb --ff=CHARMM ), profix from Jackal package or a combination of them.

Here is the screen output:

imode>
imode> Welcome to the NMA in Internal Coordinates tool v1.10
imode>
imode> Reading PDB file: 1ab3.pdb
molinf> Protein   1 chain  1   segment  1 residues: 88 atoms: 744
molinf> SUMMARY:
molinf> Number of Molecules ... 1
molinf> Number of Chain ....... 1
molinf> Number of Segments .... 1
molinf> Number of Groups ...... 88
molinf> Number of Atoms ....... 744
molinf>
imode> Coarse-Graining model: Full-Atom (no coarse-graining)
imode> Selected model residues: 88
imode> Selected model (pseudo)atoms: 744
imode> Number of Dihedral angles: 174
imode> Number of Inter-segment coords: 0 (Rot+Trans)
imode> Number of Internal Coordinates: 174 (Hessian rank)
imode> Range of computed modes: 1-20
imode> Creating pairwise interaction potential:
imode> Inverse Exponential (38974 nipas) cutoff= 10.0, k= 1.000000, x0= 3.8
imode> Packed-Hessian/Kinetic matrices mem.= 0.122 Mb (rank= 174)
imode> Fast Hessian Matrix Building O(n^2) 0.01 sec
imode> Fast Kinetic-Energy matrix Building O(n^2) 0.00 sec
imode> Eigenvector matrix mem. = 0.028 Mb
imode> Diagonalization with XSPGVX()... 0.25 sec
imode> Showing the first 10 eigenvalues:
imode>
imode> MODE   EIGENVALUE
imode>    1  4.88224e-04
imode>    2  8.38843e-04
imode>    3  1.45977e-03
imode>    4  1.94916e-03
imode>    5  2.10617e-03
imode>    6  3.41256e-03
imode>    7  3.54337e-03
imode>    8  4.74782e-03
imode>    9  5.23973e-03
imode>   10  6.38150e-03
imode>
imode>
imode> SAVED FILES:
imode> Log file:                                                      imode.log
imode> Model PDB:                                               imode_model.pdb
imode> ICS eigenvectors:                                          imode_ic.evec
imode>
imode> Bye!

By default, it saves the following files:

  • imode.log --> Log-file.
  • imode_model.pdb --> Used PDB model.
  • imode_ic.evec --> Normal modes file.

With the normal modes files (eigenvectors and eigenvalues) you can either animate them to see how they look or perform a MC simulation. See next sections for details.

 

2) Animating modes.


Once the modes were computed (iMODE), we are ready to see how is the motion that they describe. To animate the first mode (number 1)  type at the command prompt:

imove imode_model.pdb imode_ic.evec imove_1.pdb 1

Here is the screen output:

imove>
imove> Welcome to the Internal Coordinates Motion Tool  v1.07
imove>
imove> Input PDB-file imode_model.pdb
imove> Multi-PDB output file imove_1.pdb
imove> Number of frames to be generated 11
imove> Normal Mode choosen 1
imove> Reading PDB file imode_model.pdb
imove> Formatting residues names
imove> Coarse-Graining model: Full-Atom (no coarse-graining)
imove> Selected model number of residues: 88
imove> Selected model number of (pseudo)atoms: 744
imove> Ptraj info: imode_ic.evec  vectors=20  components=174
imove> Maximum internal coordinate displacement: 156.272797
imove> Dihedral coordinates found = 174
imove> Internal coordinates found (size) = 174
imove> Moving analiticaly (moving internal coordinates)
imove> Added frame    -5 to Multi-PDB
imove> Added frame    -4 to Multi-PDB
imove> Added frame    -3 to Multi-PDB
imove> Added frame    -2 to Multi-PDB
imove> Added frame    -1 to Multi-PDB
imove> Added frame     0 to Multi-PDB <-- 1st model (imode_model.pdb)
imove> Added frame     1 to Multi-PDB
imove> Added frame     2 to Multi-PDB
imove> Added frame     3 to Multi-PDB
imove> Added frame     4 to Multi-PDB
imove> Added frame     5 to Multi-PDB
imove>
imove> Success!
imove> Written movie: imove_1.pdb (11 frames)
imove> Bye!

The program output is a Multi-PDB file named: imove_1.pdb, with 11 MODELs. The motion is represented by equally spaced snapshots going from the negative end (MODEL -5) to the positive end (MODEL 5). The initial structure is the middle model (MODEL 0).

Below, you can see how the two lowest energy modes look like, either by clicking   mode1 and   mode2, or watching the corresponding flash movies.

By default, the amplitude (−a option) is set to twice its thermodynamic value predicted at room temperature (300K). Since true motion amplitude is unknown we encourage you to test different values in order to get the desired appearance. Also the number of modes is a interesting variable to investigate. In Lopez-Blanco et al. we found nice results with Cα and ED potential with default amplitude and number of modes. However, remember that iMC is a proof of concept sampling procedure and not ball-proof conformation ensemble generator, therefore you need to parametrize a bit the input variables. To this respect, any experimental evidence (Rg, distance constraints, etc. ) will be very helpful.  

  

More modes can be observed clicking the following links:   Mode3,   Mode5,   Mode10 and   Mode20.

 

3) Visualizing modes


Any normal mode can be depicted as a 3D vector set. Each of them representing the relative atomic motion. The following command visualizes the first normal mode using red arrows. Note any VMD color can be used instead.

imodview 1ab3_model.pdb imode_cart.evec 1ab3_1.vmd -n 1 -c red

The unique output file 1ab3_1.vmd can be loaded into VMD using the following command in VMD's terminal:

vmd>    cd <work_directory>
vmd>    source <out_vmd>

Since iMODVIEW only plots Cartesian normal modes, the use of --save_cart option in iMODE is mandatory. This way, an additional file with the Cartesian space modes will be generated: imode_cart.evec

In addition, the averaged displacement vectors can be computed at several graining levels. To compute the average displacement over each atom (0), residue (1), segment (2) or chain (3), use the --level option followed by the corresponding number between brackets. Vectors will be located on the geometric center of averaged atoms. For example, the following command will compute the average displacement vectors over all residue atoms.

imodview 1ab3_model.pdb imode_cart.evec 1ab3_1b.vmd -n 1 -c red --level 1

Below you can check previous commands results, for atomic and residue levels (left and right, respectively).

In addition, iMODVIEW can represent the spring network using straight segments. Their thickness will be proportional to their force constant (it can be adjusted using the --thick option).

imodview 1ab3_model.pdb 1ab3_Kfile.dat 1ab3_springs.vmd -c red --op 2

This command will depict all available springs in force constants file. Also, you can adjust the range of plotted springs adding the --kthr and --kthr2 options to the basic command. For example:

imodview 1ab3_model.pdb 1ab3_Kfile.dat 1ab3_springs2.vmd -c red --op 2 --kthr 0.5

In this case, only those springs with force constants above 0.5 will be represented. Results obtained from previous commands are shown below.

 

4) Monte-Carlo in IC modal space.


Once the modes are computed (iMODE) a MC trajectory can be obtained easily typing at the command prompt:

imc 1ab3.pdb imode_ic.evec

Here is the screen output:

imc>
imc> Mon's Monte-Carlo NMA-based trajectory program v1.07 (ADP-Platform)
imc>
imc> Reading Input PDB file
molinf> Protein   1 chain  1   segment  1 residues: 88 atoms: 744
molinf> SUMMARY:
molinf> Number of Molecules ... 1
molinf> Number of Chain ....... 1
molinf> Number of Segments .... 1
molinf> Number of Groups ...... 88
molinf> Number of Atoms ....... 744
molinf>
imc> Coarse-Graining model: Full-Atom (no coarse-graining)
imc> Selected model number of (pseudo)atoms: 744
imc> Opening output trajectory file: imc.pdb
imc> Dihedral coordinates found = 174
imc> Internal coordinates found (size) = 174
imc> Ptraj info: imode_ic.evec  vectors=20  components=174
imc> Number of used modes: 20
imc> ACEPTANCE RATIO(%): 40.319000
imc>
imc> Success!
imc> Written MC-trajectory: imc.pdb (100 frames)
imc> Bye!

The resulting Multi-PDB with the MC trajectory is: imc.pdb. The MC flash movie can be watched below; in addition you can see it in Jmol by following this link:   MC trajectory.

 

5) Morphing in IC modal space.


To illustrate the basic procedure and the method performance, we are going to morph the GroEL monomer in an open state (1aon, cyan) into the closed structure (1oel, yellow).

  M O R P H I N G  
open-->closed

The required input is minimal, just two protein or nucleic acid PDB structures with the same atoms. Input coordinates should conform to PDB format. Given the use of Internal Coordinates the presence of all heavy atoms is mandatory; so be aware of missing atoms, alternative conformations, bad placed atoms and a long etc... that can eventually jeopardize your results. Use your favorite PDB checker to anticipate and fix any PDB error. We typically employ Molprobity (online), pdb2pqr (e.g. pdb2pqr file.pdb --ff=CHARMM ), profix from Jackal package or a combination of them.

To perform the morphing just prompt:

imorph 1aon.pdb 1oel.pdb

Here is the screen output:

imorph>
imorph> Welcome to iMORPH v1.27
imorph>
imorph> Model PDB file: 1aon.pdb
molinf> Protein   1 chain  1   segment  1 residues: 524 atoms: 3847
molinf> SUMMARY:
molinf> Number of Molecules ... 1
molinf> Number of Chain ....... 1
molinf> Number of Segments .... 1
molinf> Number of Groups ...... 524
molinf> Number of Atoms ....... 3847
molinf>
imorph> Coarse-Graining model: Full-Atom (no coarse-graining)
imorph> Selected model number of residues: 524
imorph> Selected model number of (pseudo)atoms: 3847
imorph> Target PDB file: 1oel.pdb
imorph> Number of Inter-segment coords: 0 (Rot+Trans)
imorph> Number of Internal Coordinates: 1033 (Hessian rank)
imorph> Range of used modes: 1-206 (19.9%)
imorph> Number of excited/selected modes: 4(nex)
imorph>
imorph>  Iter      RMSD  RMSD(CA) NMA   NMA_time
imorph>     0 16.434504 16.013224   0       none
imorph>    53 15.610546 15.202492   1   3.74 sec
................................................
imorph>  1858  3.092514  2.640378  16   3.99 sec
imorph>  2631  2.268762  1.699723  17   4.60 sec
imorph> 10000  1.808299  1.151047            END
imorph>
imorph> Movie file:                            1aon_1oel_movie.pdb
imorph> Score file:                            1aon_1oel_score.txt
imorph> Log file:                                    1aon_1oel.log
imorph>
imorph> Success! Time elapsed 136.000
imorph> Bye!

By default, it saves the following files: 

  • imorph.log --> used command and parameters log
  • imorph_score.txt --> score file to check for convergence
  • imorph_movie.pdb --> morphing trajectory Multi-PDB

Below some morphing snapshots (cyan) are represented simultaneously with the target structure (yellow):

The morphing result is only 1.15Å Cα RMSD from the target. The quality of fitness and the excellent Secondary Structure maintenance can be appreciated in the flash movie below. Note that in none case any secondary structure constraint was used.

To analyze the trajectory ( imorph_movie.pdb ) we recomend VMD, but you are free to use your favorite program, as long as it reads Multi-PDB files. In addition you can observe the trajectory interactively:   View in Jmol. The images and the movie were created with VMD using the POVray rendering engine.

If not evident, it would be convenient to check out convergence. To this end just plot the RMSD as function of the iteration number using GNUplot:

> gnuplot -persist
> gnuplot> plot "imorph_score.txt" u 1:2 w l
> gnuplot> exit

If the the slope is not approximately horizontal at 5000−10000 you can either run iMORPH again increasing the number of maximum iterations (−i), or alternatively you can continue the morphing process introducing the final structure as initial model. To this end, you should add previously the −−morepdbs option to force the final fitted structure output (imorph_fitted.pdb).

Note: The conformational refinement is an stochastic process; thus you should not expect to obtain exactly the same screen output and the same results between different runs.

iMORPH allows to open "closed" structures as well. To perform this morphing just reverse the order of initial and target structures:

imorph 1oel.pdb 1aon.pdb −o imorph2
  M O R P H I N G  
closed-->open

The initial closed structure, 1oel, is shown in cyan and target open structure, 1aon, in yellow. The −o option is added to avoid overwriting previous results.

 

The final structure is again very close to the target, i.e. 1.20Å Cα RMSD. As in above case, the quality of fitness and the excellent Secondary Structure maintenance are evident. Also, you can observe the trajectory interactively:   View in Jmol.