Skip to content

Commit 4d2a596

Browse files
committed
added outlier detection interface
1 parent f882fd2 commit 4d2a596

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

nipype/interfaces/fsl/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
PlotTimeSeries, PlotMotionParams, ConvertXFM,
1818
SwapDimensions, PowerSpectrum, Reorient2Std,
1919
Complex, InvWarp, WarpUtils, ConvertWarp, WarpPoints,
20-
WarpPointsToStd, RobustFOV, CopyGeom)
20+
WarpPointsToStd, RobustFOV, CopyGeom, MotionOutliers)
2121

2222
from .epi import (PrepareFieldmap, TOPUP, ApplyTOPUP, Eddy, EPIDeWarp,
2323
SigLoss, EddyCorrect, EpiReg)

nipype/interfaces/fsl/utils.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1980,3 +1980,44 @@ class WarpPointsToStd(WarpPoints):
19801980
input_spec = WarpPointsToStdInputSpec
19811981
output_spec = WarpPointsOutputSpec
19821982
_cmd = 'img2stdcoord'
1983+
1984+
1985+
class MotionOutliersInputSpec(FSLCommandInputSpec):
1986+
in_file = File(exists=True, mandatory=True, desc="unfiltered 4D image", argstr="-i %s")
1987+
out_file = File(argstr="-o %s", name_source='in_file', name_template='%s_outliers.txt',
1988+
keep_extension=True, desc='output outlier file name', hash_files=False)
1989+
mask = File(exists=True, argstr="-m %s", desc="mask image for calculating metric")
1990+
metric = traits.Enum('refrms', ['refrms', 'dvars', 'refmse', 'fd', 'fdrms'], argstr="--%s", desc="metrics: refrms - RMS intensity difference to reference volume as metric [default metric],\
1991+
refmse - Mean Square Error version of refrms (used in original version of fsl_motion_outliers) \
1992+
dvars - DVARS \
1993+
fd - frame displacement \
1994+
fdrms - FD with RMS matrix calculation")
1995+
threshold = traits.Float(argstr="--thresh=%g", desc="specify absolute threshold value (otherwise use box-plot cutoff = P75 + 1.5*IQR)")
1996+
no_motion_correction = traits.Bool(argstr="--nomoco", desc="do not run motion correction (assumed already done)")
1997+
dummy = traits.Int(argstr="--dummy=%d", desc='number of dummy scans to delete (before running anything and creating EVs)')
1998+
out_metric_values = File(argstr="-s %s", name_source='in_file', name_template='%s_metrics.txt',
1999+
keep_extension=True, desc='output metric values (DVARS etc.) file name', hash_files=False)
2000+
out_metric_plot = File(argstr="-p %s", name_source='in_file', name_template='%s_metrics.png',
2001+
keep_extension=True, desc='output metric values plot (DVARS etc.) file name', hash_files=False)
2002+
2003+
class MotionOutliersOutputSpec(TraitedSpec):
2004+
out_file = File(exists=True)
2005+
out_metric_values = File(exists=True)
2006+
out_metric_plot = File(exists=True)
2007+
2008+
class MotionOutliers(FSLCommand):
2009+
"""
2010+
Use FSL fsl_motion_outliers`http://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FSLMotionOutliers`_ to find outliers in timeseries (4d) data.
2011+
Examples
2012+
--------
2013+
>>> from nipype.interfaces.fsl import MotionOutliers
2014+
>>> mo = MotionOutliers()
2015+
>>> mo.inputs.in_file = "epi.nii.gz"
2016+
>>> mo.cmdline # doctest: +ELLIPSIS
2017+
'img2imgcoord -mm -dest T1.nii -src epi.nii -warp warpfield.nii surf.txt'
2018+
>>> res = mo.run() # doctest: +SKIP
2019+
"""
2020+
2021+
input_spec = MotionOutliersInputSpec
2022+
output_spec = MotionOutliersOutputSpec
2023+
_cmd = 'fsl_motion_outliers'

0 commit comments

Comments
 (0)