Skip to content

Commit f685f14

Browse files
author
Shoshana Berleant
committed
fix outputs
1 parent d6894b4 commit f685f14

File tree

2 files changed

+22
-18
lines changed

2 files changed

+22
-18
lines changed

nipype/interfaces/fsl/preprocess.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -323,17 +323,20 @@ def _list_outputs(self):
323323
nclasses = self.inputs.number_classes
324324
# when using multichannel, results basename is based on last
325325
# input filename
326+
_gen_fname_opts = {}
326327
if isdefined(self.inputs.out_basename):
327-
basefile = self.inputs.out_basename
328+
_gen_fname_opts['basename'] = self.inputs.out_basename
329+
_gen_fname_opts['cwd'] = os.getcwd()
328330
else:
329-
basefile = self.inputs.in_files[-1]
331+
_gen_fname_opts['basename'] = self.inputs.in_files[-1]
332+
_gen_fname_opts['cwd'], _, _ = split_filename(_gen_fname_opts['basename'])
330333

331-
outputs['tissue_class_map'] = self._gen_fname(basefile, suffix='_seg')
334+
outputs['tissue_class_map'] = self._gen_fname(suffix='_seg', **_gen_fname_opts)
332335
if self.inputs.segments:
333336
outputs['tissue_class_files'] = []
334337
for i in range(nclasses):
335338
outputs['tissue_class_files'].append(
336-
self._gen_fname(basefile, suffix='_seg_%d' % i))
339+
self._gen_fname(suffix='_seg_%d' % i, **_gen_fname_opts))
337340
if isdefined(self.inputs.output_biascorrected):
338341
outputs['restored_image'] = []
339342
if len(self.inputs.in_files) > 1:
@@ -342,22 +345,21 @@ def _list_outputs(self):
342345
for val, f in enumerate(self.inputs.in_files):
343346
# image numbering is 1-based
344347
outputs['restored_image'].append(
345-
self._gen_fname(basefile,
346-
suffix='_restore_%d' % (val + 1)))
348+
self._gen_fname(suffix='_restore_%d' % (val + 1), **_gen_fname_opts))
347349
else:
348350
# single image segmentation has unnumbered output image
349351
outputs['restored_image'].append(
350-
self._gen_fname(basefile, suffix='_restore'))
352+
self._gen_fname(suffix='_restore', **_gen_fname_opts))
351353

352-
outputs['mixeltype'] = self._gen_fname(basefile, suffix='_mixeltype')
354+
outputs['mixeltype'] = self._gen_fname(suffix='_mixeltype', **_gen_fname_opts)
353355
if not self.inputs.no_pve:
354356
outputs['partial_volume_map'] = self._gen_fname(
355-
basefile, suffix='_pveseg')
357+
suffix='_pveseg', **_gen_fname_opts)
356358
outputs['partial_volume_files'] = []
357359
for i in range(nclasses):
358360
outputs[
359361
'partial_volume_files'].append(
360-
self._gen_fname(basefile, suffix='_pve_%d' % i))
362+
self._gen_fname(suffix='_pve_%d' % i, **_gen_fname_opts))
361363
if self.inputs.output_biasfield:
362364
outputs['bias_field'] = []
363365
if len(self.inputs.in_files) > 1:
@@ -366,18 +368,17 @@ def _list_outputs(self):
366368
for val, f in enumerate(self.inputs.in_files):
367369
# image numbering is 1-based
368370
outputs['bias_field'].append(
369-
self._gen_fname(basefile,
370-
suffix='_bias_%d' % (val + 1)))
371+
self._gen_fname(suffix='_bias_%d' % (val + 1), **_gen_fname_opts))
371372
else:
372373
# single image segmentation has unnumbered output image
373374
outputs['bias_field'].append(
374-
self._gen_fname(basefile, suffix='_bias'))
375+
self._gen_fname(suffix='_bias', **_gen_fname_opts))
375376

376377
if self.inputs.probability_maps:
377378
outputs['probability_maps'] = []
378379
for i in range(nclasses):
379380
outputs['probability_maps'].append(
380-
self._gen_fname(basefile, suffix='_prob_%d' % i))
381+
self._gen_fname(suffix='_prob_%d' % i, **_gen_fname_opts))
381382
return outputs
382383

383384

nipype/interfaces/fsl/tests/test_preprocess.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from nipype.testing import (assert_equal, assert_not_equal, assert_raises,
1313
skipif)
1414

15-
from nipype.utils.filemanip import split_filename
15+
from nipype.utils.filemanip import split_filename, filename_to_list
1616
from .. import preprocess as fsl
1717
from nipype.interfaces.fsl import Info
1818
from nipype.interfaces.base import File, TraitError, Undefined, isdefined
@@ -174,15 +174,18 @@ def test_fast_list_outputs():
174174
the cwd '''
175175
def _run_and_test(opts, output_base):
176176
outputs = fsl.FAST(**opts)._list_outputs()
177-
assert_equal(output_base, outputs['tissue_class_map'][:len(output_base)])
178-
assert_true(False)
177+
for output in outputs.values():
178+
filenames = filename_to_list(output)
179+
if filenames is not None:
180+
for filename in filenames:
181+
assert_equal(filename[:len(output_base)], output_base)
179182

180183
# set up
181184
infile, indir = setup_infile()
182185
cwd = tempfile.mkdtemp()
183186
os.chdir(cwd)
184187
yield assert_not_equal, indir, cwd
185-
out_basename = 'a_basename.nii.gz'
188+
out_basename = 'a_basename'
186189

187190
# run and test
188191
opts = {'in_files': tmp_infile}

0 commit comments

Comments
 (0)