Skip to content

Tool definition

Description

We define a Tool to be an executable script/program inside a docker container. In order to be recognized as a Tool, the container has to meet a set of requirements, which are described here

File specification

The specification is defined in a single YAML file, located at /src/tool.yml. This file holds specifications about the container image itself. At the current state, only one field is defined and supported: tools. The tools field contains a named struct with Tool specifications indexed by the Tool name.

The file content of the tool.yml has to at least include:

tools:
  toolname: Tool 

  [...] 

Fields

The following section will define all mandatory and optional fields of a Tool entity.

title

The title is mandatory and should contain a descriptive, short single line title to identify a tool. It is recommended to use titles with less than 64 characters.

description

Multiline comment to describe the purpose of a tool and needed information to call a tool properly, as well as specificities of implementation which might be relevant for the user. The description can be supplied as Markdown, although tool-frameworks are not required to parse Markdown. Thus a Markdown description might be rendered as plain text.

A multiline descriptions in YAML can be specified like:

description: | 
  This is the first line.
  This is the second line.

parameters

Parameters for tools are also an Entity defined in the specification. The parameters field hold a struct of Parameter instances indexed by the parameter name. An example can be found in the Example section below or on the Parameters page.

data

Input data for a tool is defined separately from the parameters in an additional section of tool.yml. Just like for the parameters, the input data of a tool is indexed by their names. In case no further configuration is needed, data may be supplied in a single list of dataset names. Data has to be provided as files, which may be nested in sub-folders of /in/.

Example

The following YAML file contains a sample tool specification, similar to the dummy specifications found in the different tool template containers.

tools:
  foobar:
    title: Foo Bar
    description: A dummy tool to exemplify the YAML file
    version: 0.1
    parameters:
      foo_int: 
        type: integer
      foo_float:
        type: float
      foo_string:
        type: string
      foo_enum:
        type: enum
        values:
          - foo
          - bar
          - baz
      foo_array:
        type: integer
        array: true
    data:
      - foo_csv:
      - foo_nc: