Skip to content

Commit de91a1b

Browse files
committed
setup default values
1 parent cc45dd3 commit de91a1b

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

nipype/interfaces/dipy/base.py

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
absolute_import)
55

66
import os.path as op
7+
import inspect
78
import numpy as np
89
from ... import logging
910
from ..base import (traits, File, isdefined, LibraryBaseInterface,
@@ -130,17 +131,25 @@ def create_interface_specs(class_name, params=None, BaseClass=TraitedSpec):
130131
"""
131132
attr = {}
132133
if params is not None:
133-
for name, dipy_type, desc in params:
134+
for p in params:
135+
name, dipy_type, desc = p[0], p[1], p[2]
134136
is_file = bool("files" in name or "out_" in name)
135137
traits_type, is_mandatory = convert_to_traits_type(dipy_type,
136138
is_file)
137139
# print(name, dipy_type, desc, is_file, traits_type, is_mandatory)
138-
if isinstance(BaseClass, BaseInterfaceInputSpec):
139-
attr[name] = traits_type(desc=desc[-1], mandatory=is_mandatory)
140+
if BaseClass.__name__ == BaseInterfaceInputSpec.__name__:
141+
if len(p) > 3:
142+
attr[name] = traits_type(p[3], desc=desc[-1],
143+
usedefault=True,
144+
mandatory=is_mandatory)
145+
else:
146+
attr[name] = traits_type(desc=desc[-1],
147+
mandatory=is_mandatory)
140148
else:
141-
attr[name] = traits_type(desc=desc[-1], exists=True)
149+
attr[name] = traits_type(p[3], desc=desc[-1], exists=True,
150+
usedefault=True,)
142151

143-
newclass = type(class_name, (BaseClass, ), attr)
152+
newclass = type(str(class_name), (BaseClass, ), attr)
144153
return newclass
145154

146155

@@ -166,15 +175,21 @@ def dipy_to_nipype_interface(cls_name, dipy_flow, BaseClass=DipyBaseInterface):
166175
167176
"""
168177
parser = IntrospectiveArgumentParser()
169-
parser.add_workflow(dipy_flow())
170-
input_parameters = parser.positional_parameters + parser.optional_parameters
178+
flow = dipy_flow()
179+
parser.add_workflow(flow)
180+
default_values = inspect.getargspec(flow.run).defaults
181+
optional_params = [args + (val,) for args, val in zip(parser.optional_parameters, default_values)]
182+
start = len(parser.optional_parameters) - len(parser.output_parameters)
183+
184+
output_parameters = [args + (val,) for args, val in zip(parser.output_parameters, default_values[start:])]
185+
input_parameters = parser.positional_parameters + optional_params
171186

172187
input_spec = create_interface_specs("{}InputSpec".format(cls_name),
173188
input_parameters,
174189
BaseClass=BaseInterfaceInputSpec)
175190

176191
output_spec = create_interface_specs("{}OutputSpec".format(cls_name),
177-
parser.output_parameters,
192+
output_parameters,
178193
BaseClass=TraitedSpec)
179194

180195
def _run_interface(self, runtime):
@@ -190,7 +205,7 @@ def _list_outputs(self):
190205

191206
return outputs
192207

193-
newclass = type(cls_name, (BaseClass, ),
208+
newclass = type(str(cls_name), (BaseClass, ),
194209
{"input_spec": input_spec,
195210
"output_spec": output_spec,
196211
"_run_interface": _run_interface,

nipype/interfaces/dipy/reconstruction.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
from dipy.workflows.reconst import (ReconstDkiFlow, ReconstCSAFlow,
2828
ReconstCSDFlow, ReconstMAPMRIFlow,
2929
ReconstDtiFlow)
30-
30+
3131
DKIModel = dipy_to_nipype_interface("DKIModel", ReconstDkiFlow)
3232
MapmriModel = dipy_to_nipype_interface("MapmriModel", ReconstMAPMRIFlow)
3333
DTIModel = dipy_to_nipype_interface("DTIModel", ReconstDtiFlow)

0 commit comments

Comments
 (0)