Table 2:
Feature | Airflow and CWL-Airflow | Rabix | Toil | Cromwell | REANA | Galaxy | Arvados | CWLEXEC | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Software installation complexity | Single Python package | JAR | Single Python package | JAR | Group of Python packages | Group of Python packages | Multiple components for minimum 7 nodes system | JAR | ||||||||||||||||
Electron application | node.js application | |||||||||||||||||||||||
License type | Apache License v2.0 | Apache License v2.0 | Apache License v2.0 | BSD-3-Clause | MIT License | Academic Free License v3.0 | Apache License v2.0, AGPL v3.0, CC-BY-SA v3.0 | Apache License v2.0 | ||||||||||||||||
Workflow description language | CWL v1.0 | CWL v1.0 | CWL v1.0 | CWL v1.0 | CWL v1.0 | XML tool file | CWL v1.0 | CWL v1.0 | ||||||||||||||||
Python code | WDL v1.0 | WDL v1.0 | Serial | JSON workflow file | ||||||||||||||||||||
Python code | Yadage | |||||||||||||||||||||||
Docker containerization | + | + | + | + | + | + | + | + | ||||||||||||||||
Singularity containerization | + | − | + | + | − | + | − | − | ||||||||||||||||
Cloud/cluster processing | + | − | + | + | + | + | + | + | ||||||||||||||||
Workflow execution load balancing1 | + | − | + | + | + | + | + | + | ||||||||||||||||
Parallel workflow step execution | + | + | + | + | + | + | + | + | ||||||||||||||||
GUI | REST API | CLI | GUI | REST API | CLI | GUI | REST API | CLI | GUI | REST API | CLI | GUI | REST API | CLI | GUI | REST API | CLI | GUI | REST API | CLI | GUI | REST API | CLI | |
Add new workflow2 | − | − | + | + | ∅ | + | ∅ | ∅ | + | ∅ | + | + | ∅ | + | + | + | + | ∅ | + | + | + | ∅ | ∅ | + |
Set workflow inputs3 | − | + | + | + | ∅ | + | ∅ | ∅ | + | ∅ | + | + | ∅ | + | + | + | + | ∅ | + | + | + | ∅ | ∅ | + |
Start/stop workflow execution | + | + | + | + | ∅ | + | ∅ | ∅ | + | ∅ | + | + | ∅ | + | + | + | + | ∅ | + | + | + | ∅ | ∅ | + |
Manage workflow execution process4 | + | + | + | − | ∅ | − | ∅ | ∅ | + | ∅ | − | − | ∅ | + | + | + | + | ∅ | − | + | + | ∅ | ∅ | + |
Get execution results of the specific workflow5 | + | − | − | + | ∅ | − | ∅ | ∅ | + | ∅ | + | − | ∅ | + | + | + | + | ∅ | + | + | + | ∅ | ∅ | − |
View workflow execution logs | + | − | + | + | ∅ | + | ∅ | ∅ | + | ∅ | + | + | ∅ | + | + | + | + | ∅ | + | + | + | ∅ | ∅ | + |
View workflow execution history and statistics | + | + | + | − | ∅ | − | ∅ | ∅ | + | ∅ | + | − | ∅ | + | + | + | + | ∅ | + | + | + | ∅ | ∅ | + |
+, Present; –, absent; ∅, not applicable; AGPL: Affero General Public License; BSD: Berkely Source Distribution; CC-BY-SA: Creative Commons Attribution-Share-Alike; CLI, command line interface; GUI, graphical user interface; MIT: Massachusetts Institute of Technology; REST API, representational state transfer application program interface; WDL, workflow description language.
1Assign workflow steps to the different pools and queues; use other resource utilization algorithms provided by the computing environment.
2Load the workflow from the file; create the workflow by combining the steps in GUI.
3Set the path to the job file; set input values through the GUI or CLI.
4Pause/resume workflow execution process; manually restart workflow steps.
5Get output file locations by the workflow ID, step ID, execution date, or other identifiers.