Skip to content

Commit e5fb64e

Browse files
committed
pull
2 parents a7116a2 + a431987 commit e5fb64e

File tree

2 files changed

+150
-27
lines changed

2 files changed

+150
-27
lines changed

nipype/interfaces/fsl/epi.py

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ class EddyInputSpec(FSLCommandInputSpec):
552552
default_value='eddy_corrected',
553553
usedefault=True,
554554
argstr='--out=%s',
555-
desc='basename for output (warped) image')
555+
desc='Basename for output image')
556556
session = File(
557557
exists=True,
558558
argstr='--session=%s',
@@ -561,37 +561,39 @@ class EddyInputSpec(FSLCommandInputSpec):
561561
exists=True,
562562
argstr='--topup=%s',
563563
requires=['in_topup_movpar'],
564-
desc='topup file containing the field coefficients')
564+
desc='Topup results file containing the field coefficients')
565565
in_topup_movpar = File(
566566
exists=True,
567567
requires=['in_topup_fieldcoef'],
568-
desc='topup movpar.txt file')
568+
desc='Topup results file containing the movement parameters')
569569
field = File(
570570
argstr='--field=%s',
571-
desc=('NonTOPUP fieldmap scaled in Hz - filename has '
572-
'to be provided without an extension. TOPUP is '
573-
'strongly recommended'))
571+
desc=('Non-topup derived fieldmap scaled in Hz'))
574572
field_mat = File(
575573
exists=True,
576574
argstr='--field_mat=%s',
577-
desc=('Matrix that specifies the relative locations of '
578-
'the field specified by --field and first volume '
579-
'in file --imain'))
575+
desc=('Matrix specifying the relative positions of '
576+
'the fieldmap, --field, and the first volume '
577+
'of the input file, --imain'))
580578

581579
flm = traits.Enum(
582-
'linear',
583580
'quadratic',
581+
'linear',
584582
'cubic',
583+
usedefault=True,
585584
argstr='--flm=%s',
586585
desc='First level EC model')
587586
slm = traits.Enum(
588587
'none',
589588
'linear',
590589
'quadratic',
590+
usedefault=True,
591591
argstr='--slm=%s',
592592
desc='Second level EC model')
593593
fep = traits.Bool(
594-
False, argstr='--fep', desc='Fill empty planes in x- or y-directions')
594+
False,
595+
argstr='--fep',
596+
desc='Fill empty planes in x- or y-directions')
595597
initrand = traits.Bool(
596598
False,
597599
argstr='--initrand',
@@ -600,6 +602,7 @@ class EddyInputSpec(FSLCommandInputSpec):
600602
interp = traits.Enum(
601603
'spline',
602604
'trilinear',
605+
usedefault=True,
603606
argstr='--interp=%s',
604607
desc='Interpolation model for estimation step')
605608
nvoxhp = traits.Int(
@@ -626,6 +629,8 @@ class EddyInputSpec(FSLCommandInputSpec):
626629
desc="Do NOT perform a post-eddy alignment of "
627630
"shells")
628631
fwhm = traits.Float(
632+
default_value=0.0,
633+
usedefault=True,
629634
desc=('FWHM for conditioning filter when estimating '
630635
'the parameters'),
631636
argstr='--fwhm=%s')
@@ -634,6 +639,7 @@ class EddyInputSpec(FSLCommandInputSpec):
634639
method = traits.Enum(
635640
'jac',
636641
'lsr',
642+
usedefault=True,
637643
argstr='--resamp=%s',
638644
desc=('Final resampling method (jacobian/least '
639645
'squares)'))
@@ -687,35 +693,36 @@ class EddyInputSpec(FSLCommandInputSpec):
687693
mporder = traits.Int(
688694
argstr='--mporder=%s',
689695
desc='Order of slice-to-vol movement model',
690-
requires=['slspec'],
691696
min_ver='5.0.11')
692697
s2v_niter = traits.Int(
693698
argstr='--s2v_niter=%s',
694699
desc='Number of iterations for slice-to-vol',
695-
requires=['slspec'],
700+
requires=['mporder'],
696701
min_ver='5.0.11')
697702
s2v_lambda = traits.Int(
698703
agstr='--s2v_lambda',
699704
desc='Regularisation weight for slice-to-vol movement (reasonable range 1-10)',
700-
requires=['slspec'],
705+
requires=['mporder'],
701706
min_ver='5.0.11')
702707
s2v_interp = traits.Enum(
703708
'trilinear',
704709
'spline',
705710
argstr='--s2v_interp=%s',
706711
desc='Slice-to-vol interpolation model for estimation step',
707-
requires=['slspec'],
712+
requires=['mporder'],
708713
min_ver='5.0.11')
709714
slspec = traits.File(
710715
exists=True,
711716
argstr='--slspec=%s',
712717
desc='Name of text file completely specifying slice/group acquisition',
718+
requires=['mporder'],
713719
xor=['json'],
714720
min_ver='5.0.11')
715721
json = traits.File(
716722
exists=True,
717723
argstr='--json=%s',
718724
desc='Name of .json text file with information about slice timing',
725+
requires=['mporder'],
719726
xor=['slspec'],
720727
min_ver='6.0.1')
721728

@@ -845,14 +852,18 @@ class Eddy(FSLCommand):
845852
>>> eddy.inputs.in_bval = 'bvals.scheme'
846853
>>> eddy.inputs.use_cuda = True
847854
>>> eddy.cmdline # doctest: +ELLIPSIS
848-
'eddy_cuda --ff=10.0 --fwhm=0 --acqp=epi_acqp.txt --bvals=bvals.scheme \
849-
--bvecs=bvecs.scheme --imain=epi.nii --index=epi_index.txt \
850-
--mask=epi_mask.nii --niter=5 --nvoxhp=1000 --out=.../eddy_corrected'
855+
'eddy_cuda --flm=quadratic --ff=10.0 --fwhm=0.0 \
856+
--acqp=epi_acqp.txt --bvals=bvals.scheme --bvecs=bvecs.scheme \
857+
--imain=epi.nii --index=epi_index.txt --mask=epi_mask.nii \
858+
--interp=spline --resamp=jac --niter=5 --nvoxhp=1000 \
859+
--out=.../eddy_corrected --slm=none'
851860
>>> eddy.inputs.use_cuda = False
852861
>>> eddy.cmdline # doctest: +ELLIPSIS
853-
'eddy_openmp --ff=10.0 --fwhm=0 --acqp=epi_acqp.txt --bvals=bvals.scheme \
854-
--bvecs=bvecs.scheme --imain=epi.nii --index=epi_index.txt \
855-
--mask=epi_mask.nii --niter=5 --nvoxhp=1000 --out=.../eddy_corrected'
862+
'eddy_openmp --flm=quadratic --ff=10.0 --fwhm=0.0 \
863+
--acqp=epi_acqp.txt --bvals=bvals.scheme --bvecs=bvecs.scheme \
864+
--imain=epi.nii --index=epi_index.txt --mask=epi_mask.nii \
865+
--interp=spline --resamp=jac --niter=5 --nvoxhp=1000 \
866+
--out=.../eddy_corrected --slm=none'
856867
>>> res = eddy.run() # doctest: +SKIP
857868
858869
"""

nipype/interfaces/fsl/tests/test_auto_Eddy.py

Lines changed: 118 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,31 @@ def test_Eddy_inputs():
1616
nohash=True,
1717
usedefault=True,
1818
),
19+
estimate_move_by_susceptibility=dict(
20+
argstr='--estimate_move_by_susceptibility',
21+
min_ver='6.0.1',
22+
),
1923
fep=dict(argstr='--fep', ),
20-
field=dict(argstr='--field=%s', ),
24+
field=dict(
25+
argstr='--field=%s',
26+
extensions=None,
27+
),
2128
field_mat=dict(
2229
argstr='--field_mat=%s',
2330
extensions=None,
2431
),
25-
flm=dict(argstr='--flm=%s', ),
32+
flm=dict(
33+
argstr='--flm=%s',
34+
usedefault=True,
35+
),
2636
fudge_factor=dict(
2737
argstr='--ff=%s',
2838
usedefault=True,
2939
),
30-
fwhm=dict(argstr='--fwhm=%s', ),
40+
fwhm=dict(
41+
argstr='--fwhm=%s',
42+
usedefault=True,
43+
),
3144
in_acqp=dict(
3245
argstr='--acqp=%s',
3346
extensions=None,
@@ -67,9 +80,53 @@ def test_Eddy_inputs():
6780
extensions=None,
6881
requires=['in_topup_fieldcoef'],
6982
),
70-
interp=dict(argstr='--interp=%s', ),
83+
initrand=dict(
84+
argstr='--initrand',
85+
min_ver='5.0.10',
86+
),
87+
interp=dict(
88+
argstr='--interp=%s',
89+
usedefault=True,
90+
),
7191
is_shelled=dict(argstr='--data_is_shelled', ),
72-
method=dict(argstr='--resamp=%s', ),
92+
json=dict(
93+
argstr='--json=%s',
94+
min_ver='6.0.1',
95+
requires=['mporder'],
96+
xor=['slspec'],
97+
),
98+
mb=dict(
99+
argstr='--mb=%s',
100+
min_ver='5.0.10',
101+
),
102+
mb_offs=dict(
103+
argstr='--mb_offs=%s',
104+
min_ver='5.0.10',
105+
requires=['mb'],
106+
),
107+
mbs_ksp=dict(
108+
argstr='--mbs_ksp=%smm',
109+
min_ver='6.0.1',
110+
requires=['estimate_move_by_susceptibility'],
111+
),
112+
mbs_lambda=dict(
113+
argstr='--mbs_lambda=%s',
114+
min_ver='6.0.1',
115+
requires=['estimate_move_by_susceptibility'],
116+
),
117+
mbs_niter=dict(
118+
argstr='--mbs_niter=%s',
119+
min_ver='6.0.1',
120+
requires=['estimate_move_by_susceptibility'],
121+
),
122+
method=dict(
123+
argstr='--resamp=%s',
124+
usedefault=True,
125+
),
126+
mporder=dict(
127+
argstr='--mporder=%s',
128+
min_ver='5.0.11',
129+
),
73130
niter=dict(
74131
argstr='--niter=%s',
75132
usedefault=True,
@@ -86,17 +143,66 @@ def test_Eddy_inputs():
86143
argstr='--out=%s',
87144
usedefault=True,
88145
),
146+
outlier_nstd=dict(
147+
argstr='--ol_nstd',
148+
min_ver='5.0.10',
149+
requires=['repol'],
150+
),
151+
outlier_nvox=dict(
152+
argstr='--ol_nvox',
153+
min_ver='5.0.10',
154+
requires=['repol'],
155+
),
156+
outlier_pos=dict(
157+
argstr='--ol_pos',
158+
min_ver='5.0.10',
159+
requires=['repol'],
160+
),
161+
outlier_sqr=dict(
162+
argstr='--ol_sqr',
163+
min_ver='5.0.10',
164+
requires=['repol'],
165+
),
166+
outlier_type=dict(
167+
argstr='--ol_type',
168+
min_ver='5.0.10',
169+
requires=['repol'],
170+
),
89171
output_type=dict(),
90172
repol=dict(argstr='--repol', ),
91173
residuals=dict(
92174
argstr='--residuals',
93175
min_ver='5.0.10',
94176
),
177+
s2v_interp=dict(
178+
argstr='--s2v_interp=%s',
179+
min_ver='5.0.11',
180+
requires=['mporder'],
181+
),
182+
s2v_lambda=dict(
183+
agstr='--s2v_lambda',
184+
min_ver='5.0.11',
185+
requires=['mporder'],
186+
),
187+
s2v_niter=dict(
188+
argstr='--s2v_niter=%s',
189+
min_ver='5.0.11',
190+
requires=['mporder'],
191+
),
95192
session=dict(
96193
argstr='--session=%s',
97194
extensions=None,
98195
),
99-
slm=dict(argstr='--slm=%s', ),
196+
slm=dict(
197+
argstr='--slm=%s',
198+
usedefault=True,
199+
),
200+
slspec=dict(
201+
argstr='--slspec=%s',
202+
min_ver='5.0.11',
203+
requires=['mporder'],
204+
xor=['json'],
205+
),
100206
use_cuda=dict(),
101207
)
102208
inputs = Eddy.input_spec()
@@ -108,13 +214,19 @@ def test_Eddy_outputs():
108214
output_map = dict(
109215
out_cnr_maps=dict(extensions=None, ),
110216
out_corrected=dict(extensions=None, ),
217+
out_movement_over_time=dict(extensions=None, ),
111218
out_movement_rms=dict(extensions=None, ),
219+
out_outlier_free=dict(extensions=None, ),
220+
out_outlier_map=dict(extensions=None, ),
221+
out_outlier_n_sqr_stdev_map=dict(extensions=None, ),
222+
out_outlier_n_stdev_map=dict(extensions=None, ),
112223
out_outlier_report=dict(extensions=None, ),
113224
out_parameter=dict(extensions=None, ),
114225
out_residuals=dict(extensions=None, ),
115226
out_restricted_movement_rms=dict(extensions=None, ),
116227
out_rotated_bvecs=dict(extensions=None, ),
117228
out_shell_alignment_parameters=dict(extensions=None, ),
229+
out_shell_pe_translation_parameters=dict(extensions=None, ),
118230
)
119231
outputs = Eddy.output_spec()
120232

0 commit comments

Comments
 (0)