Tool to generate CWL workflows
Project description
scriptcwl is a Python package for creating workflows in Common Workflow Language (CWL). If you give it a number of CWL CommandLineTools, you can create a workflow by writing a Python script. This can be done interactively using Jupyter Notebooks. The full documentation can be found on Read the Docs.
Given CWL CommandLineTools for add and multiply (these are available in scriptcwl), a CWL specification of this workflow can be written as:
from scriptcwl import WorkflowGenerator
with WorkflowGenerator() as wf:
wf.load(steps_dir='/path_to_scriptcwl/scriptcwl/examples/')
num1 = wf.add_input(num1='int')
num2 = wf.add_input(num2='int')
answer1 = wf.add(x=num1, y=num2)
answer2 = wf.multiply(x=answer1, y=num2)
wf.add_outputs(final_answer=answer2)
wf.save('add_multiply_example_workflow.cwl')
The workflow has two integers as inputs (num1 and num2), and first adds these two numbers (wf.add(x=num1, y=num2)), and then multiplies the answer with the second input (num2). The result of that processing step is the output of the workflow. Finally, the workflow is saved to a file. The result looks like:
#!/usr/bin/env cwl-runner
cwlVersion: v1.0
class: Workflow
inputs:
num1: int
num2: int
outputs:
final_answer:
type: int
outputSource: multiply/answer
steps:
add:
run: add.cwl
in:
y: num2
x: num1
out:
- answer
multiply:
run: multiply.cwl
in:
y: num2
x: add/answer
out:
- answer
The Python and CWL files used in the example can be found in the examples folder.
Installation
Install using pip:
pip install scriptcwl
For development:
git clone git@github.com:NLeSC/scriptcwl.git
cd scriptcwl
python setup.py develop
Run tests (including coverage) with:
python setup.py test
Useful tools
To use scriptcwl for creating CWL workflows, you need CWL CommandLineTools. There are some software packages that help with generating those for existing command line tools written in Python:
argparse2tool: Generate CWL CommandLineTool wrappers (and/or Galaxy tool descriptions) from Python programs that use argparse. Also supports the click argument parser.
pypi2cwl: Automatically run argparse2cwl on any package in PyPi.
python-cwlgen: Generate CommandLineTool and DockerRequirement programmatically
License
Copyright (c) 2016-2018, Netherlands eScience Center, University of Twente
Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file scriptcwl-0.8.1.tar.gz
.
File metadata
- Download URL: scriptcwl-0.8.1.tar.gz
- Upload date:
- Size: 23.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.33.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4ecb2e3120e7be359eebb1a96f1ec16157ac5b20741cc70e8fa385e9bd7774f |
|
MD5 | b2b493465d1fcedf9d0a7dc788f542a9 |
|
BLAKE2b-256 | b185d186a7ffaedda6422c3a5d930c95be2ee2584811b6d70ba00d1aa8750001 |