Skip to content

Commit 7e78205

Browse files
committed
Now possible with camino ProcStreamlines (convert.py) to collect created probability maps as output.
1 parent 99b354a commit 7e78205

File tree

2 files changed

+39
-7
lines changed

2 files changed

+39
-7
lines changed

nipype/interfaces/camino/convert.py

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@
77
88
"""
99
import os
10+
import glob
1011

1112
from nipype.interfaces.base import (CommandLineInputSpec, CommandLine, traits,
1213
TraitedSpec, File, StdOutCommandLine,
13-
StdOutCommandLineInputSpec, isdefined)
14+
OutputMultiPath, StdOutCommandLineInputSpec,
15+
isdefined)
1416
from nipype.utils.filemanip import split_filename
1517

1618
class Image2VoxelInputSpec(StdOutCommandLineInputSpec):
@@ -226,16 +228,21 @@ class ProcStreamlinesInputSpec(StdOutCommandLineInputSpec):
226228
outputtracts = traits.Bool(argstr='-outputtracts', desc="Output streamlines in raw binary format.")
227229

228230
outputroot = File(exists=False, argstr='-outputroot %s',
229-
desc='root directory for output')
231+
desc='Prepended onto all output file names.')
230232

231233
gzip = traits.Bool(argstr='-gzip', desc="save the output image in gzip format")
232-
outputcp = traits.Bool(argstr='-outputcp', desc="output the connection probability map (Analyze image, float)")
233-
outputsc = traits.Bool(argstr='-outputsc', desc="output the connection probability map (raw streamlines, int)")
234-
outputacm = traits.Bool(argstr='-outputacm', desc="output all tracts in a single connection probability map (Analyze image)")
235-
outputcbs = traits.Bool(argstr='-outputcbs', desc="outputs connectivity-based segmentation maps; requires target outputfile")
234+
outputcp = traits.Bool(argstr='-outputcp', desc="output the connection probability map (Analyze image, float)",
235+
requires=['outputroot','seedfile'])
236+
outputsc = traits.Bool(argstr='-outputsc', desc="output the connection probability map (raw streamlines, int)",
237+
requires=['outputroot','seedfile'])
238+
outputacm = traits.Bool(argstr='-outputacm', desc="output all tracts in a single connection probability map (Analyze image)",
239+
requires=['outputroot','seedfile'])
240+
outputcbs = traits.Bool(argstr='-outputcbs', desc="outputs connectivity-based segmentation maps; requires target outputfile",
241+
requires=['outputroot','targetfile','seedfile'])
236242

237243
class ProcStreamlinesOutputSpec(TraitedSpec):
238244
proc = File(exists=True, desc='Processed Streamlines')
245+
outputroot_files = OutputMultiPath(File(exists=True))
239246

240247
class ProcStreamlines(StdOutCommandLine):
241248
"""
@@ -256,9 +263,29 @@ class ProcStreamlines(StdOutCommandLine):
256263
input_spec=ProcStreamlinesInputSpec
257264
output_spec=ProcStreamlinesOutputSpec
258265

266+
def _run_interface(self, runtime):
267+
outputroot = self.inputs.outputroot
268+
if isdefined(outputroot):
269+
outputroot = os.path.join('procstream_outfiles', outputroot)
270+
base, filename, ext = split_filename(outputroot)
271+
if not os.path.exists(base):
272+
os.makedirs(base)
273+
self.inputs.outputroot = outputroot
274+
new_runtime = super(ProcStreamlines, self)._run_interface(runtime)
275+
self.outputroot_files = self._get_ouputroot_files(outputroot)
276+
return new_runtime
277+
else:
278+
new_runtime = super(ProcStreamlines, self)._run_interface(runtime)
279+
return new_runtime
280+
281+
def _get_ouputroot_files(self, outputroot):
282+
outputroot_files = glob.glob(os.path.join(os.getcwd(),outputroot+'*'))
283+
return outputroot_files
284+
259285
def _list_outputs(self):
260286
outputs = self.output_spec().get()
261287
outputs['proc'] = os.path.abspath(self._gen_outfilename())
288+
outputs['outputroot_files'] = self.outputroot_files
262289
return outputs
263290

264291
def _gen_outfilename(self):

nipype/interfaces/camino/tests/test_auto_ProcStreamlines.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,18 @@ def test_ProcStreamlines_inputs():
5656
position=-1,
5757
),
5858
outputacm=dict(argstr='-outputacm',
59+
requires=['outputroot', 'seedfile'],
5960
),
6061
outputcbs=dict(argstr='-outputcbs',
62+
requires=['outputroot', 'targetfile', 'seedfile'],
6163
),
6264
outputcp=dict(argstr='-outputcp',
65+
requires=['outputroot', 'seedfile'],
6366
),
6467
outputroot=dict(argstr='-outputroot %s',
6568
),
6669
outputsc=dict(argstr='-outputsc',
70+
requires=['outputroot', 'seedfile'],
6771
),
6872
outputtracts=dict(argstr='-outputtracts',
6973
),
@@ -103,7 +107,8 @@ def test_ProcStreamlines_inputs():
103107
yield assert_equal, getattr(inputs.traits()[key], metakey), value
104108

105109
def test_ProcStreamlines_outputs():
106-
output_map = dict(proc=dict(),
110+
output_map = dict(outputroot_files=dict(),
111+
proc=dict(),
107112
)
108113
outputs = ProcStreamlines.output_spec()
109114

0 commit comments

Comments
 (0)