Classic EM Tutorial, Part I
This "classic" tutorial teaches some basic map editing skills and how to perform a fast rigid-body docking of structures to single molecule density maps that were extracted by difference mapping of assemblies (here: ncd-decorated microtubules). Many of the early Situs tools are described in part I of this tutorial. Part II describes the next-generation point cloud matching approach. The results can be compared to solutions distributed with the tutorial software. More documentation is available in the user guide, on the methodology page, and in the published articles.
Content:
Download and Installation

Follow first the simple registration and download steps .

In addition to the executables, the Situs_2.5_single_tutorial/bin directory also contains four additional data files:

In the following, we will use these four files to dock ncd to the microtubule, following the steps described in Wriggers et al., 1999. The user can compare all generated files to the files in the solutions directory.

Data Flow and Design

The series of steps and the programs that are required to dock an atomic-resolution structure into a single-molecule, low-resolution EM data are shown schematically in the following figure. Detailed program explanations are given in the user guide.

Schematic diagram of EM related routines. Major Situs components (blue) are classified by their functionality. The main data flow is indicated by brown arrows. The visualization (orange) for the rendering of the data requires a molecular graphics viewer (we use here the VMD graphics program, Chimera and Sculptor also support Situs format).

Standard EM formats are supported and are converted to cubic lattices in Situs format.
This is done with the map2map utility. Subsequently, the data is inspected and, if necessary, prepared for  vector quantization using a variety of visualization and analysis tools. All Situs docking tools require one volume and one PDB structure for the fitting. Atomic coordinates in PDB format can be transformed to low-resolution maps, if necessary, and vice versa, to allow docking of maps to maps or structures to structures. After the vector quantization, the high-resolution structure is docked to the low-resolution density by the corresponding codebook vectors. The resulting docked complex can be inspected using a graphics program.

Converting the EM Maps

We convert EM maps to Situs format with the map2map utility. Enter at the shell prompt:

./map2map 0_mt.ascii 1_mt.situs

Enter the file format option 1: ASCII. Enter the axis order option: 1: X Y Z (order is already correct). Now enter the number of columns: 89, the number of rows: 89, and the number of sections: 61. Enter the grid (lattice) spacing in Angstrom: 6. Finally, enter the origin of the map: 0 0 0.

Repeat this procedure similarly for the other two EM maps to create the files 1_nm.situs and 1_nd.situs.

Here is the full map2map session for file 0_mt.ascii:

% ./map2map 0_mt.ascii 1_mt.situs
map2map>
map2map> Situs file format conversion for cubic lattice maps typically used in EM.
map2map> Choose one of the following 10 options.
map2map>
map2map> OTHER -> Situs:
map2map>
map2map>      1: ASCII (editable text) file, sequential list of map densities**
map2map>      2: MRC2000 or CCP4 binary (auto)*
map2map>      3: MRC2000 or CCP4 binary (manual)**
map2map>      4: SPIDER binary**
map2map>      5: X-PLOR map (ASCII editable text)*
map2map>      6: Generic 4-byte field binary (unknown map or header parameters)
map2map>
map2map> Situs -> OTHER:
map2map>
map2map>      7: Situs -> MRC2000 / CCP4 binary (auto)*
map2map>      8: Situs -> MRC2000 / CCP4 binary (manual)**
map2map>      9: Situs -> SPIDER binary*
map2map>     10: Situs -> X-PLOR (ASCII editable text)*
map2map>
map2map>      *: automatic fill of header fields
map2map>     **: manual assignment of header fields
map2map>
map2map> 1
map2map>
map2map> Data order and axis permutation in file 0_mt.ascii.
map2map> Assign columns (C, fastest), rows (R), and sections (S, slowest) to X, Y, Z:
map2map>
map2map>         C  R  S =
map2map> ------------------
map2map>      1: X  Y  Z (no permutation)
map2map>      2: X  Z  Y
map2map>      3: Y  X  Z
map2map>      4: Y  Z  X
map2map>      5: Z  X  Y
map2map>      6: Z  Y  X
map2map> Enter selection number [1-6]: 1
map2map> Enter number of columns (X fields): 89
map2map> Enter number of rows (Y fields): 89
map2map> Enter number of sections (Z fields): 61
map2map> Reading ASCII data...
map2map> Volumetric data read from file 0_mt.ascii
map2map> Enter desired cubic grid (lattice) spacing in Angstrom: 6
map2map>
map2map> Enter X-origin (coord of first voxel) in Angstrom (0 is recommended, a different value shifts the resulting map accordingly): 0
map2map>
map2map> Enter Y-origin (coord of first voxel) in Angstrom (0 is recommended, a different value shifts the resulting map accordingly): 0
map2map>
map2map> Enter Z-origin (coord of first voxel) in Angstrom (0 is recommended, a different value shifts the resulting map accordingly): 0
map2map>
lib_vio> Writing density data...
lib_vio> Volumetric data written to file 1_mt.situs
lib_vio> File 1_mt.situs - Header information:
lib_vio> Columns, rows, and sections: x=1-89, y=1-89, z=1-61
lib_vio> 3D coordinates of first voxel: (0.000000,0.000000,0.000000)
lib_vio> Voxel size in Angstrom: 6.000000
map2map>
map2map> All done.

Note that the origin of the coordinate system is set to the first voxel in the map.

Computing the Difference Density Maps

We compute difference density maps with the voldiff utility. To compute the difference density map of the first, attached ncd monomer, subtract the microtubule data from the monomer-decorated microtubule data:

./voldiff 1_nm.situs 1_mt.situs 2_s1.situs

Similarly, to compute the difference density map of the second, detached monomer, subtract the monomer-decorated microtubule data from the dimer-decorated microtubule data:

./voldiff 1_nd.situs 1_nm.situs 2_s2.situs
Inspecting Data Cross Sections

Now we inspect the generated Situs maps with the voledit utility. voledit requires a fixed-width font in the shell window.

First we look at the dimer-decorated microtubule. At the shell prompt, enter:

./voledit 1_nd.situs

The program prints the header information and the minimum and maximum density values of the map. Note that the default density cutoff for the rendering of voxels is the mean of the minimum and the maximum density. Enter the desired cross section type: 1: (x,y)-cross section as function of z-value. The program will render the cross section at the half-maximal z position. At the program prompt, increase or decrease the z position or enter "0" for changing the cutoff value. What happens if you start the program with cross section types 2: (z,x) or 3: (y,z)? Also inspect the files 1_mt.situs, 1_nm.situs, 2_s1.situs, and 2_s2.situs (hint: a cutoff value of 12 gives best results for file 2_s2.situs).

Here is an example voledit session for file 1_nd.situs:

% ./voledit 1_nd.situs
lib_vio> File 1_nd.situs - Header information:
lib_vio> Columns, rows, and sections: x=1-89, y=1-89, z=1-61
lib_vio> 3D coordinates of first voxel: (0.000000,0.000000,0.000000)
lib_vio> Voxel size in Angstrom: 6.000000
lib_vio> Reading density data...
lib_vio> Volumetric data read from file 1_nd.situs
voledit> Min. / max. density values: -31.000000 / 51.000000
voledit> Choose one of the following three options -
voledit>      1: (x,y)-cross section as function of z-value
voledit>      2: (z,x)-cross section as function of y-value
voledit>      3: (y,z)-cross section as function of x-value
voledit> 1
voledit> Box coordinates (1,1,1)=(0.000000,0.000000,0.000000); (89,89,61)=(534.000000,534.000000,366.000000)
voledit> Cross section at z = 31, display density threshold = 10.000000, display voxel step = 1:
                                                                                           y
                                                                                           ^

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 85

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 81

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 77
                              uuuu        uuu
.   .   .   .   .   .   .   OOOOOOu .   .OOOO   .   .   .   .   .   .   .   .   .   .   .- 73
                            OOOOOO       ^
.   .   .   .   .   .   .  uOOOO^   .   . uu.   .   .   .   .   .   .   .   .   .   .   .- 69
                  uuOOOu  uOOOOOu       uOOOO     uuuu
.   .   .   .   .OOOOOOOO ^^^OOOOOu .  uOOOOOu uuOOOOO  .   .   .   .   .   .   .   .   .- 65
                 OOOOOOO       OOOOOu  OOOOOO^OOOOOOOOOu uuuO
.   .   .   .   . OOOOOOu   .  OOOOOO   .   .  ^OOOOOOOOOOOOO   .   .   .   .   .   .   .- 61
                   OOOOOOOOOuuuOOOO^                 OOOOOOOO     uu
.   .   .   .   . OOOOOOOOOOOOOO^   .   .   .   .   . ^^^OOOOu  uOOOOu  .   .   .   .   .- 57
            uOOOOO^OOO^^^OOOOOO^                          ^OOOOOOOOO^
.   .   .  uOOOOOO  .   .OOOOO^ .   .   .   .   .   .   .  ^OOOOOO^ .   .   .   .   .   .- 53
           OOOOOOOOuuOOOOOOO^                               ^OOO^^
.   .   .  ^OOOOOOOOOOOOOOOO.   .   .   .   .   .   .   .   .   .   uOOOOu  .   .   .   .- 49
              ^OOOOOOOOOOOOO                                  uOOOOOOOOOOOOOOu
.   .   .   .   ^OOO^ ^^^^^ .   .   .   .   .   .   .   .   .uOOOOOOOOOOOOOOOOO .   .   .- 45
                       uuOu                                   OOOOOO^^  ^^OOOO
.   .   .   .   .   uOOOOOOu.   .   .   .   .   .   .   .   .uOOO^  .   .  ^^^  .   .   .- 41
            uuuuuuuOOOOOOOOO                                OOOOOuuuuOOu
.   .   .   OOOOOOOOOOO^^^Ou.   .   .   .   .   .   .   .  OOOOOOOOOOOOOO   .   .   .   .- 37
            ^^^^^^OO^^    OOOuu                           uOOOOOOOOOOOOOOu
.   .   .   .   .   .   .uOOOOOOu   .   .   .   .   .   uOOOO^^^^^^OOOOOOOOu.   .   .   .- 33
                        uOOOOOOOOuu                    OOOOOOu      OOOOOOOO
.   .   .   .   .   .  uOOO^^^^OOOOOOOu .   .   .   uuuOOOOOOOOuuOOOOOOOOOO .   .   .   .- 29
                       ^^^     OOOOOOOOOOOOuuu   OOOOO  ^^OOOOOOOOO^^^^O^^
.   .   .   .   .   .   .   .  OOOOO^^^OOOOOOO  OOOOOO  .   ^OOOOO^ .   .   .   .   .   .- 25
                                       OOOOO^    OOOO        OOOOOu
.   .   .   .   .   .   .   .   .   .   ^^^ .   . ^^Ouu .   uOOOOOOu.   .   .   .   .   .- 21
                                                   uOOOO    OOOOOOO
.   .   .   .   .   .   .   .   .   .   .   .   .uOOOOO^.   .^^^^   .   .   .   .   .   .- 17
                                                 OOOOO^
.   .   .   .   .   .   .   .   .   .   .   .   .^^^^   .   .   .   .   .   .   .   .   .- 13

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 9

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 5

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 1
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
1   5   9   13  17  21  25  29  33  37  41  45  49  53  57  61  65  69  73  77  81  85  89  >x

voledit> Increase/decrease z (enter offset value or 0 for more options):

Extracting Regions of Interest

We want to perform the docking of the ncd crystal structure to two selected regions of density near the microtubule surface. Obviously, the full datasets are too large and contain too many individual protein densities. Therefore, we extract first a small region of interest near the microtubule surface, using the cropping tool within voledit (enter 0 from within the slice window and 4 on the option menu). An inspection of the datasets with voledit shows that the 25x25x25 cube with positions x:57-81, y:33-57, z:15-39 is suitable. First, we extract this region from file 1_mt.situs and save the resulting map to file 3_mt.situs (option 10):

% ./voledit 1_mt.situs
lib_vio> File 1_mt.situs - Header information:
lib_vio> Columns, rows, and sections: x=1-89, y=1-89, z=1-61
lib_vio> 3D coordinates of first voxel: (0.000000,0.000000,0.000000)
lib_vio> Voxel size in Angstrom: 6.000000
lib_vio> Reading density data...
lib_vio> Volumetric data read from file 1_mt.situs
voledit> Min. / max. density values: -32.000000 / 49.000000
voledit> Choose one of the following three options -
voledit>      1: (x,y)-cross section as function of z-value
voledit>      2: (z,x)-cross section as function of y-value
voledit>      3: (y,z)-cross section as function of x-value
voledit> 1
voledit> Box coordinates (1,1,1)=(0.000000,0.000000,0.000000); (89,89,61)=(534.000000,534.000000,366.000000)
voledit> Cross section at z = 31, display density threshold = 8.500000, display voxel step = 1:
                                                                                           y
                                                                                           ^

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 85

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 81

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 77

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 73

.   .   .   .   .   .   .   .   .   .   uuOu.   .   .   .   .   .   .   .   .   .   .   .- 69
                                       OOOOOOu   uuOOu
.   .   .   .   .   .   .   .  uOOuu.  OOOOOOOuuOOOOOOO .   .   .   .   .   .   .   .   .- 65
                               OOOOOOu OOOOOOOOOOOOOOOOOuuuuu
.   .   .   .   .   .   .   . OOOOOOOO  .^^ . ^OOOOOOOOOOOOOOO  .   .   .   .   .   .   .- 61
      u                  OOOOOOOOOOO^              ^OOOOOOOOO
.   .   .   .   .   .   .OOOOOOOO^^ .   .   .   .   .^^OOOOOOuuu.   .   .   .   .   .   .- 57
                         OOOOOOO                         ^OOOOOOOOu
.   .   .   .   .   . uuuOOOOOO .   .   .   .   .   .   . ^OOOOOOOO .   .   .   .   .   .- 53
                     OOOOOOOO^^                             ^OOOO^
.   .   .   .   .   .OOOOOOOO   .   .   .   .   .   .   .   .^^ .   .   .   .   .   .   .- 49
                     ^OOOOOOO                                uOOOOOu
.   .   .   .   .   .  ^^^O^.   .   .   .   .   .   .   .   .OOOOOOOO   .   .   .   .   .- 45
                      uuOOO                                  OOOOOOOO
.   .   .   .   .   uOOOOOOu.   .   .   .   .   .   .   .   uOOOOO^^.   .   .   .   .   .- 41
                    OOOOOOOO                               OOOOOOu
.   .   .   .   .   .^^^OO^Ouu  .   .   .   .   .   .   .  OOOOOOO  .   .   .   .   .   .- 37
                          OOOOuu                         uOOOOOOOOO
.   .   .   .   .   .   .OOOOOOOOu  .   .   .   .   .   OOOOOOOOOO  .   .   .   .   .   .- 33
                        ^OOOOOOOOOuuuu                uOOOOOOO
.   .   .   .   .   .   .^^^^^OOOOOOOOOu.   .   . uuuOOOOOOOOO  .   .   .   .   .   .   .- 29
                               OOOOOOOOOOOOOOu uuOOOOOO^^OOOO
.   .   .   .   .   .   .   .  OOOOOOOOOOOOOOO ^OOOOOOO .   .   .   .   .   .   .   .   .- 25
                                ^^^   ^OOOOOO^  ^OOOOO^
.   .   .   .   .   .   .   .   .   .  ^OOO^.   . ^^^   .   .   .   .   .   .   .   .   .- 21

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 17

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 13

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 9

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 5

.   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .- 1
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
1   5   9   13  17  21  25  29  33  37  41  45  49  53  57  61  65  69  73  77  81  85  89  >x

voledit> Increase/decrease z (enter offset value or 0 for more options): 0
voledit> Choose one of the following options:
voledit>      1:  Enter new z value directly
voledit>      2:  Enter new threshold level for display
voledit>      3:  Enter new voxel step for display
voledit>      4:  Cropping (cut away margin)
voledit>      5:  Zero padding (extra margin)
voledit>      6:  Interpolation (change voxel spacing)
voledit>      7:  Polygon clippling
voledit>      8:  Segmentation (floodfill) of contiguous volume
voledit>      9:  Save current slice
voledit>     10:  Save entire map
voledit>     11:  Quit voledit
voledit> 4
voledit> Voxel range of cropping. Enter new grid values:
voledit> Minimum x value (1-89): 57
voledit> Maximum x value (57-89): 81
voledit> Minimum y value (1-89): 33
voledit> Maximum y value (33-89): 57
voledit> Minimum z value (1-61): 15
voledit> Maximum z value (15-61): 39
lib_vwk> 89 x 89 x 61 map projected to 25 x 25 x 25 lattice.
lib_vwk> New map origin (coord of first voxel): (336.000,192.000,84.000)
voledit> Box coordinates (1,1,1)=(336.000000,192.000000,84.000000); (25,25,25)=(486.000000,342.000000,234.000000)
voledit> Cross section at z = 13, display density threshold = 8.000000, display voxel step = 1:
                           y
                           ^
 ^OOOOOOOu
. OOOOOOOOOu.   .   .   .- 21
  ^^OOOOOOO
.   OOOOOO  .   .   .   .- 17
    OOOOOOOu
.   ^OOOOOOOO   .   .   .- 13
     OOOOOOO^
.   .OOOO^  .   .   .   .- 9
    uOOOOu
.   OOOOOOO .   .   .   .- 5
    OOOOOOO
uuuu. ^^^^  .   .   .   .- 1
|   |   |   |   |   |   |
1   5   9   13  17  21  25  >x

voledit> Increase/decrease z (enter offset value or 0 for more options): 0
voledit> Choose one of the following options:
voledit>      1:  Enter new z value directly
voledit>      2:  Enter new threshold level for display
voledit>      3:  Enter new voxel step for display
voledit>      4:  Cropping (cut away margin)
voledit>      5:  Zero padding (extra margin)
voledit>      6:  Interpolation (change voxel spacing)
voledit>      7:  Polygon clippling
voledit>      8:  Segmentation (floodfill) of contiguous volume
voledit>      9:  Save current slice
voledit>     10:  Save entire map
voledit>     11:  Quit voledit
voledit> 10
voledit> Enter filename for the modified map: 3_mt.situs
lib_vio> Writing density data...
lib_vio> Volumetric data written to file 3_mt.situs
lib_vio> File 3_mt.situs - Header information:
lib_vio> Columns, rows, and sections: x=1-25, y=1-25, z=1-25
lib_vio> 3D coordinates of first voxel: (336.000000,192.000000,84.000000)
lib_vio> Voxel size in Angstrom: 6.000000

Similarly, we create the files 3_nd.situs, 3_nm.situs, 3_s1.situs, and 3_s2.situs from the corresponding files 1_nd.situs, 1_nm.situs, 2_s1.situs, and 2_s2.situs.

Inspecting the Voxel Histogram

Next, we inspect the file 3_nm.situs with the program volhist to make sure the background peak in the voxel histogram is at the origin. When prompted, enter the number of histogram bins (40):

% ./volhist 3_nm.situs test
lib_vio> File 3_nm.situs - Header information:
lib_vio> Columns, rows, and sections: x=1-25, y=1-25, z=1-25
lib_vio> 3D coordinates of first voxel: (336.000000,192.000000,84.000000)
lib_vio> Voxel size in Angstrom: 6.000000
lib_vio> Reading density data...
lib_vio> Volumetric data read from file 3_nm.situs
lib_vwk> Min. / max. density values: -27.000000 / 50.000000
lib_vwk> Please enter the of number histogram bins: 40
lib_vwk> Printing voxel histogram, 40 histogram bins
lib_vwk> (density value; voxel count; top-down cumulative volume fraction):
 -27.000 | 2 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 1.000e+00
 -25.026 |= 27                                                                           | 9.999e-01
 -23.051 |==== 94    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 9.981e-01
 -21.077 |======= 157                                                                    | 9.921e-01
 -19.103 |======== 193   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 9.821e-01
 -17.128 |============ 287                                                               | 9.697e-01
 -15.154 |============== 323 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 9.514e-01
 -13.179 |============= 307                                                              | 9.307e-01
 -11.205 |============== 319 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 9.110e-01
  -9.231 |=============== 350                                                            | 8.906e-01
  -7.256 |======================== 548   .   .   .   .   .   .   .   .   .   .   .   .   | 8.682e-01
  -5.282 |================================ 717                                           | 8.332e-01
  -3.308 |===================================================== 1185 .   .   .   .   .   | 7.873e-01
  -1.333 |====================================================================== 1565    | 7.114e-01
   0.641 |=======================================================================-> 1761 | 6.113e-01
   2.615 |=========================================== 966                                | 4.986e-01
   4.590 |=============================== 714    .   .   .   .   .   .   .   .   .   .   | 4.367e-01
   6.564 |==================== 459                                                       | 3.910e-01
   8.538 |=============== 355    .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 3.617e-01
  10.513 |================ 358                                                           | 3.389e-01
  12.487 |============== 328 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 3.160e-01
  14.462 |=============== 349                                                            | 2.950e-01
  16.436 |============== 325 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 2.727e-01
  18.410 |============= 305                                                              | 2.519e-01
  20.385 |=============== 342    .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 2.324e-01
  22.359 |============== 322                                                             | 2.105e-01
  24.333 |============= 300  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 1.899e-01
  26.308 |============= 295                                                              | 1.707e-01
  28.282 |============== 326 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 1.518e-01
  30.256 |=============== 353                                                            | 1.309e-01
  32.231 |============== 321 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 1.084e-01
  34.205 |============= 303                                                              | 8.781e-02
  36.179 |============== 317 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 6.842e-02
  38.154 |============ 278                                                               | 4.813e-02
  40.128 |========= 211  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 3.034e-02
  42.103 |====== 137                                                                     | 1.683e-02
  44.077 |=== 74 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 8.064e-03
  46.051 |= 40                                                                           | 3.328e-03
  48.026 | 11    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   | 7.680e-04
  50.000 | 1                                                                             | 6.400e-05

lib_vwk> Maximum at density value 0.641

As an exercise, check out what happens if you specify an output file "test" and an offset density value of 10 and a scaling factor of 2 are entered at the program prompt.

The inspection shows that the background peak is already at the origin, so we remove the output file "test". Note also that volhist can be run without an output file as argument, in which case the program simply shows the histogram.

The volhist tool is also useful for discrepancy / difference mapping of simulated maps (created with pdb2vol) that are to be subtracted from experimental maps. In this case a rescaling of the simulated map is in order until the histogram matches that of the experimental map (or until the histogram of the difference map is balanced between positive and negative values if the subtracted map is of same size).

Extracting Single-Molecule Densities
We are now prepared to extract single-molecule densities with the floodfill segmentation utility within voledit (enter 0 from within the slice window, then 8 on the option menu). Inspection of the file 3_s1.situs with the voledit indicates that the voxel at position x=16, y=16, z=16 is located near the center of the density of an attached monomer that can be isolated at a threshold level of 20. Here is the voledit session for extracting the first monomer and writing it to file 4_s1.situs:

% ./voledit 3_s1.situslib_vio> File 3_s1.situs - Header information:
lib_vio> Columns, rows, and sections: x=1-25, y=1-25, z=1-25
lib_vio> 3D coordinates of first voxel: (336.000000,192.000000,84.000000)
lib_vio> Voxel size in Angstrom: 6.000000
lib_vio> Reading density data...
lib_vio> Volumetric data read from file 3_s1.situs
voledit> Min. / max. density values: -19.000000 / 56.000000
voledit> Choose one of the following three options -
voledit>      1: (x,y)-cross section as function of z-value
voledit>      2: (z,x)-cross section as function of y-value
voledit>      3: (y,z)-cross section as function of x-value
voledit> 1
voledit> Box coordinates (1,1,1)=(336.000000,192.000000,84.000000); (25,25,25)=(486.000000,342.000000,234.000000)
voledit> Cross section at z = 13, display density threshold = 18.500000, display voxel step = 1:
                           y
                           ^
         ^OOOO^
.   .   .  ^.   .   .   .- 21

.   .   .  uOOOOOO  .   .- 17
           ^OOOOOO
.   .   .   .OOOO^  .   .- 13

.   .   .   .   .   .   .- 9

.   .   .   uuuu.   .   .- 5
            OOOOO
.   .   .   ^^^ .   .   .- 1
|   |   |   |   |   |   |
1   5   9   13  17  21  25  >x
voledit> Increase/decrease z (enter offset value or 0 for more options): 0
voledit> Choose one of the following options:
voledit>      1:  Enter new z value directly
voledit>      2:  Enter new threshold level for display
voledit>      3:  Enter new voxel step for display
voledit>      4:  Cropping (cut away margin)
voledit>      5:  Zero padding (extra margin)
voledit>      6:  Interpolation (change voxel spacing)
voledit>      7:  Polygon clippling
voledit>      8:  Segmentation (floodfill) of contiguous volume
voledit>      9:  Save current slice
voledit>     10:  Save entire map
voledit>     11:  Quit voledit
voledit> 8
voledit> Min. / max. density values: -19.000000 / 56.000000
voledit> Enter desired threshold level for floodfill segmentation: 20
voledit> Enter floodfill start index x (1-25): 16
voledit> Enter floodfill start index y (1-25): 16
voledit> Enter floodfill start index z (1-25): 16
voledit> 3D coordinates of start grid point (16,16,16): (426.00,282.00,174.00)
voledit> Shrink map about found volume? Choose one of the following options:
voledit>
voledit>      1: No (keep input map size)
voledit>      2: Yes (shrink map)
2
voledit> Filling contiguous volume...
voledit> Filling contiguous volume...
voledit> Contiguous volume, > 20.000000: 284 voxels (6.134400e+04 Angstrom^3)
voledit> Extracted volume, > 0.000000: 724 voxels (1.563840e+05 Angstrom^3)
lib_vwk> 25 x 25 x 25 map projected to 9 x 10 x 14 lattice.
lib_vwk> New map origin (coord of first voxel): (396.000,252.000,132.000)
voledit> Box coordinates (1,1,1)=(396.000000,252.000000,132.000000); (9,10,14)=(450.000000,312.000000,216.000000)
voledit> Cross section at z = 8, display density threshold = 27.000000, display voxel step = 1:
           y
           ^
.   .   .- 9
  OOOO
. OOOOO .- 5
   OOOO
.   .   .- 1
|   |   |
1   5   9   >x
voledit> Increase/decrease z (enter offset value or 0 for more options): 0
voledit> Choose one of the following options:
voledit>      1:  Enter new z value directly
voledit>      2:  Enter new threshold level for display
voledit>      3:  Enter new voxel step for display
voledit>      4:  Cropping (cut away margin)
voledit>      5:  Zero padding (extra margin)
voledit>      6:  Interpolation (change voxel spacing)
voledit>      7:  Polygon clippling
voledit>      8:  Segmentation (floodfill) of contiguous volume
voledit>      9:  Save current slice
voledit>     10:  Save entire map
voledit>     11:  Quit voledit
voledit> 10
voledit> Enter filename for the modified map: 4_s1.situs
lib_vio> Writing density data...
lib_vio> Volumetric data written to file 4_s1.situs
lib_vio> File 4_s1.situs - Header information:
lib_vio> Columns, rows, and sections: x=1-9, y=1-10, z=1-14
lib_vio> 3D coordinates of first voxel: (396.000000,252.000000,132.000000)
lib_vio> Voxel size in Angstrom: 6.000000

Now do the same for the second, detached monomer. Similarly, one finds that the voxel at position x=19, y=12, z=13 is located near the center of the density of the detached monomer in file 3_s2.situs at a threshold level of 12. The threshold cutoff values were found by trial and error to prevent "leaking" of the density into neighboring monomers. Here we also shrink the maps about the found extracted volumes.

Vector Quantization and Docking

Now we can perform the vector quantization and fast docking of the attached monomer with the qrange utility. At the shell prompt, enter

./qrange 4_s1.situs 0_ncd.pdb

and at the program prompt, the user has the choice of inspecting the density distribution before entering a cutoff density value. Only density values that exceed the cutoff are considered in the vector quantization. Here, we enter the cutoff 20. Next, we enter our choice of coordinate system origin convention (no change). This origin determines the relative position of the docked structure when visualized together with the EM map. Next, the program indicates that water molecules were found. We select to ignore the water. Subsequently, we enter the B-factor cutoff (atoms with high B-factors will be ignored). Enter e.g. 300 to select all atoms.

Watch the program vector quantize and dock the atomic and low-resolution data for a range 3 <= k <= 9 codebook vectors. For each number k of vectors, a small number of calculations (eight by default) are repeated with different random number seeds for both atomic and low-resolution data. The averaged codebook vectors are then used for the docking, and their rms variability is saved. After computing the k vectors for both high- and low resolution data, the subsequent docking then determines the six rigid-body degrees of freedom by a least-squares fit [Kabsch, 1976] of the k pairs of vectors. The corresponding vectors are not known a priori, and all k! = k*(k-1)* ...*2 possible permutations are explored. In a practical application, the user selects the number k that produces the smallest vector variability. Here, enter k=3 vectors, which should also result in the lowest rms deviation.

The program returns a list of the 3! = 6 fits, ranked by their codebook vector rms deviation in the second column. The correlation coefficient is shown in the third column. The fourth column shows the internal permutation of the vectors that determine the superposition and is irrelevant here. Note that the correlation coefficient is within a very narrow numeric range, despite the significant differences in orientation between these fits, also the vector rmsd of the best two fits is within a close range.

Select the first fit (enter 1) and enter the output file name: 5_s1_1.dock.pdb. The positional and orientational accuracy of the fitting is estimated based on the statistical vector variability. The file 5_s1_1.dock.pdb now contains the atomic coordinates fitted to the low-resolution map. Also appended to the PDB file are three codebook vectors each for the atomic and low-resolution data, as well as their rms variability. Now, select the second fit and write it to the file 5_s1_2.dock.pdb.

Here is the output of the entire qrange calculation:

% ./qrange 4_s1.situs 0_ncd.pdb
lib_vio> File 4_s1.situs - Header information:
lib_vio> Columns, rows, and sections: x=1-9, y=1-10, z=1-14
lib_vio> 3D coordinates of first voxel (1,1,1): (396.000000,252.000000,132.000000)
lib_vio> Voxel size in Angstrom: 6.000000
lib_vio> Reading density data...
lib_vio> Volumetric data read from file 4_s1.situs
lib_pio> 2632 atoms read.
lib_pio> 2632 atoms read.
.qrange>
.qrange> Map density values below a user-defined cutoff value will not be considered
.qrange> Do you want to inspect the input density values before entering the cutoff value?
.qrange> Choose one of the following three options -
.qrange> 1: No (continue)
.qrange> 2: Show me the minimum and maximum density values only
.qrange> 3: Show me the voxel histogram
.qrange> 1
.qrange> Now enter the cutoff density value: 20
.qrange> Cutting off density values < 20.000000, remaining occupied volume: 284 voxels (6.134400e+04 Angstrom^3)
.qrange>
.qrange> Shift the origin of the map coordinate system? (See user guide)
.qrange>
.qrange> 1: No. Keep current origin.
.qrange> (recommended e.g. if volcube will be used)
.qrange> 2: Yes. Set origin to the centroid of the current map.
.qrange> 3: Yes. Set origin to the centroid of another, related map.
.qrange> 4: Yes. Set origin to a voxel in the current map.
.qrange> 5: Yes. Set origin to an arbitrary vector.
.qrange> 1
.qrange> 1 water molecules found in file 0_ncd.pdb
.qrange> Do you want to exclude the water molecules from the docking?
.qrange>
.qrange> 1: No
.qrange> 2: Yes
.qrange> 2
.qrange> Range of crystallographic B-factors: 2.00 - 100.00.
.qrange> Enter B-factor cutoff (only atoms below this value will be included): 300
.qrange> There are 2629 non-hydrogen atoms, represented by 3307 equally weighted input vectors
.qrange> Sphericity of the atomic structure: 0.68
.qrange>
.qrange> Docking will be carried out for a range 3 - 9 pairs of codebook vectors
.qrange>
.qrange> Now vector quantizing atomic and density data: 3 codebook vectors each
.qrange> Now docking by 3! = 6.000E+00 possible pairs of corresponding vectors
.qrange> Now vector quantizing atomic and density data: 4 codebook vectors each
.qrange> Now docking by 4! = 2.400E+01 possible pairs of corresponding vectors
.qrange> Now vector quantizing atomic and density data: 5 codebook vectors each
.qrange> Now docking by 5! = 1.200E+02 possible pairs of corresponding vectors
.qrange> Now vector quantizing atomic and density data: 6 codebook vectors each
.qrange> Now docking by 6! = 7.200E+02 possible pairs of corresponding vectors
.qrange> Now vector quantizing atomic and density data: 7 codebook vectors each
.qrange> Now docking by 7! = 5.040E+03 possible pairs of corresponding vectors
.qrange> Now vector quantizing atomic and density data: 8 codebook vectors each
.qrange> Now docking by 8! = 4.032E+04 possible pairs of corresponding vectors
.qrange> Now vector quantizing atomic and density data: 9 codebook vectors each
.qrange> Now docking by 9! = 3.629E+05 possible pairs of corresponding vectors
.qrange>
.qrange> Choose optimum number k of vectors:
.qrange> Printing selection criteria as function of k (in Angstrom units)
.qrange>
.qrange> stat. vector variability -- vector rmsd of highest scoring fit
k = 3 0.766 1.495
k = 4 1.076 5.755
k = 5 3.352 3.230
k = 6 2.402 5.067
k = 7 1.035 3.257
k = 8 1.998 6.501
k = 9 3.049 6.466
.qrange>
.qrange> Select number k for docking (range: 3-9; 0 to exit): 3
.qrange> Printing 6 best vector least-squares fits
.qrange>
.qrange> rmsd (Angstrom) -- correlation coefficient -- permutation
1. 1.495 0.883 (1,2,3)
2. 1.826 0.802 (2,1,3)
3. 4.773 0.790 (3,2,1)
4. 5.101 0.751 (2,3,1)
5. 6.000 0.766 (3,1,2)
6. 6.176 0.782 (1,3,2)
.qrange> Permutations indicate the order of high res. vectors fitted to low res. vectors
.qrange> Writing fitted PDB file(s) to output
.qrange> Select one least-squares fit for output (range: 1-6; 0 to return to prev. menu): 1
.qrange> Enter output filename: 5_s1_1.dock.pdb
.qrange> Rigid-body fitted coordinates (selection 1) and the codebook vectors have been written to file 5_s1_1.dock.pdb
.qrange> Statistical accuracy of fitting: +/- 0.766 Angstrom, +/- 5.099 degrees
.qrange>
.qrange> Writing fitted PDB file(s) to output
.qrange> Select one least-squares fit for output (range: 1-6; 0 to return to prev. menu): 2
.qrange> Enter output filename: 5_s1_2.dock.pdb
.qrange> Rigid-body fitted coordinates (selection 2) and the codebook vectors have been written to file 5_s1_2.dock.pdb
.qrange> Statistical accuracy of fitting: +/- 0.766 Angstrom, +/- 5.099 degrees

Now do the same for the second, detached monomer. Don't forget to use a lower cutoff value of 12 for this lower-density map. Is there a unique best fit? What is the lowest rms deviation and the gap to the subsequent fits? You should find again two degenerate fits for k=3. Extract the best fit to the file 5_s2_1.dock.pdb and the second best to 5_s2_2.dock.pdb.

Note: As described in (Birmanns & Wriggers, 2007), the fast matching by codebook vectors can be improved by a post-processing with the fast correlation-based tool colacor. We have explained this workflow in the separate manual docking tutorial.

Visualization

This section uses the graphics program VMD. Chimera and Sculptor also support Situs format. Note that the origin of the Situs map coordinate system was assigned by map2map.

The following sequence of commands in the VMD text console (cf. VMD user guide) will load the two docked structures, 5_s1_1.dock.pdb and 5_s2_1.dock.pdb, and render them in cartoon representation, coded by color. The script then instructs VMD to render the density maps 3_mt.situs in green, 4_s1.situs in blue, and 4_s2.situs in purple:

mol load pdb 5_s1_1.dock.pdb
mol load pdb 5_s2_1.dock.pdb
mol load situs 3_mt.situs
mol load situs 4_s1.situs
mol load situs 4_s2.situs
mol top 0
rotate stop
display resetview
display projection orthographic
mol modstyle 0 0 Cartoon 2.1 11 5
mol modstyle 0 1 Cartoon 2.1 11 5
mol modstyle 0 2 Isosurface 20 0 0 0 2 1
mol modstyle 0 3 Isosurface 20 0 0 1 1 1
mol modstyle 0 4 Isosurface 12 0 0 1 1 1
mol modcolor 0 0 ColorID 1
mol modcolor 0 1 ColorID 3
mol modcolor 0 2 ColorID 7
mol modcolor 0 3 ColorID 0
mol modcolor 0 4 ColorID 11

The result should look like this:


(Click image to enlarge)

Part II: Rigid-Body Docking with matchpoint

The programs qpdb and qvol are specialized tools that perform vector quantization to generate coarse-grained point cloud models of the structural data. The matchpoint tool (new in Situs 2.5) supports the registration of point clouds even in cases where they are of unequal size. The usage of these routines is demonstrated on the above examples in part II of this tutorial.

Return to the front page .