Basic probabilistic tractography
On this page... (hide)
This tutorial gives an introduction to performing basic probabilistic tractography with Camino's
track command, using directional information derived from the diffusion tensor (for a guide to fitting the diffusion tensor to DW-MR image data see DTI tutorial). We will use the same human dataset used for the DTI tutorial (download).
Before starting on this tutorial, we would suggest you follow steps 1-5 of the DTI tutorial and retain all the files you create. Three additional software tools are also required for this tutorial: ITK snap, Paraview and MRIcro it might be convenient for you to download and install these now before you commence.
We have named our seed ROI image
Now we can use our seed ROI to generate some probabilistically tracked streamlines using bayesian tractography, the details of which are outlined in the
track command page:
track -inputfile dwi.Bfloat -inputmodel bayesdirac -schemefile 4Ddwi_b1000_bvector.scheme -iterations 50 -seedfile ROI.nii > bayesianTracts.Bfloat
Here we are using the raw image data converted to voxel order format with the command:
image2voxel -4dimage 4Ddwi_b1000.nii.gz -outputfile dwi.Bfloat
as in part 4 of the DTI tutorial.
Alternatively, we can use a precomputed lookup table and PDFs:
We can use a precomputed lookup table and PDFs generated from the data and schemefile in order to execute probabilistic tracking.
Firstly, in order to generate the PDFs, we need to calculate the diffusion tensor in every voxel. If you haven't fit the diffusion tensor to data before, follow parts 1-5 of the DTI tutorial. We will use the
dt.Bdouble file which is the output of
dtfit from part 5.
We use the
dtlutgen command to generate the look-up table:
dtlutgen -schemefile 4Ddwi_b1000_bvector.scheme -snr 20 > picoTable.dat
Note here that we have set the SNR at 20, which is the SNR of this dataset. You will need to estimate the SNR of the data you are working on and set the appropriate value for the look-up table generation.
The PICo tractography algorithm requires a probability density function (PDF) to be computed in each voxel to track probabilistically through the volume. We use the
picopdfs command to generate this data:
picopdfs -inputmodel dt -luts picoTable.dat < dt.Bdouble > pdfs.Bdouble
Now we can use our seed ROI to generate some probabilistically tracked streamlines:
track -inputmodel pico -seedfile CST.nii -iterations 50 < pdfs.Bdouble > picoTracts.Bfloat
Note that in both cases we have defined the option
-iterations 50. This means that the
track command will track 50 times from each seed voxel defined in the seed ROI. This parameter can be set to any number of tracts per voxel. It's important to check test / retest reproducibility in each case, but in general we find that results are acceptably stable after 1000 iterations.
The Bayesian tractography method calculates probabilities for fiber directions directly from the DWI data in each voxel, without assuming a constant SNR or using any lookup tables. It is more data-driven than the model-based approach, and doesn't generalize easily to multiple fibre orientations, but it is more data driven. We suggest using the Bayesian method for probabilistic tractography for standard DTI acquisitions, and model-based PICo for HARDI data with multiple fiber orientations per voxel.
Normally, PICo tractography is used to produce maximum connection probability maps. These maps show how likely it is for connections to exist between one voxel and another in an image.
Using the following pipeline command, we can produce connection probability maps for each voxel in the ROI:
track -inputmodel pico -seedfile CST.nii < pdfs.Bdouble | procstreamlines -seedfile CST.nii -outputcp -outputroot pico/
track command produces the default 5000 tracts from each voxel in the ROI defined in
CST.nii. These tracts are then processed by the
procstreamlines command which produces a seperate connection probability map for each voxel in the ROI in the
pico/ directory. The
-outputcp option specifies that we want a connection probability map from
Now we need to combine the images to form one single map for the entire ROI using
imagestats -stat max -outputroot roiprobs -images pico/*
This command combines all the images for the individual ROI voxels contained in the
pico/ directory into a single image
roiprobs.nii which shows the maximum value found in each voxel. It should look something like the following image:
This image was created using MRIcro, the connection probability map is overlayed on the FA image.
Other statistics can also be computed with
imagestats, using the options
var, please see the Man page for more information.
The connection probability can also be viewed in Paraview in 3D: