DWMRI Preprocessing (and Quality Assurance) with Docker and Singularity!

In the previous article, I discussed the general processing flow for DWMRI data. In this article, I’ll go into more detail on the preprocessing (and Quality Assurance) of diffusion data, and we’ll do it with Docker and Singularity!

Tools and files used in this article:

Some things: the documentation on topup and eddy is very good and anyone can invest the time and get them both working. Instead, I’ve opted to simply dockerize/singularize the entire process into a pipeline so that you can get it up and running quickly. The pipeline is called “dtiQA” and uses topup/eddy to preprocess the data and then runs a QA using DTI-related statistics. The version of FSL used in the container is 5.0.10 and has the 5.0.11 eddy patch.

scans.zip contains four DWMRI scans acquired in this order:

  1. 1000 b-value x 32 gradient directions (1000_32_1)
  2. 1000 b-value x 6 gradient directions (1000_6_rev)
  3. 2000 b-value x 60 gradient directions (2000_60)
  4. 1000 b-value x 32 gradient directions (1000_32_2)

Continue reading “DWMRI Preprocessing (and Quality Assurance) with Docker and Singularity!”

A brief introduction to diffusion weighted MRI (DWMRI) processing

This post serves as a brief introduction to DWMRI processing.

Tools and files used in this article:

dwmri.dcm is a 32 direction, 1000 b-value DWMRI dicom file, dcm2niix is a commonly used DICOM to NIFTI converter, nifti_utils is a library to work with NIFTIs in MATLAB, dwmri_visualizer is a visualization tool for diffusion images in MATLAB, and FSL is a powerful and commonly used medical image processing library.

A very common pipeline for dwmri processing is:

1.\ ACQUISITION
\downarrow
2.\ DICOM
\downarrow
3.\ NIFTI,\ BVEC,\ BVAL
\downarrow
4.\ PREPROCESSING
\downarrow
5.\ PROCESSING

Continue reading “A brief introduction to diffusion weighted MRI (DWMRI) processing”

Working with NIFTI(-1) files in MATLAB

This post will discuss the NIFTI-1 format and how to work with these files in MATLAB. The purpose of this article is to give a high-level introduction to “get you going”.

Tools and files used in this article:

What is a NIFTI file?

It’s essentially: a file containing a 3D array with an associated orientation. Technically, it’s a file containing a 348 byte header followed by image data. There’s more information here, here, and here about the specifics of what’s contained in the header. In this article, I’ll simply discuss how the orientation is stored in the header and how to use it, as well as a couple other fields which are important to properly using and manipulating the data. There are some other fields specific to certain modalities (i.e. fMRI), but they are not discussed here.
Continue reading “Working with NIFTI(-1) files in MATLAB”