nipy / mindboggle

Automated anatomical brain label/shape analysis software (+ website)
http://mindboggle.info
Other
146 stars 54 forks source link

consolidate cloned nodes into a single node? #6

Closed binarybottle closed 12 years ago

binarybottle commented 12 years ago

the following part of the workflow is growing out of control:

https://github.com/binarybottle/mindboggle/blob/master/mindboggle/pipeline.py#L519

i have cloned one node many times and simply change its name and connections. i was hoping to turn it into a mapnode, but the inputs are from other parts of the workflow and wouldn't go into a list. is there a way?

satra commented 12 years ago

why don't you follow a merge->mapnode->split->rename or merge->mapnode->rename pattern

binarybottle commented 12 years ago

thanks, satra! can you point me to an example?

cheers, @rno

On Tue, Aug 21, 2012 at 9:01 AM, Satrajit Ghosh notifications@github.comwrote:

why don't you follow a merge->mapnode->split->rename or merge->mapnode->rename pattern

— Reply to this email directly or view it on GitHubhttps://github.com/binarybottle/mindboggle/issues/6#issuecomment-7900084.

binarybottle commented 12 years ago

found it in the docs, of course!:

http://nipy.sourceforge.net/nipype/interfaces/generated/nipype.interfaces.utility.html#merge

thanks again!

binarybottle commented 12 years ago

the example in the docs has static inputs:

http://nipy.sourceforge.net/nipype/interfaces/generated/nipype.interfaces.utility.html#merge

i was hoping to have many inputs from different workflows, to replace, for example:

mbflow.connect([(measureflow, shapeflow, [('Load_depth.Scalars','Fold_depth.values')])]) mbflow.connect([(measureflow, shapeflow, [('Load_curvature.Scalars','Fold_curvature.values')])]) mbflow.connect([(measureflow, shapeflow, [('Load_min_curvature.Scalars','Fold_min_curvature.values')])]) mbflow.connect([(measureflow, shapeflow, [('Load_max_curvature.Scalars','Fold_max_curvature.values')])]) mbflow.connect([(measureflow, shapeflow, [('Load_gauss_curvature.Scalars','Fold_gauss_curvature.values')])]) ...

can i use Merge to accomplish something like this?:

mi.inputs.in1 = Fold_curvature.values ... cheers, @rno

arno klein arno@binarybottle.com

http://www.binarybottle.com

research asst professor psychiatry & behavioral science stony brook university

On Tue, Aug 21, 2012 at 10:08 AM, Arno Klein arno@binarybottle.com wrote:

thanks, satra! can you point me to an example?

cheers, @rno

On Tue, Aug 21, 2012 at 9:01 AM, Satrajit Ghosh notifications@github.comwrote:

why don't you follow a merge->mapnode->split->rename or merge->mapnode->rename pattern

— Reply to this email directly or view it on GitHubhttps://github.com/binarybottle/mindboggle/issues/6#issuecomment-7900084.

binarybottle commented 12 years ago

to be more specific, i could create a function that takes multiple inputs that are outputs of other functions in the pipeline:

input_names = ['depths', 'curvatures', 'min_curvatures', 'max_curvatures', 'gauss_curvatures', ...

but i would prefer to merge them into a list of lists, each containing a different set of shape values.

satra commented 12 years ago

many choices, many patterns ... the choice will depend on what the inputs are like and what you need to do with it.

binarybottle commented 12 years ago

for now i'll just try a function with *args to keep it flexible...

On Tue, Aug 21, 2012 at 12:12 PM, Satrajit Ghosh notifications@github.comwrote:

many choices, many patterns ... the choice will depend on what the inputs are like and what you need to do with it.

— Reply to this email directly or view it on GitHubhttps://github.com/binarybottle/mindboggle/issues/6#issuecomment-7906399.