In my fmriprep command I’ve been using --use-syn-sdc and --force-syn, even though my data contains spin echo field maps. The documentation states that --use-syn-sdc uses " fieldmap-free distortion correction", so is this a redundant flag option for those who are using fieldmaps for SDC (i.e. not specifying --ignore fieldmaps)?
So jsut to be clear, --use-syn-sdc allows SyN-based SDC to be run at all, i.e., adds it to the bottom of the SDC-methods-to-try list. If any fieldmaps are available, they’ll take precedence. --ignore fieldmaps will effectively remove everything else from that list, and thus --use-syn-sdc --ignore fieldmaps will do just that: SyN-based SDC, ignoring fieldmaps.
--force-syn means we will always run it. This is a debugging option, and is only useful if you want to compare the quality of SyN-SDC and that of the fieldmap-based SDC, as you’ll get reports for both methods. But if you do have fieldmaps, the final result will not be affected. They’ll still be based on the fieldmaps.
Hi @effigies, could you please confirm if this is still true in the latest fmriprep version (21.0.2 or 22.0.0rc) and my understanding of these SDC options? Let’s say I would like to compare SyN- and fieldmap-based corrections just for learning purposes, I could simply only set --force-syn and after visualizing a few tens of reports, I may get a better understanding of how these methods work on my dataset. On the other hand, I don’t have to relaunch fmriprep, since even when --force-syn is specified, SDC is still done by prioritizing the filedmap. So in the end, the only difference of --use-syn-sdc and --force-syn is that the latter takes more time to run, but the results on the same dataset should be “identical”. Thanks a lot.
@zcai Yes, it is still the case that --use-syn-sdc is lower priority than fieldmaps, and so the main difference with --force-syn (if you have fieldmaps) should be that --force-syn takes longer but produces additional reports. That said, I haven’t tested this in some time, as I haven’t been debugging this workflow. --force-syn is not really intended for end-users.
Related question - I ran fmriprep version 21.0.2 on a dataset that has fieldmaps present but wanted to ignore them and only run SyN. In my call I had --ignore fieldmaps and --use-syn-sdc, but from the report it looks like SyN wasn’t run - it says “Susceptibility distortion correction: None” and there are no images related to it. The log says “Option “–ignore fieldmaps” was set, but either “–use-syn-sdc” or “–force-syn” were given, so fieldmap-less estimation will be executed.”, but other than that I don’t see anything in the output log that is different from when I simply do --ignore fieldmaps. Is this expected behavior?
Hi all, thanks for sharing the info so far. Not sure if other people have had success using the SyN/fieldmapless method recently but wanted to share some output from fmriprep 22.1.1 related to this topic to see if anyone else had similar experiences or recommendations. I have gradient echo func data with fieldmaps for each run (rev PE pair of spin echo vols linked to respective runs using b0FieldIdentifier/b0FieldSource in the jsons). Some fieldmaps have motion etc. so I wanted to compare the SyN approach to the PEPolar SDC.
–When running fmriprep with --ignore fieldmaps and --use-syn-sdc like @jenncummings the output actually had each run’s fieldmap pair applied via PEPolar SDC and none of the SyN steps were run. I.e, fieldmaps were not ignored, no SyN… difference from 21.0.2?
–When running the above command after deleting the b0FieldIdentifier/b0FieldSource from the fmap/func jsons, PEPolar SDC was still estimated, but it was just the first fieldmap pair that was applied to all runs (I guess because fmriprep noticed that the fmap data was present but no mapping was specified in the jsons). EDIT: this just seemed to estimate sdc using the first fieldmap in the html output, but the actual output images have no sdc applied.
–When running the same command after also deleting the entire fmap file directory, the SyN/fieldmapless approach was finally applied, although the output does look off-- can post about this separately.
–I also tried to do a single pass with the intention of using the PEPolar fieldmap SDC while also estimating the SyN method for comparison by specifying --use-syn-sdc and --force-syn with the fmap data present and json files including relevant pairings (no ignore command included). The resulting corrected data here was somewhat similar but not identical to the output of the first pass I mentioned above, where the run-specific fieldmaps were applied. I was expecting the output to be identical since my understanding was that the parallel/force SyN method with would be run separately and not influence the final preprocessed data, but perhaps it got incorporated somehow or caused abnormal application of the fieldmaps or there is an issue with the sequence of steps? I do see that this type of call is experimental/meant for debugging but thought I’d mention.