Domain services and Shim Services
Conceptually, there are two different types of services used in Taverna; domain services and shim or “helper” services.
- Domain services perform a scientific function. These services are generally provided by third parties and cannot usually be altered or changed. For example, the GenBank, EMBL and BioMart databases and the NCBI_BLAST sequence similarity and alignment tool.
- Shim services do not perform scientific functions. They are ‘helper’ services, or data transformation services. They are used to connect together domain services when their data types or formats are incompatible. For example, a shim would be used to change the format of a plain text protein sequence to a Fasta formatted protein sequence if the next service in the workflow only accepted Fasta-formatted sequences. (Hull et al., 2006; Radetzki et al., 2006). The term ‘shim’ is derived from engineering where it means a thin piece of metal or wood used to fill in space between ill-fitting components.
Unlike domain services, shims can often be created by the scientist designing a workflow. A rule of thumb for distinguishing a domain service from a shim service is that a workflow, when the shims services are invisible, is equivalent to the methods section of a scientific paper. If a service needs to be explicitly mentioned in the method, then it is not a shim. This distinction is an important one for describing services and affects the way scientists might discover and use them.
Choosing a domain service and choosing a shim service are different. There are many BLAST services and the all do ‘the same thing’ i.e. they perform BLAST analyses. However, in reality, they may not do the same thing. Each one searches different underlying DNA and protein databases. If some search the same underlying databases, they may not use the same version of those databases. The version of the BLAST algorithm itself might also be different. The only way to determine this is by using the experience of the scientists involved in the experiment. In contrast, shim services are much simpler. The implementation is immaterial as long as the input and output are correct.
In a Taverna workflow, because there is no type system for all the bioinformatics services, shims are common. Figure 1 shows a taverna workflow with the shims highlighted – note that shims are needed in between nearly every domain service.
There are two ways of finding domain services:
- Using the BioCatalogue, a registry of services for the Life Sciences
- Using the Taverna services panel.
Shim or helper services are found: