Parallel Transport Tractography with DIPY

1 minute read

Published:

Parallel Transport Tractography

Parallel Transport Tractography (PTT) is a probabilistic tracking algorithm that frames fiber propagation as a curve evolving along a parallel transport frame. Compared to simpler deterministic methods, PTT better handles fiber crossings and produces smoother streamlines.

CSD model fitting

PTT relies on a Constrained Spherical Deconvolution (CSD) model rather than a simple ODF model. CSD deconvolves the diffusion signal with a single-fiber response function to obtain a sharper fiber ODF (fODF):

from dipy.reconst.csdeconv import ConstrainedSphericalDeconvModel, auto_response_ssst
from dipy.data import get_fnames
from dipy.io.image import load_nifti
from dipy.core.gradients import gradient_table

response, ratio = auto_response_ssst(gtab, data, roi_radii=10, fa_thr=0.7)
csd_model = ConstrainedSphericalDeconvModel(gtab, response)
csd_fit = csd_model.fit(data, mask=white_matter)

Running PTT

DIPY’s ParallelTransportTracking algorithm takes the CSD peaks and a binary stopping mask:

from dipy.tracking.local_tracking import ParallelTransportTracking
from dipy.tracking.stopping_criterion import BinaryStoppingCriterion
from dipy.tracking.streamline import Streamlines
from dipy.tracking import utils

stopping_criterion = BinaryStoppingCriterion(white_matter)
seeds = utils.seeds_from_mask(cc_slice, affine, density=[2, 2, 2])

ptt_streamlines = Streamlines(
    ParallelTransportTracking(csd_peaks, stopping_criterion, seeds, affine=affine, step_size=0.5)
)

Saving and visualizing

The tractogram can be saved as a .trk or .trx file:

from dipy.io.stateful_tractogram import StatefulTractogram, Space
from dipy.io.streamline import save_tractogram

sft = StatefulTractogram(ptt_streamlines, hardi_img, Space.RASMM)
save_tractogram(sft, "tractogram_ptt.trx")

Two variants of this tutorial exist in my repository: one saves .trk for FSL/MRtrix compatibility, the other saves .trx (the newer TRaCtogram eXtended format). The .trx format stores the tractogram alongside its reference image metadata, making it more portable.

PTT tractogram