[FSL] [TitleIndex] [WordIndex


This tutorial runs through the use of oxford_asl (the command line tool) on a number of different multi-TI ASL datasets.The data can be found here (~50 MB)

Please note that the data is only provided for training purposes and should not be used for research without permission.

DATASET 1: pulsed ASL

This dataset is resting-state ASL data collected using a single-shot three-dimensional GRASE readout, TR/TE 3110/23 ms, 3.44x3.44x5mm, 22 slices using a matrix size 64x64, FAIR preparation, background suppression. Alternating control and tag pairs were acquired with 10 TIs (400, 620, 840, 1060, 1280, 1500, 1720, 1940, 2160, 2380 ms), each one repeated 10 times. The data is in the directory data_pasl.

In this case the tag-control subtraction has already been done and the multiple measurements at each TI have been averaged, this has been put in the file diffdata.nii.gz. (In a later exercise we will see how that was done). Have a look at the differenced data using FSLview:

fslview pasl_data/diffdata &

You might like to flick through the different volumes and see if you can spot the label washing in and then decaying away again. Notice that the label arrives in some regions later than others.

Exercise 1.1: CBF estimation

Firstly we are going to do the model-fitting. Try typing this in your terminal


If you call oxford_asl without any options you get the usage information. There is a lot of functionality (and we do not want to use all of it now), the three main things it can do are: model-fitting, registration and calibration. We need to do model-fitting to get CBF from the multi-TI data, so we will need:

We have all the information we need so all we have to do is run this command (check you understand what each bit does):

oxford_asl -i data_pasl/diffdata --tis 0.4,0.62,0.84,1.06,1.28,1.5,1.72,1.94,2.16,2.38 -o ex1_1 --bolus 1.1 --bat 0.7 --t1 1.3 --t1b 1.66 --artoff --spatial

Notice that we have turned off the estimation of the macrovascular component (--artoff), we will come back to this. We are using the 'spatial' mode, which is recommened as it exploits the natural spatial smoothness of the estimated CBF image.

In the results directory, ex1_1, you will find a native_space directory that contains all the estimated images at the same resolution as the original data. You should find in there (and look at using FSLview):

Since we would like the estimated CBF in physiological units (ml/100g/min) we also need:

oxford_asl will, if given a structural image, try to automatically segment out the ventricles and use these as a CSF reference for calibration. We want a slightly quicker result, so there is a previously defined CSF mask, csfmask.nii.gz, to use. In this case there was a difference in the gain of a factor of 10 used when acquiring the calibration data (no background suppression) and the main ASL data (with background suppression).

Run the command again but with the extra calibration information supplied:

oxford_asl -i data_pasl/diffdata --tis 0.4,0.62,0.84,1.06,1.28,1.5,1.72,1.94,2.16,2.38 -o ex1_1 --bolus 1.1 --bat 0.7 --t1 1.3 --t1b 1.66 --artoff --spatial -c pasl_data/aslcalib --csf pasl_data/csfmask --cgain 10

You should now find in the results directory an extra image: perfusion_calib.nii.gz, which is the estimated CBF image in ml/100g/min having used the separate calibration information. You should also find a calib subdirectory that includes the results of the calibration process, the main one being M0.txt that contains the estimated equilibrium magnetization of arterial blood (in scanner units). This M0 value was used to scale the perfusion image to get it into physiological units.

Exercise 1.2: CBF estimation with a macro vascular component

In the previous exercise we only fit a tissue based kinetic curve to the data. However, the data was not aquired with flow supression so there should be a substantial contirbution from ASL label still within larger vessels. What we should do, therefore, is to add a macro vascular component to account for this:

oxford_asl -i data_pasl/diffdata -c aslcalib --csf csfmask --tis 0.4,0.62,0.84,1.06,1.28,1.5,1.72,1.94,2.16,2.38 -o ex1_2 --bolus 1.1 --bat 0.7 --t1 1.3 --t1b 1.66 --spatial

Notice that we have run exactly the same command as the previous exercise, we have just removed --artoff. By default oxford_asl always fits the macro vascualr component, even with flow suppression some arterial label can still be present.

In the results directory, ex1_2, you will find the perfusion and arrival results again, along with an image called aCBV.nii.gz, this is the estimated arterial cerebral blood volume image from the macro vascular component. Compare the images from this exercise with the previous one. Notice that the CBF is lower and arrival time is later where the magntiude of the aCBV image is large - around regions where large vessels would be expected.

DATASET 2: pseudo continuous ASL

This dataset is resting-state pcASL data collected using an EPI readout, TR/TE 3750/14 ms, 3.75x3.75x7.5mm, 24 slices using a matrix size 64x64. Alternating control and tag pairs were acquired after 1.4 s of labelling at 5 different post labelling delays (200, 400, 600, 800, 1000 ms), each one repeated 12 times. The data is in the directory pcasl_data

We are going to need to know what the inversion times were for each measurement. For pASL this was the time between labelling and readout. For cASL we need the time from the start of labelling to readout, so our TI = labelling duration + post labelling delay. Thus the TIs are: 1.6, 1.8, 2.0, 2.2, 2.4 s.

Exercise 2.1: Tag-control subtraction

The first thing we need to do is take the raw ASL data and do tag-control subtraction to remove the static tissue contribution. We are also going to take the average of the multiple measurements at each TI to make the model-fitting faster (in practice would could skip this as oxford_asl could do this for us). We could split the data into separate volumes and do subtraction and averaging of these images before re-assembling it all together, but that would be tedious! Instead we have a command that knows how to deal with ASL data, what we want to do is:

asl_file --data=data_pcasl/asl_raw_data --ntis=5 --ibf=rpt --iaf=tc --diff --mean=pcasl_diffdata

The command tells asl_file:

Have a look at the data (pcasl_diffdata) in FSLview as we did for the pASL data. This set will look a bit different as we only have 5 TIs and these are all placed so that they will be near the peak of the kinetic curve. So we dont see the nice clear wash in of the label as we did before.

Exercise 2.2: CBF estimation

We will do CBF estimation in a very similar way to the pASL data. However, this time we will:

The full command we need is (again see if you can identify what each term does):

oxford_asl -i pcasl_diffdata -c data_pcasl/calibration_head --tis 1.6,1.8,2.0,2.2,2.4 -o ex2_2 --bolus 1.4 --bat 0.7 --t1 1.3 --t1b 1.66 --artoff --fixbolus --spatial --casl -s data_pcasl/struc --regfrom data_pcasl/asl_raw_data

In the results directory, ex2_2, you will find a native_space set of results, but also the same results at the resolution of the structural image (struct_space). As with the pASL results there are perfusion and bolus arrival time images. Since we only have 5 tightly spaced TIs we wont expect our arrival time images to be as good. You will also notice from the arrival time image that the mask generated by oxford_asl wasn't perfect - it includes all the brain, but some non brain too. We could have made our own mask and supplied it to oxford_asl with the -m option if we had wanted to. It is also worth looking at ex2_2/calib/refmask.nii.gz as this is the mask that was used to indentify the CSF in the calibration image, you should check that it looks like voxels within the ventricles have been indentified.

When we analysed the pASL data we also added a macro vascular component into the model. However, we wont do that here since all the TIs we have come quite late and we are likely to have missed most of the early arriving arterial based label.


The QUASAR variant of ASL makes use of a combination of flow suppressed and non suppressed multi-TI data to allow for a better separation of the tissue and macro vascular signals. This aids model-based analysis and also permits 'model-free' analysis similar to that used in DSC-MRI. QUASAR data also has all the information within it to do the calibration step. Because the QUASAR sequence is well defined we dont have to worry about all the options in oxford_asl, in fact there is a special version specifcally desgined for QUASAR data called quasil. Again just trying the command brings up the usage - there are not many options this time!

Exercise 3.1: Model-based analysis

Firstly we are going to do a model-based analysis, just like we did in exercise 2, but tailored for QUASAR data. The command we want is:

quasil -i data_quasar/data -o ex3_1

In the results directory, ex3_1, you should find perfusion and aCBV images to examine.

Exercise 3.2: Model-free analysis

Now we are going to compare the model-based results with numerical deconvolution (this is the method proposed in Petersen's original paper). quasil will also do this using the --mfree option:

quasil -i data_quasar/data -o ex3_2 --mfree

Like the model-based analysis both perfusion and aCBV images are produced. Compare the model-based and model-free results, you should find that the model-free perfusion values are generally lower than the model-based results, primiarly due to the underestimation of the numerical deconvolution.


Thanks are due to Brad MacIntosh, Dan Gallichan, Michael Kelly, Esben Petersen and Xavier Golay for the provision of the ASL data used in these exercises.

2012-09-05 11:30