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:
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 . |
|