|
7 | 7 | >>> os.chdir(datadir)
|
8 | 8 | """
|
9 | 9 |
|
10 |
| -from ..base import (TraitedSpec, File, traits) |
| 10 | +from ..base import (TraitedSpec, File, traits, InputMultiPath) |
11 | 11 | from .base import ANTSCommand, ANTSCommandInputSpec
|
12 | 12 | import os
|
13 |
| -from nipype.interfaces.base import InputMultiPath |
14 |
| -from nipype.interfaces.traits_extension import isdefined |
| 13 | +from ..traits_extension import isdefined |
15 | 14 | import numpy as np
|
16 | 15 |
|
17 | 16 |
|
@@ -458,15 +457,22 @@ class Registration(ANTSCommand):
|
458 | 457 |
|
459 | 458 | >>> # Test multiple metrics per stage
|
460 | 459 | >>> reg5 = copy.deepcopy(reg)
|
461 |
| - >>> reg5.inputs.fixed_image = [ 'fixed1.nii', 'fixed2.nii' ] |
462 |
| - >>> reg5.inputs.moving_image = [ 'moving1.nii', 'moving2.nii' ] |
| 460 | + >>> reg5.inputs.fixed_image = 'fixed1.nii' |
| 461 | + >>> reg5.inputs.moving_image = 'moving1.nii' |
463 | 462 | >>> reg5.inputs.metric = ['Mattes', ['Mattes', 'CC']]
|
464 | 463 | >>> reg5.inputs.metric_weight = [1, [.5,.5]]
|
465 |
| - >>> reg5.inputs.radius_or_number_of_bins = [32, [32,4] ] |
| 464 | + >>> reg5.inputs.radius_or_number_of_bins = [32, [32, 4] ] |
466 | 465 | >>> reg5.inputs.sampling_strategy = ['Random', None] # use default strategy in second stage
|
467 | 466 | >>> reg5.inputs.sampling_percentage = [0.05, [0.05, 0.10]]
|
468 | 467 | >>> reg5.cmdline
|
469 |
| - 'antsRegistration --collapse-output-transforms 0 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] --initialize-transforms-per-stage 0 --interpolation Linear --output [ output_, output_warped_image.nii.gz ] --restore-state trans.mat --save-state trans.mat --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, 0.5, 32, None, 0.05 ] --metric CC[ fixed2.nii, moving2.nii, 0.5, 4, 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' |
| 468 | + 'antsRegistration --collapse-output-transforms 0 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] --initialize-transforms-per-stage 0 --interpolation Linear --output [ output_, output_warped_image.nii.gz ] --restore-state trans.mat --save-state trans.mat --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, 0.5, 32, None, 0.05 ] --metric CC[ fixed1.nii, moving1.nii, 0.5, 4, 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' |
| 469 | +
|
| 470 | + >>> # Test multiple inputs |
| 471 | + >>> reg6 = copy.deepcopy(reg5) |
| 472 | + >>> reg6.inputs.fixed_image = ['fixed1.nii', 'fixed2.nii'] |
| 473 | + >>> reg6.inputs.moving_image = ['moving1.nii', 'moving2.nii'] |
| 474 | + >>> reg6.cmdline |
| 475 | + 'antsRegistration --collapse-output-transforms 0 --dimensionality 3 --initial-moving-transform [ trans.mat, 1 ] --initialize-transforms-per-stage 0 --interpolation Linear --output [ output_, output_warped_image.nii.gz ] --restore-state trans.mat --save-state trans.mat --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, 0.5, 32, None, 0.05 ] --metric CC[ fixed2.nii, moving2.nii, 0.5, 4, 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 --write-composite-transform 1' |
470 | 476 | """
|
471 | 477 | DEF_SAMPLING_STRATEGY = 'None'
|
472 | 478 | """The default sampling strategy argument."""
|
@@ -520,12 +526,12 @@ def _formatMetric(self, index):
|
520 | 526 | specs = list()
|
521 | 527 | for i in indexes:
|
522 | 528 | temp = dict([(k, v[i]) for k, v in items])
|
523 |
| - if i > len( self.inputs.fixed_image ): |
| 529 | + if len(self.inputs.fixed_image) == 1: |
524 | 530 | temp["fixed_image"] = self.inputs.fixed_image[0]
|
525 | 531 | else:
|
526 | 532 | temp["fixed_image"] = self.inputs.fixed_image[i]
|
527 | 533 |
|
528 |
| - if i > len( self.inputs.moving_image ): |
| 534 | + if len(self.inputs.moving_image) == 1: |
529 | 535 | temp["moving_image"] = self.inputs.moving_image[0]
|
530 | 536 | else:
|
531 | 537 | temp["moving_image"] = self.inputs.moving_image[i]
|
|
0 commit comments