ASLprep: can't get it to use spin echo fieldmaps for distortion correction

Summary of what happened:

Hi, I am trying to run aslprep on Siemens multidelay data and it works, except that its not using the spin echo AP and PA fieldmaps in the datasets. As far as I can tell, the bids structure is set up correctly with the intended for field filled in. Any thoughts on what I am missing? Thank you for your help!

FYI: I am running aslprep container with singularity.

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

singularity run --cleanenv 
-B /N/scratch/echumin/TEMP-PROJECT/:/N/scratch/echumin/TEMP-PROJECT/:ro 
-B /N/scratch/echumin/aslprep-workingdir/sub-10709:/N/scratch/echumin/aslprep-workingdir/sub-10709
-B /N/project/cfn-commons/neuroimaging_utils/fs731license.txt:/opt/freesufer/license.txt 
-B /N/project/IADRC/derivatives/IADRCprisma/aslprep-0.7.5:/N/project/IADRC/derivatives/IADRCprisma/aslprep-0.7.5/ 
-B /N/project/IADRC/derivatives/IADRCprisma:/N/project/IADRC/derivatives/IADRCprisma/ 
/N/project/cfn-commons/neuroimaging_utils/aslprep-0.7.5.simg 
--participant-label sub-10709 
--skip_bids_validation 
--derivatives /N/project/IADRC/derivatives/IADRCprisma 
--nthreads 8 
--work-dir /N/scratch/echumin/aslprep-workingdir/sub-10709 
--fs-license-file /opt/freesufer/license.txt 
--ignore t2w flair 
--output-spaces MNI152NLin2009cAsym:res-2 
--asl2anat-init t1w 
--fs-subjects-dir /N/project/IADRC/derivatives/IADRCprisma/freesurfer6/sub-10709_ses-20240723T113136 
--fs-no-reconall 
--basil 
-vv 
/N/scratch/echumin/TEMP-PROJECT/ /N/project/IADRC/derivatives/IADRCprisma/aslprep-0.7.5/ 
participant

This is the bash code that build the function (if helpful):

#run aslprep
cmd="singularity run --cleanenv \
    -B /N/scratch/${USER}/TEMP-PROJECT/:/N/scratch/${USER}/TEMP-PROJECT/:ro \
    -B ${work_dir}:${work_dir} \
    -B ${fslic}:/opt/freesufer/license.txt \
    -B ${aslprep_rootDir}:${aslprep_rootDir}/ \
    -B ${derivatives}:${derivatives}/ \
  ${aslprep} \
    --participant-label ${sub} \
    --skip_bids_validation \
    --derivatives ${derivatives} \
    --nthreads ${nthreads} \
    --work-dir ${work_dir} \
    --fs-license-file /opt/freesufer/license.txt \
    --ignore t2w flair \
    --output-spaces MNI152NLin2009cAsym:res-2 \
    --asl2anat-init t1w \
    --fs-subjects-dir ${freesurfer_dir} \
    --fs-no-reconall \
    --basil -vv \
    /N/scratch/${USER}/TEMP-PROJECT/ ${aslprep_rootDir}/ \
    participant"

Version:

singularity/3.7.2
aslprep-0.7.5.simg

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

Singularity 3.7.2

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

Screenshot of validator errors below.
This is the intended for field for the fieldmap:

"intendedFor": [
        "bids::sub-10709/ses-20240723T113136/func/sub-10709_ses-20240723T113136_task-rest_bold.nii.gz",
        "bids::sub-10709/ses-20240723T113136/func/sub-10709_ses-20240723T113136_task-vv2bk_bold.nii.gz",
        "bids::sub-10709/ses-20240723T113136/func/sub-10709_ses-20240723T113136_task-sceneenc_bold.nii.gz",
        "bids::sub-10709/ses-20240723T113136/fmap/sub-10709_ses-20240723T113136_acq-5delay_asl.nii.gz"
    ]

This is the additional information (everything after Dcm2bids version) that is not done by dcm2niix and is added manually by me via dcm2bids:

"ConversionSoftware": "dcm2niix",
    "ConversionSoftwareVersion": "v1.0.20220505",
    "Dcm2bidsVersion": "3.2.0",
    "M0Type": "Included",
    "PostLabelingDelay": [
        0,
        0,
        0.3,
        0.3,
        0.8,
        0.8,
        1.3,
        1.3,
        1.8,
        1.8,
        1.8,
        1.8,
        2.3,
        2.3,
        2.3,
        2.3
    ],
    "VascularCrushing": "false",
    "BolusCutOffFlag": "true",
    "BolusCutOffDelayTime": 1.79,
    "BolusCutOffTechnique": "Q2TIPS",
    "LabelingSlabThickness": 162,
    "LabelingDuration": 0.7

aslcontext file:

volume_type
m0scan
n/a
label
control
label
control
label
control
label
control
label
control
label
control
label
control

Relevant log outputs (up to 20 lines):

The HTML report shows no errors:

About

    ASLPrep version: 0.7.5
    ASLPrep command: /opt/conda/envs/aslprep/bin/aslprep --participant-label sub-10633 --derivatives /N/project/IADRC/derivatives/IADRCprisma --nthreads 4 --work-dir /N/scratch/echumin/aslprep-workingdir/sub-10633 --fs-license-file /opt/freesufer/license.txt --ignore t2w flair --output-spaces MNI152NLin2009cAsym:res-2 --asl2anat-init t1w --fs-subjects-dir /N/project/IADRC/derivatives/IADRCprisma/freesurfer6/sub-10633_ses-20231018T102055 --fs-no-reconall --basil -vvv /N/scratch/echumin/TEMP-PROJECT/ /N/project/IADRC/derivatives/IADRCprisma/aslprep-0.7.5/ participant
    Date preprocessed: 2025-03-12 10:34:24 -0400

Screenshots / relevant information:

ASL report section showing no SDC done:

Bids validator screenshot:


Hi @echumin and welcome to neurostars!

IntendedFor has a capital “I” and I am not certain ASLPrep accepts the BIDS URI yet, and might only accept the legacy relative path version of IntendedFor. So remove bids::sub-10709/ses-20240723T113136/ from everything.

EDIT: Meant to say just remove bids::sub-10709/ from everything.

Best,
Steven

1 Like

Hi Steven,
Thanks for the quick reply! I have no prior experience with fmriprep or aslprep, so I appreciate any guidance you or others here have for me.

Of course I would have a typo! :sweat_smile:But apparently that was not the only issue.
I did a couple runs:
(1) fixing the indendedFor to IntendedFor, no luck;
(2) additionally removing BIDS URI formatting so that the AP and PA field map json files IntendedFor looks as follows, still no luck.

sub-10709_ses-20240723T113136_dir-AP_epi.json
sub-10709_ses-20240723T113136_dir-PA_epi.json
    "IntendedFor": [
        "func/sub-10709_ses-20240723T113136_task-rest_bold.nii.gz",
        "func/sub-10709_ses-20240723T113136_task-vv2bk_bold.nii.gz",
        "func/sub-10709_ses-20240723T113136_task-sceneenc_bold.nii.gz",
        "fmap/sub-10709_ses-20240723T113136_acq-5delay_asl.nii.gz"
    ]

(3) On the third run I removed the --skip_bids_validation flag and added --fmap-bspline, thinking that maybe either the validation or asking it to do bspline would force some sort of an error. Unfortunately that didn’t change anything and it still ran all the way through without doing the distortion correction.

Notably, it did print this:

250313-15:13:46,532 cli INFO:
	 Making sure the input data is BIDS compliant (warnings can be ignored in most cases).
bids-validator does not appear to be installed
250313-15:14:08,903 nipype.workflow IMPORTANT:
	 Running ASLPrep version 0.7.5

so it seems a bids-validator is not in the 0.7.5 image.

I searched for “fmap” in the output text and saw this:

250313-13:30:30,89 nipype.workflow IMPORTANT:
	 ASLPrep started!
250313-13:30:32,203 nipype.workflow INFO:
	 Workflow aslprep_0_7_wf settings: ['check', 'execution', 'logging', 'monitoring']
250313-13:30:32,701 nipype.workflow INFO:
	 Running in parallel.
250313-13:30:32,853 nipype.workflow INFO:
	 [MultiProc] Running 0 tasks, and 19 jobs ready. Free memory (GB): 310.90/310.90, Free processors: 8/8.
250313-13:30:33,137 nipype.workflow INFO:
	 [Node] Outdated cache found for "aslprep_0_7_wf.sub_10709_wf.bidssrc".
250313-13:30:33,138 nipype.workflow VERBOSE:
	 [Node] Old/new hashes = ca77c828d8c3c0a04ea4e2ba4a16ff69/4720a8fda2e43a533a583fffd0abae92
250313-13:30:33,156 nipype.workflow VERBOSE:
	           Some dictionary entries had differing values:
            * subject_data: (('asl', (('/N/scratch/echumin/TEMP-PROJECT/sub-10709/ses-20240723T113136/perf/sub-10709_ses-20240723T113136_acq-5delay_asl.nii.gz', '39c68ecababff0afe81ffe9938cb8b96'),)), ('flair', ()), ('fmap', (('/N/scratch/echumin/TEMP-PROJECT/sub-10709/ses-20240723T113136/fmap/sub-10709_ses-20240723T113136_dir-AP_epi.nii.gz', '0d27fb9e93a0eee9490518f544ca5b3f'), ('/N/scratch/echumin/TEMP-PROJECT/sub-10709/ses-20240723T113136/fmap/sub-10709_ses-20240723T113136_dir-PA_epi.nii.gz', '0d006464c0b7619e9995f13a64d0d459'))), ('roi', ()), ('sbref', ()), ('t1w', (('/N/scratch/echumin/TEMP-PROJECT/sub-10709/ses-20240723T113136/anat/sub-10709_ses-20240723T113136_acq-mprage_T1w.nii.gz', '1554f32cfca6552c8532fc698d9a1195'),)), ('t2w', ())) != (('asl', (('/N/scratch/echumin/TEMP-PROJECT/sub-10709/ses-20240723T113136/perf/sub-10709_ses-20240723T113136_acq-5delay_asl.nii.gz', 'f592838b518523fe6e2085414775f9ff'),)), ('flair', ()), ('fmap', (('/N/scratch/echumin/TEMP-PROJECT/sub-10709/ses-20240723T113136/fmap/sub-10709_ses-20240723T113136_dir-AP_epi.nii.gz', '0d27fb9e93a0eee9490518f544ca5b3f'), ('/N/scratch/echumin/TEMP-PROJECT/sub-10709/ses-20240723T113136/fmap/sub-10709_ses-20240723T113136_dir-PA_epi.nii.gz', '0d006464c0b7619e9995f13a64d0d459'))), ('roi', ()), ('sbref', ()), ('t1w', (('/N/scratch/echumin/TEMP-PROJECT/sub-10709/ses-20240723T113136/anat/sub-10709_ses-20240723T113136_acq-mprage_T1w.nii.gz', '39d9360ccbdb2046d868012a6d0c850b'),)), ('t2w', ()))

so it does see the fmap folder and images.

I don’t know is this is useful, but here are all the outputs generated and fmap derivative folder does not exist:

[echumin@i52 ses-20240723T113136]$ ls *
anat:
sub-10709_ses-20240723T113136_acq-mprage_desc-brain_mask.json                                    sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_desc-preproc_dseg.json
sub-10709_ses-20240723T113136_acq-mprage_desc-brain_mask.nii.gz                                  sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_desc-preproc_dseg.nii.gz
sub-10709_ses-20240723T113136_acq-mprage_desc-preproc_T1w.json                                   sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_desc-preproc_T1w.json
sub-10709_ses-20240723T113136_acq-mprage_desc-preproc_T1w.nii.gz                                 sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_desc-preproc_T1w.nii.gz
sub-10709_ses-20240723T113136_acq-mprage_dseg.nii.gz                                             sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_dseg.json
sub-10709_ses-20240723T113136_acq-mprage_from-MNI152NLin2009cAsym_to-T1w_mode-image_xfm.h5       sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_dseg.nii.gz
sub-10709_ses-20240723T113136_acq-mprage_from-T1w_to-MNI152NLin2009cAsym_mode-image_xfm.h5       sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_label-CSF_desc-preproc_probseg.nii.gz
sub-10709_ses-20240723T113136_acq-mprage_label-CSF_probseg.nii.gz                                sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_label-CSF_probseg.nii.gz
sub-10709_ses-20240723T113136_acq-mprage_label-GM_probseg.nii.gz                                 sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_label-GM_desc-preproc_probseg.nii.gz
sub-10709_ses-20240723T113136_acq-mprage_label-WM_probseg.nii.gz                                 sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_label-GM_probseg.nii.gz
sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_desc-brain_mask.json    sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_label-WM_desc-preproc_probseg.nii.gz
sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_desc-brain_mask.nii.gz  sub-10709_ses-20240723T113136_acq-mprage_space-MNI152NLin2009cAsym_res-2_label-WM_probseg.nii.gz

figures:
sub-10709_ses-20240723T113136_acq-5delay_desc-basilByTissueType_cbf.json    sub-10709_ses-20240723T113136_acq-5delay_desc-basilGM_cbf.json          sub-10709_ses-20240723T113136_acq-5delay_desc-cbf_cbf.svg
sub-10709_ses-20240723T113136_acq-5delay_desc-basilByTissueType_cbf.svg     sub-10709_ses-20240723T113136_acq-5delay_desc-basilGM_cbf.svg           sub-10709_ses-20240723T113136_acq-5delay_desc-coreg_asl.svg
sub-10709_ses-20240723T113136_acq-5delay_desc-basil_cbf.json                sub-10709_ses-20240723T113136_acq-5delay_desc-carpetplot_asl.svg        sub-10709_ses-20240723T113136_acq-5delay_desc-summary_asl.html
sub-10709_ses-20240723T113136_acq-5delay_desc-basil_cbf.svg                 sub-10709_ses-20240723T113136_acq-5delay_desc-cbfByTissueType_cbf.json  sub-10709_ses-20240723T113136_acq-5delay_desc-validation_asl.html
sub-10709_ses-20240723T113136_acq-5delay_desc-basilGMByTissueType_cbf.json  sub-10709_ses-20240723T113136_acq-5delay_desc-cbfByTissueType_cbf.svg
sub-10709_ses-20240723T113136_acq-5delay_desc-basilGMByTissueType_cbf.svg   sub-10709_ses-20240723T113136_acq-5delay_desc-cbf_cbf.json

perf:
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S1056Parcels_cbf.tsv                  sub-10709_ses-20240723T113136_acq-5delay_atlas-4S956Parcels_desc-basil_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S1056Parcels_coverage.tsv             sub-10709_ses-20240723T113136_acq-5delay_atlas-4S956Parcels_desc-basil_coverage.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S1056Parcels_desc-basil_cbf.tsv       sub-10709_ses-20240723T113136_acq-5delay_atlas-4S956Parcels_desc-basilGM_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S1056Parcels_desc-basil_coverage.tsv  sub-10709_ses-20240723T113136_acq-5delay_atlas-4S956Parcels_desc-basilWM_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S1056Parcels_desc-basilGM_cbf.tsv     sub-10709_ses-20240723T113136_acq-5delay_atlas-Glasser_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S1056Parcels_desc-basilWM_cbf.tsv     sub-10709_ses-20240723T113136_acq-5delay_atlas-Glasser_coverage.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S156Parcels_cbf.tsv                   sub-10709_ses-20240723T113136_acq-5delay_atlas-Glasser_desc-basil_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S156Parcels_coverage.tsv              sub-10709_ses-20240723T113136_acq-5delay_atlas-Glasser_desc-basil_coverage.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S156Parcels_desc-basil_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_atlas-Glasser_desc-basilGM_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S156Parcels_desc-basil_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_atlas-Glasser_desc-basilWM_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S156Parcels_desc-basilGM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_atlas-Gordon_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S156Parcels_desc-basilWM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_atlas-Gordon_coverage.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S256Parcels_cbf.tsv                   sub-10709_ses-20240723T113136_acq-5delay_atlas-Gordon_desc-basil_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S256Parcels_coverage.tsv              sub-10709_ses-20240723T113136_acq-5delay_atlas-Gordon_desc-basil_coverage.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S256Parcels_desc-basil_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_atlas-Gordon_desc-basilGM_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S256Parcels_desc-basil_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_atlas-Gordon_desc-basilWM_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S256Parcels_desc-basilGM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_atlas-HCP_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S256Parcels_desc-basilWM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_atlas-HCP_coverage.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S356Parcels_cbf.tsv                   sub-10709_ses-20240723T113136_acq-5delay_atlas-HCP_desc-basil_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S356Parcels_coverage.tsv              sub-10709_ses-20240723T113136_acq-5delay_atlas-HCP_desc-basil_coverage.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S356Parcels_desc-basil_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_atlas-HCP_desc-basilGM_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S356Parcels_desc-basil_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_atlas-HCP_desc-basilWM_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S356Parcels_desc-basilGM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_atlas-Tian_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S356Parcels_desc-basilWM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_atlas-Tian_coverage.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S456Parcels_cbf.tsv                   sub-10709_ses-20240723T113136_acq-5delay_atlas-Tian_desc-basil_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S456Parcels_coverage.tsv              sub-10709_ses-20240723T113136_acq-5delay_atlas-Tian_desc-basil_coverage.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S456Parcels_desc-basil_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_atlas-Tian_desc-basilGM_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S456Parcels_desc-basil_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_atlas-Tian_desc-basilWM_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S456Parcels_desc-basilGM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_desc-confounds_timeseries.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S456Parcels_desc-basilWM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_desc-coreg_aslref.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S556Parcels_cbf.tsv                   sub-10709_ses-20240723T113136_acq-5delay_desc-coreg_aslref.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S556Parcels_coverage.tsv              sub-10709_ses-20240723T113136_acq-5delay_desc-hmc_aslref.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S556Parcels_desc-basil_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_desc-hmc_aslref.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S556Parcels_desc-basil_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_desc-qualitycontrol_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S556Parcels_desc-basilGM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_from-aslref_to-T1w_mode-image_xfm.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S556Parcels_desc-basilWM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_from-aslref_to-T1w_mode-image_xfm.txt
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S656Parcels_cbf.tsv                   sub-10709_ses-20240723T113136_acq-5delay_from-orig_to-aslref_mode-image_xfm.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S656Parcels_coverage.tsv              sub-10709_ses-20240723T113136_acq-5delay_from-orig_to-aslref_mode-image_xfm.txt
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S656Parcels_desc-basil_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_aslref.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S656Parcels_desc-basil_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_aslref.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S656Parcels_desc-basilGM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_att.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S656Parcels_desc-basilWM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_att.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S756Parcels_cbf.tsv                   sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_cbf.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S756Parcels_coverage.tsv              sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_cbf.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S756Parcels_desc-basil_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-basil_att.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S756Parcels_desc-basil_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-basil_att.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S756Parcels_desc-basilGM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-basil_cbf.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S756Parcels_desc-basilWM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-basil_cbf.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S856Parcels_cbf.tsv                   sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-basilGM_cbf.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S856Parcels_coverage.tsv              sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-basilGM_cbf.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S856Parcels_desc-basil_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-basilWM_cbf.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S856Parcels_desc-basil_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-basilWM_cbf.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S856Parcels_desc-basilGM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-brain_mask.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S856Parcels_desc-basilWM_cbf.tsv      sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-brain_mask.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S956Parcels_cbf.tsv                   sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-preproc_asl.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S956Parcels_coverage.tsv              sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-preproc_asl.nii.gz

I did the last run with -vv and saved the terminal to a text file, in case that may be of use:
aslprep075_run_terminallog-vv.txt (1.2 MB)

Hi @echumin,

I’m sorry, I ALSO made a typo. Do not remove the ses-<> part from the IntendedFor, just the bids::sub-10709/.

Best,
Steven

Hi @Steven,

I added back the session, but not luck.

Additionally, on one of my reruns I omitted BASIL, but those images were still in the html report. I am guessing the report assembly might be done with whatever is in the figs, so I purged my temp working directory and the output directory for the subject and did a clean run (without BASIL, so it would go quicker). Still no Distortion correction according to the report or a derivative fmap folder. :cry:

I don’t think I do, but is there a naming convention problem in my raw data?

[echumin@i52 sub-10709]$ cd ses-20240723T113136/
[echumin@i52 ses-20240723T113136]$ ls *
anat:
sub-10709_ses-20240723T113136_acq-mprage_T1w.json  sub-10709_ses-20240723T113136_acq-mprage_T1w.nii.gz

fmap:
sub-10709_ses-20240723T113136_dir-AP_epi.json  sub-10709_ses-20240723T113136_dir-AP_epi.nii.gz  sub-10709_ses-20240723T113136_dir-PA_epi.json  sub-10709_ses-20240723T113136_dir-PA_epi.nii.gz

perf:
sub-10709_ses-20240723T113136_acq-5delay_asl.json  sub-10709_ses-20240723T113136_acq-5delay_asl.nii.gz

This is the IntendedFor currently in my fmap jsons

    "IntendedFor": [
        "ses-20240723T113136/func/sub-10709_ses-20240723T113136_task-rest_bold.nii.gz",
        "ses-20240723T113136/func/sub-10709_ses-20240723T113136_task-vv2bk_bold.nii.gz",
        "ses-20240723T113136/func/sub-10709_ses-20240723T113136_task-sceneenc_bold.nii.gz",
        "ses-20240723T113136/fmap/sub-10709_ses-20240723T113136_acq-5delay_asl.nii.gz"
    ]

Thank you for your continued help!
Jenya

Hi @echumin,

Are phase encoding directions present in the ASL and fmap jsons, and pointing the right direction?

Best,
Steven

Why is the IntendedFor pointing to an asl file in the fmap folder?

2 Likes

Oh geez! This is just embarrassing :man_facepalming:.

It ran with SDC and printed one error regarding missing readout time in the asl:

Traceback (most recent call last):
  File "/opt/conda/envs/aslprep/lib/python3.11/site-packages/nipype/pipeline/plugins/multiproc.py", line 67, in run_node
    result["result"] = node.run(updatehash=updatehash)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/aslprep/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
    result = self._run_interface(execute=True)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/aslprep/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
    return self._run_command(execute)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/conda/envs/aslprep/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 771, in _run_command
    raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node rotime.

Traceback:
	Traceback (most recent call last):
	  File "/opt/conda/envs/aslprep/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 397, in run
	    runtime = self._run_interface(runtime)
	              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	  File "/opt/conda/envs/aslprep/lib/python3.11/site-packages/sdcflows/interfaces/epi.py", line 57, in _run_interface
	    self._results["readout_time"] = get_trt(
	                                    ^^^^^^^^
	  File "/opt/conda/envs/aslprep/lib/python3.11/site-packages/sdcflows/utils/epimanip.py", line 234, in get_trt
	    raise ValueError("Unknown total-readout time specification")
	ValueError: Unknown total-readout time specification

But I can’t tell if that prevents it from doing applying SDC. Based on the output files, I don’t see anything that makes me think it was applied, unless it just falls under desc-preproc and doesn’t create a separate “unwarped” file.
Any suggestion on how I can check if SDC was successful?

figures:
sub-10709_ses-20240723T113136_acq-5delay_desc-carpetplot_asl.svg        sub-10709_ses-20240723T113136_acq-5delay_desc-cbf_cbf.json   sub-10709_ses-20240723T113136_acq-5delay_desc-summary_asl.html
sub-10709_ses-20240723T113136_acq-5delay_desc-cbfByTissueType_cbf.json  sub-10709_ses-20240723T113136_acq-5delay_desc-cbf_cbf.svg    sub-10709_ses-20240723T113136_acq-5delay_desc-validation_asl.html
sub-10709_ses-20240723T113136_acq-5delay_desc-cbfByTissueType_cbf.svg   sub-10709_ses-20240723T113136_acq-5delay_desc-coreg_asl.svg

fmap:
sub-10709_ses-20240723T113136_fmapid-auto00000_desc-coeff_fieldmap.nii.gz  sub-10709_ses-20240723T113136_fmapid-auto00000_desc-preproc_fieldmap.json
sub-10709_ses-20240723T113136_fmapid-auto00000_desc-epi_fieldmap.nii.gz    sub-10709_ses-20240723T113136_fmapid-auto00000_desc-preproc_fieldmap.nii.gz

perf:
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S1056Parcels_cbf.tsv       sub-10709_ses-20240723T113136_acq-5delay_atlas-HCP_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S1056Parcels_coverage.tsv  sub-10709_ses-20240723T113136_acq-5delay_atlas-HCP_coverage.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S156Parcels_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_atlas-Tian_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S156Parcels_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_atlas-Tian_coverage.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S256Parcels_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_desc-confounds_timeseries.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S256Parcels_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_desc-coreg_aslref.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S356Parcels_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_desc-coreg_aslref.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S356Parcels_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_desc-hmc_aslref.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S456Parcels_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_desc-hmc_aslref.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S456Parcels_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_desc-qualitycontrol_cbf.tsv
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S556Parcels_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_from-aslref_to-T1w_mode-image_xfm.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S556Parcels_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_from-aslref_to-T1w_mode-image_xfm.txt
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S656Parcels_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_from-orig_to-aslref_mode-image_xfm.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S656Parcels_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_from-orig_to-aslref_mode-image_xfm.txt
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S756Parcels_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_aslref.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S756Parcels_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_aslref.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S856Parcels_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_att.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S856Parcels_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_att.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S956Parcels_cbf.tsv        sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_cbf.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-4S956Parcels_coverage.tsv   sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_cbf.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-Glasser_cbf.tsv             sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-brain_mask.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-Glasser_coverage.tsv        sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-brain_mask.nii.gz
sub-10709_ses-20240723T113136_acq-5delay_atlas-Gordon_cbf.tsv              sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-preproc_asl.json
sub-10709_ses-20240723T113136_acq-5delay_atlas-Gordon_coverage.tsv         sub-10709_ses-20240723T113136_acq-5delay_space-MNI152NLin2009cAsym_desc-preproc_asl.nii.gz

For the missing readout time. I can try to run a newer version of dcm2niix and see if its been incorporated for ASL, or I’ll could compute and add it to the *asl.json myself.

Hi @echumin,

TotalReadoutTime is required metadata for SDC. So you will need to supply it if you know, or calculate it / refer to your scanning protocol / ask your technician if you do not.

SDC would be applied to the final desc-preproc, there is no separate file or naming change whether SDC is applied.

The output HTML should provide a report showing the results of SDC warping, if it was applied.

Best,
Steven

FYI: with my path error sorted out, I did a test run leaving the BIDS URI in and it ran no problem so it does accept them.

1 Like

Thanks @Steven!

To summarize, once I fixed the user path errors it did process the fieldmaps, but did not apply them because the _asl.json is missing the TotalReadoutTime. I did a quick test with a dummy readout time inserted and everything ran fine.

Now I just need to figure out the true Total Readout Time, which is easier said than done.
The data I am working with is not a Siemens product, but a custom 3D multi-delay pCASL that was made by Dr. Danny Wang’s group (as far as I am told). That is to say I don’t have the BandwidthPerPixelPhaseEncode or EffectiveEchoSpacing in the json, the dicoms, or the protocol pdf.

I did find this bit of useful info on how BPPFE is computed How is BandwidthPerPixelPhaseEncode calculated?, but I can’t seem to successfully replicate the TotalReadoutTIme in the fieldmap json, so I am not confident in doing this for _asl.json.

I will update this topic if/when I come to a solution, but for now I am just documenting for posterity’s sake.

Thanks again @Steven and @tsalo for helping me troubleshoot!
Best,
Jenya

1 Like