Automatic loops

From VistrailsWiki
Jump to navigation Jump to search

Ideas/design notes: https://docs.google.com/document/d/1eMOKL7nC7EL5E-WoBHHZWEe1U_-pUu_VjnsmfTLCA2I/edit

Implementation

The controlflow package did not take advantage of the improvements that can be made by modifying the vistrails core. Utilizing this we can make looping over modules more integrated.

The branch automatic-loops contains a working version using a ListOf module type.

Using a ListOf module as an input will cause the inputs to be looped over and the results returned as new ListOf modules. This means the downstream will be iterated automatically until a ListOf input port is used.

The ListOf type system is very basic and could be improved.

Cartesian product should be implemented by making it selectable on the module.

Choices for activating the loop:

  1. Activate on multiple connections or list input on non-list port. This breaks current uses of multiple input connections like on the List module. Also, list of list is ambiguous.
  2. Activate when using ListOf as input. Need an extra module to construct a ListOf input. This is the current choice.
  3. Activate by setting a flag on the module. We could then loop over inputs as in 1. Iterating downstream modules would have to be set explicitly.

While module

Could be a module setting specifying delay and which output to check.

References

How Taverna does it: http://dev.mygrid.org.uk/wiki/display/taverna/Loops