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 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.
- 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.