diff --git a/doc/users/saving_workflows.rst b/doc/users/saving_workflows.rst index d6631a8bb8..8942103519 100644 --- a/doc/users/saving_workflows.rst +++ b/doc/users/saving_workflows.rst @@ -66,6 +66,7 @@ This will create a file "outputtestsave.py" with the following content: inode = Node(IdentityInterface(fields=['a'], mandatory_inputs=True), name="inode") # Node: testsave.testfunc testfunc = Node(Function(input_names=['a'], output_names=['output']), name="testfunc") + testfunc.interface.ignore_exception = False def testfunc_1(in1): """dummy func """ @@ -73,27 +74,26 @@ This will create a file "outputtestsave.py" with the following content: return out testfunc.inputs.function_str = getsource(testfunc_1) - testfunc.inputs.ignore_exception = False testfunc.inputs.in1 = '-sub' testsave.connect(inode, "a", testfunc, "in1") # Node: testsave.bet2 bet2 = MapNode(BET(), iterfield=['infile'], name="bet2") + bet2.interface.ignore_exception = False bet2.iterables = ('frac', [0.4, 0.5]) bet2.inputs.environ = {'FSLOUTPUTTYPE': 'NIFTI_GZ'} - bet2.inputs.ignore_exception = False bet2.inputs.output_type = 'NIFTI_GZ' bet2.terminal_output = 'stream' # Node: testsave.bet bet = Node(BET(), name="bet") + bet.interface.ignore_exception = False bet.iterables = ('frac', [0.3, 0.4]) bet.inputs.environ = {'FSLOUTPUTTYPE': 'NIFTI_GZ'} - bet.inputs.ignore_exception = False bet.inputs.output_type = 'NIFTI_GZ' bet.terminal_output = 'stream' # Node: testsave.maths maths = Node(ImageMaths(), name="maths") + maths.interface.ignore_exception = False maths.inputs.environ = {'FSLOUTPUTTYPE': 'NIFTI_GZ'} - maths.inputs.ignore_exception = False maths.inputs.output_type = 'NIFTI_GZ' maths.terminal_output = 'stream' testsave.connect(bet2, ('mask_file', func), maths, "in_file2") diff --git a/nipype/interfaces/base/core.py b/nipype/interfaces/base/core.py index 491d742b16..c199af3ca8 100644 --- a/nipype/interfaces/base/core.py +++ b/nipype/interfaces/base/core.py @@ -170,12 +170,14 @@ class BaseInterface(Interface): references_ = [] resource_monitor = True # Enabled for this interface IFF enabled in the config - def __init__(self, from_file=None, resource_monitor=None, **inputs): + def __init__(self, from_file=None, resource_monitor=None, + ignore_exception=False, **inputs): if not self.input_spec: raise Exception( 'No input_spec in class: %s' % self.__class__.__name__) self.inputs = self.input_spec(**inputs) + self.ignore_exception = ignore_exception if resource_monitor is not None: self.resource_monitor = resource_monitor @@ -470,7 +472,6 @@ def run(self, cwd=None, **inputs): os.chdir(cwd) # Change to the interface wd enable_rm = config.resource_monitor and self.resource_monitor - force_raise = not getattr(self.inputs, 'ignore_exception', False) self.inputs.trait_set(**inputs) self._check_mandatory_inputs() self._check_version_requirements(self.inputs) @@ -530,7 +531,7 @@ def run(self, cwd=None, **inputs): runtime.traceback_args = ('\n'.join( ['%s' % arg for arg in exc_args]), ) - if force_raise: + if not self.ignore_exception: raise finally: # This needs to be done always diff --git a/nipype/workflows/smri/ants/ANTSBuildTemplate.py b/nipype/workflows/smri/ants/ANTSBuildTemplate.py index 54ea691750..5a43d47bac 100644 --- a/nipype/workflows/smri/ants/ANTSBuildTemplate.py +++ b/nipype/workflows/smri/ants/ANTSBuildTemplate.py @@ -183,7 +183,7 @@ def ANTSTemplateBuildSingleIterationWF(iterationPhasePrefix=''): output_names=['out']), run_without_submitting=True, name='MakeTransformsLists') - MakeTransformsLists.inputs.ignore_exception = True + MakeTransformsLists.interface.ignore_exception = True TemplateBuildSingleIterationWF.connect( BeginANTS, 'warp_transform', MakeTransformsLists, 'warpTransformList') TemplateBuildSingleIterationWF.connect(BeginANTS, 'affine_transform', @@ -263,7 +263,7 @@ def ANTSTemplateBuildSingleIterationWF(iterationPhasePrefix=''): output_names=['TransformListWithGradientWarps']), run_without_submitting=True, name='MakeTransformListWithGradientWarps') - ApplyInvAverageAndFourTimesGradientStepWarpImage.inputs.ignore_exception = True + ApplyInvAverageAndFourTimesGradientStepWarpImage.interface.ignore_exception = True TemplateBuildSingleIterationWF.connect( AvgAffineTransform, 'affine_transform', diff --git a/nipype/workflows/smri/ants/antsRegistrationBuildTemplate.py b/nipype/workflows/smri/ants/antsRegistrationBuildTemplate.py index d4924a9f93..3574935fc1 100644 --- a/nipype/workflows/smri/ants/antsRegistrationBuildTemplate.py +++ b/nipype/workflows/smri/ants/antsRegistrationBuildTemplate.py @@ -360,7 +360,7 @@ def antsRegistrationTemplateBuildSingleIterationWF(iterationPhasePrefix=''): output_names=['TransformListWithGradientWarps']), run_without_submitting=True, name='99_MakeTransformListWithGradientWarps') - ApplyInvAverageAndFourTimesGradientStepWarpImage.inputs.ignore_exception = True + ApplyInvAverageAndFourTimesGradientStepWarpImage.interface.ignore_exception = True TemplateBuildSingleIterationWF.connect( AvgAffineTransform, 'affine_transform',