Programmatic reconstruction of tomograms

From Dynamo
Revision as of 11:10, 3 July 2018 by Daniel Castaño (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Dynamo includes several tools for creation of tomograms from initial tilt series. This articles presents an overview of the tools that can be used from the command line or inside scripts created by the users.

Overview

We assume that a raw tilt series 'raw.mrc' is available, and also a set of markers that indexes the gold fiducials. Given this input, the creation of a tomogram will involve these steps.

  • Creation of an aligned stack.
  • Filtering of the aligned stack.
  • Backprojection of the filtered aligned stack .

Creation of aligned stacks

An aligned stack is created by rotating, then shifting each of the slices of a stack.

The aligner object

This procedure can be driven through an object of the class 'stackAligner', designed to contain alignment parameters, and to locate easily functionalities associated with the alignment of stacks.

Creation from a set of markers

Stack aligner objects can be derived from marker sets. This requires the previous step of fitting the marker set to a 3d projeciton model. You need to have a markerSet object in memory. You can produce it with the dmarkers GUI, or read it from a file with extension .dms. For instance:

markers = dread('markers.dms');

will read the file 'markers.dms' into memory as the variable markers (the name is chose arbitrarily). Now you can create the fitter object por those markers:

 f = dfitter(markers); 

An important step is to establish the center of the alignment:

f.setCenter([nx,ny]);

where nx and ny are the sidelength of the micrographs. Then you create a fitting, i.e., you instruct the fitter object f to search for alignment parameters that best fit the markers.

f.linearScan();

The stack alignment object

Programmatically

Stack aligners don't need to be extracted from a fitter object. If you computed your alignment parameters in any other way, you can still create a stack alignment object and fill manually its contents.

Applying the an aligner object

The method applyOnStack can be used on a stack (expressed as a variable) to produce the aligned stack.

alignedStack = stackAligner.applyOnStack('rawStack.mrc')

Weighting of aligned aligned stacks

The aligned stack cannot be directly backprojected. There are two ways to reweight its Fourier components so that aligned.mrc can be used to create

  • Ramp filtering
  • Sirt-like filter

For weighted back projection

stackWBP =dpktomo.rec.applyRampFilter(alignedStack); 

For Sirt-like filtering

Iterative methods can be used to obtain reconstructions with a sharper contrast, which are useful for visualization and particle picking.

stackSirt = dpktilt.math.aux.applySirtLikeFilter(alignedStack)

Here you have the option of selecting further flags for SIRT-like reconstructions: 'ite' for the number of iterations, 'alpha' the smoothing parameter. In general, the default parameters provide a reasonable enhancement of the contrast compared with the WBP.