I am trying to build a custom interface that will dynamically generate the outputspec attribute based on the dictionary input. However, the output is not showing up when I do .help()
Here is what I have previously and if I run help()
it will show the inputs and outputs of the node.
class _GatherInputsOutputSpec(TraitedSpec):
a_file = traits.Str()
b_file = traits.Str()
c_file = traits.Str()
class GatherInputs(SimpleInterface):
def __init__(self, dict_a):
super().__init__()
self.dict_a = dict_a
self.outputspec = _GatherInputsOutputSpec
But when I tried to build the outputspec class dynamically like below, the outputs will not show up when I do help()
and run()
function is not working as well.
class Context(SimpleInterface):
def __init__(self, dict_a):
super().__init__()
self.dict_a = dict_a
self.outputspec = self._outputspec_build(dict_a)
@staticmethod
def _outputspec_build(dict_a):
outputspec_class = type("ConfigOutputSpec", (nipype.interfaces.base.specs.TraitedSpec, ),{'__module__': '__main__'})
for k in dict_a.get('inputs').keys():
setattr(outputspec_class, k, traits.Str())
return outputspec_class
Am I setting the attribute incorrectly?