Skip to main content

Contains classes and helpers to build a workflow, and provide options to convert to CWL / WDL

Project description

Janis (Pre-alpha)

GitHub stars Build Status Documentation Status PyPI version codecov Code style: black

Janis is a framework creating specialised, simple workflow definitions that are then transpiled to
Common Workflow Language or Workflow Definition Language.

Documentation is hosted here: https://janis.readthedocs.io/

Introduction

WARNING: this project is work-in-progress and is provided as-is without warranty of any kind. There may be breaking changes committed to this repository without notice.

Janis gives you an API to build computational workflows and will generate a workflow description in CWL and WDL. By using Janis, you get type-safety, portability and reproducibility across all of your execution environments.

Janis requires a Python installation > 3.6, and can be installed through PIP (project page):

# Install janis and the bioinformatics tools
pip3 install janis-pipelines[bioinformatics]  

You can import Janis into your project with:

import janis as j  

Structure

Janis is structured into components:

  • core - contains classes and functions to assist in the workflow building.
    • bioinformatics - has bioinformatics tools and data types (import janis.bioinformatics )
    • unix - Installed by default (import janis.unix)
  • runner - An assistant to run Janis workflows using different workflow engines with common semantics.

This repository manages the dependencies for installation and drives the documentation.

Example

Further information: Simple Workflow

Below we've constructed a simple example that takes a string input, calls the echo tool and exposes the Echo tool's output as a workflow output.

import janis as j
from janis.unix.tools.echo import Echo

w = j.Workflow("workflowId")

inp = j.Input("inputIdentifier", data_type=j.String(), value="Hello, World!")
echo = j.Step("stepIdentifier", tool=Echo())
out = j.Output("outputIdentifier")

w.add_edges([
    (inp, echo.inp),  # Connect 'inp' to 'echostep'
    (echo.out, out),  # Connect output of 'echostep' to 'out'
])

# Will print the CWL, input file and relevant tools to the console
w.translate("cwl", to_disk=False)  # or "wdl"

We can export a CWL representation to the console using .translate("cwl"). By including the to_disk=True parameter, we can write this workflow to disk at the current location.

More examples

Usage

Janis has an API that mirrors the workflow concepts:

  • j.Workflow: A workflow represents the Edges between Input, Step, Output

    • j.Input: An input to a Workflow, has an identifier, a type and a value.
    • j.Step: A step also has an identifier and a Tool (CommandTool or a nested Workflow).
    • j.Output: An output to a workflow has an identifier and is connected to a step.
  • j.CommandTool: A command line style tool that builds it's command through the inputs and arguments.

    • j.ToolInput: An input to a tool, has an identifier, a type and command line options like position, prefix
    • j.ToolArgument: An argument to a tool that cannot be overridden. Has a value and command line options like position and prefix. The value can be a derived type, like an InputSelector or StringFormatter.
    • j.ToolOutput: Output to a tool, has an identifier, a type and a glob.

About

Further information: About

This project was produced as part of the Portable Pipelines Project in partnership with:

References:

Through conference or talks, this project has been referenced by the following titles:

  • Walter and Eliza Hall Institute Talk (WEHI) 2019: Portable Pipelines Project: Developing reproducible bioinformatics pipelines with standardised workflow languages
  • Bioinformatics Open Source Conference (BOSC) 2019: Janis: an open source tool to machine generate type-safe CWL and WDL workflows
  • Victorian Cancer Bioinformatics Symposium (VCBS) 2019: Developing portable variant calling pipelines with Janis

Support

Contributions

Further information: Development

This project is work-in-progress and is still in developments. Although we welcome contributions, due to the immature state of this project we recommend raising issues through the Github issues page for Pipeline related issues.

Information about the project structure and more on contributing can be found within the documentation.

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

janis pipelines-0.5.0.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

janis_pipelines-0.5.0-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

Details for the file janis pipelines-0.5.0.tar.gz.

File metadata

  • Download URL: janis pipelines-0.5.0.tar.gz
  • Upload date:
  • Size: 9.9 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.32.2 CPython/3.6.7

File hashes

Hashes for janis pipelines-0.5.0.tar.gz
Algorithm Hash digest
SHA256 2dbefda34d11f6221d68a13921b24c20350271c2ed5537aba7682f1a11a54855
MD5 999cfa2202d392ab1da20addd411c0a5
BLAKE2b-256 b26e0e227d4ee7cee7f047d7f3f53c6d5b8bb3b0bcd09d312dd0ca82335ba9a3

See more details on using hashes here.

File details

Details for the file janis_pipelines-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: janis_pipelines-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 23.2 kB
  • Tags: Python 3
  • 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.32.2 CPython/3.6.7

File hashes

Hashes for janis_pipelines-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a2faaa2e5982538d08781ed070a916088ed4da58e32c5860e2844ffc4f9e1f0d
MD5 90aefb6512f347ebe636db7506516d9c
BLAKE2b-256 e5ff2231617a627b08ff0b9017d630582a914b12b6ed28397621ddf403935dc8

See more details on using hashes here.

Supported by

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