From 955ae964297ce23cc254403ace1b1dbfd725ffe9 Mon Sep 17 00:00:00 2001 From: achetverikov Date: Wed, 5 Sep 2018 14:38:31 +0200 Subject: [PATCH 1/3] load_results in nodes.py now uses node output directory as wd --- nipype/pipeline/engine/nodes.py | 45 +++++++++++++++++---------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/nipype/pipeline/engine/nodes.py b/nipype/pipeline/engine/nodes.py index af93fd140b..2d39f0d87e 100644 --- a/nipype/pipeline/engine/nodes.py +++ b/nipype/pipeline/engine/nodes.py @@ -559,28 +559,29 @@ def _load_results(self): result, aggregate, attribute_error = _load_resultfile(cwd, self.name) # try aggregating first if aggregate: - logger.debug('aggregating results') - if attribute_error: - old_inputs = loadpkl(op.join(cwd, '_inputs.pklz')) - self.inputs.trait_set(**old_inputs) - if not isinstance(self, MapNode): - self._copyfiles_to_wd(linksonly=True) - aggouts = self._interface.aggregate_outputs( - needed_outputs=self.needed_outputs) - runtime = Bunch( - cwd=cwd, - returncode=0, - environ=dict(os.environ), - hostname=socket.gethostname()) - result = InterfaceResult( - interface=self._interface.__class__, - runtime=runtime, - inputs=self._interface.inputs.get_traitsfree(), - outputs=aggouts) - _save_resultfile(result, cwd, self.name) - else: - logger.debug('aggregating mapnode results') - result = self._run_interface() + with indirectory(cwd): + logger.debug('aggregating results') + if attribute_error: + old_inputs = loadpkl(op.join(cwd, '_inputs.pklz')) + self.inputs.trait_set(**old_inputs) + if not isinstance(self, MapNode): + self._copyfiles_to_wd(linksonly=True) + aggouts = self._interface.aggregate_outputs( + needed_outputs=self.needed_outputs) + runtime = Bunch( + cwd=cwd, + returncode=0, + environ=dict(os.environ), + hostname=socket.gethostname()) + result = InterfaceResult( + interface=self._interface.__class__, + runtime=runtime, + inputs=self._interface.inputs.get_traitsfree(), + outputs=aggouts) + _save_resultfile(result, cwd, self.name) + else: + logger.debug('aggregating mapnode results') + result = self._run_interface() return result def _run_command(self, execute, copyfiles=True): From f0f1e1969ec5d9032964fff50824ec4f0736894b Mon Sep 17 00:00:00 2001 From: achetverikov Date: Wed, 5 Sep 2018 14:38:31 +0200 Subject: [PATCH 2/3] load_results in nodes.py now uses node output directory as wd --- nipype/pipeline/engine/nodes.py | 45 +++++++++++++++++---------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/nipype/pipeline/engine/nodes.py b/nipype/pipeline/engine/nodes.py index af93fd140b..2d39f0d87e 100644 --- a/nipype/pipeline/engine/nodes.py +++ b/nipype/pipeline/engine/nodes.py @@ -559,28 +559,29 @@ def _load_results(self): result, aggregate, attribute_error = _load_resultfile(cwd, self.name) # try aggregating first if aggregate: - logger.debug('aggregating results') - if attribute_error: - old_inputs = loadpkl(op.join(cwd, '_inputs.pklz')) - self.inputs.trait_set(**old_inputs) - if not isinstance(self, MapNode): - self._copyfiles_to_wd(linksonly=True) - aggouts = self._interface.aggregate_outputs( - needed_outputs=self.needed_outputs) - runtime = Bunch( - cwd=cwd, - returncode=0, - environ=dict(os.environ), - hostname=socket.gethostname()) - result = InterfaceResult( - interface=self._interface.__class__, - runtime=runtime, - inputs=self._interface.inputs.get_traitsfree(), - outputs=aggouts) - _save_resultfile(result, cwd, self.name) - else: - logger.debug('aggregating mapnode results') - result = self._run_interface() + with indirectory(cwd): + logger.debug('aggregating results') + if attribute_error: + old_inputs = loadpkl(op.join(cwd, '_inputs.pklz')) + self.inputs.trait_set(**old_inputs) + if not isinstance(self, MapNode): + self._copyfiles_to_wd(linksonly=True) + aggouts = self._interface.aggregate_outputs( + needed_outputs=self.needed_outputs) + runtime = Bunch( + cwd=cwd, + returncode=0, + environ=dict(os.environ), + hostname=socket.gethostname()) + result = InterfaceResult( + interface=self._interface.__class__, + runtime=runtime, + inputs=self._interface.inputs.get_traitsfree(), + outputs=aggouts) + _save_resultfile(result, cwd, self.name) + else: + logger.debug('aggregating mapnode results') + result = self._run_interface() return result def _run_command(self, execute, copyfiles=True): From e4894a96efdeb1c0eb00d1ceaba721f672f39733 Mon Sep 17 00:00:00 2001 From: achetverikov Date: Wed, 5 Sep 2018 17:39:12 +0200 Subject: [PATCH 3/3] Second attempt at fixing nodes.py, moved indirectory to an appropriate place --- nipype/pipeline/engine/nodes.py | 43 +++++++++++++++++---------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/nipype/pipeline/engine/nodes.py b/nipype/pipeline/engine/nodes.py index 2d39f0d87e..53056f990e 100644 --- a/nipype/pipeline/engine/nodes.py +++ b/nipype/pipeline/engine/nodes.py @@ -559,29 +559,30 @@ def _load_results(self): result, aggregate, attribute_error = _load_resultfile(cwd, self.name) # try aggregating first if aggregate: - with indirectory(cwd): - logger.debug('aggregating results') - if attribute_error: - old_inputs = loadpkl(op.join(cwd, '_inputs.pklz')) - self.inputs.trait_set(**old_inputs) - if not isinstance(self, MapNode): - self._copyfiles_to_wd(linksonly=True) + logger.debug('aggregating results') + if attribute_error: + old_inputs = loadpkl(op.join(cwd, '_inputs.pklz')) + self.inputs.trait_set(**old_inputs) + if not isinstance(self, MapNode): + self._copyfiles_to_wd(linksonly=True) + with indirectory(cwd): aggouts = self._interface.aggregate_outputs( needed_outputs=self.needed_outputs) - runtime = Bunch( - cwd=cwd, - returncode=0, - environ=dict(os.environ), - hostname=socket.gethostname()) - result = InterfaceResult( - interface=self._interface.__class__, - runtime=runtime, - inputs=self._interface.inputs.get_traitsfree(), - outputs=aggouts) - _save_resultfile(result, cwd, self.name) - else: - logger.debug('aggregating mapnode results') - result = self._run_interface() + + runtime = Bunch( + cwd=cwd, + returncode=0, + environ=dict(os.environ), + hostname=socket.gethostname()) + result = InterfaceResult( + interface=self._interface.__class__, + runtime=runtime, + inputs=self._interface.inputs.get_traitsfree(), + outputs=aggouts) + _save_resultfile(result, cwd, self.name) + else: + logger.debug('aggregating mapnode results') + result = self._run_interface() return result def _run_command(self, execute, copyfiles=True):