Methods - Analyzing CAPTURE Tractography Methodology

Tony Sun, Jon Liu
February 20, 2017 Deliverable

Setting

  1. Task: The last stage of the pipeline that Ailey would like us to implement is a tractography element. Currently, Ailey's lab uses the CAPTURE tractography method - this method can be split up into two parts. First, they hijack Diffusion Toolkit with MATLAB (see CAPTURE scripts). Then, they use trackVis to visualize the results.
  2. Loss function: We will evaluate loss through a percent-error analysis [ie: observed less expected over expected]. What this entails is after we receive the "true" tractography estimates from labeled data from Ailey for a given region, which could be used as a comparison point for the tractography estimates from CAPTURE.
  3. Statistical goal: Minimize error between "true" tractography results and estimated results.
  4. Desiderata: We desire a tractography process that:
    i. Delineate individual fiber tracts from diffusion images
    ii. Can be easily integrated with our existing Python packages
    iii. Is fast, computationally-speaking
    iv. Is easy to use

Concepts

The CAPTURE methods are similar to existing MRI-based diffusion tensor imaging. In layman's terms, given an image with axons projecting from some regions to other regions, we're interested in seeing/calculating the 3D trajectories of the bundles. In order to do so, MRI-based diffusion tensor imaging uses the fact that the diffusion of water during MRI imaging is different for different tissue types. Water diffuses along the path of the fibers, so tracing the trajectory of the water along the fiber would give a rough estimate to the fiber tracts in the brain.

For the CLARITY data, CAPTURE works in a similar fashion. I quote:

"The tractography algorithm propagates/streamlines from a “seed” region through a vector field of voxel-wise principal fiber orientations and terminates if a streamline makes a sharp turn (angles larger than a prescribed threshold αthresh) or ventures outside of the masked region. For each voxel, the principal fiber orientation was estimated from a structure tensor, which was computed using the image intensity gradients (as a marker of the edges of fiber tracts) within a local neighborhood of the voxel."

In layman's terms, again, the gradient of the image data was taken (by finding the partial derivatives using their MATLAB scripts). From there, they could estimate the "next direction" that the fiber moved in, since the value of the gradient gives the "borders" of the voxel in each direction. As long as the gradient in a certain direction was less than some threshold (for a sharp turn), the fiber was said to continue along said pathway.

Diffusion Toolkit/TrackVis Analysis

Diffusion toolkit - used to generate trk (track files) for TrackVis. Does so using either DTI method, HARDI/Q-BALL method, with some given way to calculate gradients. The MATLAB code provided by CAPTURE effectively skips the GUI interface for the Diffusion toolkit - the existing workflow uses calculates a "structure tensor" which is then used to generate a .trk file. It then directly uses the command line to run the Diffusion Toolkit part that traces a given tract.

INPUT: takes in NIFTI files (although it threw an error with only raw .nii we had stored)
OUTPUT: trk (track file) for use with TrackVis

TrackVis toolkit - used to visualize brain images.

INPUT: trk (track file)
OUTPUT: visualizations of tracks in brain images

MATLAB Pseudocode Analysis

Analysis on MATLAB scripts from: http://capture-clarity.org/clarity-based-tractography/ [CAPTURE Scripts]

From the analysis of the code, the MATLAB script effectively "hijacks" the Diffusion Toolkit to generate a trk file for visulization later on.

How well did it work?

We need:
1) Adequate working TIFF stacks (our current TIFF stack doesn't have tractography)
2) File format structure use in CAPTURE (confused as to why it has multiple channels, ie: red, green, also what do we do about the brain masking/seed masking?)

Using Diffusion Toolkit Generated Errors with Nifti Headers Not Being Present?

Specific Error Message

TrackVis Works with Sample Inputs