Summary of what happened:
Hi,
I’m running ASLPrep (v25.1.0) within an Apptainer container on a cluster. During processing, I noticed the following message in the log:
251109-17:42:03,20 nipype.workflow INFO:
Collected run data for /data/sub-XX/ses-V1/perf/sub-XX_ses-V1_asl.nii.gz:
aslcontext: /data/sub-XX/ses-V1/perf/sub-XX_ses-V1_aslcontext.tsv
m0scan: null
sbref: null
Later in the log it reads:
251109-17:42:22,588 nipype.workflow INFO:
[Node] Setting-up "aslprep_25_1_wf.sub_XX_wf.asl_preproc_ses_V1_wf.asl_fit_wf.hmc_aslref_wf.select_highest_contrast_volumes" in "/work/aslprep_25_1_wf/sub_XX_wf/asl_preproc_ses_V1_wf/asl_fit_wf/hmc_aslref_wf/select_highest_contrast_volumes".
251109-17:42:22,610 nipype.workflow INFO:
[Node] Executing "select_highest_contrast_volumes" <aslprep.interfaces.reference.SelectHighestContrastVolumes>
251109-17:42:22,640 nipype.interface INFO:
Selecting m0scan as highest-contrast volume type for reference volume generation.
The .aslcontext.tsv file includes both noRF and m0scan entries, and the ASL sequence’s JSON file defines "M0Type": "Included". So I expected ASLPrep to recognize some of the volumes in the ASL sequence as M0 scans.
Could you please confirm whether m0scan: null means ASLPrep is not using the included M0 volumes, or if this message only reflects that no separate M0 file was found?
I want to make sure the workflow is applying the included M0 volumes for calibration, rather than defaulting to something else (averaging control images to create a reference image).
Note: file paths and subject ID have been anonymized for privacy.
Command used (and if a helper script was used, a link to the helper script or the command generated):
# Environment variables
export FS_LICENSE= /FreeSurferLicense/license.txt
export TEMPLATEFLOW_HOME=/analysis/templateflow
export APPTAINERENV_FS_LICENSE=/freesurfer_license/license.txt
export APPTAINERENV_TEMPLATEFLOW_HOME=/templateflow
# Paths
ASLPREP_IMG=/analysis/ASLprep/aslprep-25.1.0.sif
BIDS_DIR=/analysis/ASLprep/test
OUT_DIR=${BIDS_DIR}/output
WORK_DIR=${BIDS_DIR}/work
# Run ASLPrep
apptainer run --cleanenv \
--env TEMPLATEFLOW_HOME=/templateflow \
--bind ${BIDS_DIR}:/data:ro \
--bind ${OUT_DIR}:/out \
--bind ${WORK_DIR}:/work \
--bind /analysis/ASLprep/FreeSurferLicense:/freesurfer_license \
--bind /analysis/templateflow:/templateflow \
${ASLPREP_IMG} \
/data /out participant \
--participant-label XX \
--skip_bids_validation \
--output-spaces T1w \
--basil \
--n_cpus 16 \
--fs-license-file /freesurfer_license/license.txt \
--work-dir /work \
--clean-workdir
Version:
ASLPrep (v25.1.0)
Environment (Docker, Singularity / Apptainer, custom installation):
Apptainer
Data formatted according to a validatable standard? Please provide the output of the validator:
PASTE VALIDATOR OUTPUT HERE
Relevant log outputs (up to 20 lines):
251109-17:42:02,637 nipype.workflow INFO:
ANAT Stage 9: Creating fsLR registration sphere
251109-17:42:02,639 nipype.workflow INFO:
ANAT Stage 10: MSM-Sulc disabled
251109-17:42:02,639 nipype.workflow INFO:
ANAT Stage 11: Creating cortical surface mask
251109-17:42:03,20 nipype.workflow INFO:
Collected run data for /data/sub-XX/ses-V1/perf/sub-XX_ses-V1_asl.nii.gz:
aslcontext: /data/sub-XX/ses-V1/perf/sub-XX_ses-V1_aslcontext.tsv
m0scan: null
sbref: null
251109-17:42:03,153 nipype.workflow INFO:
No single-band-reference found for sub-XX_ses-V1_asl.nii.gz.
251109-17:42:03,241 nipype.workflow INFO:
Stage 1: Adding HMC aslref workflow
251109-17:42:03,244 nipype.workflow INFO:
Stage 2: Adding motion correction workflow
251109-17:42:03,248 nipype.workflow INFO:
No fieldmap correction - skipping Stage 3
251109-17:42:03,248 nipype.workflow INFO:
Stage 4: Adding coregistration aslref workflow
251109-17:42:03,266 nipype.workflow INFO:
Stage 5: Adding coregistration workflow
251109-17:42:03,309 nipype.utils WARNING:
Slice times are not ascending. They will be ignored in the BASIL call.
251109-17:42:05,255 nipype.workflow INFO:
ASLPrep workflow graph with 493 nodes built successfully.
Screenshots / relevant information:
aslcontext.tsv:
volume_type
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
label
control
noRF
noRF
m0scan
m0scan