Metadata-Version: 1.1
Name: scriptcwl
Version: 0.7.2
Summary: Tool to generate CWL workflows
Home-page: https://github.com/nlesc/scriptcwl
Author: Janneke van der Zwaan
Author-email: j.vanderzwaan@esciencecenter.nl
License: Apache 2.0
Download-URL: https://github.com/NLeSC/scriptcwl/archive/0.7.2.tar.gz
Description: scriptcwl
        =========
        
        |codacy_grade| |codacy_coverage| |travis| |documentation| |pypi_version| |pypi_supported| |zenodo|
        
        scriptcwl is a Python package for creating workflows in
        `Common Workflow Language (CWL) <http://www.commonwl.org/>`_. 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 <http://jupyter.org/>`_. The full
        documentation can be found on `Read the Docs <http://scriptcwl.readthedocs.io/en/latest/>`_.
        
        .. image:: https://github.com/NLeSC/scriptcwl/blob/develop/docs/add-multiply-example-workflow.png?raw=true
            :alt: add multiply example workflow
            :align: center
        
        Given CWL ``CommandLineTools`` for ``add`` and ``multiply`` (these are available
        in `scriptcwl <https://github.com/NLeSC/scriptcwl/tree/master/scriptcwl/examples>`_),
        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:
        
        .. code-block:: sh
        
          #!/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:
        
        .. code-block:: sh
        
          pip install scriptcwl
        
        
        For development:
        
        .. code-block:: sh
        
          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:
        
        .. code-block:: sh
        
          python setup.py develop 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 <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
        
        .. |codacy_grade| image:: https://api.codacy.com/project/badge/Grade/8f383bca18384d8187c10c27affa9d53
                             :target: https://www.codacy.com/app/jvdzwaan/scriptcwl?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=NLeSC/scriptcwl&amp;utm_campaign=Badge_Grade
        
        .. |codacy_coverage| image:: https://api.codacy.com/project/badge/Coverage/8f383bca18384d8187c10c27affa9d53
                               :target: https://www.codacy.com/app/jvdzwaan/scriptcwl?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=NLeSC/scriptcwl&amp;utm_campaign=Badge_Coverage
        
        .. |travis| image:: https://travis-ci.org/NLeSC/scriptcwl.svg?branch=master
                      :target: https://travis-ci.org/NLeSC/scriptcwl
        
        .. |documentation| image:: https://readthedocs.org/projects/scriptcwl/badge/?version=latest
                            :target: http://scriptcwl.readthedocs.io/en/latest/?badge=latest
        
        .. |pypi_version| image:: https://badge.fury.io/py/scriptcwl.svg
                            :target: https://badge.fury.io/py/scriptcwl
        
        .. |pypi_supported| image:: https://img.shields.io/pypi/pyversions/scriptcwl.svg
                              :target: https://pypi.python.org/pypi/scriptcwl
        
        .. |zenodo| image:: https://zenodo.org/badge/70679474.svg
                              :target: https://zenodo.org/badge/latestdoi/70679474
                              :alt: DOI
        
Keywords: cwl,workflow,pipeline,common workflow language
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
