Thanks, @Steven. I was able to resolve this issue without defining the TotalReadoutTime in the jsons. (I might be able to calculate TotalReadoutTime if needed, but I’m not 100% sure I have all the parameters for the calculations. Stopped looking when I resolved the distortion correction issue.)
Here’s what I did.
-
Based on this thread, I changed the
DatasetTypefrom “derivative” to “raw” indataset_description.json. This didn’t solve the issue for me right away, but it’s possible it interacted with the following steps to solve the issue. -
I added the
B0FieldIdentiferfield to the fmap phasediff json files andB0FieldSourceto the corresponding BOLD json file (as described above). This was a necessary step, but did not solve the issue on its own. -
I added the
--use-syn-sdcand--force syn-sdcflags to the fmriprep command. This solved the issue! And notably, when theB0FieldIdentiferandB0FieldSourcefields were properly set in the json files, the distortion correction method applied was not the synthetic field map-less method but the phase difference method. For example, I ran one subject with the syn-sdc flags but without the B0Field fields set. For this subject, fMRIPrep used the synthetic method (with ‘auto’ field maps). In contrast, I also ran several subjects with the syn-sdc flags and with the B0Field fields set. For these subjects, fMRIPrep used the phase difference method (with ‘phasediff’ field maps). Also notably, fMRIPrep only ran distortion correction when I used both the--use-syn-sdcand--force syn-sdcflags, but not when I only used the--use-syn-sdcflag. I’m not sure why this is, but that’s the way it worked out.
I’m using fMRIPrep v25.0.0.
Thanks again for your prompt help, @Steven!