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
The concatenated series is reoriented to LAS+, which the FSL tools expect.
If there is reverse phase-encoded data, TOPUP [2] estimates the susceptibility field from b=0 images (see below).
eddyestimates 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.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.
(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.
(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.
(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.