Summary
When running aslprep-0.7.4 with --ignore fieldmaps and --use-syn-sdc the pipeline crashes because total readout time is not specified in the json sidecars.
Additional details
- ASLPrep version: 0.7.4
- Apptainer version: 1.2.5
BIDS directory tree
- bids/sub-1/ses-1/
-
- anat/
-
-
- sub-1_ses-1_T1w.nii.gz
-
-
-
- sub-1_ses-1_T1w.json
-
-
- perf/
-
-
- sub-1_ses-1_asl.json
-
-
-
- sub-1_ses-1_asl.nii.gz
-
-
-
- sub-1_ses-1_aslcontext.tsv
-
-
-
- sub-1_ses-1_m0scan.json
-
-
-
- sub-1_ses-1_m0scan.nii.gz
-
What were you trying to do?
Run fieldmap-less susceptibility disortion correction of 3D GRASE pCASL data acquired on a Siemens scanner.
What did you expect to happen?
I did not expect that I need to specify a total-readout time for fieldmap-less SDC.
What actually happened?
241127-10:41:15,307 nipype.workflow INFO:
***********************************
241127-10:41:15,308 nipype.workflow ERROR:
could not run node: aslprep_0_7_wf.sub_0a9fe617_wf.asl_preproc_ses_1_wf.asl_fit_wf.unwarp_wf.rotime
241127-10:41:15,309 nipype.workflow INFO:
crashfile: /tmp_out/sub-0a9fe617/log/20241127-085737_1f167c2e-3473-439b-9ad1-8b44333e840e/crash-20241127-090038-bao4990-rotime-3fa496a5-1e11-492c-812b-b7dc42a1b07f.txt
241127-10:41:15,310 nipype.workflow INFO:
***********************************
241127-10:41:15,355 nipype.workflow CRITICAL:
ASLPrep failed: 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 228, in get_trt
raise ValueError("Unknown total-readout time specification")
ValueError: Unknown total-readout time specification
>
Command used
$apptainer_aslprep \
/tmp_in /tmp_out participant \
--participant-label $1 \
--work-dir /tmp \
--fs-license-file envs/freesurfer_license.txt \
--skip-bids-validation \
--nthreads $GNU_CPUS_PER_TASK \
--omp-nthreads $OMP_NTHREADS \
--mem_mb $MEM_MB \
--ignore fieldmaps sbref t2w flair fmap-jacobian \
--output-spaces $OUTPUT_SPACES \
--asl2anat-init t1w \
--asl2anat-dof 6 \
--force-bbr \
--use-syn-sdc \
--force-syn \
--m0_scale 10 \
--scorescrub \
--basil \
--project-goodvoxels \
--skull-strip-template OASIS30ANTs \
--skull-strip-fixed-seed \
--random-seed 42 \
--skull-strip-t1w force \
--notrack \
--verbose"
Question
Is it possible to run syn-sdc without specifying a total readout-time, and if not where do I need to specify it? In the *asl.json? Can I use an arbitrary number > 0, as I understand from @effigies post TotalReadoutTime - unwarp - fieldmap-less.