listed below. These codes are now deprecated to allow for the addition of further model
fitting procedures via the -model option, but they are still recognized by the
program.
Single-tensor inversions
1. Compute the least-squares-fit diffusion tensor to the log measurements by linear
regression.
2. Compute the least-squares-fit diffusion tensor to the raw measurements by non-linear
optimization using a Levenburg--Marquardt algorithm. The diffusion tensor is constrained
to be positive definite by fitting its Cholesky decomposition.
7. Compute the weighted least-squares-fit diffusion tensor to the log measurements by
linear regression (see wdtfit(1)).
-2. Compute the diffusion tensor using the RESTORE method.
The program outputs the results voxel by voxel in the same order as the input data file.
The output data type is big-endian double-precision (8-byte) floating point values by
default. For single-tensor inversions, the output for each voxel contains [exitcode,
ln(S(0)), D_xx, D_xy, D_xz, D_yy, D_yz, D_zz], where S(0) is the estimate of the
measurement at q=0, the fitted diffusion tensor is D = [D_xx, D_xy, D_xz] [D_xy, D_yy,
D_yz] [D_xz, D_yz, D_zz]
and the following exit codes can arise:
-100. Bad data. Inversion could not be performed and all output values are zero.
-1. Background voxel. The voxel was classified as background using a threshold on the
mean A^tar(0) measurements, see Options, -bgthresh.
0. No problems.
2. An iterative fitting algorithm (linear or non-linear) failed to converge.
6. Bad data, but the inversion could be performed by substituting a different value for
one or more measurements. Usually this means that a measurement was zero or negative so
it has no logarithm. For a linear model, this measurement is ignored. Non-linear fitters
use the negative value.
Two-tensor inversions
All two-tensor inversions use a Levenburg--Marquardt algorithm to fit a mixture of two
Gaussian densities to the data. The starting point comes from a single-tensor fit to the
data. The indices for all two-tensor inversions are two digit integers. The first digit
specifies the type of two-tensor model. The second digit comes from the list of single
tensor inversions above and specifies which single tensor fit to use to define the
starting point for the optimization.
To determine the starting point, suppose the single tensor fit has eigenvectors e_1, e_2
and e_3 with eigenvalues l_1 >= l_2 >= l_3, respectively. We initialize one component of
the two-tensor model, D_1, to have eigenvectors e_1, e_2 and e_3 with eigenvalues (2 l_1
- l_3), l_3 and l_3, respectively. The second component D_2 initially has eigenvectors
e_2, e_1 and e_3 with eigenvalues (2 l_2 - l_3, l_3, l_3, respectively. This ensures that
the initial D_1 and D_2 have cylindrical symmetry, principal eigenvectors along e_1 and
e_2, respectively, and that the average eigenvalue along each e_i is l_i. The mixing
parameter is initially 0.5.
In what follws, the question mark "?" denotes a wildcard in the output.
1?. Both diffusion tensors are constrained to be cylindrically symmetric, i.e., each
tensor has two equal eigenvalues. An index of 11 means that the program fits two
cylindrically symmetric diffusion tensors to the data with the starting point determined
using the least-squares-fit diffusion tensor to the log measurements (inversion 1). An
index of 12 means that the starting point comes from the diffusion tensor fit to the raw
measurements by non-linear optimization (inversion 2).
2?. As 1?, but the mixing parameter is fixed at 0.5.
3?. Both diffusion tensors are constrained to be positive definite.
4?. As 3?, but the mixing parameter is fixed at 0.5.
5?. One diffusion tensor is cylindrically symmetric, the other is positive definite.
6?. As 5?, but the mixing parameter is fixed at 0.5.
For two-tensor inversions, the output for each voxel contains [exitcode, ln(S(0)), N,
a_1, D_1xx, D_1xy, D_1xz, D_1yy, D_1yz, D_1zz, a_2, D_2xx, D_2xy, D_2xz, D_2yy, D_2yz,
D_2zz], where N is the number of components (here always 2), a_1 is the mixing parameter
for D_1 and a_2 is that for D2. This output format is consistent with the multiple-tensor
format output by multitenfit(1). The exit codes are as in the single-tensor case.
Three-tensor inversions
The three-tensor inversion indices all have three digits, the first of which is a 2. The
last digit indicates the kind of single tensor inversion used to obtain the starting
point for the optimization that fits the three-tensor model.
The starting point is three cylindrically symmetric diffusion tensors with the largest to
smallest eigenvalues in the ratio 8:1. The mixing parameters are all equal. The trace of
each tensor is chosen so that the average eigenvalue along each e_i is l_i.
21?. All three diffusion tensors are cylindrically symmetric. For example, an index of
211 means that the program fits three cylindrically symmetric diffusion tensors to the
data with the starting point determined using the least-squares-fit diffusion tensor to
the log measurements (inversion 1).
22?. As 21?, but the mixing parameters are both fixed at 1/3.
23?. All three diffusion tensors are constrained to be positive definite.
24?. As 23?, but the mixing parameter is fixed at 1/3.
25?. One diffusion tensor is cylindrically symmetric, the other two are positive
definite.
26?. As 25?, but the mixing parameter is fixed at 1/3.
27?. Two diffusion tensors are cylindrically symmetric, the other one is positive
definite.
28?. As 27?, but the mixing parameter is fixed at 1/3.
For three-tensor inversions, the output for each voxel contains [exitcode, ln(S(0)), N,
a_1, D_1xx, D_1xy, D_1xz, D_1yy, D_1yz, D_1zz, a_2, D_2xx, D_2xy, D_2xz, D_2yy, D_2yz,
D_2zz, a_3, D_3xx, D_3xy, D_3xz, D_3yy, D_3yz, D_3zz], where N is the number of
components (here always 3), a_i is the mixing parameter for D_i. This output format is
consistent with the multiple-tensor format output by multitenfit(1). The exit codes are
as in the single-tensor case.
Other inversions
-1. Fits the apparent diffusion coeffient on the assumption of isotropic Gaussian
distributed displacements. The output is [exitcode, ln(S(0)), ADC].
-2. Uses the RESTORE algorithm to fit a single diffusion tensor, see restore(1). Output
is [exitcode, ln(S(0)), D_xx, D_xy, D_xz, D_yy, D_yz, D_zz] (see restore(1) for details
of exit codes). See restore(1).
-3. Fits the ball and stick partial volume model via nonlinear optimization [Behrens et
al, MRM 50:1077-1088, (2003)]. Output is [exitcode, ln(S(0)), d, f, x, y, z]. See
ballstickfit(1).
7. Computes the weighted least-squares-fit diffusion tensor to the log measurements by
linear regression. See wdtfit(1).
-fixedmodq <M> <N> <Q> <tau>
Specifies a spherical acquisition scheme with M measurements with q=0 and N measurements
with |q|=Q and diffusion time tau. The N measurements with |q|=Q have unique directions.
The program reads in the directions from the files in directory PointSets. The value of N
must be in the range 3, ..., 150 or 246. The point sets with 3 up to 150 points minimize
the electrostatic energy of pairs of equal and opposite points on the sphere. They are
computed using the method outlined in Jansons and Alexander, Inverse Problems, Vol 19,
pp. 1031--1046, 2003.. The point set with 246 points is an icosahedral tesselation.
This option is deprecated and should be replaced with -fixedbvalue where possible.