Processing for complex-valued fMRI data

I would like to figure out a minimal preprocessing pipeline for complex-valued fMRI data (i.e., data with both magnitude and phase), with the end goal of adding support for these data to standardized pipelines like fMRIPrep. However, I’m definitely not an expert on this kind of data, so I thought that I would post here to get some external input.

To start, I’ll summarize my understanding of the benefits to reconstructing your phase data:

The main cost seems to be space, since you’re retaining twice the amount of data. Also, phase data haven’t been supported in BIDS and BIDS-related tools, but I think it should be covered now in the standard/validator and in data ingestion/indexing tools like heudiconv and pybids.

Preprocessing (based on fMRIPrep):

  1. Anatomical processing workflow
  2. Reference magnitude image identification
  3. Rescaling of functional phase data to [0 2pi] range.
  4. Unwrapping of functional phase data with PRELUDE (potentially across echoes as well)
  5. Slice timing correction of functional magnitude data.
    • Should this be done to phase data as well?
  6. Dynamic distortion correction, either with TOAST for single-echo or DOCMA for multi-echo (using first two echoes).
  7. Phase regression
    • According to Caballero-Gaudes & Reynolds (2017), this should be done before further processing of the magnitude data.
    • Perhaps this could be an optional argument or an output that is generated in addition to the non-regressed data?
    • Employ a Savitzky-Golay filter to smooth the phase data
  8. Motion correction on unwarped magnitude data
    • Parameters can be applied to phase data
  9. Phase-related confound calculation
    • HighCor (tCompCor with voxels identified by phase variation)
    • Phase quality map calculation (Rodriguez et al., 2010)
  10. If multi-echo, T2* estimation
    • Should phase data be combined across echoes or should the echo-specific data (both magnitude and phase) be retained?
  11. EPI to T1 registration
  12. Registration to standard spaces

Post-processing and analysis:

Does anyone have any input on the proposed processing workflow and the costs/benefits I’ve identified?

Based on previous conversations there is also a potential cost that reconstruction will fail when users request both phase and magnitude data in a multiecho case. However, this may be less of an issue on newer scanners, with better reconstruction hardware.

That said, I am interested in watching this develop! If these benefits could be realized and done in an automated way, that would be fantastic. The most common thing I head about phase data is that it is a headache to deal with.

1 Like

I’m finally starting to work on an fMRIPost workflow for processing phase data at nipreps/fmripost-phase. If anyone would like to weigh in on it, please open an issue on that repo.