eddy (FSL)

qsiprep.workflows.dwi.fsl.init_fsl_hmc_wf()

--hmc-method eddy (the default) runs FSL’s eddy [1], which corrects head motion, eddy-current distortion and, when it is given a field, susceptibility distortion in one model. It requires a shelled sampling scheme.

What runs

  1. The concatenated series is reoriented to LAS+, which the FSL tools expect.

  2. If there is reverse phase-encoded data, TOPUP [2] estimates the susceptibility field from b=0 images (see below).

  3. eddy estimates and corrects head motion and eddy currents, and applies the TOPUP field or a GRE fieldmap in the same resampling. Its outlier replacement [3] is on by default.

  4. The corrected series is converted back to LPS+. Any remaining distortion correction (DRBUDDI, SyN) is applied to these outputs.

eddy writes its own corrected volumes, so the output data are interpolated twice: once by eddy and once by QSIPrep’s final resampling into ACPC space. eddy also applies Jacobian intensity modulation to its own corrections whenever its resampling method is jac (the default); see Intensity modulation.

The motion parameters, the eddy-current coefficients and the outlier counts per slice go to the confounds file and the carpet plot. The contrast-to-noise ratio maps eddy computes per shell are written as stat-cnr derivatives.

Distortion correction cases

No fieldmap. Only head motion and eddy currents are corrected.

../_images/hmc_eddy-1.png

(Source code, png, svg, pdf)

Reverse phase encoding (TOPUP). b=0 images are selected from each distortion group of the correction unit, whether they come from the DWI series or from epi fieldmaps; images native to the series being corrected are preferred over borrowed ones. TOPUP estimates the field from them, and eddy applies it with --topup. With --sdc-method topup+drbuddi, DRBUDDI then refines eddy’s output; this needs a single matched pair of reverse phase-encoded DWI series, since with a lone reverse b=0 the output is already unwarped and a second pass would correct it twice. With --sdc-method drbuddi, TOPUP is skipped and DRBUDDI corrects the eddy output on its own.

../_images/hmc_eddy-2.png

(Source code, png, svg, pdf)

GRE fieldmap. The fieldmap is converted to Hz, rigidly aligned to eddy’s first volume, and passed to eddy with --field, which applies it inside its model the way it applies a TOPUP field. Setting "estimate_move_by_susceptibility" in --eddy-config additionally lets eddy estimate how the field changes with head position [4]. Before 26.1 the fieldmap was applied to eddy’s outputs instead; --force gre-sdc-after-eddy restores that, for comparison, and is deprecated.

../_images/hmc_eddy-3.png

(Source code, png, svg, pdf)

SynB0. With --sdc-anat-reference synb0, the synthetic distortion-free b=0 (see SynB0) joins the TOPUP inputs as a volume with zero readout time, and eddy uses the resulting field like any other. This needs topup in --sdc-method.

SyN. With --sdc-anat-reference invt1w, the SyN correction is estimated and applied on eddy’s outputs.

--sdc-anat-reference t2w has no effect with eddy; T2Wreg is a TORTOISE tool.

Configuring eddy

eddy has many options. Rather than exposing them on the command line, QSIPrep reads them from a JSON file given with --eddy-config. The default file is eddy_params.json; the keys are eddy’s own option names. The file is validated when the command line is parsed. --gpu eddy runs eddy_cuda and overrides the file’s use_cuda.

References