Skip to content

Commit 9b275a7

Browse files
committed
Fixing issues with tenmap and tenmap2 both set by interface. Adding an input to select which one to generate.
1 parent 99b39cd commit 9b275a7

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

nipype/interfaces/niftyfit/dwi.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@ class FitDwiInputSpec(CommandLineInputSpec):
9191
argstr='-rgbmap %s',
9292
genfile=True,
9393
requires=['dti_flag'])
94+
95+
desc = 'Use lower triangular (tenmap2) or diagonal, off-diagonal tensor \
96+
format'
97+
ten_type = traits.Enum('lower-tri', 'diag-off-diag', desc=desc,
98+
usedefault=True)
99+
94100
tenmap_file = traits.File(desc='Filename of tensor map [diag,offdiag].',
95101
argstr='-tenmap %s',
96102
genfile=True,
@@ -238,15 +244,22 @@ class FitDwi(NiftyFitCommand):
238244
-error .../dwi_error.nii.gz -famap .../dwi_famap.nii.gz \
239245
-mcmap .../dwi_mcmap.nii.gz -mdmap .../dwi_mdmap.nii.gz \
240246
-nodiff .../dwi_no_diff.nii.gz -res .../dwi_resmap.nii.gz \
241-
-rgbmap rgb.nii.gz -syn .../dwi_syn.nii.gz -tenmap2 .../dwi_tenmap2.nii.gz \
242-
-tenmap .../dwi_tenmap.nii.gz -v1map .../dwi_v1map.nii.gz'
247+
-rgbmap rgb.nii.gz -syn .../dwi_syn.nii.gz -tenmap2 .../dwi_tenmap2.nii.gz \
248+
-v1map .../dwi_v1map.nii.gz'
243249
244250
"""
245251
_cmd = get_custom_path('fit_dwi')
246252
input_spec = FitDwiInputSpec
247253
output_spec = FitDwiOutputSpec
248254
_suffix = '_fit_dwi'
249255

256+
def _format_arg(self, name, trait_spec, value):
257+
if name == 'tenmap_file' and self.inputs.ten_type != 'diag-off-diag':
258+
return ""
259+
if name == 'tenmap2_file' and self.inputs.ten_type != 'lower-tri':
260+
return ""
261+
return super(FitDwi, self)._format_arg(name, trait_spec, value)
262+
250263
def _gen_filename(self, name):
251264
if name == 'mcmap_file':
252265
return self._gen_fname(self.inputs.source_file,
@@ -337,8 +350,8 @@ def _list_outputs(self):
337350
else:
338351
outputs['tenmap_file'] = self._gen_filename('tenmap_file')
339352

340-
if isdefined(self.inputs.tenmap_file):
341-
outputs['tenmap2_file'] = self.inputs.tenmap_file
353+
if isdefined(self.inputs.tenmap2_file):
354+
outputs['tenmap2_file'] = self.inputs.tenmap2_file
342355
else:
343356
outputs['tenmap2_file'] = self._gen_filename('tenmap2_file')
344357

nipype/interfaces/niftyfit/tests/test_auto_FitDwi.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ def test_FitDwi_inputs():
120120
te_value=dict(argstr='-TE %s',
121121
xor=['te_file'],
122122
),
123+
ten_type=dict(usedefault=True,
124+
),
123125
tenmap2_file=dict(argstr='-tenmap2 %s',
124126
genfile=True,
125127
requires=['dti_flag'],

nipype/interfaces/niftyfit/tests/test_dwi.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ def test_fit_dwi():
3333

3434
cmd_tmp = '{cmd} -source {in_file} -bval {bval} -bvec {bvec} -dti \
3535
-error {error} -famap {fa} -mcmap {mc} -mdmap {md} -nodiff {nodiff} \
36-
-res {res} -rgbmap {rgb} -syn {syn} -tenmap2 {ten2} \
37-
-tenmap {ten} -v1map {v1}'
36+
-res {res} -rgbmap {rgb} -syn {syn} -tenmap2 {ten2} -v1map {v1}'
3837

3938
expected_cmd = cmd_tmp.format(
4039
cmd=get_custom_path('fit_dwi'),
@@ -50,9 +49,10 @@ def test_fit_dwi():
5049
rgb=os.path.join(os.getcwd(), 'dwi_rgbmap.nii.gz'),
5150
syn=os.path.join(os.getcwd(), 'dwi_syn.nii.gz'),
5251
ten2=os.path.join(os.getcwd(), 'dwi_tenmap2.nii.gz'),
53-
v1=os.path.join(os.getcwd(), 'dwi_v1map.nii.gz'),
54-
ten=os.path.join(os.getcwd(), 'dwi_tenmap.nii.gz'))
52+
v1=os.path.join(os.getcwd(), 'dwi_v1map.nii.gz'))
5553

54+
print(fit_dwi.cmdline)
55+
print(expected_cmd)
5656
assert fit_dwi.cmdline == expected_cmd
5757

5858

0 commit comments

Comments
 (0)