Giter Site home page Giter Site logo

complex-flow's Introduction

complex-flow

Initial work on a complex-valued fMRI preprocessing workflow.

Goals

  • Processing of both magnitude and phase data for both single- and multi-echo data
  • BIDS Derivatives-compatible outputs
  • A user-friendly CLI
  • Support for phase-based denoising within the workflow (when applicable), including phase regression
  • Support for coil-level data
  • Dynamic distortion correction, for multi-echo data, with DOCMA
  • Support for field maps and single-band reference images
  • Long-term, I want to move any workflows produced here into tools like SDCFlows and niworkflows

complex-flow's People

Contributors

tsalo avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

complex-flow's Issues

Estimate magnitude and phase error variance for phase regression

Per Curtis 2014, the fit of the phase regressor should be conditioned on the relative error levels in the measurements (magnitude and phase signal). A quote:

As a coarse measure, one can estimate the standard deviations σS and σφ of the magnitude and phase time series respectively, if the signal changes of interest can be factored out.

It looks like they did this in task data by performing a task-based regression using the convolved task signal and then estimating standard deviations from the residuals. With resting state data (as in Curtis 2014), they "removed" ostensible BOLD signal with a bandpass filter. I'm not a huge fan of incorporating task information in a preprocessing pipeline, and it's unclear to me if the regression is actually performed on the full data or just the residuals.

Strange edges in unwrapped EPI phase maps

After rescaling according to the FSL instructions and unwrapping with PRELUDE, I still see odd edges in the phase data, as below:

unwrapped phase

The edges are not stable across echoes, so the calculated phase-difference images end up with odd edges as well, as below:

phasediff

This happens with both MB EPI and single-band reference images, but not with the field maps, so I wonder if it's something to do with the sequence or with the long echo times.

Test dwidenoise as part of preprocessing workflow

dwidenoise should be performed before any other preprocessing steps, and can be run on either magnitude-only or complex data. Some initial tests show minimal differences, at least for low-resolution data, on tedana components. Still, it may be worth pursuing within the context of a larger workflow.

One note- the phase data after the complex denoising seems to be unusable.

Denoising strategies to consider

  1. Multi-echo ICA
  2. Phase regression
    • Improved spatial localization by suppressing macrovascular signal.
    • Use phaseprep.
  3. Physiological trace regression
    • Presumably separation of neural BOLD signal and non-neural BOLD-based noise, but limited to (1) variations in heart rate and respiratory volumes and (2) carbon dioxide.
    • Use phys2denoise.
  4. Dynamic global signal regression
    • See Tong, Hocke, and Frederick (2019).
    • Separation of neural BOLD signal and non-neural BOLD-based noise.
    • Likely sources of this non-neural BOLD-based noise include:
      • Variations in heart rate and respiratory volumes
      • Carbon dioxide
      • Vasomotion from oscillations in the vascular tone
      • Gastric oscillations
    • Use rapidtide.
  5. Marchenko-Pastur PCA dimensionality reduction
    • See Adhikari et al. (2019).
    • Removal of thermal noise(?)
    • Per anecdotal evidence, dwidenoise can improve ME-ICA, including more subcortical regions in components with high-resolution fMRI data.
    • Also, the ENIGMA consortium uses it for fMRI data.
    • Use dwidenoise function in mrtrix3.
  6. Filtering of motion parameters before regression or censoring
    • See Gratton et al. (2020).
    • Respiration-induced factitious head motion via B0 perturbations along the phase-encoding direction.

Additional preprocessing steps to consider

  1. Dynamic distortion correction
    • Requires accurate unwrapping across echoes.
    • Prior to motion correction, since it will correct distortion on a volume-by-volume basis.
  2. Coregistration using single-band reference images averaged across echoes?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.