Difference between revisions of "Programmatic reconstruction of tomograms"

From Dynamo
Jump to navigation Jump to search
(Created page with "''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...")
 
 
(3 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
== Overview ==
 
== Overview ==
  
We assume that a raw tilt series  <tt>raw.mrc</tt> 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.  
+
We assume that a raw tilt series  <tt>'raw.mrc'</tt> 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.
 
* Creation of an aligned stack.
Line 11: Line 11:
 
== Creation of aligned stacks ==
 
== Creation of aligned stacks ==
  
=== Creation of an aligner object ===
+
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  <tt>'stackAligner'</tt>, 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 <tt>markerSet</tt> object in memory. You can produce it with the <tt>dmarkers</tt> GUI, or read it from a file with extension <tt>.dms</tt>. For instance:
 +
 
 +
<tt>markers = dread('markers.dms');</tt>
 +
 
 +
will read the file <tt>'markers.dms'</tt> into memory as the variable <tt>markers</tt> (the name is chose arbitrarily). Now you can create the fitter object por those markers:
 +
 
 +
<tt> f = dfitter(markers); </tt>
 +
 
 +
An important step is to establish the center of the alignment:
 +
 +
<tt>f.setCenter([nx,ny]);</tt>
 +
 
 +
where ''nx'' and ''ny'' are the ''sidelength'' of the micrographs. Then you create a fitting, i.e., you instruct the fitter object <tt>f</tt> to search for alignment parameters that best fit the markers.
 +
 
 +
<tt>f.linearScan();</tt>
 +
 
 +
The stack alignment object
 +
 
 +
==== Programmatically ====
 +
 
 +
Stack aligners don't need to be extracted from a <tt>fitter</tt> 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 ===
 
=== Applying the an aligner object ===
  
=== Use of the alignment object ===
+
The method <tt>applyOnStack</tt> can be used on a stack (expressed as a variable) to produce the aligned stack.
 +
 
 +
<tt>alignedStack = stackAligner.applyOnStack('rawStack.mrc')</tt>
  
 
== Weighting of aligned aligned stacks ==
 
== Weighting of aligned aligned stacks ==
Line 21: Line 52:
 
The aligned stack cannot be directly backprojected. There are two ways to reweight its Fourier components so that <tt>aligned.mrc</tt> can be used to create  
 
The aligned stack cannot be directly backprojected. There are two ways to reweight its Fourier components so that <tt>aligned.mrc</tt> can be used to create  
 
* Ramp filtering
 
* Ramp filtering
* Sirt-like filer
+
* Sirt-like filter
  
 
=== For weighted back projection ===
 
=== For weighted back projection ===
  
=== For sirt-like filtering ===
+
<tt>stackWBP =dpktomo.rec.applyRampFilter(alignedStack); </tt>
 +
 
 +
=== For Sirt-like filtering ===
 +
 
 +
Iterative methods can be used to obtain reconstructions with a sharper contrast, which are useful for visualization and particle picking.
 +
 
 +
<tt>stackSirt = dpktilt.math.aux.applySirtLikeFilter(alignedStack)</tt>
 +
 
 +
Here you have the option of selecting further flags for SIRT-like reconstructions: <tt>'ite'</tt> for the number of iterations, <tt>'alpha'</tt> the smoothing parameter. In general, the default parameters provide a reasonable enhancement of the contrast compared with the WBP.

Latest revision as of 11:10, 3 July 2018

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.