Skip to content

Instantly share code, notes, and snippets.

@quantshah
Last active August 22, 2016 22:19
Show Gist options
  • Save quantshah/00ae62831078e4edc14fad3093a0a408 to your computer and use it in GitHub Desktop.
Save quantshah/00ae62831078e4edc14fad3093a0a408 to your computer and use it in GitHub Desktop.
Google Summer of Code 2016 : Intravoxel Incoherent Motion Techniques in Dipy

Google Summer of Code 2016

Implementing Intravoxel Incoherent Motion (IVIM) Techniques in Dipy

-Shahnawaz Ahmed (shahnawaz.ahmed95@gmail.com)

Dipy is a python library for analysis of diffusion-weighted MRI (dMRI). Diffusion patterns can reveal microscopic details about tissue architecture and is used in clinical as well as neuroscience research. The intra-voxel incoherent motion (IVIM) model describes diffusion and perfusion in the signal acquired with diffusion MRI as :

S(b) = S0(f e^(- b D*) + (1 - f) e^(-b D))

PR and discussion : dipy/dipy#1110

Comments and future work

Scipy's leastsq is used to fit the model and for versions of Scipy > 0.17 least_squares is used which supports setting of bounds. The decission to use leastsq was taken after a comparison of run time with scipy.optmize.minimize. The time profiling can be seen in this discussion : http://stackoverflow.com/questions/6779383/scipy-difference-between-optimize-fmin-and-optimize-leastsq.

For noisy data, sometimes non-linear least squares fitting fails and for such cases the results from a linear fit are considered. It will be interesting to see how one can deal with noise in the data and get a more robust fitting.

Future work includes developing multiprocessing capabilities for the current multi_voxel decorator in Dipy which can be used to fit a model to a large number of voxels simultaneously and hence can act as a simple unified tool to enable multiprocessing for current and future models.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment