@@ -320,8 +320,6 @@ class RegistrationInputSpec(ANTSCommandInputSpec):
320
320
low = 0.0 , high = 1.0 , value = 1.0 , argstr = '%s' , usedefault = True , desc = "The Upper quantile to clip image ranges" )
321
321
winsorize_lower_quantile = traits .Range (
322
322
low = 0.0 , high = 1.0 , value = 0.0 , argstr = '%s' , usedefault = True , desc = "The Lower quantile to clip image ranges" )
323
- collapse_linear_transforms_to_fixed_image_header = traits .Bool (
324
- argstr = '%s' , default = False , usedefault = True , desc = '' )
325
323
326
324
327
325
class RegistrationOutputSpec (TraitedSpec ):
@@ -376,29 +374,35 @@ class Registration(ANTSCommand):
376
374
377
375
>>> reg1 = copy.deepcopy(reg)
378
376
>>> reg1.inputs.winsorize_lower_quantile = 0.025
379
- >>> reg1.inputs.collapse_linear_transforms_to_fixed_image_header = False
380
377
>>> reg1.cmdline
381
- 'antsRegistration --collapse-linear-transforms-to-fixed-image-header 0 --collapse- output-transforms 0 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] --interpolation Linear --output [ output_, output_warped_image.nii.gz ] --transform Affine[ 2.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32, Random, 0.05 ] --convergence [ 1500x200, 1e-08, 20 ] --smoothing-sigmas 1.0x0.0vox --shrink-factors 2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --transform SyN[ 0.25, 3.0, 0.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32 ] --convergence [ 100x50x30, 1e-09, 20 ] --smoothing-sigmas 2.0x1.0x0.0vox --shrink-factors 3x2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --winsorize-image-intensities [ 0.025, 1.0 ] --write-composite-transform 1'
378
+ 'antsRegistration --collapse-output-transforms 0 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] --interpolation Linear --output [ output_, output_warped_image.nii.gz ] --transform Affine[ 2.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32, Random, 0.05 ] --convergence [ 1500x200, 1e-08, 20 ] --smoothing-sigmas 1.0x0.0vox --shrink-factors 2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --transform SyN[ 0.25, 3.0, 0.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32 ] --convergence [ 100x50x30, 1e-09, 20 ] --smoothing-sigmas 2.0x1.0x0.0vox --shrink-factors 3x2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --winsorize-image-intensities [ 0.025, 1.0 ] --write-composite-transform 1'
382
379
>>> reg1.run() #doctest: +SKIP
383
380
384
381
>>> reg2 = copy.deepcopy(reg)
385
382
>>> reg2.inputs.winsorize_upper_quantile = 0.975
386
383
>>> reg2.cmdline
387
- 'antsRegistration --collapse-linear-transforms-to-fixed-image-header 0 --collapse- output-transforms 0 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] --interpolation Linear --output [ output_, output_warped_image.nii.gz ] --transform Affine[ 2.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32, Random, 0.05 ] --convergence [ 1500x200, 1e-08, 20 ] --smoothing-sigmas 1.0x0.0vox --shrink-factors 2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --transform SyN[ 0.25, 3.0, 0.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32 ] --convergence [ 100x50x30, 1e-09, 20 ] --smoothing-sigmas 2.0x1.0x0.0vox --shrink-factors 3x2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --winsorize-image-intensities [ 0.0, 0.975 ] --write-composite-transform 1'
384
+ 'antsRegistration --collapse-output-transforms 0 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] --interpolation Linear --output [ output_, output_warped_image.nii.gz ] --transform Affine[ 2.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32, Random, 0.05 ] --convergence [ 1500x200, 1e-08, 20 ] --smoothing-sigmas 1.0x0.0vox --shrink-factors 2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --transform SyN[ 0.25, 3.0, 0.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32 ] --convergence [ 100x50x30, 1e-09, 20 ] --smoothing-sigmas 2.0x1.0x0.0vox --shrink-factors 3x2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --winsorize-image-intensities [ 0.0, 0.975 ] --write-composite-transform 1'
388
385
389
386
>>> reg3 = copy.deepcopy(reg)
390
387
>>> reg3.inputs.winsorize_lower_quantile = 0.025
391
388
>>> reg3.inputs.winsorize_upper_quantile = 0.975
392
389
>>> reg3.cmdline
393
- 'antsRegistration --collapse-linear-transforms-to-fixed-image-header 0 --collapse- output-transforms 0 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] --interpolation Linear --output [ output_, output_warped_image.nii.gz ] --transform Affine[ 2.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32, Random, 0.05 ] --convergence [ 1500x200, 1e-08, 20 ] --smoothing-sigmas 1.0x0.0vox --shrink-factors 2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --transform SyN[ 0.25, 3.0, 0.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32 ] --convergence [ 100x50x30, 1e-09, 20 ] --smoothing-sigmas 2.0x1.0x0.0vox --shrink-factors 3x2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --winsorize-image-intensities [ 0.025, 0.975 ] --write-composite-transform 1'
390
+ 'antsRegistration --collapse-output-transforms 0 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] --interpolation Linear --output [ output_, output_warped_image.nii.gz ] --transform Affine[ 2.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32, Random, 0.05 ] --convergence [ 1500x200, 1e-08, 20 ] --smoothing-sigmas 1.0x0.0vox --shrink-factors 2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --transform SyN[ 0.25, 3.0, 0.0 ] --metric Mattes[ fixed1.nii, moving1.nii, 1, 32 ] --convergence [ 100x50x30, 1e-09, 20 ] --smoothing-sigmas 2.0x1.0x0.0vox --shrink-factors 3x2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --winsorize-image-intensities [ 0.025, 0.975 ] --write-composite-transform 1'
394
391
395
392
>>> # Test collapse transforms flag
396
393
>>> reg4 = copy.deepcopy(reg)
397
394
>>> reg4.inputs.collapse_output_transforms = True
398
395
>>> outputs = reg4._list_outputs()
399
396
>>> print outputs #doctest: +ELLIPSIS
400
- {'reverse_invert_flags': [True, False], 'inverse_composite_transform': ['.../nipype/testing/data/output_InverseComposite.h5'], 'warped_image': '.../nipype/testing/data/output_warped_image.nii.gz', 'inverse_warped_image': <undefined>, 'forward_invert_flags': [False, False], 'reverse_transforms': ['.../nipype/testing/data/output_0GenericAffine.mat', '.../nipype/testing/data/output_1InverseWarp.nii.gz'], 'composite_transform': ['.../nipype/testing/data/output_Composite.h5'], 'forward_transforms': ['.../nipype/testing/data/output_0GenericAffine.mat', '.../nipype/testing/data/output_1Warp.nii.gz']}
401
- >>> reg4.aggregate_outputs() #doctest: +SKIP
397
+ {'reverse_invert_flags': [], 'inverse_composite_transform': ['.../nipype/testing/data/output_InverseComposite.h5'], 'warped_image': '.../nipype/testing/data/output_warped_image.nii.gz', 'inverse_warped_image': <undefined>, 'forward_invert_flags': [], 'reverse_transforms': [], 'composite_transform': ['.../nipype/testing/data/output_Composite.h5'], 'forward_transforms': []}
398
+
399
+ >>> # Test collapse transforms flag
400
+ >>> reg4b = copy.deepcopy(reg4)
401
+ >>> reg4b.inputs.write_composite_transform = False
402
+ >>> outputs = reg4b._list_outputs()
403
+ >>> print outputs #doctest: +ELLIPSIS
404
+ {'reverse_invert_flags': [True, False], 'inverse_composite_transform': <undefined>, 'warped_image': '.../nipype/testing/data/output_warped_image.nii.gz', 'inverse_warped_image': <undefined>, 'forward_invert_flags': [False, False], 'reverse_transforms': ['.../nipype/testing/data/output_0GenericAffine.mat', '.../nipype/testing/data/output_1InverseWarp.nii.gz'], 'composite_transform': <undefined>, 'forward_transforms': ['.../nipype/testing/data/output_0GenericAffine.mat', '.../nipype/testing/data/output_1Warp.nii.gz']}
405
+ >>> reg4b.aggregate_outputs() #doctest: +SKIP
402
406
403
407
>>> # Test multiple metrics per stage
404
408
>>> reg5 = copy.deepcopy(reg)
@@ -408,7 +412,7 @@ class Registration(ANTSCommand):
408
412
>>> reg5.inputs.sampling_strategy = ['Random', None] # use default strategy in second stage
409
413
>>> reg5.inputs.sampling_percentage = [0.05, [0.05, 0.10]]
410
414
>>> reg5.cmdline
411
- 'antsRegistration --collapse-linear-transforms-to-fixed-image-header 0 --collapse- output-transforms 0 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] --interpolation Linear --output [ output_, output_warped_image.nii.gz ] --transform Affine[ 2.0 ] --metric CC[ fixed1.nii, moving1.nii, 1, 4, Random, 0.05 ] --convergence [ 1500x200, 1e-08, 20 ] --smoothing-sigmas 1.0x0.0vox --shrink-factors 2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --transform SyN[ 0.25, 3.0, 0.0 ] --metric CC[ fixed1.nii, moving1.nii, 0.5, 32, None, 0.05 ] --metric Mattes[ fixed1.nii, moving1.nii, 0.5, 32, None, 0.1 ] --convergence [ 100x50x30, 1e-09, 20 ] --smoothing-sigmas 2.0x1.0x0.0vox --shrink-factors 3x2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --winsorize-image-intensities [ 0.0, 1.0 ] --write-composite-transform 1'
415
+ 'antsRegistration --collapse-output-transforms 0 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] --interpolation Linear --output [ output_, output_warped_image.nii.gz ] --transform Affine[ 2.0 ] --metric CC[ fixed1.nii, moving1.nii, 1, 4, Random, 0.05 ] --convergence [ 1500x200, 1e-08, 20 ] --smoothing-sigmas 1.0x0.0vox --shrink-factors 2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --transform SyN[ 0.25, 3.0, 0.0 ] --metric CC[ fixed1.nii, moving1.nii, 0.5, 32, None, 0.05 ] --metric Mattes[ fixed1.nii, moving1.nii, 0.5, 32, None, 0.1 ] --convergence [ 100x50x30, 1e-09, 20 ] --smoothing-sigmas 2.0x1.0x0.0vox --shrink-factors 3x2x1 --use-estimate-learning-rate-once 1 --use-histogram-matching 1 --winsorize-image-intensities [ 0.0, 1.0 ] --write-composite-transform 1'
412
416
"""
413
417
DEF_SAMPLING_STRATEGY = 'None'
414
418
"""The default sampling strategy argument."""
@@ -579,9 +583,11 @@ def _formatWinsorizeImageIntensities(self):
579
583
580
584
def _formatCollapseLinearTransformsToFixedImageHeader (self ):
581
585
if self .inputs .collapse_linear_transforms_to_fixed_image_header :
582
- return '--collapse-linear-transforms-to-fixed-image-header 1'
586
+ # return '--collapse-linear-transforms-to-fixed-image-header 1'
587
+ return ''
583
588
else :
584
- return '--collapse-linear-transforms-to-fixed-image-header 0'
589
+ # return '--collapse-linear-transforms-to-fixed-image-header 0'
590
+ return ''
585
591
586
592
def _format_arg (self , opt , spec , val ):
587
593
if opt == 'fixed_image_mask' :
@@ -710,7 +716,7 @@ def _list_outputs(self):
710
716
outputs [
711
717
'reverse_invert_flags' ].insert (0 , reverseInverseMode )
712
718
transformCount += 1
713
- else :
719
+ elif not self . inputs . write_composite_transform :
714
720
transformCount = 0
715
721
isLinear = [any (self ._linear_transform_names == t )
716
722
for t in self .inputs .transforms ]
0 commit comments