From 7b3d98c49fedd920f43746fa40e6b31b263d2400 Mon Sep 17 00:00:00 2001 From: Dorota Jarecka Date: Fri, 29 Dec 2017 03:57:22 -0500 Subject: [PATCH 1/5] adding exists=True for subjects_dir in FSSourceInputSpec --- nipype/interfaces/io.py | 2 +- nipype/interfaces/tests/test_io.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/nipype/interfaces/io.py b/nipype/interfaces/io.py index 0793b955bd..7e8f4ab755 100644 --- a/nipype/interfaces/io.py +++ b/nipype/interfaces/io.py @@ -1485,7 +1485,7 @@ def _list_outputs(self): class FSSourceInputSpec(BaseInterfaceInputSpec): - subjects_dir = Directory(mandatory=True, + subjects_dir = Directory(exists=True, mandatory=True, desc='Freesurfer subjects directory.') subject_id = Str(mandatory=True, desc='Subject name for whom to retrieve data') diff --git a/nipype/interfaces/tests/test_io.py b/nipype/interfaces/tests/test_io.py index ff56c9ec9d..bb89b72fd9 100644 --- a/nipype/interfaces/tests/test_io.py +++ b/nipype/interfaces/tests/test_io.py @@ -407,6 +407,13 @@ def test_freesurfersource(): assert fss.inputs.subjects_dir == Undefined +def test_freesurfersource_incorrectdir(): + fss = nio.FreeSurferSource() + with pytest.raises(Exception) as err: + fss.inputs.subjects_dir = 'path/to/no/existing/directory' + assert "TraitError" == err.typename + + def test_jsonsink_input(): ds = nio.JSONFileSink() From 3bb84c49f9d4e43ece6e47b2ff81b2616b709ec1 Mon Sep 17 00:00:00 2001 From: Dorota Jarecka Date: Wed, 3 Jan 2018 02:30:21 -0500 Subject: [PATCH 2/5] using TriatError in pytest.raises --- nipype/interfaces/tests/test_io.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/nipype/interfaces/tests/test_io.py b/nipype/interfaces/tests/test_io.py index bb89b72fd9..a15c831f9d 100644 --- a/nipype/interfaces/tests/test_io.py +++ b/nipype/interfaces/tests/test_io.py @@ -16,7 +16,7 @@ import pytest import nipype import nipype.interfaces.io as nio -from nipype.interfaces.base import Undefined +from nipype.interfaces.base import Undefined, TraitError # Check for boto noboto = False @@ -409,9 +409,8 @@ def test_freesurfersource(): def test_freesurfersource_incorrectdir(): fss = nio.FreeSurferSource() - with pytest.raises(Exception) as err: + with pytest.raises(TraitError) as err: fss.inputs.subjects_dir = 'path/to/no/existing/directory' - assert "TraitError" == err.typename def test_jsonsink_input(): From ba9ae4f2c1d985120fc08218afccc0f4f27e0bbe Mon Sep 17 00:00:00 2001 From: Dorota Jarecka Date: Wed, 3 Jan 2018 02:34:31 -0500 Subject: [PATCH 3/5] after make specs --- .../ants/tests/test_auto_Registration.py | 157 ------------------ .../niftyseg/tests/test_auto_PatchMatch.py | 61 ------- 2 files changed, 218 deletions(-) delete mode 100644 nipype/interfaces/ants/tests/test_auto_Registration.py delete mode 100644 nipype/interfaces/niftyseg/tests/test_auto_PatchMatch.py diff --git a/nipype/interfaces/ants/tests/test_auto_Registration.py b/nipype/interfaces/ants/tests/test_auto_Registration.py deleted file mode 100644 index ea9bc02e79..0000000000 --- a/nipype/interfaces/ants/tests/test_auto_Registration.py +++ /dev/null @@ -1,157 +0,0 @@ -# AUTO-GENERATED by tools/checkspecs.py - DO NOT EDIT -from __future__ import unicode_literals -from ..registration import Registration - - -def test_Registration_inputs(): - input_map = dict(args=dict(argstr='%s', - ), - collapse_output_transforms=dict(argstr='--collapse-output-transforms %d', - usedefault=True, - ), - convergence_threshold=dict(requires=['number_of_iterations'], - usedefault=True, - ), - convergence_window_size=dict(requires=['convergence_threshold'], - usedefault=True, - ), - dimension=dict(argstr='--dimensionality %d', - usedefault=True, - ), - environ=dict(nohash=True, - usedefault=True, - ), - fixed_image=dict(mandatory=True, - ), - fixed_image_mask=dict(argstr='%s', - max_ver='2.1.0', - xor=['fixed_image_masks'], - ), - fixed_image_masks=dict(min_ver='2.2.0', - xor=['fixed_image_mask'], - ), - float=dict(argstr='--float %d', - ), - ignore_exception=dict(deprecated='1.0.0', - nohash=True, - usedefault=True, - ), - initial_moving_transform=dict(argstr='%s', - exists=True, - xor=['initial_moving_transform_com'], - ), - initial_moving_transform_com=dict(argstr='%s', - xor=['initial_moving_transform'], - ), - initialize_transforms_per_stage=dict(argstr='--initialize-transforms-per-stage %d', - usedefault=True, - ), - interpolation=dict(argstr='%s', - usedefault=True, - ), - interpolation_parameters=dict(), - invert_initial_moving_transform=dict(requires=['initial_moving_transform'], - xor=['initial_moving_transform_com'], - ), - metric=dict(mandatory=True, - ), - metric_item_trait=dict(), - metric_stage_trait=dict(), - metric_weight=dict(mandatory=True, - requires=['metric'], - usedefault=True, - ), - metric_weight_item_trait=dict(), - metric_weight_stage_trait=dict(), - moving_image=dict(mandatory=True, - ), - moving_image_mask=dict(max_ver='2.1.0', - requires=['fixed_image_mask'], - xor=['moving_image_masks'], - ), - moving_image_masks=dict(min_ver='2.2.0', - xor=['moving_image_mask'], - ), - num_threads=dict(nohash=True, - usedefault=True, - ), - number_of_iterations=dict(), - output_inverse_warped_image=dict(hash_files=False, - requires=['output_warped_image'], - ), - output_transform_prefix=dict(argstr='%s', - usedefault=True, - ), - output_warped_image=dict(hash_files=False, - ), - radius_bins_item_trait=dict(), - radius_bins_stage_trait=dict(), - radius_or_number_of_bins=dict(requires=['metric_weight'], - usedefault=True, - ), - restore_state=dict(argstr='--restore-state %s', - ), - restrict_deformation=dict(), - sampling_percentage=dict(requires=['sampling_strategy'], - ), - sampling_percentage_item_trait=dict(), - sampling_percentage_stage_trait=dict(), - sampling_strategy=dict(requires=['metric_weight'], - ), - sampling_strategy_item_trait=dict(), - sampling_strategy_stage_trait=dict(), - save_state=dict(argstr='--save-state %s', - ), - shrink_factors=dict(mandatory=True, - ), - sigma_units=dict(requires=['smoothing_sigmas'], - ), - smoothing_sigmas=dict(mandatory=True, - ), - terminal_output=dict(deprecated='1.0.0', - nohash=True, - ), - transform_parameters=dict(), - transforms=dict(argstr='%s', - mandatory=True, - ), - use_estimate_learning_rate_once=dict(), - use_histogram_matching=dict(usedefault=True, - ), - verbose=dict(argstr='-v', - ), - winsorize_lower_quantile=dict(argstr='%s', - usedefault=True, - ), - winsorize_upper_quantile=dict(argstr='%s', - usedefault=True, - ), - write_composite_transform=dict(argstr='--write-composite-transform %d', - usedefault=True, - ), - ) - inputs = Registration.input_spec() - - for key, metadata in list(input_map.items()): - for metakey, value in list(metadata.items()): - assert getattr(inputs.traits()[key], metakey) == value - - -def test_Registration_outputs(): - output_map = dict(composite_transform=dict(), - elapsed_time=dict(), - forward_invert_flags=dict(), - forward_transforms=dict(), - inverse_composite_transform=dict(), - inverse_warped_image=dict(), - metric_value=dict(), - reverse_invert_flags=dict(), - reverse_transforms=dict(), - save_state=dict(), - warped_image=dict(), - ) - outputs = Registration.output_spec() - - for key, metadata in list(output_map.items()): - for metakey, value in list(metadata.items()): - assert getattr(outputs.traits()[key], metakey) == value diff --git a/nipype/interfaces/niftyseg/tests/test_auto_PatchMatch.py b/nipype/interfaces/niftyseg/tests/test_auto_PatchMatch.py deleted file mode 100644 index ba6ea5a40c..0000000000 --- a/nipype/interfaces/niftyseg/tests/test_auto_PatchMatch.py +++ /dev/null @@ -1,61 +0,0 @@ -# AUTO-GENERATED by tools/checkspecs.py - DO NOT EDIT -from __future__ import unicode_literals -from ..patchmatch import PatchMatch - - -def test_PatchMatch_inputs(): - input_map = dict(args=dict(argstr='%s', - ), - cs_size=dict(argstr='-cs %i', - ), - database_file=dict(argstr='-db %s', - mandatory=True, - position=3, - ), - environ=dict(nohash=True, - usedefault=True, - ), - ignore_exception=dict(deprecated='1.0.0', - nohash=True, - usedefault=True, - ), - in_file=dict(argstr='-i %s', - mandatory=True, - position=1, - ), - it_num=dict(argstr='-it %i', - ), - mask_file=dict(argstr='-m %s', - mandatory=True, - position=2, - ), - match_num=dict(argstr='-match %i', - ), - out_file=dict(argstr='-o %s', - name_source=['in_file'], - name_template='%s_pm.nii.gz', - position=4, - ), - patch_size=dict(argstr='-size %i', - ), - pm_num=dict(argstr='-pm %i', - ), - terminal_output=dict(deprecated='1.0.0', - nohash=True, - ), - ) - inputs = PatchMatch.input_spec() - - for key, metadata in list(input_map.items()): - for metakey, value in list(metadata.items()): - assert getattr(inputs.traits()[key], metakey) == value - - -def test_PatchMatch_outputs(): - output_map = dict(out_file=dict(), - ) - outputs = PatchMatch.output_spec() - - for key, metadata in list(output_map.items()): - for metakey, value in list(metadata.items()): - assert getattr(outputs.traits()[key], metakey) == value From 9a2fbfcc8bbca79e67380ac624e9e598334e095c Mon Sep 17 00:00:00 2001 From: Dorota Jarecka Date: Tue, 16 Jan 2018 17:07:14 -0500 Subject: [PATCH 4/5] Revert "after make specs" This reverts commit ba9ae4f2c1d985120fc08218afccc0f4f27e0bbe. --- .../ants/tests/test_auto_Registration.py | 157 ++++++++++++++++++ .../niftyseg/tests/test_auto_PatchMatch.py | 61 +++++++ 2 files changed, 218 insertions(+) create mode 100644 nipype/interfaces/ants/tests/test_auto_Registration.py create mode 100644 nipype/interfaces/niftyseg/tests/test_auto_PatchMatch.py diff --git a/nipype/interfaces/ants/tests/test_auto_Registration.py b/nipype/interfaces/ants/tests/test_auto_Registration.py new file mode 100644 index 0000000000..ea9bc02e79 --- /dev/null +++ b/nipype/interfaces/ants/tests/test_auto_Registration.py @@ -0,0 +1,157 @@ +# AUTO-GENERATED by tools/checkspecs.py - DO NOT EDIT +from __future__ import unicode_literals +from ..registration import Registration + + +def test_Registration_inputs(): + input_map = dict(args=dict(argstr='%s', + ), + collapse_output_transforms=dict(argstr='--collapse-output-transforms %d', + usedefault=True, + ), + convergence_threshold=dict(requires=['number_of_iterations'], + usedefault=True, + ), + convergence_window_size=dict(requires=['convergence_threshold'], + usedefault=True, + ), + dimension=dict(argstr='--dimensionality %d', + usedefault=True, + ), + environ=dict(nohash=True, + usedefault=True, + ), + fixed_image=dict(mandatory=True, + ), + fixed_image_mask=dict(argstr='%s', + max_ver='2.1.0', + xor=['fixed_image_masks'], + ), + fixed_image_masks=dict(min_ver='2.2.0', + xor=['fixed_image_mask'], + ), + float=dict(argstr='--float %d', + ), + ignore_exception=dict(deprecated='1.0.0', + nohash=True, + usedefault=True, + ), + initial_moving_transform=dict(argstr='%s', + exists=True, + xor=['initial_moving_transform_com'], + ), + initial_moving_transform_com=dict(argstr='%s', + xor=['initial_moving_transform'], + ), + initialize_transforms_per_stage=dict(argstr='--initialize-transforms-per-stage %d', + usedefault=True, + ), + interpolation=dict(argstr='%s', + usedefault=True, + ), + interpolation_parameters=dict(), + invert_initial_moving_transform=dict(requires=['initial_moving_transform'], + xor=['initial_moving_transform_com'], + ), + metric=dict(mandatory=True, + ), + metric_item_trait=dict(), + metric_stage_trait=dict(), + metric_weight=dict(mandatory=True, + requires=['metric'], + usedefault=True, + ), + metric_weight_item_trait=dict(), + metric_weight_stage_trait=dict(), + moving_image=dict(mandatory=True, + ), + moving_image_mask=dict(max_ver='2.1.0', + requires=['fixed_image_mask'], + xor=['moving_image_masks'], + ), + moving_image_masks=dict(min_ver='2.2.0', + xor=['moving_image_mask'], + ), + num_threads=dict(nohash=True, + usedefault=True, + ), + number_of_iterations=dict(), + output_inverse_warped_image=dict(hash_files=False, + requires=['output_warped_image'], + ), + output_transform_prefix=dict(argstr='%s', + usedefault=True, + ), + output_warped_image=dict(hash_files=False, + ), + radius_bins_item_trait=dict(), + radius_bins_stage_trait=dict(), + radius_or_number_of_bins=dict(requires=['metric_weight'], + usedefault=True, + ), + restore_state=dict(argstr='--restore-state %s', + ), + restrict_deformation=dict(), + sampling_percentage=dict(requires=['sampling_strategy'], + ), + sampling_percentage_item_trait=dict(), + sampling_percentage_stage_trait=dict(), + sampling_strategy=dict(requires=['metric_weight'], + ), + sampling_strategy_item_trait=dict(), + sampling_strategy_stage_trait=dict(), + save_state=dict(argstr='--save-state %s', + ), + shrink_factors=dict(mandatory=True, + ), + sigma_units=dict(requires=['smoothing_sigmas'], + ), + smoothing_sigmas=dict(mandatory=True, + ), + terminal_output=dict(deprecated='1.0.0', + nohash=True, + ), + transform_parameters=dict(), + transforms=dict(argstr='%s', + mandatory=True, + ), + use_estimate_learning_rate_once=dict(), + use_histogram_matching=dict(usedefault=True, + ), + verbose=dict(argstr='-v', + ), + winsorize_lower_quantile=dict(argstr='%s', + usedefault=True, + ), + winsorize_upper_quantile=dict(argstr='%s', + usedefault=True, + ), + write_composite_transform=dict(argstr='--write-composite-transform %d', + usedefault=True, + ), + ) + inputs = Registration.input_spec() + + for key, metadata in list(input_map.items()): + for metakey, value in list(metadata.items()): + assert getattr(inputs.traits()[key], metakey) == value + + +def test_Registration_outputs(): + output_map = dict(composite_transform=dict(), + elapsed_time=dict(), + forward_invert_flags=dict(), + forward_transforms=dict(), + inverse_composite_transform=dict(), + inverse_warped_image=dict(), + metric_value=dict(), + reverse_invert_flags=dict(), + reverse_transforms=dict(), + save_state=dict(), + warped_image=dict(), + ) + outputs = Registration.output_spec() + + for key, metadata in list(output_map.items()): + for metakey, value in list(metadata.items()): + assert getattr(outputs.traits()[key], metakey) == value diff --git a/nipype/interfaces/niftyseg/tests/test_auto_PatchMatch.py b/nipype/interfaces/niftyseg/tests/test_auto_PatchMatch.py new file mode 100644 index 0000000000..ba6ea5a40c --- /dev/null +++ b/nipype/interfaces/niftyseg/tests/test_auto_PatchMatch.py @@ -0,0 +1,61 @@ +# AUTO-GENERATED by tools/checkspecs.py - DO NOT EDIT +from __future__ import unicode_literals +from ..patchmatch import PatchMatch + + +def test_PatchMatch_inputs(): + input_map = dict(args=dict(argstr='%s', + ), + cs_size=dict(argstr='-cs %i', + ), + database_file=dict(argstr='-db %s', + mandatory=True, + position=3, + ), + environ=dict(nohash=True, + usedefault=True, + ), + ignore_exception=dict(deprecated='1.0.0', + nohash=True, + usedefault=True, + ), + in_file=dict(argstr='-i %s', + mandatory=True, + position=1, + ), + it_num=dict(argstr='-it %i', + ), + mask_file=dict(argstr='-m %s', + mandatory=True, + position=2, + ), + match_num=dict(argstr='-match %i', + ), + out_file=dict(argstr='-o %s', + name_source=['in_file'], + name_template='%s_pm.nii.gz', + position=4, + ), + patch_size=dict(argstr='-size %i', + ), + pm_num=dict(argstr='-pm %i', + ), + terminal_output=dict(deprecated='1.0.0', + nohash=True, + ), + ) + inputs = PatchMatch.input_spec() + + for key, metadata in list(input_map.items()): + for metakey, value in list(metadata.items()): + assert getattr(inputs.traits()[key], metakey) == value + + +def test_PatchMatch_outputs(): + output_map = dict(out_file=dict(), + ) + outputs = PatchMatch.output_spec() + + for key, metadata in list(output_map.items()): + for metakey, value in list(metadata.items()): + assert getattr(outputs.traits()[key], metakey) == value From c730bfeb629cf833b6cb645311e042e6cb475f0f Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Wed, 17 Jan 2018 16:20:21 -0600 Subject: [PATCH 5/5] STY: Add newline --- nipype/interfaces/io.py | 1 + 1 file changed, 1 insertion(+) diff --git a/nipype/interfaces/io.py b/nipype/interfaces/io.py index 590efbe8a0..6bb9a943f0 100644 --- a/nipype/interfaces/io.py +++ b/nipype/interfaces/io.py @@ -1562,6 +1562,7 @@ class FSSourceInputSpec(BaseInterfaceInputSpec): hemi = traits.Enum('both', 'lh', 'rh', usedefault=True, desc='Selects hemisphere specific outputs') + class FSSourceOutputSpec(TraitedSpec): T1 = File( exists=True, desc='Intensity normalized whole-head volume', loc='mri')