Tomographic series alignment and reconstruction

Tomography flowchart

An example of gold fiducial markers on holy carbon is provided for training:


The pixel size is about 5 Å/pixel, the fiducial markers are about 100 Å in diameter, the tilt axis is close to the x-axis (-5˚), and the tilt series start at -60˚ and proceed in 5˚ steps.

1. Preparation

The tomographic tilt series is represented in the parameter files in Bsoft as a single field-of-view with multiple micrographs, one for each image. The image must therefore be in a multi-image format such as PIF or Spider before it is processed. The programs bhead, bimg and bnorm have an option to convert 3D slices into a stack of 2D images for multi-image formats, and the program btomo automatically does the conversion:

bimg -v 7 -images gold3.pif

In preparation for alignment and reconstruction, the contrast variation in the series due to increased thickness at higher tilt angles must be compensated. To normalize the contrast in the series, the central part of the histogram of each micrograph is fitted to a Gaussian function, and rescaled to a given average and standard deviation:

bnorm -v 7 -rescale 127,10 -data byte -out gold3.pif gold3_norm.pif

Alternatively, the normalization can also be done after setting the initial parameters in a parameter file (see next section to set initial parameters):

bnorm -v 7 -rescale 127,10 -data byte -out

2. Setting the initial parameters

Some of the initial parameters can be set up with btomo, starting from either the tilt series images, or an initial parameter file (such as generated from normalization in the previous section):

btomo -v 7 -sampling 5 -axis -5.7 -tilt -60,5 -gold 10 -out gold3.pif


btomo -v 7 -sampling 5 -axis -5.7 -tilt -60,5 -gold 10 -out

All of the initial parameters can set up in bshow:

bshow &

Set the following parameters:

The tilt axis angle is defined as the angle relative to the x-axis and rotating anti-clockwise, and with the normal to the specimen plane progressing from negative to positive tilt angles, from left to right (for a tilt axis close to the y-axis or 90˚) or top to bottom (for a tilt axis close to the x-axis or 0˚).

Tilt axis definition
The rotation around the tilt axis (dark arrow) is right-handed (curved arrow), so that the normal to the specimen plane rotates from the negative to the positive tilt angles (broken arrows). The tilt axis angle here is 45˚ (rotation from the x-axis).

3. Generating seed fiducial markers

In bshow, change to the zero-degree tilt image and select the menu item “Tomography/Find markers in current image”. This will cross-correlate a synthetic marker based on the marker radius with the image, and present a set of peaks and a dialog box. Adjust the FOM slider in the dialog box until a satisfactory set of markers are selected and click on "Done". Markers can be added or deleted manually. Eliminate markers that are close to edges, because they might not stay within the frames of all the images in the series. Save to a parameter file using the menu item "Micrograph/Write parameters" - in this case the file is called "".

4. Finding the tilt axis

Often the tilt axis for a particular magnification on a microscope is not known accurately, or there might be a misunderstanding of the definition of the tilt axis. In Bsoft, the tilt axis angle is defined as the counterclockwise rotation angle from the x-axis to the tilt axis. To find the tilt axis angle to within acceptable accuracy, two methods are available.

4.1. The tomax script

This script uses full tracking runs with different tilt axis angles to determine the best residual. It is very compute-intensive and should only be used if the faster method (see below) doesn't work. The tomax script is run specifying the initial angle, the angle step size, and the final angle to test for:

tomax -angles -10,1,10

The output gives the residual for a single iteration attempt at tracking the markers, and the tilt axis angle with the lowest residual should be used subsequently.

Output from the tomax script:

Tilt axis angle determination:
Tue Mar 27 15:25:05 EDT 2007
File       =
Angles     = -10,1,10
Angle Residual
-10 8.31441
-9 6.82922
-8 5.49762
-7 3.66594
-6 2.36111
-5 1.94484
-4 2.87278
-3 4.3095
-2 5.4044
-1 6.708
0 8.16417
1 8.89508
2 9.68846
3 10.0579
4 10.4262
5 10.872
6 10.959
7 11.2977
8 11.4032
9 11.4698
10 11.4875

The best tilt axis angle is -5˚ and that will be used for tracking.

4.2. Using btrack with the -findaxis option

The program btrack offers a faster alternative to the tomax script with potentially less accuracy. This method uses only two micrographs close to a user-defined tilt angle to test for the tilt axis angle. The following command line selects micrographs close to 15° tilt and with a tilt axis angle step size of 1.5°:

btrack -v 1 -findaxis 15,1.5 -out

The best tilt axis angle is written into the micrograph parameters. A plot of the correlation coefficients indicate that the tilt axis angle is better determined at around 20°, although this may be different in other cases.

Gold axis angles CC plot

Test for the tilt axis angle with different pairs of micrographs.

5. Alignment using fiducial markers

From the fiducial marker seed in the zero-degree tilt image, the z coordinates of the markers as well as the image shift for each micrograph is determined (btrack). The basic algorithm first attempts to find the z-coordinate for each marker in an image by doing real space correlations along a line determined by the tilt direction. It then generates a projection image from the whole marker set at the nominal tilt angle and cross-correlates it with the image to find the shift. The process proceeds from the low-angle tilts to higher tilts in both directions, using the lower dependence of the low-tilt images on correct marker z-coordinates. This process is iterated (typically 2-5 times) until the change in z-coordinates drop below one pixel on average or up to the maximum number of iterations. The exact positions of the markers in each micrograph are then refined (-refine markers).

btrack -v 1 -reset -axis -5 -exclude none -update -track 5 -refine markers -out >& gold3_trk.log &

The -resetmodel option ensures that the zero-tilt marker positions agree with those of the 3D model at the start of tracking. The -updatematrix option recalculates the micrograph orientation matrices from the tilt axis and tilt angles.

After every iteration a parameter file is written to allow for user inspection (file names,, ... ). To follow the progress in tracking, the log file can be queried:

grep Cycle gold3_trk.log

Cycle 1:        Average change in positions = 35.8846
Cycle 2:        Average change in positions = 0.440963

This gives the change in marker positions for every iteration, with the first always a high number because the z-coordinates are zero at the start. When the change in positions drop below 1, a reasonable alignment has been reached and the program finishes. The overall residual is given at the end of the log file:

tail -2 gold3_trk.log

Average residual = 1.98881 pixels

The new parameter file can read with bshow to examine the marker positions:

bshow &

The markers are indicated with orange lines, where each line indicates the difference between the current marker position and the position predicted from the 3D marker model. Markers with big deviations or those that are obviously incorrect, can be adjusted manually and the results saved into a new parameter file ( The menu item "Tomography/Show marker table", provides a listing of the markers and buttons to find the lowest and highest residuals and FOM's.

Next, several rounds of refinement of the z-coordinates, the view and origin of each image are done to improve the alignment. A general rigid-body target function is used with no restrictions on the view (such as assuming a tilt axis perpendicular to the electron beam), so that the final alignment can be used directly in reconstruction.

btrack -v 1 -reset -refine 10,z,o,v -out >& gold3_ref.log &

tail -2 gold3_ref.log

Average residual = 1.13986 pixels

In bshow, single iterations of these refinements can also be done. Select the "Tomography/Refine alignment" menu item. One of three types can be selected:

If the residual remains high (> 5 pixels), please see the section on trouble shooting at the bottom.

6. Tomogram reconstruction

The reconstruction is done in Fourier space with the same algorithm as for single particle analysis, with the modification that separate slabs in Fourier space can be calculated, assembled and backtransformed later (bmgft, btomrec, bzfft). The use of the programs is rather involved, and to handle all the different issues and dependencies, the reconstruction can be done using the tomrec script:

tomrec -rec gold3_rec.pif -resol 30 -size 1024,1024,120 -thick 20 -scale 1 -out >& gold3_rec.log &

7. Denoising

The reconstruction can be denoised using the non-linear anisotropic diffusion algorithm Frangakis et al. (2001) (bnad). To allow piecewise and distributed denoising, the tomogram is divided into overlapping tiles (btile), each tile denoised (bnad), and the tiles reassembled (bpatch). The key parameter is the tile overlap, which must be at least as many pixels as the number of cycles used for denoising. The memory requirement is high, so the tiles should not be too large (1 Gb of memory would allow a block of maximum 400x400x200 to be denoised).

The tomogram is first tiled:

btile -v 7 -size 400,400,240 -overlap 100,100,0 gold3_rec.pif tile.mrc

Each tile is then denoised, using the script tomnad.

The tiles are finally reassembled into the full tomogram as floating point:

bpatch -v 7 -tiles tile.tiles -out patch.mrc tile_0??_nad.mrc

The tomogram is then truncated to the average +- 5*standard deviation and converted to byte data type:

bimg -v 7 -dat byte -trunc 74,179 patch.mrc gold3_den.pif

8. Resolution determination

The resolution for each micrograph with respect to the reconstruction can be determined using the scripts mgft and tomres, based on the method of Cardone et al. (2005) and described (btomres) in Heymann et al. (2007).

The mgft script prepares the Fourier transforms of all the micrographs:

mgft -size 2048,2048,240 -pad 0 -output

The tomres script subsequently calculates the resolution for each micrograph:

tomres -size 2048,2048,240 -resolution 30 -postscript >& gold3_res.log &

9. Trouble shooting

Marker reference images

The marker tracking and location refinement rely on a marker reference images produced as an average of the marker images in the zero-tilt micrograph. These images are written into the files "" and "" for tracking and refinement, respectively. They should look something like this:

Tracking reference marker

If they look significantly different from the example, please send me a bug report with all the details (

Manual marker positioning

If marker tracking completely fails, the markers can be manually positioned. To alleviate some of the manual labor required, markers can be generated from a seed in the zero-tilt micrograph, using the nominal tilt axis and tilt angles:

btrack -v 1 -generate -out

This can also be done in bshow using the menu item "Tomography/Generate markers from seed".