Wolstencroft, K., Haines, R., Fellows, D., Williams, A., Withers, D.,
  Owen, S., Soiland-Reyes, S., Dunlop, I., Nenadic, A., Fisher, P., Bhagat, J.,
  Belhajjame, K., Bacall, F., Hardisty, A., Nieva de la Hidalga, A.,
  Balcazar Vargas, M.P., Sufi, S., and Goble, C.  2013.
The Taverna workflow suite: designing and executing workflows of Web Services
on the desktop, web or in the cloud.  Nucl. Acids Res. gkt328v1
http://doi.org/doi:10.1093/nar/gkt328

@article{Wolstencroft02052013,
  author = {Wolstencroft, Katherine and Haines, Robert and Fellows, Donal and Williams, Alan and Withers, David and Owen, Stuart and Soiland-Reyes, Stian and Dunlop, Ian and Nenadic, Aleksandra and Fisher, Paul and Bhagat, Jiten and Belhajjame, Khalid and Bacall, Finn and Hardisty, Alex and Nieva de la Hidalga, Abraham and Balcazar Vargas, Maria P. and Sufi, Shoaib and Goble, Carole}, 
  title = {The {Taverna} workflow suite: designing and executing workflows of {Web Services} on the desktop, web or in the cloud},
  year = {2013}, 
  doi = {10.1093/nar/gkt328}, 
  abstract ={The Taverna workflow tool suite (http://www.taverna.org.uk) is designed to combine distributed Web Services and/or local tools into complex analysis pipelines. These pipelines can be executed on local desktop machines or through larger infrastructure (such as supercomputers, Grids or cloud environments), using the Taverna Server. In bioinformatics, Taverna workflows are typically used in the areas of high-throughput omics analyses (for example, proteomics or transcriptomics), or for evidence gathering methods involving text mining or data mining. Through Taverna, scientists have access to several thousand different tools and resources that are freely available from a large range of life science institutions. Once constructed, the workflows are reusable, executable bioinformatics protocols that can be shared, reused and repurposed. A repository of public workflows is available at http://www.myexperiment.org. This article provides an update to the Taverna tool suite, highlighting new features and developments in the workbench and the Taverna Server.}, 
  URL = {http://nar.oxfordjournals.org/content/early/2013/05/02/nar.gkt328.abstract}, 
  eprint = {http://nar.oxfordjournals.org/content/early/2013/05/02/nar.gkt328.full.pdf+html}, 
  journal = {Nucleic Acids Research} 
}
