Dear Community,

I am new to ASL. We have a PASL sequence on a Siemens Skyra scanner.
This provides TI (Inversion times) rather than PLDs

Q1: Is the PASL TI equivalent to PostLabelingDelay in BIDS?

Q2: REPETITION_TIME_PREPARATION_MISSING Is this value equivalent to the TR (repetition time)?

Thanks in advance for any help you can provide.

You may want to look at dcm_qa_asl where you can see samples of the Siemens DICOMs, sequence PDFs and JSON files created by dcm2niix. I tried to faithfully extract as many details as I could from the Siemens DICOMs.

You can then look at my nii_basil Matlab script to see how I convert from the JSON file to the inputs for BASIL.

In our own testing, we were unimpressed with the Siemens product PASL. If you have a research master agreement, I would encourage you to evaluate the pCASL sequences from Thomas OKell or Danny Jj Wang. For more samples of OKells sequences you may also be interested in this page. My own team has focused on FSL’s BASIL, but you may also want to look at ExploreASL.

Thank you for sharing these resources! They are very helpful.


Dear Community,

I found this helpful discussion of [REPETITION_TIME_PREPARATION_MISSING] (RepetitionTime* parameters - what are they and where to find them? - #4 by Remi-Gau)
confirming that it is almost always equal to TR.

I am still struggling with PLD for PASL and with Bolus Cutoff Delay Time.
Neither of these values is in the DICOM header for our Siemens Skyra PASL sequence.

I have 2 examples:

  • run-01: x: 1.875 mm; y: 1.875 mm; z: 4.5 mm, 6 minutes, 21 volumes, 10 CL pairs, Bolus Duration (BD) 800 ms, TI=2750 ms; TR=4

  • run-02: 11 minutes, x: 1.875 mm; y: 1.875 mm; z: 4.5 mm, 41 volumes, 5 repeats of 4 CL pairs, BD=700ms, ; TR=4 and 4 PLDS (in ms): 2600, 2750, 2900, 3050 (150 ms apart):

    repeat 1: pairs 1-4 use 2600, 2750, 2900, 3050
    repeat 2: pairs 5-8 use 2600, 2750, 2900, 3050
    repeat 3: pairs 9-12 use 2600, 2750, 2900, 3050
    repeat 4: pairs 13-16 use 2600, 2750, 2900, 3050
    repeat 5: pairs 17-20 use 2600, 2750, 2900, 3050

Am I correct that TI (inversion time) is equivalent to PLD for the BIDS specification? The white paper seems to define PASL PLD as TI-TI1, that is Inversion Time - Bolus Duration. For run-01 this would be 2750-800=1950 ms (For BIDS 1.95 seconds). However, the BIDS specification seems to define PLD as a longer value, e.g., PLD=TI, 2750 ms for run-01?

What is BolusCutOffDelayTime? How does it relate to BolusDuration? I’ve seen the pictures and text in the BIDS ASL specification, but I’m not sure what to make of it. Is BolusCutOffDelayTime the same as BolusDuration? Is it the same as InversionTime? Is it some kind of calculation, like TI-BD?

Any help would be greatly appreciated. Thank you!


You can see how I translate Siemens names to FSL BASIL properties here. dcm2niix creates properties in the JSON file with the same name as the Siemens sequence PDFs. You can see the ASL tags for Siemens V* here. There is not a one to one correspondence for formal BIDS tags, though there is an effort to reconcile these. I think the Skyra can run either V* (e.g. VE11C) or X* (e.g. XA30), and I am less familiar with XA ASL.

Dear Chris,

Thanks again for your input! I have bookmarked your very useful pages.

I realize that ASL is complicated, and fields we’d like to have for BIDS may simply not be available in the DICOM headers.

We are running a Siemens Skyra 3T with Syngo MR VE11c. The engineers have some relatively new Siemens PASL sequence. I’ve posted an example here of the dicoms:

I just downloaded the newest version of dcm2niix v1.0.20211006 Clang12.0.5 x86-64 (64-bit MacOS), and it does generate the “ArterialSpinLabelingType”: “PASL” field, but not many of the other fields requested by BIDS.

gdcmdump reveals several more fields that are hidden in the Siemens private information tag (ASL Crusher Flag, ASL Bolus Cut-off Flag, ASL Bolus Cut-off Technique, ASL Bolus Cut-off Delay Time, and ASL Slab Thickness):

gdcmdump -i IM-0004-0033.dcm --csa-asl --print

# Dicom-File-Format

# Dicom-Meta-Information-Header
# Used TransferSyntax:

# Dicom-Data-Set
# Used TransferSyntax: Unknown Transfer Syntax
(0018,9251) SQ (Sequence with undefined length)                   # u/l,1 MR Arterial Spin Labeling Sequence
  (fffe,e000) na (Item with undefined length)
    (0018,9252) LO [3D pulsed ASL (TGSE)]                         # 20,1 ASL Technique Description
    (0018,9257) CS [CONTROL ]                                     # 8,1 ASL Context
    (0018,9259) CS [NO]                                           # 2,1 ASL Crusher Flag
    (0018,925c) CS [YES ]                                         # 4,1 ASL Bolus Cut-off Flag
    (0018,925d) SQ (Sequence with undefined length)               # u/l,1 ASL Bolus Cut-off Timing Sequence
      (fffe,e000) na (Item with undefined length)
        (0018,925e) LO [Q2TIPS]                                   # 6,1 ASL Bolus Cut-off Technique
        (0018,925f) IS (UL) [2740]                                # 4,1 ASL Bolus Cut-off Delay Time
    (0018,9260) SQ (Sequence with undefined length)               # u/l,1 ASL Slab Sequence
      (fffe,e000) na (Item with undefined length)
        (0018,9253) US 1                                          # 2,1 ASL Slab Number
        (0018,9254) FD 172.8                                      # 8,1 ASL Slab Thickness
        (0018,9255) FD 0\-0\1                                     # 24,3 ASL Slab Orientation
        (0018,9256) FD 6.04978\-0.596796\-59.7034                 # 24,3 ASL Mid Slab Position
        (0018,9258) IS (UL) [10]                                  # 2,1 ASL Pulse Train Duration

Is there any way for dcm2niix to extract these?

Thanks so much for creating the crucial dcm2niix! Clearly, it forms a critical piece of the whole BIDS infrastructure.


@ Dianne_Patterson thanks for the example data. dcm2niix already extracts a lot of PASL-specific information from the proprietary Siemens CSA header, including BolusDuration, InversionTime, and ArterialSpinLabelingType. The additional details gdcm can extract are stored with base64 encoding in the MR_ASL field of the proprietary Siemens CSA header. Since VE11 is being upgraded to XA30 (which does not include the CSA header), I do not think supporting these additional tags is worth the development effort. If someone strongly feels these are useful, they may want to submit a pull request for dcm2niix. Using gdcmdump to extract these details is a handy trick. It is also worth noting that BolusDuration = BolusCutOffDelayTime+PulseTrainDuration, so we already have a good surrogate.