Summary of what happened:
Hi all,
I am trying to set up an image processing workflow for data acquired on a Philips Achieva 3T. Because the Philips DICOM format is a bit different from Siemens and GE, there are several required fields missing from the JSON sidecar after using dcm2niix, namely PhaseEncodingDirection and TotalReadoutTime.
I was able to determine and assign the PhaseEncodingDirection from the protocol card, but TotalReadoutTime is a little trickier. I found some info in the FSL forums about how to manually calculate the readout time, and other info here that may imply that I can just set the readout time to 1 if using an AP/PA spin echo pair, but I’m not sure what would be best. The missing TotalReadoutTime field is also causing the BIDS Validator to fail.
Right now, I am just using pilot data to set up a new study protocol, so the path forward is flexible. I am looking for either “workarounds” that would allow me to use the AP/PA images with some adjusted JSON fields, or other suggestions for imaging sequences to add to our protocol that would better suit fieldmapping given the available DICOM format.
Any recommendations or support are greatly appreciated!
Command used (and if a helper script was used, a link to the helper script or the command generated):
Added the --fallback-total-readout-time=estimated because it fully crashes without timing readout information in the func images, and --skip-bids-validation to ignore the error thrown by the lack of TotalReadoutTime in the fmap images
fmriprep-docker --output-spaces anat \
--skip-bids-validation \
--fs-license-file /home/jdickson14/Documents/license.txt \
-v \
--me-output-echos \
--fallback-total-readout-time=estimated \
--low-mem \
~/Documents/bids \
~/Documents/fmriprep \
participant
Version:
fMRIprep v25.2.5
Environment (Docker, Singularity / Apptainer, custom installation):
Docker Desktop, called via “fmriprep-docker” command in Ubuntu-26.04 running on WSL2 (Windows 11)
Data formatted according to a validatable standard? Please provide the output of the validator:
From BIDS Validator :
ERROR: TOTAL_READOUT_TIME_MUST_DEFINE
You must provide enough metadata to determine the TotalReadoutTime of this file. TotalReadoutTime or EffectiveEchoSpacing satisfy this criterion.
- /sub-01/ses-01/fmap/sub-01_ses-01_dir-PA_acq-72slice_epi.nii.gz
- /sub-01/ses-01/fmap/sub-01_ses-01_dir-AP_echo-1_acq-ME_epi.nii.gz
- /sub-01/ses-01/fmap/sub-01_ses-01_dir-PA_echo-1_acq-ME_epi.nii.gz
- /sub-03/ses-01/fmap/sub-03_ses-01_dir-PA_acq-72slice_epi.nii.gz
- /sub-03/ses-01/fmap/sub-03_ses-01_dir-AP_echo-1_acq-ME_epi.nii.gz
- /sub-03/ses-01/fmap/sub-03_ses-01_dir-PA_echo-1_acq-ME_epi.nii.gz
Relevant log outputs (up to 20 lines):
Error pops up when omitting --fallback-total-readout-time=estimated from fMRIprep call. When included, workflow runs as expected but does not incorporate distortion correction.
261001-12:44:01,493 nipype.workflow CRITICAL:
Missing readout time information. See documentation for `--fallback-total-readout-time`.
Traceback (most recent call last):
File "/app/.pixi/envs/fmriprep/lib/python3.12/site-packages/sdcflows/workflows/base.py", line 113, in init_fmap_preproc_wf
get_trt(
File "/app/.pixi/envs/fmriprep/lib/python3.12/site-packages/sdcflows/utils/epimanip.py", line 295, in get_trt
raise ValueError('Unknown total-readout time specification')
ValueError: Unknown total-readout time specification
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/app/.pixi/envs/fmriprep/lib/python3.12/site-packages/fmriprep/workflows/base.py", line 703, in init_single_subject_wf
fmap_wf = init_fmap_preproc_wf(
^^^^^^^^^^^^^^^^^^^^^
File "/app/.pixi/envs/fmriprep/lib/python3.12/site-packages/sdcflows/workflows/base.py", line 120, in init_fmap_preproc_wf
raise RuntimeError(msg) from e
RuntimeError: Missing readout timing information for </data/sub-01/ses-01/fmap/sub-01_ses-01_acq-ME_dir-AP_epi.nii.gz>.