Taverna has a built-in support for dealing with lists of data values. Services can return single values, lists of values, or deeper lists of lists. For instance, a WSDL service that returns matching genes from a database would typically return a list of values. In other cases, it might be required to use a shim from Local Services like Split string into string list by regular expressions to create a list from a single value, typically splitting by a line feed (\n
) or tabulator (\t
).
When creating a workflow input port or an input port for a Beanshell service, one needs to specify the expected list depth.
When connecting services which do not have matching depths, for example connecting a list output to a single value input, Taverna will perform implicit iteration, creating a new list of the outputs of the service, one for each value in the list.
When connecting multiple lists to a service, Taverna will by default do an all-to-all iteration. This behaviour can be customized by specifying the list handling, for instance to specify which port is the inner/outer iteration, or instead pair up values in equally sized lists.
Read More
- List depth — List depth specifies the granularity of a port, like single value (0), list of values (1), list of lists (2), etc.
- Implicit iteration — Implicit iteration occurs when connecting services with different depths, creating a new list of the outputs of the service.
- List handling — By customizing list handling, one can control the implicit iteration, such as pairing up values in equally sized lists.
1 Comment
Hide/Show Comments2010-12-13
Stian Soiland-Reyes
Also see http://taverna.knowledgeblog.org/2010/12/13/iteration-in-taverna-workflows/