""" ===================================================================== Reconstruction of the diffusion signal with the WMTI model ===================================================================== DKI can also be used to derive concrete biophysical parameters by applying microstructural models to DT and KT estimated from DKI. For instance, Fieremans et al. [Fierem2011]_ showed that DKI can be used to estimate the contribution of hindered and restricted diffusion for well-aligned fibers - a model that was later referred to as the white matter tract integrity WMTI technique [Fierem2013]_. The two tensors of WMTI can be also interpreted as the influences of intra- and extra-cellular compartments and can be used to estimate the axonal volume fraction and diffusion extra-cellular tortuosity. According to previous studies [Fierem2012]_ [Fierem2013]_, these latter measures can be used to distinguish processes of axonal loss from processes of myelin degeneration. In this example, we show how to process a dMRI dataset using the WMTI model. First, we import all relevant modules: """ import numpy as np import matplotlib.pyplot as plt import dipy.reconst.dki as dki import dipy.reconst.dki_micro as dki_micro from dipy.core.gradients import gradient_table from dipy.data import get_fnames from dipy.io.gradients import read_bvals_bvecs from dipy.io.image import load_nifti from dipy.segment.mask import median_otsu from scipy.ndimage import gaussian_filter """ As the standard DKI, WMTI requires multi-shell data, i.e. data acquired from more than one non-zero b-value. Here, we use a fetcher to download a multi-shell dataset which was kindly provided by Hansen and Jespersen (more details about the data are provided in their paper [Hansen2016]_). """ fraw, fbval, fbvec, t1_fname = get_fnames('cfin_multib') data, affine = load_nifti(fraw) bvals, bvecs = read_bvals_bvecs(fbval, fbvec) gtab = gradient_table(bvals, bvecs) """ For comparison, this dataset is pre-processed using the same steps used in the example for reconstructing DKI (see :ref:`example_reconst_dki`). """ # data masking maskdata, mask = median_otsu(data, vol_idx=[0, 1], median_radius=4, numpass=2, autocrop=False, dilate=1) # Smoothing fwhm = 1.25 gauss_std = fwhm / np.sqrt(8 * np.log(2)) data_smooth = np.zeros(data.shape) for v in range(data.shape[-1]): data_smooth[..., v] = gaussian_filter(data[..., v], sigma=gauss_std) """ The WMTI model can be defined in DIPY by instantiating the 'KurtosisMicrostructureModel' object in the following way: """ dki_micro_model = dki_micro.KurtosisMicrostructureModel(gtab) """ Before fitting this microstructural model, it is useful to indicate the regions in which this model provides meaningful information (i.e. voxels of well-aligned fibers). Following Fieremans et al. [Fieremans2011]_, a simple way to select this region is to generate a well-aligned fiber mask based on the values of diffusion sphericity, planarity and linearity. Here we will follow these selection criteria for a better comparison of our figures with the original article published by Fieremans et al. [Fieremans2011]_. Nevertheless, it is important to note that voxels with well-aligned fibers can be selected based on other approaches such as using predefined regions of interest. """ # Diffusion Tensor is computed based on the standard DKI model dkimodel = dki.DiffusionKurtosisModel(gtab) dkifit = dkimodel.fit(data_smooth, mask=mask) # Initialize well aligned mask with ones well_aligned_mask = np.ones(data.shape[:-1], dtype='bool') # Diffusion coefficient of linearity (cl) has to be larger than 0.4, thus # we exclude voxels with cl < 0.4. cl = dkifit.linearity.copy() well_aligned_mask[cl < 0.4] = False # Diffusion coefficient of planarity (cp) has to be lower than 0.2, thus # we exclude voxels with cp > 0.2. cp = dkifit.planarity.copy() well_aligned_mask[cp > 0.2] = False # Diffusion coefficient of sphericity (cs) has to be lower than 0.35, thus # we exclude voxels with cs > 0.35. cs = dkifit.sphericity.copy() well_aligned_mask[cs > 0.35] = False # Removing nan associated with background voxels well_aligned_mask[np.isnan(cl)] = False well_aligned_mask[np.isnan(cp)] = False well_aligned_mask[np.isnan(cs)] = False """ Analogous to DKI, the data fit can be done by calling the ``fit`` function of the model's object as follows: """ dki_micro_fit = dki_micro_model.fit(data_smooth, mask=well_aligned_mask) """ The KurtosisMicrostructureFit object created by this ``fit`` function can then be used to extract model parameters such as the axonal water fraction and diffusion hindered tortuosity: """ AWF = dki_micro_fit.awf TORT = dki_micro_fit.tortuosity """ These parameters are plotted below on top of the mean kurtosis maps: """ MK = dkifit.mk(0, 3) axial_slice = 9 fig1, ax = plt.subplots(1, 2, figsize=(9, 4), subplot_kw={'xticks': [], 'yticks': []}) AWF[AWF == 0] = np.nan TORT[TORT == 0] = np.nan ax[0].imshow(MK[:, :, axial_slice].T, cmap=plt.cm.gray, interpolation='nearest', origin='lower') im0 = ax[0].imshow(AWF[:, :, axial_slice].T, cmap=plt.cm.Reds, alpha=0.9, vmin=0.3, vmax=0.7, interpolation='nearest', origin='lower') fig1.colorbar(im0, ax=ax.flat[0]) ax[1].imshow(MK[:, :, axial_slice].T, cmap=plt.cm.gray, interpolation='nearest', origin='lower') im1 = ax[1].imshow(TORT[:, :, axial_slice].T, cmap=plt.cm.Blues, alpha=0.9, vmin=2, vmax=6, interpolation='nearest', origin='lower') fig1.colorbar(im1, ax=ax.flat[1]) fig1.savefig('Kurtosis_Microstructural_measures.png') """ .. figure:: Kurtosis_Microstructural_measures.png :align: center Axonal water fraction (left panel) and tortuosity (right panel) values of well-aligned fiber regions overlaid on a top of a mean kurtosis all-brain image. References ---------- .. [Fierem2011] Fieremans E, Jensen JH, Helpern JA (2011). White matter characterization with diffusion kurtosis imaging. NeuroImage 58: 177-188 .. [Fierem2012] Fieremans E, Jensen JH, Helpern JA, Kim S, Grossman RI, Inglese M, Novikov DS. (2012). Diffusion distinguishes between axonal loss and demyelination in brain white matter. Proceedings of the 20th Annual Meeting of the International Society for Magnetic Resonance Medicine; Melbourne, Australia. May 5-11. .. [Fierem2013] Fieremans, E., Benitez, A., Jensen, J.H., Falangola, M.F., Tabesh, A., Deardorff, R.L., Spampinato, M.V., Babb, J.S., Novikov, D.S., Ferris, S.H., Helpern, J.A., 2013. Novel white matter tract integrity metrics sensitive to Alzheimer disease progression. AJNR Am. J. Neuroradiol. 34(11), 2105-2112. doi: 10.3174/ajnr.A3553 .. [Hansen2016] Hansen, B, Jespersen, SN (2016). Data for evaluation of fast kurtosis strategies, b-value optimization and exploration of diffusion MRI contrast. Scientific Data 3: 160072 doi:10.1038/sdata.2016.72 .. include:: ../links_names.inc """