Skip to content

Commit 054e9bb

Browse files
committed
Added ComposeMultiTransform to ants.utils
1 parent 9abafec commit 054e9bb

File tree

3 files changed

+97
-1
lines changed

3 files changed

+97
-1
lines changed

nipype/interfaces/ants/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@
2020

2121
# Utility Programs
2222
from .utils import (AverageAffineTransform, AverageImages, MultiplyImages,
23-
CreateJacobianDeterminantImage, AffineInitializer)
23+
CreateJacobianDeterminantImage, AffineInitializer,
24+
ComposeMultiTransform)
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# AUTO-GENERATED by tools/checkspecs.py - DO NOT EDIT
2+
from __future__ import unicode_literals
3+
from ..utils import ComposeMultiTransform
4+
5+
6+
def test_ComposeMultiTransform_inputs():
7+
input_map = dict(args=dict(argstr='%s',
8+
),
9+
dimension=dict(argstr='%d',
10+
mandatory=True,
11+
position=0,
12+
usedefault=True,
13+
),
14+
environ=dict(nohash=True,
15+
usedefault=True,
16+
),
17+
ignore_exception=dict(nohash=True,
18+
usedefault=True,
19+
),
20+
num_threads=dict(nohash=True,
21+
usedefault=True,
22+
),
23+
output_transform=dict(argstr='%s',
24+
mandatory=True,
25+
position=1,
26+
),
27+
reference_image=dict(argstr='%s',
28+
mandatory=False,
29+
position=2,
30+
),
31+
terminal_output=dict(nohash=True,
32+
),
33+
transforms=dict(argstr='%s',
34+
mandatory=True,
35+
position=3,
36+
),
37+
)
38+
inputs = ComposeMultiTransform.input_spec()
39+
40+
for key, metadata in list(input_map.items()):
41+
for metakey, value in list(metadata.items()):
42+
assert getattr(inputs.traits()[key], metakey) == value
43+
44+
45+
def test_ComposeMultiTransform_outputs():
46+
output_map = dict(output_transform=dict(),
47+
)
48+
outputs = ComposeMultiTransform.output_spec()
49+
50+
for key, metadata in list(output_map.items()):
51+
for metakey, value in list(metadata.items()):
52+
assert getattr(outputs.traits()[key], metakey) == value

nipype/interfaces/ants/utils.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,3 +225,46 @@ class AffineInitializer(ANTSCommand):
225225

226226
def _list_outputs(self):
227227
return {'out_file': os.path.abspath(self.inputs.out_file)}
228+
229+
230+
class ComposeMultiTransformInputSpec(ANTSCommandInputSpec):
231+
dimension = traits.Enum(3, 2, argstr='%d', usedefault=True, mandatory=True,
232+
position=0, desc='image dimension (2 or 3)')
233+
output_transform = File(argstr='%s', mandatory=True, position=1,
234+
desc='Outputfname.txt: the name of the resulting transform.')
235+
reference_image = File(argstr='%s', mandatory=False, position=2,
236+
desc='Reference image (only necessary when output is warpfield)')
237+
transforms = InputMultiPath(File(exists=True), argstr='%s', mandatory=True,
238+
position=3, desc='transforms to average')
239+
240+
241+
class ComposeMultiTransformOutputSpec(TraitedSpec):
242+
output_transform = File(exists=True, desc='Composed transform file')
243+
244+
245+
class ComposeMultiTransform(ANTSCommand):
246+
"""
247+
Examples
248+
--------
249+
>>> from nipype.interfaces.ants import ComposeMultiTransform
250+
>>> compose = ComposeMultiTransform()
251+
>>> compose_transform.inputs.dimension = 3
252+
>>> compose_transform.inputs.transforms = ['struct_to_template.mat', 'func_to_struct.mat']
253+
>>> compose_transform.inputs.output_transform = 'func_to_template.mat'
254+
>>> compose_transform.cmdline # doctest: +ALLOW_UNICODE
255+
'TODO TODO TODO'
256+
"""
257+
_cmd = 'ComposeMultiTransform'
258+
input_spec = ComposeMultiTransformInputSpec
259+
output_spec = ComposeMultiTransformOutputSpec
260+
261+
def _format_arg(self, opt, spec, val):
262+
return super(ComposeMultiTransform, self)._format_arg(opt, spec, val)
263+
264+
def _list_outputs(self):
265+
outputs = self._outputs().get()
266+
outputs['output_transform'] = os.path.abspath(
267+
self.inputs.output_transform)
268+
return outputs
269+
270+

0 commit comments

Comments
 (0)