Skip to content

Commit 6ca1489

Browse files
committed
[MAINT] Cleanup engine/base
1 parent 045b28e commit 6ca1489

File tree

2 files changed

+36
-40
lines changed

2 files changed

+36
-40
lines changed

nipype/pipeline/engine/base.py

Lines changed: 26 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,15 @@
1818
absolute_import)
1919
from builtins import object
2020

21-
from future import standard_library
22-
standard_library.install_aliases()
23-
2421
from copy import deepcopy
2522
import re
2623
import numpy as np
27-
from ... import logging
24+
from future import standard_library
25+
2826
from ...interfaces.base import DynamicTraitedSpec
2927
from ...utils.filemanip import loadpkl, savepkl
3028

31-
logger = logging.getLogger('workflow')
29+
standard_library.install_aliases()
3230

3331

3432
class EngineBase(object):
@@ -47,35 +45,37 @@ def __init__(self, name=None, base_dir=None):
4745
default=None, which results in the use of mkdtemp
4846
4947
"""
48+
self._hierarchy = None
49+
self._name = None
50+
5051
self.base_dir = base_dir
5152
self.config = None
52-
self._verify_name(name)
5353
self.name = name
54-
# for compatibility with node expansion using iterables
55-
self._id = self.name
56-
self._hierarchy = None
5754

5855
@property
59-
def inputs(self):
60-
raise NotImplementedError
56+
def name(self):
57+
return self._name
6158

62-
@property
63-
def outputs(self):
64-
raise NotImplementedError
59+
@name.setter
60+
def name(self, name):
61+
if name and bool(re.match(r'^[\w_]+$', name)):
62+
self._name = name
63+
else:
64+
raise ValueError('[Workflow|Node] name "%s" is not valid.' % name)
6565

6666
@property
6767
def fullname(self):
68-
fullname = self.name
6968
if self._hierarchy:
70-
fullname = self._hierarchy + '.' + self.name
71-
return fullname
69+
return '%s.%s' % (self._hierarchy, self.name)
70+
return self.name
7271

7372
@property
74-
def itername(self):
75-
itername = self._id
76-
if self._hierarchy:
77-
itername = self._hierarchy + '.' + self._id
78-
return itername
73+
def inputs(self):
74+
raise NotImplementedError
75+
76+
@property
77+
def outputs(self):
78+
raise NotImplementedError
7979

8080
def clone(self, name):
8181
"""Clone an EngineBase object
@@ -86,13 +86,10 @@ def clone(self, name):
8686
name : string (mandatory)
8787
A clone of node or workflow must have a new name
8888
"""
89-
if (name is None) or (name == self.name):
90-
raise Exception('Cloning requires a new name')
91-
self._verify_name(name)
89+
if name == self.name:
90+
raise ValueError('Cloning requires a new name, "%s" is in use.' % name)
9291
clone = deepcopy(self)
9392
clone.name = name
94-
clone._id = name
95-
clone._hierarchy = None
9693
return clone
9794

9895
def _check_outputs(self, parameter):
@@ -103,17 +100,8 @@ def _check_inputs(self, parameter):
103100
return True
104101
return hasattr(self.inputs, parameter)
105102

106-
def _verify_name(self, name):
107-
valid_name = bool(re.match('^[\w-]+$', name))
108-
if not valid_name:
109-
raise ValueError('[Workflow|Node] name \'%s\' contains'
110-
' special characters' % name)
111-
112-
def __repr__(self):
113-
if self._hierarchy:
114-
return '.'.join((self._hierarchy, self._id))
115-
else:
116-
return '{}'.format(self._id)
103+
def __str__(self):
104+
return self.fullname
117105

118106
def save(self, filename=None):
119107
if filename is None:

nipype/pipeline/engine/nodes.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,14 @@ def __init__(self,
161161

162162
super(Node, self).__init__(name, kwargs.get('base_dir'))
163163

164-
self.name = name
165164
self._interface = interface
166165
self._hierarchy = None
167166
self._got_inputs = False
168167
self._originputs = None
169168
self._output_dir = None
169+
self._id = None # for compatibility with node expansion using iterables
170+
171+
self.name = name
170172
self.iterables = iterables
171173
self.synchronize = synchronize
172174
self.itersource = itersource
@@ -228,7 +230,6 @@ def n_procs(self):
228230
if hasattr(self._interface.inputs, 'num_threads') and isdefined(
229231
self._interface.inputs.num_threads):
230232
return self._interface.inputs.num_threads
231-
232233
return 1
233234

234235
@n_procs.setter
@@ -240,6 +241,13 @@ def n_procs(self, value):
240241
if hasattr(self._interface.inputs, 'num_threads'):
241242
self._interface.inputs.num_threads = self._n_procs
242243

244+
@property
245+
def itername(self):
246+
itername = self._id
247+
if self._hierarchy:
248+
itername = self._hierarchy + '.' + self._id
249+
return itername
250+
243251
def output_dir(self):
244252
"""Return the location of the output directory for the node"""
245253
# Output dir is cached

0 commit comments

Comments
 (0)