ASLPrep on ADNI-3's GE 3D pCASL

Summary of what happened:

dcm2niix converted the asl dicoms into two 3D volumes, one of them is the m0 volume, the other is a deltam volume (described as case 2 over here Arterial Spin Labeling - Brain Imaging Data Structure 1.11.1 ). This is unlike the usual 4D volumes with repeated pairings of label and control images.

I tried playing around with the options indcm2niix hoping to obtain the original label control images but to no avail.

I ran aslprep on this deltam volume anyway and i encountered the error below. So i’m wondering if deltam volumes are supported at the moment?

Command used (and if a helper script was used, a link to the helper script or the command generated):

singularity run --cleanenv \
    -B /usr/local/freesurfer-7.4.1/license.txt:/opt/freesurfer/license.txt,$bids_dir,$output_dir,$work_dir,$SUBJECTS_DIR \
    $HOME/aslprep \
    $bids_dir \
    $output_dir \
    participant -w "$work_dir"/"$d" \
    --skip_bids_validation \
    --fs-subjects-dir $SUBJECTS_DIR \
    --cifti-output 91k \
    --basil \
    --aggregate-session-reports 10 \
    --skip-parcellation \
    --participant-label $d \
    --nthreads 6 \
    --omp-nthreads 6 \
    --md-only-boilerplate

Version:

ASLPrep 26.0.2

Environment (Docker, Singularity / Apptainer, custom installation):

Singularity

Data formatted according to a validatable standard? Please provide the output of the validator:

yes

PASTE VALIDATOR OUTPUT HERE

Relevant log outputs (up to 20 lines):

260726-23:33:24,691 nipype.workflow ERROR:
	 Node extract_3d_asl failed to run on host hpc-wfly-rvf002.
260726-23:33:24,694 nipype.workflow ERROR:
	 Saving crash info to /scratch/junhong.yu/ADNI/output/sub-0050602/ses-bl/log/20260726-232929_0efa055b-8d5c-4861-ab8e-df885e256428/crash-20260726-233324-junhong.yu-extract_3d_asl-4087e06b-8334-4018-bc45-d3eef3346ea1.txt
Traceback (most recent call last):
  File "/app/.pixi/envs/aslprep/lib/python3.12/site-packages/nipype/pipeline/plugins/multiproc.py", line 67, in run_node
    result["result"] = node.run(updatehash=updatehash)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.pixi/envs/aslprep/lib/python3.12/site-packages/nipype/pipeline/engine/nodes.py", line 525, in run
    result = self._run_interface(execute=True)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.pixi/envs/aslprep/lib/python3.12/site-packages/nipype/pipeline/engine/nodes.py", line 643, in _run_interface
    return self._run_command(execute)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.pixi/envs/aslprep/lib/python3.12/site-packages/nipype/pipeline/engine/nodes.py", line 769, in _run_command
    raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node extract_3d_asl.

Traceback:
	Traceback (most recent call last):
	  File "/app/.pixi/envs/aslprep/lib/python3.12/site-packages/nipype/interfaces/base/core.py", line 401, in run
	    runtime = self._run_interface(runtime)
	              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	  File "/app/.pixi/envs/aslprep/lib/python3.12/site-packages/aslprep/interfaces/utility.py", line 390, in _run_interface
	    img_3d = index_img(self.inputs.in_file, self.inputs.index)
	             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	  File "/app/.pixi/envs/aslprep/lib/python3.12/site-packages/nilearn/image/image.py", line 829, in index_img
	    imgs = check_niimg_4d(imgs)
	           ^^^^^^^^^^^^^^^^^^^^
	  File "/app/.pixi/envs/aslprep/lib/python3.12/site-packages/nilearn/image/image.py", line 2497, in check_niimg_4d
	    return check_niimg(
	           ^^^^^^^^^^^^
	  File "/app/.pixi/envs/aslprep/lib/python3.12/site-packages/nilearn/image/image.py", line 2393, in check_niimg
	    raise DimensionError(len(niimg.shape), ensure_ndim)
	nilearn.exceptions.DimensionError: Input data has incompatible dimensionality: Expected dimension is 4D and you provided a 3D image. See https://nilearn.github.io/stable/manipulating_images/input_output.html.

Screenshots / relevant information:


ASLPrep is designed to support the GE product sequence (one delta-M, one M0), but, outside of a single test dataset, this is rarely used. Unfortunately, the test dataset includes the m0scan and deltam volumes in a single 4D asl.nii.gz instead of splitting them into 3D volumes, so that might explain the failure. I can try to reproduce the error locally over the next couple of days.

hi thanks for responding to this.

Yes, ASLprep ran fine after merging both volumes. Although the scaling of the CBF values seemed off

mean_gm_cbf mean_wm_cbf
2534.492 2372.557

I’ve searched the ADNI documention on what would be an appropriate value for --m0-scale, but can’t seem to find anything relevant.

Since there are 40 label-control pairs, so i guess perhaps 40 is the right number ? because using this value would give me normal looking CBF values in the 60s

Yes, I believe that’s right. I vaguely recall that GE sums the deltaM volumes across pairs instead of averaging, so you can use the number of pairs as the M0 scaling factor.