Skip to content

Commit 6b949b0

Browse files
committed
changing MultiPath class: if value type is range it will be turn into a list
1 parent 9b0686d commit 6b949b0

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

nipype/interfaces/base.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2072,7 +2072,10 @@ def validate(self, object, name, value):
20722072
isinstance(value, list) and
20732073
value and not
20742074
isinstance(value[0], list)):
2075-
newvalue = [value]
2075+
if isinstance(value, range):
2076+
newvalue = list(value)
2077+
else:
2078+
newvalue = [value]
20762079
value = super(MultiPath, self).validate(object, name, newvalue)
20772080

20782081
if len(value) > 0:

nipype/pipeline/engine/tests/test_engine.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,22 @@ def test_mapnode_iterfield_check():
456456
with pytest.raises(ValueError): mod1._check_iterfield()
457457

458458

459+
@pytest.mark.parametrize("x_inp, f_exp", [
460+
(3, [9]), ([2, 3], [4, 9]), (range(3), [0, 1, 4])
461+
])
462+
def test_mapnode_iterfield_type(x_inp, f_exp):
463+
from nipype import MapNode, Function
464+
def square_func(x):
465+
return x ** 2
466+
square = Function(["x"], ["f_x"], square_func)
467+
468+
square_node = MapNode(square, name="square", iterfield=["x"])
469+
square_node.inputs.x = x_inp
470+
471+
res = square_node.run()
472+
assert res.outputs.f_x == f_exp
473+
474+
459475
def test_mapnode_nested(tmpdir):
460476
os.chdir(str(tmpdir))
461477
from nipype import MapNode, Function

0 commit comments

Comments
 (0)