Example 3: Perfusion Analysis using multi-PLD pcASL


The purpose of this example is to analyse data that has been acquired with mulitple post-labeling delays. The analysis is on data from the same subject (and the same session) as used in Example 1 and Example 2. This example uses the data first met in Chapter 4 of the primer.

NOTE that we reccomend you use FSL v6 AND the latest pre-release of BASIL for these exercises (v3.9.22 or greater).

For this example you should use the Multi-PLD pcASL data, you will also need images from the Single-PLD pcASL data. The multi-PLD pcASL data was acquired using a label duration of 1.4 seconds and PLDs of 0.25, 0.5, 0.75, 1.0, 1.25 and 1.5 seconds.

Get the data

Perfusion Quantification

(Primer Example Box 4.1)

We can proceed to do the full quantification using a single call to oxford_asl as we did in Example 1 and 2. We will copy the approach we took in Example 2 and include motion and distortion correction, and we will use CSF as the reference tissue for calibration purposes:

  oxford_asl -i asltc -o oxasl --casl --iaf=tc \
  --tis=1.65,1.9,2.15,2.4,2.65,2.9 --bolus=1.4 --slicedt=0.0452 \
  --fixbolus --artoff --spatial --mc \
  -c aslcalib --tr 4.8 --cmethod=single --csf=csfmask --cblip=aslcalib_PA --pedir=y --echospacing=0.00095

Note that:

  • The different PLD are provided as a comma separated list of inflow times --tis=1.65,1.9,2.15,2.4,2.65,2.9.
  • We haven't defined an ATT (the --bat= option isn't used), this parameter will be infered from the data. For multi-PLD data the --bat= option can be used to set the initial (and prior) value for this parameter, but it is always estimated from the data. We do not set it here as we are happy with the default value (1.3 seconds) provided.
  • We have explicitly told oxford_asl not to estimate an arterial (macrovascular) component, --artoff. When we only had single PLD data this didn't matter, as there isn't information in single PLD ASL to estimate such a component, but it might be posisble to infer from multi-PLD data - something we will return to below.
  • We have explicitly told oxford_asl to use the reference region approach and supplied a CSF mask (in the same space as the ASL data). If we hadn't it would use the voxelwise method. We could, as we did in Example 2, supply the structural image, but it is quicker to supply an existing CSF mask in this case (to save repeating the registration of ASL to structural image). This CSF mask is simply the result of a previous run of oxford_asl on this subject, as we generated in Example 2.
  • The results directory from this analysis should look similar to that obtained in Example 2. The main difference is that the arrival.nii.gz image is now a genuine estimate of ATT;if you examine this image you should find a pattern of values consitent with the time it takes for blood to transit between the labeling to imaging regions. You might notice that the arrival.nii.gz image was present even in the single-PLD results, but if you looked at it contained a single value - the one provided by the --bat= option - which meant that it appeared blank in that case.

    Arterial/Macrovascular Signal Correction

    (Primer Example Box 4.2)

    In the analysis above we prevented oxford_asl from including an extra component in the model that would capture any arterial (macrovascular) signal present in the data. This is fairly reasonable for pcASL in general, since we can only start sampling some time after the first arrival of labeled blood-water in the imaging region. However, given we are using shorter PLD in our multi-PLD sampling to improve the SNR there is a much greater likelihood of arterial signal being present. Thus, we might like to repeat the analysis with this component included:

      oxford_asl -i asltc -o oxasl --casl --iaf=tc \
      --tis=1.65,1.9,2.15,2.4,2.65,2.9 --bolus=1.4 --slicedt=0.0452 \
      --fixbolus --spatial --mc \
      -c aslcalib --tr 4.8 --cmethod=single --csf=csfmask --cblip=aslcalib_PA --pedir=y --echospacing=0.00095

    All we did in this run was remove the --artoff option. The results directory should be almost identical to the previous run, but now we also gain some new results: aCBV.nii.gz and aCBV_calib.nii.gz; follwing the convention for the perfusion images, these are the relative and absolute arterial (cerebral) blood volumes respectively. If you examine one of these and focus on the more inferior slices you should see a pattern of higher values that map out the strcture of the major arterial vasculature, including the Circle of Willis. This finding of an arterial contirbution in some voxels rsults in a correction to the perfusion image - you may now be able to spot that in the same slices where there was some evidence for arterial contamination of the perfusion image before that has now been removed.

    Partial Volume Correction

    (Primer Example Box 6.4)

    In the same way that we could use oxford_asl for partial volume correction in Example 2 for single PLD pcASL, we can do this for multi-PLD:

      oxford_asl -i asltc -o oxasl --casl --iaf=tc \
      --tis=1.65,1.9,2.15,2.4,2.65,2.9 --bolus=1.4 --slicedt=0.0452 \
      --fixbolus --spatial --mc \
      -c aslcalib --tr 4.8 --cmethod=single --csf=csfmask --cblip=aslcalib_PA --pedir=y --echospacing=0.00095 \
    --fslanat=T1.anat --pvcorr

    Note that we need to provide partial volume estimates and we have thus used the T1.anat result from Example 2. In practice we do not need to supply the CSF mask in this case.

    The results directory now containes, as a further subdirectory, pvcorr, within the native_space subdirectory, the partial volume corrected results: gray matter (perfusion_calib.nii.gz etc) and white matter perfusion (perfusion_wm_calib.nii.gz etc) maps. Alongside these there are also gray and white matter ATT maps (arrival and arrival_wm respectively). The estimated maps for the arterial component (aCBV_calib.nii.gz etc) are still present in the pvcorr directory. Since this is not tissue specific there are not separate gray and white matter versions of this parameter.

    ADVANCED: ASL data manipulation

    In Example 1 we firstly manipulated the data using asl_file to examine the perfusion-weighted image and satisfy ourselevs that there was perfusion information in the data. We can use asl_file with multi-PLD pcASL (or almost any other ASL variant). For example, if we wanted to perform tag-control subtraction we could do as follows:

      asl_file --data=asltc --ntis=6 --iaf=tc --ibf=tis --diff --out=asldiffdata --mean=asldiffdata_mean

    We have to be careful to do is specify the number of PLD (TI) in the data: --nti=6. The asldiffdata_mean.nii.gx contains result of averaging all the repeats of each invidiual PLD - thus it contains 6 separate volumes; if you examine these you should see that the first volume is relatively bright compared to the last couple of volumes. This reflects that fact that at the first PLD most (but not all) of the brain has recieved labelled blood-water and thus there is quite a lot of perfusion signal. By the time of the later PLD the end of the bolus of labeled blood-water has already reached every part of the brain and T1 decay is gradually reducing the signal. If you examine the asldiffdata.nii.gz file you will find it contains the noisy label-control difference images.

    Note that we have also told asl_file the oder in which the PLD are to be found in the data: --ibf=tis. They were aquired as a full set of PLDs first, followed by another repeat of all the PLDs etc. It is possible, but less common, that we could have acquired all the repeats for a single PLD first, then all at the next PLD etc.

    In this example the early PLDs are a pretty good basis on which to examine if the data contains perfusion information. However, this might be less reliable if we have fewer repeats at each PLD where the influence of noise at each PLD would be more noticable. We can generate a very simple perfusion-weighted image by averaing all the PLD:

      fslmaths asldiffdata_mean -Tmean aslpwi

    There are various other things we can do with asl_file to mainpulate the data; for example, splitting the data into separate files for each PLD using the --split option, or output the data having changed the oder in which the repeated PLDs appear in the data according to the pattern using the --out option with --obf. For more information see the help for asl_file.