Skip to content

bionode/bionode-watermill

Repository files navigation

bionode logo
bionode.io

bionode-watermill

Bionode-watermill: A (Not Yet Streaming) Workflow Engine

npm Travis Travis Codecov private Dependencies npm Gitter

Table of Contents

What is bionode-watermill

Bionode-watermill is a workflow engine that lets you assemble and run bioinformatic pipelines with ease and less overhead. Bionode-watermill pipelines are essentially node.js scripts in which tasks are the modules that will be assembled in the final pipeline using orchestrators.

Main features

  • Lots of modularity - tasks can be recycled as many times as you want!
  • Reusability - tasks can be reused many times within and between pipelines.
  • Automated Input/Output handling - no need to worry about input/output location, bionode-watermill does that for you.
  • Ability to run programs using Unix shell - As demonstrated by myTask. So, there is no need to reinvent the wheel, you can use your previous scripts and programs within bionode-watermill framework.
  • Node.js integration - not explored here, but you can use javascript alongside with bionode-watermill tasks and pipelines and even inside tasks instead of Unix commands.
  • Streamable tasks (still not implemented - Issue #79)

Who is this tool for?

Bionode-watermill is for biologists who understand it is important to experiment with sample data, parameter values, and tools. Compared to other workflow systems, the ease of swapping around parameters and tools is much improved, allowing you to iteratively compare results and construct more confident inferences. Consider the ability to construct your own Teaser for your data with a simple syntax, and getting utmost performance out of the box.

Bionode-watermill is for programmers who desire an efficient and easy-to-write methodology for developing complex and dynamic data pipelines, while handling parallelization as much as possible. Bionode-watermill is an npm module, and is accessible by anyone willing to learn a little JavaScript. This is in contrast to other tools which develop their own DSL (domain specific language), which is not useful outside the tool. By leveraging the npm ecosystem and JavaScript on the client, Bionode-watermill can be built upon for inclusion on web apis, modern web applications, as well as native applications through Electron. Look forward to seeing Galaxy-like applications backed by a completely configurable Node API.

Installation

Local installation:

npm install bionode-watermill

Global installation:

npm install bionode-watermill -g

Documentation

Our documentation is available here. There you may find how to use bionode-watermill to construct and run your pipelines. Moreover, you will also find the description of the API to help anyone willing to contribute.

Tutorial

Example pipelines

Why bionode-watermill?

This blog post compares the available tools to deal with NGS workflows, explaining the advantages of each one, including bionode-watermill.

Contributing

We welcome all kinds of contributions at all levels of experience, please refer to the Issues section. Also, you can allways reach us on gitter.

Feel free to submit your pipeline to us

Just make a PR for us, that adds a pipeline under ./examples/pipelines/. You can check some of the already existing examples here.