Skip to main content

Tool to generate CWL workflows

Project description

# scriptcwl

[![Codacy Badge](https://api.codacy.com/project/badge/Grade/8f383bca18384d8187c10c27affa9d53)](https://www.codacy.com/app/j-vanderzwaan/scriptcwl?utm_source=github.com&utm_medium=referral&utm_content=NLeSC/scriptcwl&utm_campaign=Badge_Grade)
[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/8f383bca18384d8187c10c27affa9d53)](https://www.codacy.com/app/j-vanderzwaan/scriptcwl?utm_source=github.com&utm_medium=referral&utm_content=NLeSC/scriptcwl&utm_campaign=Badge_Coverage)
[![Build Status](https://travis-ci.org/NLeSC/scriptcwl.svg?branch=master)](https://travis-ci.org/NLeSC/scriptcwl)
[![Documentation Status](https://readthedocs.org/projects/scriptcwl/badge/?version=latest)](http://scriptcwl.readthedocs.io/en/latest/?badge=latest)
[![PyPI version](https://badge.fury.io/py/scriptcwl.svg)](https://badge.fury.io/py/scriptcwl)
[![PyPI](https://img.shields.io/pypi/pyversions/scriptcwl.svg)](https://pypi-hypernode.com/pypi/scriptcwl)


scriptcwl is a Python package for creating workflows in
[common workflow language](http://www.commonwl.org/). If you give it a number of CWL
`CommandLineTool`s, you can create a workflow by writing a Python script. This can
be done interactively using [Jupyter Notebooks](http://jupyter.org/). More information
about using scriptcwl can be found in the [documentation](http://scriptcwl.readthedocs.io/en/latest/).

```python
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')
```

This 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](https://github.com/NLeSC/scriptcwl/tree/master/scriptcwl/examples).

## Installation

Install using pip:

```
pip install scriptcwl
```

For development:

```
git clone git@github.com:NLeSC/scriptcwl.git
cd scriptcwl
git checkout develop
pip install -r requirements.txt
python setup.py develop
```

Run tests (including coverage) with:
```
python setup.py develop test
```

## Useful tools

To use scriptcwl for creating CWL workflows, you need CWL `CommandLineTool`s.
There are some software packages that help with generating those
for existing command line tools written in Python:

* [argparse2tool](https://github.com/erasche/argparse2tool#cwl-specific-functionality): Generate CWL CommandLineTool wrappers (and/or Galaxy tool descriptions) from Python programs that use argparse. Also supports the [click](http://click.pocoo.org) argument parser.
* [pypi2cwl](https://github.com/common-workflow-language/pypi2cwl): Automatically run argparse2cwl on any package in PyPi.
* [python-cwlgen](https://github.com/common-workflow-language/python-cwlgen): Generate CommandLineTool and DockerRequirement programmatically

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scriptcwl-0.6.0.tar.gz (17.0 kB view details)

Uploaded Source

File details

Details for the file scriptcwl-0.6.0.tar.gz.

File metadata

  • Download URL: scriptcwl-0.6.0.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for scriptcwl-0.6.0.tar.gz
Algorithm Hash digest
SHA256 3a095ec712baf9c635c946cb97801cdf2302e86165fcfcc6faec45756d7132e6
MD5 297596682b852d2799b93028719d312d
BLAKE2b-256 85850d01c84cbd235a55a9698f4b1d4ef7236cc9b582c0778337a9ff4875c5c6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page