Skip to content
 
 

Repository files navigation

Platform API Middle-Layer (PAML)

PAML(Platform API Middle-Layer) is an installable Python package to enable anyone to (easily) write cross-platform launchers. It is used to abstract the specifics of a platform from workflow orchestration. This abstraction of the platform layer enables the orchestration component to be platform independent to support interoperability.

Contents

Features

Multiple supported platforms

  • Arvados
  • SevenBridges
  • NGS360 (via the GA4GH WES API)

Usage

Initial setup

  1. Create a virtual environment that your launcher will use

    python3 -m venv env
    source env/bin/activate
    
  2. Install this package in your virtual environment

    pip install git+https://github.com/NGS360/PAML.git@<tag>#egg=cwl_platform
    

    where <tag> is a release tag such as v0.5.3, listed on the releases page. The v is part of the tag name and is required - @0.5.3 does not resolve to anything.

    Alternatively, if you've cloned this repo and want to install from source,

    pip install .
    
  3. Develop Launcher

    Follow ExampleLauncher as an example

Versioning

PAML follows Semantic Versioning. A release is a git tag of the form vMAJOR.MINOR.PATCH, and the package version is derived from that tag, so an installed build always reports where it came from:

import cwl_platform
print(cwl_platform.__version__)
  • PATCH (v0.5.1 to v0.5.2) - bug fixes and backwards-compatible changes
  • MINOR (v0.5.2 to v0.6.0) - new backwards-compatible functionality
  • MAJOR (v0.6.0 to v1.0.0) - breaking changes

The version is below 1.0.0, so the API is not yet stable. SemVer permits a 0.x minor release to break compatibility, so pin an exact tag rather than tracking a branch, and check the CHANGELOG before upgrading.

A few tags predating this convention have only two components (v0.5, for example). They are left as they are, because moving a published tag would break anyone already pinned to it.

See RELEASE_PROCESS.md for how releases are made.

FAQ

This repo hasn't been around long enough to earn a FAQ!

Contributing

Contributions are always welcome!

If you find a bug 🐛, please open a bug report.

If you have an idea for an improvement or new feature 🚀, please open a feature request.

Acknowledgements

  • Maggie Chen
  • Steve Vasquez-Grinnell

About

Multi-Platform Launcher Framework

Resources

Stars

3 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages