Skip to content

Commit e89e4ac

Browse files
committed
FIX: Permit identity transforms in list of transforms to antsApplyTransforms
Convert to InputMultiObject while we're at it.
1 parent 02d1500 commit e89e4ac

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

nipype/interfaces/ants/resampling.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import os
55

66
from .base import ANTSCommand, ANTSCommandInputSpec
7-
from ..base import TraitedSpec, File, traits, isdefined, InputMultiPath
7+
from ..base import TraitedSpec, File, traits, isdefined, InputMultiObject
88
from ...utils.filemanip import split_filename
99

1010

@@ -52,7 +52,7 @@ class WarpTimeSeriesImageMultiTransformInputSpec(ANTSCommandInputSpec):
5252
use_bspline = traits.Bool(
5353
argstr="--use-Bspline", desc="Use 3rd order B-Spline interpolation"
5454
)
55-
transformation_series = InputMultiPath(
55+
transformation_series = InputMultiObject(
5656
File(exists=True),
5757
argstr="%s",
5858
desc="transformation file(s) to be applied",
@@ -204,7 +204,7 @@ class WarpImageMultiTransformInputSpec(ANTSCommandInputSpec):
204204
use_bspline = traits.Bool(
205205
argstr="--use-BSpline", desc="Use 3rd order B-Spline interpolation"
206206
)
207-
transformation_series = InputMultiPath(
207+
transformation_series = InputMultiObject(
208208
File(exists=True),
209209
argstr="%s",
210210
desc="transformation file(s) to be applied",
@@ -369,15 +369,14 @@ class ApplyTransformsInputSpec(ANTSCommandInputSpec):
369369
traits.Float(), traits.Float() # Gaussian/MultiLabel (sigma, alpha)
370370
),
371371
)
372-
transforms = traits.Either(
373-
InputMultiPath(File(exists=True)),
374-
"identity",
372+
transforms = InputMultiObject(
373+
traits.Either(File(exists=True), "identity"),
375374
argstr="%s",
376375
mandatory=True,
377376
desc="transform files: will be applied in reverse order. For "
378377
"example, the last specified transform will be applied first.",
379378
)
380-
invert_transform_flags = InputMultiPath(traits.Bool())
379+
invert_transform_flags = InputMultiObject(traits.Bool())
381380
default_value = traits.Float(0.0, argstr="--default-value %g", usedefault=True)
382381
print_out_composite_warp_file = traits.Bool(
383382
False,
@@ -411,7 +410,7 @@ class ApplyTransforms(ANTSCommand):
411410
>>> at.cmdline
412411
'antsApplyTransforms --default-value 0 --float 0 --input moving1.nii \
413412
--interpolation Linear --output moving1_trans.nii \
414-
--reference-image fixed1.nii -t identity'
413+
--reference-image fixed1.nii --transform identity'
415414
416415
>>> at = ApplyTransforms()
417416
>>> at.inputs.dimension = 3
@@ -441,6 +440,22 @@ class ApplyTransforms(ANTSCommand):
441440
'antsApplyTransforms --default-value 0 --dimensionality 3 --float 0 --input moving1.nii \
442441
--interpolation BSpline[ 5 ] --output deformed_moving1.nii --reference-image fixed1.nii \
443442
--transform [ ants_Warp.nii.gz, 0 ] --transform [ trans.mat, 0 ]'
443+
444+
Identity transforms may be used as part of a chain:
445+
446+
>>> at2 = ApplyTransforms()
447+
>>> at2.inputs.dimension = 3
448+
>>> at2.inputs.input_image = 'moving1.nii'
449+
>>> at2.inputs.reference_image = 'fixed1.nii'
450+
>>> at2.inputs.output_image = 'deformed_moving1.nii'
451+
>>> at2.inputs.interpolation = 'BSpline'
452+
>>> at2.inputs.interpolation_parameters = (5,)
453+
>>> at2.inputs.default_value = 0
454+
>>> at2.inputs.transforms = ['identity', 'ants_Warp.nii.gz', 'trans.mat']
455+
>>> at2.cmdline
456+
'antsApplyTransforms --default-value 0 --dimensionality 3 --float 0 --input moving1.nii \
457+
--interpolation BSpline[ 5 ] --output deformed_moving1.nii --reference-image fixed1.nii \
458+
--transform identity --transform ants_Warp.nii.gz --transform trans.mat'
444459
"""
445460

446461
_cmd = "antsApplyTransforms"

0 commit comments

Comments
 (0)