Example 1: Simple Perfusion Analysis using pcASL


The purpose of this exercise is to perform a very simple analysis of ASL data to produce a perfusion image as an introduction to using ASL, esentially following the procedure outlined in Chapter 1 of the Primer using the BASIL tools in FSL.

NOTE that we reccomend you use FSL v6.0.1 (or higher) for these exercises.

For this exercise you should using the Single PLD pcASL dataset set. This ASL data was acquired using pcASL labelling with a label duration of 1.8 seconds and a post-labelling delay (PLD) of 1.8 seconds, following the recommendations of the ASL consensus paper.

Get the data

Look at the data

(Primer Example Box 1.1)

It is always a good idea to take a look at the raw data just to check that nothing has gone horribly wrong in the acquisition and ensure you know exactly what you are dealing with.

There are two separate files that contain the ASL data we need:
  • asltc - this contains 60 volumes and is repeated measurements of alternating label and control images (in that order).
  • aslcalib - this is the calibration image (only a single volume), it is effectively a proton density image acquired with the same readout as the ASL data. In this case the TR was 4.8 seconds, which means there will be some T1 weighting that we might want to correct for.
  • View these images in fsleyes:

    fsleyes aslcalib.nii.gz -dr 0 1500 asltc.nii.gz -dr 0 1500

    Notice that:

  • There is a marked intensity difference between the calibration image and the label-control data. This is because background suppression was applied when acquiring the label-control data, as recommended by the ASL consensus paper, to reduce the influence of motion and physiological noise sources.
  • It is very hard to spot differecnes between label and control images - try using the movie mode of fsleyes, you might find it helpful to set the display range for the asltc.nii.gz image as 0 to 500 now.
  • There is an alternating pattern in the timeseries of the label-control data, but it is small compared to the mean signal intensity in any given voxel. To see this use the timeseries mode in fsleyes, you will need to choose a voxel in cotrical gray matter (where there will be the largest perfusion signal) e.g. [20,14,13].
  • A Perfusion-Weighted Image

    (Primer Example Box 1.2)

    Since the data looks okay we can proceed to the calculation of a perfusion-weighted image (PWI). This can be achieved relatively simply by subtracting pairs of label and control iamges within the data and then averaging over all the resulting volumes. This will allow us to check that there is perfusion information in the data - as you might have gathered it is realtively easy for the data to look fine on first inspection, but hard to tell if there is going to be a perfusion image in there.

    To perform label control subtraction use asl_file:

      asl_file --data=asltc --ntis=1 --iaf=tc --diff --out=asldiffdata --mean=asldiffdata_mean

    Note that we have told asl_file that there is a single PLD (using --ntis=1, asl_file calls them TIs) and asked for two different outputs, one will contain all the different volumes after subtraction has been performed asldiffdata and the other will be the mean over all the volumes after subtraction asldiffdata_mean, i.e., the PWI.

    Look at both of these in FSLeyes:

    fsleyes asldiffdata.nii.gz asldiffdata_mean.nii.gz

    The PWI (asldiffdata_mean) has the expected distirbution for perfusion in the brain - it looks reassuraingly like a perfusion image. If you now scroll through all the volumes in asldiffdata you will be able to observe how noisy ASL data is, but the perfusion pattern should still be visible in all the different volumes. It is interesting to also load the aslcalib file and compare the magnitude of voxels in that with the PWI - there is approximately a factor of 100 difference.

    (Simple) Perfusion Quantification

    (Primer Example Box 1.3)

    We have checked the raw data and also checked the PWI, thus we can proceed to final quantification of perfusion, inverting the kinetics of of the ASL label delviery and using the calibration image to get values in the units of ml/100g/min.

    We can do the full quantification using a single call to oxford_asl (it incorporates the asl_file subtraction process):

      oxford_asl -i asltc -o oxasl --wp --casl --iaf=tc --tis=3.6
      --bolus=1.8 --slicedt=0.0452 -c aslcalib --tr 4.8

    Note that we have specified:

  • The type of labeling, pcASL: --casl).
  • The format of the data, label-control: --iaf=tc).
  • The PLD, via the inflow time, which is the label durection plus PLD for pcASL: --tis=3.6.
  • The label duration (--bolus=1.8).
  • The time to acquire each slice in the 2D EPI readout (to correct for the difference in PLD in each slice): --slicedt=0.0452.
  • The TR of the calibration data: --tr=4.8.
  • For this analysis we have put oxford_asl into 'White Paper' mode (--wp), this means it uses a kinetic model and defaults for the parameters that are consistent with the formulate in the ASL Consensus Paper.

    To view the final result:

    fsleyes oxasl/native_space/perfusion_calib.nii.gz

    You will find something that looks very similar to the PWI we viewed before, but now the values at every vxoel are in ml/100g/min.

    You will also find a PWI saved as oxasl/native_space/perfusion. This is very similar to the PWI we calculated using asl_file, except that the kinetic model inversion has been applied to it, this is the image pre-calibration.

    We can do a better job of the analysis of this data, by applying some corrections during analysis, this is the subject of Example 2.