Data Processing

From CNI Wiki

Jump to: navigation, search

Most data processing is done in individual laboratories and tailored to specific data sets. There are certain general processing methods that are provided by the CNI staff. These methods are intended to improve the quality of specific data acquired with certain protocols (EPI, Spiral, Diffusion) within the CNI facility. This Data Processing page first defines these CNI-specific methods. This is followed by links to external sites either at Stanford or elsewhere that offer software for processing MRI and EEG data.

CNI Data Information

Gradient-echo EPI

Many labs at CNI use a gradient-echo EPI sequence for BOLD fMRI imaging. This sequence is a modified version of the stock EPI sequence provided by GE. Some useful information about his sequence:

  • The latest version is cni_epi_2201. Be sure that your PSD field shows this.
  • Slice order: The slices are acquired interleaved by default, with odd slices first, then even slices. (Kendrick Kay from the Wandell lab has confirmed this empirically.) Be sure to take this into account when doing slice timing correction. You can use the "TriggerTime" field in the DICOM head to confirm the slice acquisition timing. Also note that the time points at which slices are acquired are equally spaced within the TR.
  • Triggering: There is a UserCV to control the acquisition trigger. You can have no special triggering (scan starts when you hit 'scan'), external trigger to start the scan (see MR Hardware#Scan Triggers for details), or cardiac gating.
  • Image reconstruction size: By default, the images are reconstructed at the native image size instead of being zero-padded up to the next higher power of two. This results in faster recons, smaller files, and no image interpolation, so it is generally preferred. But, if you want -power-of-two image sizes, you can change this UserCV to get that behavior.


Arterial-Spin Labeling (ASL)

Sequence: The newest ASL sequence from GE is a pseudo-continuous sequence called 3DASL. By default it is set to create a Cerebral Bloodflow (CBF) volume as a post-processing task (reported in ml/100gm/min). Separate from post-processing, the sequence produces 2 volumes, a perfusion-weighted (PW) volume and a PD volume. The PW volume is created from subtracting the tagged volume from the control volume during the scan sequence.

ASL-specific considerations:

  • Post-Label Delay (PLD): default is 2025ms
    • This should be edited to reflect population being studied. Populations with faster heart rates (such as children) should have a shorter post-label delay (e.g. healthy teens can be successfully scanned at 1525ms)
    • PLD is saved as inversion time (TI) in the dicom headers
  • Labeling time (LT): default is 1450ms
  • Slice thickness: default is 4mm
    • minimum is 2mm
  • Spiral arms: default is 8
    • This is most significant means of adjusting spatial resolution. More arms = better spatial resolution in each slice.
  • Prescription: The inferior edge of the prescription box must align with the base of the cerebellum. This ensure the labeling plane (which is just inferior to the prescription box) is aligned to tag the blood passing through the carotid arteries in the neck before entering the brain.
    • It is very important that the subject's head is aligned straight in the scanner. Tilting can result in poor labeling or artifacts in the PW volume (and subsequently the CBF volume).

Processing ASL Data: Analyses can be conducted on the CBF volume or on the PW volume. The CBF volume already has CBF quantified (naturally) based on the below information. This volume can be spatially normalized and analyzed in a similar way as processed fMRI data.

  • Homogeneous blood/brain partition coefficient for water is 0.9 ml/g
  • Labeling inversion efficiency is 80% for a 3T scanner
  • T1 of blood is 1.6s at a 3T scanner
  • Saturation time is 2s
  • Overall efficiency is 0.6
  • The PD volume is used as a reference image

Alternatively, you can quantify CBF yourself from the PW volume if you'd like to use different parameters or would like to perform additional spatial/intensity corrections before CBF quantification.

Diffusion Imaging

CNI Data processing

See Linux notes for random notes on using the linux machines at the CNI. For a nice description of the various parameters involved in field map unwarping, see this page.

Field map estimation

All MR data is subject to distortions arising from imperfections in the mean magnetic field (B0). All centers make an effort to correct for these imperfections. The CNI community is developing methods to assess the field map imperfections during the measurement process and corresponding pre-processing software that corrects for these imperfections during the reconstruction process.

Gradient-reversal Unwarping ('pepolar')

Some of the CNI pulse sequences support reversing the gradient read-out direction (GE calls this 'pepolar' for 'phase-encode polarity'). If you acquire fMRI or diffusion data with one pepolar direction (e.g., pepolar=0, the default readout direction) and another dataset with the reversed direction (e.g., pepolar=1), then you can use the two sets of images to estimate the fieldmap and unwarp the data. For our multiband ('mux', aka SMS-EPI) pulse sequences, the gradient read-out direction can be set as a user CV.

To unwarp the data, we suggest that you use the FSL topup tools. The echo train length (etl) needed in the acquisition parameter text file can be calculated using the echo spacing multiplied by the phase encoding matrix size. Both parameters can be found in the image metadata (for example, EffectiveEchoSpacing and AcquisitionMatrixPE in the json file produced by dcm2niix). For fMRI data, you can then do something like this:

   echo '0 1 0 [etl]' > acq_params.txt
   echo '0 -1 0 [etl]' >> acq_params.txt
   fsl5.0-fslroi rs_pe0.nii.gz bu 1 1
   fsl5.0-fslroi rs_pe1.nii.gz bd 1 1
   fsl5.0-fslmerge -t bud bu bd
   fsl5.0-topup --imain=bud --datain=acq_params.txt --config=b02b0.cnf --out=rs_topup
   fsl5.0-applytopup --imain=rs_pe0 --inindex=1 --method=jac --datain=acq_params.txt --topup=rs_topup --out=rs0_unwarped
   fsl5.0-applytopup --imain=rs_pe1 --inindex=2 --method=jac --datain=acq_params.txt --topup=rs_topup --out=rs1_unwarped

For diffusion data, have a look at this code:

If you need to add a slice (topup requires even numbers for x, y and z), the run this before running the lines above:

   mv rs_pe0.nii.gz rs_pe0_ORIG.nii.gz
   mv rs_pe1.nii.gz rs_pe1_ORIG.nii.gz
   fsl5.0-fslroi rs_pe0.nii.gz /tmp/pe0 0 -1 0 -1 0 1 0 -1
   fsl5.0-fslroi rs_pe1.nii.gz /tmp/pe1 0 -1 0 -1 0 1 0 -1
   fsl5.0-fslmerge -z rs_pe1 /tmp/pe1 rs_pe1_ORIG.nii.gz
   fsl5.0-fslmerge -z rs_pe0 /tmp/pe0 rs_pe0_ORIG.nii.gz

Then, after topup finishes, you can remove the extra slice:

   fsl5.0-fslroi rs_pe0_unwarped.nii.gz rs_pe0_unwarped_resize.nii.gz 0 -1 0 -1 1 -1 0 -1
   fsl5.0-fslroi rs_pe1_unwarped.nii.gz rs_pe1_unwarped_resize.nii.gz 0 -1 0 -1 1 -1 0 -1

Complete procedure for mux qT1 data:

   fslroi 9619_22_pe1.nii.gz /tmp/pe1 0 -1 0 -1 0 1 0 -1
   fslroi 9619_23_pe0.nii.gz /tmp/pe0 0 -1 0 -1 0 1 0 -1
   fslmerge -z pe1 /tmp/pe1.nii.gz 9619_22_pe1.nii.gz 
   fslmerge -z pe0 /tmp/pe0.nii.gz 9619_23_pe0.nii.gz 
   fslroi pe0 bu 1 1
   fslroi pe1 bd 1 1
   fslmerge -t bud bu bd
   topup --imain=bud --datain=acq_params.txt --config=b02b0.cnf --out=topup
   applytopup --imain=pe0 --inindex=1 --method=jac --datain=acq_params.txt --topup=topup --out=pe0_unwarped
   applytopup --imain=pe1 --inindex=2 --method=jac --datain=acq_params.txt --topup=topup --out=pe1_unwarped
   fslmaths pe0_unwarped.nii.gz -add pe1_unwarped.nii.gz /tmp/unwarped
   fslroi /tmp/unwarped.nii.gz unwarped 0 -1 0 -1 1 -1 0 -1
   bet unwarped.nii.gz brain -m
   ~/git/t1fit/ -u -t 30 -m brain_mask.nii.gz unwarped.nii.gz qt1

MRI data processing resources

CNI LX Containers (virtual machines)

The CNI has received funding from Neuro Ventures for a high-powered compute server which will be used to provide computational resources to CNI users. Please visit the LXC page for more information.

Stanford laboratories

The Wandell lab wiki describes a large collection of software for processing and visualizing anatomical, functional, and diffusion-weighted MR data.

Other lab sites could to be listed here.

Some online analysis notes for the Phillips lab.

Notes for the CHIMe lab.

General data processing notes.

Compute environment notes


  • SPM
  • FSL
  • BrainVoyager
  • Camino
  • AFNI
  • BrainVisa
  • NiPy

EEG data processing resources

Something about the Norcia lab here.

Stanford laboratories

Worldwide resources


Personal tools