Skip to content

Commit de11e79

Browse files
committed
remove self._results from Node
1 parent 3070378 commit de11e79

File tree

1 file changed

+27
-30
lines changed

1 file changed

+27
-30
lines changed

nipype/pipeline/engine/nodes.py

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ def __init__(self, interface, name, iterables=None, itersource=None,
163163
self.name = name
164164

165165
self._output_dir = None
166-
self._result = None
167166
self.iterables = iterables
168167
self.synchronize = synchronize
169168
self.itersource = itersource
@@ -190,11 +189,7 @@ def interface(self):
190189

191190
@property
192191
def result(self):
193-
# Cache first
194-
if not self._result:
195-
self._result = self._load_resultfile(self.output_dir())[0]
196-
197-
return self._result
192+
return self._load_resultfile(self.output_dir())[0]
198193

199194
@property
200195
def inputs(self):
@@ -420,7 +415,7 @@ def run(self, updatehash=False):
420415
self.write_report(report_type='postexec', cwd=outdir)
421416
logger.info('[Node] Finished "%s".', self.fullname)
422417
os.chdir(cwd)
423-
return self._result
418+
return self.result
424419

425420
# Private functions
426421
def _parameterization_dir(self, param):
@@ -511,7 +506,7 @@ def _get_inputs(self):
511506
def _run_interface(self, execute=True, updatehash=False):
512507
if updatehash:
513508
return
514-
self._result = self._run_command(execute)
509+
return self._run_command(execute)
515510

516511
def _save_results(self, result, cwd):
517512
resultsfile = op.join(cwd, 'result_%s.pklz' % self.name)
@@ -609,8 +604,7 @@ def _load_results(self, cwd):
609604
self._save_results(result, cwd)
610605
else:
611606
logger.debug('aggregating mapnode results')
612-
self._run_interface()
613-
result = self._result
607+
result = self._run_interface()
614608
return result
615609

616610
def _run_command(self, execute, copyfiles=True):
@@ -625,7 +619,7 @@ def _run_command(self, execute, copyfiles=True):
625619
interface=self._interface.__class__,
626620
runtime=runtime,
627621
inputs=self._interface.inputs.get_traitsfree())
628-
self._result = result
622+
629623
if copyfiles:
630624
self._copyfiles_to_wd(cwd, execute)
631625

@@ -634,7 +628,7 @@ def _run_command(self, execute, copyfiles=True):
634628
try:
635629
cmd = self._interface.cmdline
636630
except Exception as msg:
637-
self._result.runtime.stderr = msg
631+
result.runtime.stderr = msg
638632
raise
639633
cmdfile = op.join(cwd, 'command.txt')
640634
with open(cmdfile, 'wt') as fd:
@@ -646,7 +640,7 @@ def _run_command(self, execute, copyfiles=True):
646640
result = self._interface.run()
647641
except Exception as msg:
648642
self._save_results(result, cwd)
649-
self._result.runtime.stderr = msg
643+
result.runtime.stderr = msg
650644
raise
651645

652646
dirs2keep = None
@@ -1182,19 +1176,19 @@ def _node_runner(self, nodes, updatehash=False):
11821176
yield i, node, err
11831177

11841178
def _collate_results(self, nodes):
1185-
self._result = InterfaceResult(interface=[], runtime=[],
1186-
provenance=[], inputs=[],
1187-
outputs=self.outputs)
1179+
result = InterfaceResult(
1180+
interface=[], runtime=[], provenance=[], inputs=[],
1181+
outputs=self.outputs)
11881182
returncode = []
11891183
for i, node, err in nodes:
1190-
self._result.runtime.insert(i, None)
1184+
result.runtime.insert(i, None)
11911185
if node.result:
11921186
if hasattr(node.result, 'runtime'):
1193-
self._result.interface.insert(i, node.result.interface)
1194-
self._result.inputs.insert(i, node.result.inputs)
1195-
self._result.runtime[i] = node.result.runtime
1187+
result.interface.insert(i, node.result.interface)
1188+
result.inputs.insert(i, node.result.inputs)
1189+
result.runtime[i] = node.result.runtime
11961190
if hasattr(node.result, 'provenance'):
1197-
self._result.provenance.insert(i, node.result.provenance)
1191+
result.provenance.insert(i, node.result.provenance)
11981192
returncode.insert(i, err)
11991193
if self.outputs:
12001194
for key, _ in list(self.outputs.items()):
@@ -1203,24 +1197,24 @@ def _collate_results(self, nodes):
12031197
if str2bool(rm_extra) and self.needed_outputs:
12041198
if key not in self.needed_outputs:
12051199
continue
1206-
values = getattr(self._result.outputs, key)
1200+
values = getattr(result.outputs, key)
12071201
if not isdefined(values):
12081202
values = []
12091203
if node.result.outputs:
12101204
values.insert(i, node.result.outputs.get()[key])
12111205
else:
12121206
values.insert(i, None)
12131207
defined_vals = [isdefined(val) for val in values]
1214-
if any(defined_vals) and self._result.outputs:
1215-
setattr(self._result.outputs, key, values)
1208+
if any(defined_vals) and result.outputs:
1209+
setattr(result.outputs, key, values)
12161210

12171211
if self.nested:
12181212
for key, _ in list(self.outputs.items()):
1219-
values = getattr(self._result.outputs, key)
1213+
values = getattr(result.outputs, key)
12201214
if isdefined(values):
12211215
values = unflatten(values, filename_to_list(
12221216
getattr(self.inputs, self.iterfield[0])))
1223-
setattr(self._result.outputs, key, values)
1217+
setattr(result.outputs, key, values)
12241218

12251219
if returncode and any([code is not None for code in returncode]):
12261220
msg = []
@@ -1231,6 +1225,8 @@ def _collate_results(self, nodes):
12311225
raise Exception('Subnodes of node: %s failed:\n%s' %
12321226
(self.name, '\n'.join(msg)))
12331227

1228+
return result
1229+
12341230
def write_report(self, report_type=None, cwd=None):
12351231
if not str2bool(self.config['execution']['create_report']):
12361232
return
@@ -1322,9 +1318,10 @@ def _run_interface(self, execute=True, updatehash=False):
13221318
nitems = len(filename_to_list(getattr(self.inputs,
13231319
self.iterfield[0])))
13241320
nodenames = ['_' + self.name + str(i) for i in range(nitems)]
1325-
self._collate_results(self._node_runner(self._make_nodes(cwd),
1326-
updatehash=updatehash))
1327-
self._save_results(self._result, cwd)
1321+
result = self._collate_results(
1322+
self._node_runner(self._make_nodes(cwd),
1323+
updatehash=updatehash))
1324+
self._save_results(result, cwd)
13281325
# remove any node directories no longer required
13291326
dirs2remove = []
13301327
for path in glob(op.join(cwd, 'mapflow', '*')):
@@ -1334,5 +1331,5 @@ def _run_interface(self, execute=True, updatehash=False):
13341331
for path in dirs2remove:
13351332
shutil.rmtree(path)
13361333
else:
1337-
self._result = self._load_results(cwd)
1334+
result = self._load_results(cwd)
13381335
os.chdir(old_cwd)

0 commit comments

Comments
 (0)