Boulder Laboratory for 3-Dimensional Electron Microscopy of Cells
BEADTRACK(1) BEADTRACK(1)
NAME
beadtrack - Tracks fiducial gold particles through a tilt series
SYNOPSIS
beadtrack
DESCRIPTION
BEADTRACK will track selected fiducial gold beads through a series of
tilted views. It takes a "seed" model, where each bead of choice
is marked with at least a single point on a view near zero tilt. It
tracks each bead as far as possible and puts out a new model.
The program works from one view to the next, using the existing data
about bead positions to deduce a projected position for each bead on
the next view to be processed. After bead positions are available
on enough views, the program will use tilt alignment to estimate the
3D position of each bead, and use this position to project a position
on the next view. The program searches for beads from the center
outward. Before looking for a particular bead, it uses the positions
of beads already found on that view to refine the projected position.
It will adjust by a shift if there are 3 points (or at least one
point from the seed model), by shift and rotation if there are 4 or 5
points, or by shift, rotation, and a size change if there are more
than 5 points.
The program will do one or two passes for each view. On the first
pass, it uses an average of the current bead over the nearest views
for which positions have already been identified. It cross-
correlates that average with a box at the expected position of the
bead and derives a bead position from the peak of the correlation.
It then calculates the centroid and the integral of the density at
that position. To do so, it takes the average of pixels more than
a certain radius away, subtracts this background value from the
pixels within that radius, and uses pixels above the background to
calculate a centroid and an integral. If the integral is too low, or
if the putative position is too far from the expected position, the
program then attempts a "rescue". The criterion for a rescue based
on distance is set by the user. The criterion for a rescue based on
density is set by the mean value of the bead integral on previous
views. Specifically, the criterion is the minimum of a certain
fraction of the mean and a certain number of standard deviations
below the mean. The latter parameters are also set by the user.
To rescue, the program starts at the expected bead position and
examines every position in a series of progressively wider circles
around that point. It calculates an integral for each position, and
when it first finds an integral above a relaxed criterion value, it
takes that position as the bead position. The criterion can be
relaxed by different factors for "density" and "distance" rescues.
After the first pass, the program does a tilt alignment and uses two
different tests for whether to eliminate a point on the current
view. One test is whether the residual for the point is greater
than a user-specifed limit ("criterion for rescue after fitting").
The other test is whether the mean residual for that bead, averaged
over all currently available views, has just increased by an unusual
amount. It finds the mean and SD of previous increases in this mean
residual, and tests whether the latest increase exceeds the mean by
a user-specified criterion number of SD's.
If any points were eliminated by these tests, or if any points failed
to be found, the program does a second pass. On this pass there is
no correlation, just an attempted rescue at the expected position
(possibly refined because of the additional information about other
beads on this pass). The maximum distance for this rescue is set by
the user. After the second pass, the program does another tilt
alignment and tests only the behavior of the increase in mean
residual for each point. If that increase is too great, a point is
eliminated for good.
The program will leave gaps in the model rather than insert bad
points. It will try to resume tracking after a gap, but only if the
gap is not larger than a user-defined limit.
The user can choose whether or not the program will fill in gaps in
the incoming seed model. If the image stack has sizable shifts that
could prevent accurate tracking, then one should use one of the beads
as a "pioneer". It is not necessary to model that bead on every
view, just on the views before and after a large shift. However, one
should be sure to have the program fill in gaps in this case. Also,
one can place one point for a bead on the view near zero tilt, then
place a few points on distant views where one can anticipate that the
program will have trouble tracking through (e.g., where another bead
crosses, or where the bead goes too close to the edge).
The program performs poorly when the tilt alignment solution gives a poor
fit, which happens easily with large areas. The solution to this
is to track on subsets of beads in local areas and/or to restrict the number
of views in the tilt alignment. There are options to enable these features
when the program is run with PIP input. An alternative, available when
running with sequential input, is to place seed points into separate objects
in different areas; e.g., 4-9 areas for 2K x 2K images, depending on how
many fiducials are available. There should be at least 6-8 points per area.
When there are multiple objects in the seed model, the program will
automatically track them separately unless local area tracking or the
TrackObjectsTogether option is selected.
For each view and pass, the program outputs the results from the
linear fit between actual and projected positions, the tilt
alignment total error, and which beads have been deleted or added
back. After doing all views, the program outputs a summary of which
views are missing for each bead.
INPUTS TO THE PROGRAM
Beadtrack uses the PIP package for input (see the manual page for pip)
and can still take sequential input interactively, to maintain compatibility
with old command files. The following options can be specified either as
command line arguments (with the -) or one per line in a command file or
parameter file (without the -):
-InputSeedModel File name
Input model file of starting points to track.
-OutputModel File name
Output file for tracked model.
-ImageFile File name
Input file with images to track.
-PieceListFile File name
Name of piece list file if image is montaged or out of sequence. A
montaged file should not be be used unless the overlaps between pieces are
nearly exact.
-ImagesAreBinned Integer
The current binning of the images relative to the original data. This
factor is used to scale the bead diameter from unbinned to binned
coordinates. The default is 1.
-SurfaceOutputFile File name
File name for output of surface information. The program will try to sort
the beads onto two surfaces separately for each local area. The file will
have four columns: object and contour number, and number of times the bead
came out on the bottom and top surfaces.
-SkipViews List of integer ranges
List of views to skip over. Model contours will pass through these views;
points will need to be added by hand afterwards. Ranges may be entered,
e.g. 1,4-6. Views are numbered from 1.
-RotationAngle Floating point
Angle of rotation of the tilt axis in the images; specifically, the angle
from the vertical to the tilt axis (counterclockwise positive).
-SeparateGroup List of integer ranges
List of views that should be grouped separately in automapping the tilt,
magnification, and rotation variables. Multiple entries can be used to
specify more than one set of separate views.
(Successive entries accumulate)
-first OR -FirstTiltAngle Floating point
Tilt angle of first view, in degrees. Use this option together with
TiltIncrement.
-increment OR -TiltIncrement Floating point
Increment between tilt angles, in degrees. Use this option together with
FirstTiltAngle.
-tiltfile OR -TiltFile File name
Use this option if tilt angles are in a file, one per line.
-angles OR -TiltAngles Multiple floats
Use this option to enter the tilt angles for each view individually, in
degrees.
(Successive entries accumulate)
-TiltDefaultGrouping Integer
Average default group size when automapping tilt variables
-TiltNondefaultGroup Three integers
Starting and ending view numbers and group size for a set of views whose
tilt variables should be grouped differently from the default.
(Successive entries accumulate)
-MagDefaultGrouping Integer
Default group size when automapping magnification variables
-MagNondefaultGroup Three integers
Starting and ending view numbers and group size for a set of views whose
magnification variables should be grouped differently from the default.
(Successive entries accumulate)
-RotDefaultGrouping Integer
Default group size when automapping rotation variables
-RotNondefaultGroup Three integers
Starting and ending view numbers and group size for a set of views whose
rotation variables should be grouped differently from the default.
Multiple entries can be used to specify more than one set of views with
nondefault grouping.
(Successive entries accumulate)
-MinViewsForTiltalign Integer
Minimum number of views with bead positions available before trying to do
a tilt alignment. To skip the tilt alignment computations, set this to a
number higher than the number of views. (Default 4)
-CentroidRadius Floating point
Radius for centroid calculation. The radius need not be a whole number
and should be somewhat larger than the bead radius. Either this option or
BeadDiameter must be entered, but not both. If this option is entered,
the diameter will be computed as 2 * radius - 3, then adjusted for
binning, and the radius will be taken as (adjusted diameter + 3) / 2.
-BeadDiameter Floating point
Actual diameter of beads in pixels in the original stack, before any
binning. If CentroidRadius is entered instead, the unbinned diameter will
be taken as 2 * radius - 3.
-LightBeads
Not checked if beads are darker or checked if they are lighter than
background.
-FillGaps
Fill in gaps in the seed model or leave them empty.
-MaxGapSize Integer
Maximum size of gap to create in the model. If a bead cannot be tracked
through some views, the tracking may be resumed as long as the gap thus
created is no larger than this amount. (Default 5)
-MinTiltRangeToFindAxis Floating point
Minimum range of tilt angles for which data must be available before
trying to find the angle of the tilt axis (default 10).
-MinTiltRangeToFindAngles Floating point
Minimum range of tilt angles for which data must be available before
trying to solve for tilt angles (default 20).
-BoxSizeXandY Two integers
X and Y dimensions of the box used to search for a bead, in unbinned
pixels. If images are binned, the box size will be taken as the maximum
of this entry divided by the binning and 2 * max(0, binned diameter - 7) +
32
-RoundsOfTracking Integer
Number of rounds of tracking through the views. On odd rounds, Tracking
proceeds from low to high tilt on odd rounds and from high to low tilt on
even rounds.
-MaxViewsInAlign Integer
Maximum number of views to include in the tilt alignment. Use this entry
to do alignment only on a local subset of views at nearby tilt angles. A
value at least big enough to include half the views is recommended.
-RestrictViewsOnRound Integer
If MaxViewsInAlign is entered, this entry can be used to apply the
restriction on the number of the views in the tilt alignment on a
particular round of tracking.
-LocalAreaTracking
Track subsets of beads in local areas. The area containing beads near
zero tilt will be divided into subareas, and the subareas will be tracked
in order by increasing distance from the center of the image. Each
subarea will contain a minimum total number of beads (given by
MinBeadsInArea), and areas after the first will contain a minimum number
that are shared with a more central area (given by MinOverlapBeads)
-LocalAreaTargetSize Integer
Target size for the local areas. The program will try to make typical
areas have this size, but some will be bigger to contain enough beads.
-MinBeadsInArea Integer
Minimum number of beads in a local area; areas will be expanded from the
target size to contain this minimum (default 8)
-MaxBeadsInArea Integer
Maximum number of beads in a local area; the target size will be shrunk if
possible until no local areas exceed this limit (default 500)
-MinOverlapBeads Integer
Each area after the first one tracked will be required to have at least
this many beads shared with areas tracked earlier.
-TrackObjectsTogether
When there is more than one object in the seed model and local area
tracking is not specified, the objects will be tracked separately unless
this option is entered.
-MaxBeadsToAverage Integer
Maximum number of views over which to average a bead (default 4). A
running average is kept of the appearance of the bead over the most recent
views examined; this parameter specifies the maximum number of views
averaged.
-PointsToFitMaxAndMin Two integers
Number of positions to use for extrapolating the bead position to the next
view when no tilt alignment is available, and minimum required to do
extrapolation rather than simply taking the mean of positions on the last
few views. (Defaults 7 and 3).
-DensityRescueFractionAndSD Two floats
Fraction of mean bead integral, and number of standard deviations below
mean, to use as the criterion for when to attempt a rescue based on bead
density.
-DistanceRescueCriterion Floating point
Criterion distance between found position and expected position for
attempting a rescue based on excessive distance
-RescueRelaxationDensityAndDistance Two floats
Factors by which to adjust (relax) the density criterion when trying to
rescue. Enter one factor for density rescue and one for distance rescue.
A value of 1 does not relax the criterion.
-PostFitRescueResidual Floating point
Criterion distance for deletion of a point after tilt alignment. Points
with residuals greater than this amount will be deleted on the first pass,
and a rescue search performed on the second pass.
-DensityRelaxationPostFit Floating point
Factor by which to relax the density criterion on the second pass.
-MaxRescueDistance Floating point
Maximum distance to search from the expected position on the second pass
-ResidualsToAnalyzeMaxAndMin Two integers
Maximum and minimum number of changes in mean residual to use in finding
the mean and SD of changes in the mean residual for a bead as more points
have been added. Default values 9 and 5.
-DeletionCriterionMinAndSD Two floats
Minimum change in residual, and criterion number of SD's from the mean
residual change, to require for deletion of a point on pass 1 or 2.
-param OR -ParameterFile Parameter file
Read parameter entries as keyword-value pairs from a parameter file.
-help OR -usage
Print help output
OPTIONS FOR TEST OUTPUT
These options are used for program testing and development.
-BoxOutputFile File name
Root filename for diagnositic output of correlation boxes
-SnapshotViews List of integer ranges
List of views at which to snapshot model before deletion on first and
second passes. The models will be named <OutputModel>.<view #>.<pass #>.
-SaveAllPointsAreaRound Two integers
Area/object and round at which to save all positions in new objects
-StandardInput
Read parameter entries from standard input.
SEQUENTIAL INPUTS
Image file name
Piece list file name if the file is montaged (or if it is digitized
out of order), otherwise enter a blank line
Name of model file with starting bead coordinates
Name of output model file
List of views to skip over. Model contours will pass through
these views; points will need to be added by hand afterwards.
Ranges may be entered, e.g. 1,4-6. Views are numbered from 1.
Angle of rotation of the tilt axis in the images; specifically, the
angle from the vertical to the tilt axis (counterclockwise
positive).
Number of sets of views to treat separately from the main set of
views when automapping the tilt angle and magnification
variables. Enter 0 if all views can be treated together when
automapping. These sets would typically be lists of views
that were reshot.
IF a number other than 0 was entered, next enter one line for each
separate set, giving a list of the views included in that set.
Ranges are allowed here.
-1 to enter individual tilt angle for each view, 1 to specify a
starting and increment tilt, or 0 to read tilt angles from a file
IF you entered 1, next enter the starting and incremental tilt angles
IF you entered -1, enter the tilt angle of each view.
IF you entered 0, enter name of file with tilt angles
The default number of views to group together in solving for tilt
angles, and the number of ranges of views that should have some
grouping other than the default. If a negative number of views
is entered, then reshoot sets will NOT be segregated from the
rest of the views in this default mapping.
IF you entered a non-zero number of ranges to be treated
separately, then for each such range, enter the starting and
ending view number and the number of views that should be
grouped in that range. If a negative number of views is
entered, then reshoot sets will NOT be segregated from the
rest of the views in this range.
The default number of views to group together in solving for
magnifications, and the number of ranges of views to group in
some other way. If you enter a non-zero number of ranges, then
for each one, enter starting and emding view numbers and group
size. Note that extensive grouping of tilt angle and
magnification variables is desirable, but the grouping should be
adjusted if there are known places where magnification or the
deviation from the ideal tilt angle changes abruptly.
Minimum number of views with bead positions available before trying
to do a tilt alignment. To skip the tilt alignment computations,
set this to a number higher than the number of views.
Radius for centroid calculation, and 0 if beads are darker or 1 if
they are lighter than background. The radius need not be a whole
number; e.g., 4.5 is acceptable.
1 to fill in gaps in the seed model, or 0 not to fill in gaps
Maximum size of gap to create in the model. If a bead cannot be
tracked through some views, the tracking may be resumed as long as
the gap thus created is no larger than this amount.
Minimum range of tilt angles for which data must be available before
trying to find the angle of the tilt axis, and minimum range of
angles required before trying to solve for tilt angles. Suggested
values are 10 and 20.
X and Y dimensions of the box used to search for a bead
(32,32 suggested)
Maximum number of views over which to average a bead (4 suggested)
A running average is kept of the appearance of the bead over
the most recent views examined; this parameter specifies the
maximum number of views averaged.
Number of positions to use for extrapolating the bead position to
the next view, and minimum required to do extrapolation rather
than simply taking the mean of positions on the last few views.
Fraction of mean bead integral, and number of standard deviations
below mean, to use as the criterion for when to attempt a rescue
based on bead density.
Distance in pixels away from expected position at which to attempt
a rescue based on excessive distance
Factors by which to adjust (relax) the density criterion when
trying to rescue. Enter one factor for density rescue and one for
distance rescue. A value of 1 does not relax the criterion.
Criterion distance for deletion of a point after tilt alignment.
Points with residuals greater than this amount will be deleted on
the first pass, and a rescue search performed on the second pass.
Factor by which to relax the density criterion on the second pass,
and maximum distance to search from the expected position on this
pass.
Maximum and minimum number of changes in mean residual to use in
finding the mean and SD of changes in the mean residual for a
bead as more points have been added. Suggested values 9 and 5.
Minimum change in residual, and criterion number of SD's from the
mean residual change, to require for deletion of a point on pass 1
or 2.
HISTORY
Written by David Mastronarde, 1995. Tilt alignment added 10/6/97.