It'll be easier if you submit a pull request on Nipype, because then we can comment directly on the code, but:
How do I format different processing streams (featdir versus manual inputs)? e.g. I want featDir to be mutually exclusive with infile,mask,affmat,warp, and mc.
....xor can make all the options mutually exclusive with eachother, but I want to group the options (infile,mask,affmat,warp,mc)
I believe you can simply set
xor=['infile', 'mask', 'affmat', 'warp', 'mc'] in the
featDir trait. They should all also have
How do the outputs output_spec actually relate to the output filenames?
The output of
_list_outputs should be a dict with a key for each item in the output spec, and a value that matches the trait.
this is a tuple, versus the single outputs, how do I return a variable number of outputs?
You can specify something like this with
OutputMultiPath. For instance, judging from your
_list_outputs, I'd say your output spec could be:
out_file = OutputMultiPath(File(exists=True), desc='...')
This makes it so that you always get a list of files that exist, though it may be empty. However, this requires users to know the order of the aggressive and non-aggressive files in the list.