/bio-cwl-tools

Primary LanguageCommon Workflow LanguageApache License 2.0Apache-2.0

Goals: to collect and collaboratively maintain CWL CommandLineTool descriptions of any biology/life-sciences related applications.

All Contributors Build Status

Non-goals: software packaging or containerization, go to https://biocontainers.pro for that

All CWL tool descriptions are licensed under the Apache 2.0 license. The underlying tools are under one or more Free and Open Source Software licenses.

Styleguide

Naming Tools ๐Ÿ“›

Tools should follow the convention of being prefixed by the parent tool name and Camelcase like so i.e. BWA-Mem.cwl or BWA-Index.cwl

Tool Feature Requirements ๐Ÿ†•

The first 3 lines of tool wrappers should be as follows. Our CI/CD system checks for these so make sure to include them so they can be merged into the repo.

#!/usr/bin/env cwl-runner
cwlVersion: v1.0
class: CommandLineTool

The first line allows the tool to be run as a single command. The second specifies the cwl version.

IMPORTANT! We are using cwlVersion v1.0 unless a v1.1 feature is needed.

Making Files Executable โœด๏ธ

Files should be marked as executable before being added

chmod +x tool.cwl

Requirements & Hints Section ๐Ÿงพ

There is a requirements section which handles settings for the runner config. Docker containers should be from biocontainers.pro if possible and placed in the hints section.

requirements:
  InlineJavascriptRequirement: {}
hints:
  DockerRequirement:
    dockerPull: "quay.io/biocontainers/bwa:0.7.17--ha92aebf_3"

Validation โœ…

Tools need to be free of warning when running with

cwltool --validate

Adding Tools To The Repository โž•

Please add tools via pull requests to the repository. Our CI/CD runs validation against the tools and will soon support doing unit tests on the individual tools.

Descriptions ๐Ÿ“ƒ

Tool descriptions should be motivated by a real world use of this tool in a workflow. The description should focus on a single way of using the tool. Signs that a tool description is including too much: lots of javascript; complicated data structures; every single flag is listed.

Schema Description

If you use schema.org annotations, specify the schema using the RDF version: $schemas: [ http://schema.org/version/latest/schema.rdf ]

However, don't use s:mainEntity, put that information under hints as a SoftwareRequirement

Contributors โœจ

Thanks goes to these wonderful people (emoji key):


KerstenBreuer

๐Ÿ’ป

Peter Amstutz

๐Ÿค”

Michael Kotliar

๐Ÿค” ๐Ÿ’ป

pvanheus

๐Ÿ’ป

medcelerate

๐Ÿค”

stain

๐Ÿ’ป

This project follows the all-contributors specification. Contributions of any kind welcome!