Files
openpipeline/schemas/defs_common.yaml

396 lines
15 KiB
YAML
Raw Normal View History

definitions:
Config:
description: "A Viash configuration is a YAML file which contains metadata to\
\ describe the behaviour and build target(s) of a component. \nWe commonly\
\ name this file `config.vsh.yaml` in our examples, but you can name it however\
\ you choose. \n"
type: "object"
properties:
label:
description: "A clean version of the component's name. This is only used for\
\ documentation."
type: "string"
license:
description: "The license of the package."
type: "string"
authors:
description: "A list of authors. An author must at least have a name, but\
\ can also have a list of roles, an e-mail address, and a map of custom\
\ properties.\n\nSuggested values for roles are:\n \n| Role | Abbrev. |\
\ Description |\n|------|---------|-------------|\n| maintainer | mnt |\
\ for the maintainer of the code. Ideally, exactly one maintainer is specified.\
\ |\n| author | aut | for persons who have made substantial contributions\
\ to the software. |\n| contributor | ctb| for persons who have made smaller\
\ contributions (such as code patches).\n| datacontributor | dtc | for persons\
\ or organisations that contributed data sets for the software\n| copyrightholder\
\ | cph | for all copyright holders. This is a legal concept so should use\
\ the legal name of an institution or corporate body.\n| funder | fnd |\
\ for persons or organizations that furnished financial support for the\
\ development of the software\n\nThe [full list of roles](https://www.loc.gov/marc/relators/relaterm.html)\
\ is extremely comprehensive.\n"
type: "array"
items:
type: object
properties:
__merge__:
type: string
pattern: "^/src/authors/.*\\.yaml$"
roles:
description: |
Role of the author. Possible values:
* `"author"`: Authors who have made substantial contributions to the component.
* `"maintainer"`: The maintainer of the component.
* `"contributor"`: Authors who have made smaller contributions (such as code patches etc.).
type: array
items:
enum: [maintainer, author, contributor]
status:
description: "Allows setting a component to active, deprecated or disabled."
$ref: "defs_viash.yaml#/definitions/Status"
requirements:
description: "Computational requirements related to running the component.\
\ \n`cpus` specifies the maximum number of (logical) cpus a component is\
\ allowed to use., whereas\n`memory` specifies the maximum amount of memory\
\ a component is allowed to allicate. Memory units must be\nin B, KB, MB,\
\ GB, TB or PB for SI units (1000-base), or KiB, MiB, GiB, TiB or PiB for\
\ binary IEC units (1024-base)."
$ref: "defs_viash.yaml#/definitions/ComputationalRequirements"
repositories:
description: "(Pre-)defines repositories that can be used as repository in\
\ dependencies.\nAllows reusing repository definitions in case it is used\
\ in multiple dependencies."
type: "array"
items:
$ref: "defs_viash.yaml#/definitions/RepositoryWithName"
dependencies:
description: "Allows listing Viash components required by this Viash component"
type: "array"
items:
$ref: "defs_viash.yaml#/definitions/Dependency"
summary:
description: "A one-sentence summary of the component. This is only used for\
\ documentation."
type: "string"
runners:
description: "A list of runners to execute target artifacts.\n\n - ExecutableRunner\n\
\ - NextflowRunner\n"
type: "array"
items:
$ref: "defs_viash.yaml#/definitions/Runner"
name:
description: "Name of the component and the filename of the executable when\
\ built with `viash build`."
type: "string"
argument_groups:
description: "A grouping of the arguments, used to display the help message.\n\
\n - `name: foo`, the name of the argument group. \n - `description: Description\
\ of foo`, a description of the argument group. Multiline descriptions are\
\ supported.\n - `arguments: [arg1, arg2, ...]`, list of the arguments.\n\
\n"
type: "array"
items:
$ref: "defs_viash.yaml#/definitions/ArgumentGroup"
description:
description: "A description of the component. This is only used for documentation.\
\ Multiline descriptions are supported."
type: "string"
usage:
description: "A description on how to use the component. This will be displayed\
\ with `--help` under the 'Usage:' section."
type: "string"
info:
description: "Structured information. Can be any shape: a string, vector,\
\ map or even nested map."
type: "object"
version:
description: "Version of the component. This field will be used to version\
\ the executable and the Docker container."
type: "string"
links:
description: "External links of the component."
$ref: "defs_viash.yaml#/definitions/Links"
references:
description: "References to external resources related to the component."
$ref: "defs_viash.yaml#/definitions/References"
engines:
description: "A list of engine environments to execute target artifacts in.\n\
\n - NativeEngine\n - DockerEngine\n"
type: "array"
items:
$ref: "defs_viash.yaml#/definitions/Engine"
resources:
description: "Resources are files that support the component. The first resource\
\ should be a script that will be executed when the component is run. Additional\
\ resources will be copied to the same directory.\n\nCommon properties:\n\
\n * type: `file` / `r_script` / `python_script` / `bash_script` / `javascript_script`\
\ / `scala_script` / `csharp_script`, specifies the type of the resource.\
\ The first resource cannot be of type `file`. When the type is not specified,\
\ the default type is simply `file`.\n * dest: filename, the resulting name\
\ of the resource. From within a script, the file can be accessed at `meta[\"\
resources_dir\"] + \"/\" + dest`. If unspecified, `dest` will be set to\
\ the basename of the `path` parameter.\n * path: `path/to/file`, the path\
\ of the input file. Can be a relative or an absolute path, or a URI. Mutually\
\ exclusive with `text`.\n * text: ...multiline text..., the content of\
\ the resulting file specified as a string. Mutually exclusive with `path`.\n\
\ * is_executable: `true` / `false`, whether the resulting resource file\
\ should be made executable.\n"
type: "array"
items:
$ref: "defs_viash.yaml#/definitions/Resource"
keywords:
description: "The keywords of the components."
type: "array"
items:
type: "string"
test_resources:
description: "One or more scripts to be used to test the component behaviour\
\ when `viash test` is invoked. Additional files of type `file` will be\
\ made available only during testing. Each test script should expect no\
\ command-line inputs, be platform-independent, and return an exit code\
\ >0 when unexpected behaviour occurs during testing. See Unit Testing for\
\ more info."
type: "array"
items:
$ref: "defs_viash.yaml#/definitions/Resource"
namespace:
description: "Namespace this component is a part of. See the Namespaces guide\
\ for more information on namespaces."
type: "string"
arguments:
description: "A list of arguments for this component. For each argument, a\
\ type and a name must be specified. Depending on the type of argument,\
\ different properties can be set. See these reference pages per type for\
\ more information: \n\n - string\n - file\n - integer\n - double\n - boolean\n\
\ - boolean_true\n - boolean_false\n"
type: "array"
items:
$ref: "defs_viash.yaml#/definitions/Argument"
__merge__:
$ref: "#/definitions/Merge"
required:
- "name"
additionalProperties: false
Merge:
type: string
description: Path to a YAML file to inherit values from.
oneOf:
- type: array
- type: string
FileFormat:
description: 'File format metadata'
type: object
required: [label, file_format]
properties:
label:
$ref: "defs_common.yaml#/definitions/Label"
summary:
$ref: "defs_common.yaml#/definitions/Summary"
file_format:
oneOf:
- type: object
required: [type]
additionalProperties: false
properties:
type:
const: h5ad
X:
$ref: "#/definitions/AnnDataSlot"
layers:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
var:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
varm:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
varp:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
obs:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
obsm:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
obsp:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
uns:
type: array
items:
oneOf:
- $ref: "#/definitions/AnnDataSlot"
- $ref: "#/definitions/AnnDataSlotObject"
- type: object
required: [type, mod]
additionalProperties: false
properties:
type:
const: h5mu
mod:
type: object
additionalProperties: false
properties:
rna:
"#/definitions/AnnData"
atac:
"#/definitions/AnnData"
prot:
"#/definitions/AnnData"
vdj:
"#/definitions/AnnData"
vdj_t:
"#/definitions/AnnData"
vdj_b:
"#/definitions/AnnData"
gdo:
"#/definitions/AnnData"
hto:
"#/definitions/AnnData"
MuData:
required: [mod]
additionalProperties: false
properties:
mod:
type: object
additionalProperties: false
properties:
rna:
"#/definitions/AnnData"
atac:
"#/definitions/AnnData"
prot:
"#/definitions/AnnData"
vdj:
"#/definitions/AnnData"
vdj_t:
"#/definitions/AnnData"
vdj_b:
"#/definitions/AnnData"
gdo:
"#/definitions/AnnData"
hto:
"#/definitions/AnnData"
AnnData:
additionalProperties: false
properties:
X:
$ref: "#/definitions/AnnDataSlot"
layers:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
var:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
varm:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
varp:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
obs:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
obsm:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
obsp:
type: array
items:
$ref: "#/definitions/AnnDataSlot"
uns:
type: array
items:
oneOf:
- $ref: "#/definitions/AnnDataSlot"
- $ref: "#/definitions/AnnDataSlotObject"
AnnDataSlot:
properties:
type:
enum: [integer, double, string, boolean]
name:
type: string
description: A unique identifier.
pattern: "^[a-zA-Z_][a-zA-Z0-9_]*$"
description:
type: string
required:
type: boolean
required: [type, name, description, required]
AnnDataSlotObject:
properties:
type:
enum: [object]
name:
type: string
description: A unique identifier.
pattern: "^[a-zA-Z_][a-zA-Z0-9_]*$"
description:
type: string
required:
type: boolean
required: [type, name, description, required]
# added specific properties to the author info
Author:
description: Author metadata.
type: object
additionalProperties: false
properties:
name:
description: Full name of the author, usually in the name of FirstName MiddleName LastName.
type: string
info:
description: Additional information on the author
type: object
additionalProperties: false
required: [role, links, organizations]
properties:
links:
type: object
additionalProperties: false
required: github
properties:
github:
type: string
orcid:
type: string
email:
type: string
twitter:
type: string
linkedin:
type: string
role:
description: Role in the organisation
enum: ["Core Team Member", "Contributor"]
organizations:
type: array
minItems: 1
items:
type: object
additionalProperties: false
required: [name, href, role]
properties:
name:
type: string
href:
type: string
role:
type: string