Diffusion Imaging In Python

Dipy is a free and open source software project focusing mainly on diffusion magnetic resonance imaging (dMRI) analysis. Nonetheless, as we solve problems in dMRI some of the solutions are applicable to the greater medical imaging and image processing communities. See for example our registration and denoising tutorials.


Dipy 0.8 is now available for download. The new release contains state-of-the-art algorithms for diffusion MRI registration, reconstruction, denoising, statistical evaluation, fiber tracking and validation of tracking.

For more information about Dipy, read the dipy paper in Frontiers in Neuroinformatics.

So, how similar are your bundles to the real anatomy? Learn how to optimize your analysis as we did to create the fornix of the figure above, by reading the tutorials in our gallery.

See older highlights.


  • The creators of Dipy will attend both ISMRM and HBM 2015. Come and meet us!
  • Dipy 0.8.0 released, 6 January, 2015.
  • Dipy will be an official exhibitor in HBM 2015. Don’t miss our booth!
  • Dipy was featured in The Scientist Magazine, Nov, 2014.
  • Dipy paper accepted in Frontiers of Neuroinformatics, 22 January, 2014.
  • Dipy 0.7.1 Released!, 16 January, 2014.
  • Dipy 0.7.0 Released!, 23 December, 2013.
  • A team of Dipy developers wins the IEEE ISBI HARDI challenge, 7 April, 2013.
  • Dipy 0.6.0 Released!, 30 March, 2013.

See some of our past announcements

Getting Started

Here is a simple example showing how to calculate color FA. We use a single Tensor model to reconstruct the datasets which are saved in a Nifti file along with the b-values and b-vectors which are saved as text files. In this example we use only a few voxels with 101 gradient directions:

from dipy.data import get_data
fimg, fbval, fbvec = get_data('small_101D')

import nibabel as nib
img = nib.load(fimg)
data = img.get_data()

from dipy.io import read_bvals_bvecs
bvals, bvecs = read_bvals_bvecs(fbval, fbvec)

from dipy.core.gradients import gradient_table
gtab = gradient_table(bvals, bvecs)

from dipy.reconst.dti import TensorModel
ten = TensorModel(gtab)
tenfit = ten.fit(data)

from dipy.reconst.dti import fractional_anisotropy
fa = fractional_anisotropy(tenfit.evals)

from dipy.reconst.dti import color_fa
cfa = color_fa(fa, tenfit.evecs)

As an exercise try to calculate the color FA with your datasets. Here is how a slice should look like.


Next Steps

You can learn more about how you to use Dipy with your datasets by reading the examples in our Documentation.