Schema inputs
is a key(id) - value(config) mapping of the parameters that a workflow or tool expects in order to run successfully. Inputs can be defined as either Static Inputs or Field Inputs.
Table Of Contents
- Static Inputs
- Field Inputs
- 🚧 Reserved Keywords 🚧
- Text Input
- Integer Input
- Text Area Input
- Dropdown Input
- Multi-select Input (allows selecting multiple options, submits comma-separated string)
- Radio Input (similar to Dropdown, but better if less options)
- Checkbox Input
- Range Input (submits comma-separated string of numbers)
- File Input
- Directory Input
- Spreadsheet Input (See subpage for more details)
- Genome Inputs (See subpage for more details on Genome Inputs)
- Genome ID Input (*Requires Genomes Bucket Input)
- Genomes Bucket Input (*Required for Genome ID Input)
- Genome Annotation Version Input
- Genome Tax ID Input (always disabled, usually hidden if necessary)
- Genome SNPEFF Version Input (always disabled, usually hidden if necessary)
Static Inputs
A Static Input represents a parameter that needs to be passed to a workflow or toolbox, but that does not require a full “field” configuration because its value will never be provided by the user. Instead its configuration only consists of a value
property.
Example:
"myStaticInput": {
"value": "myStaticValue"
}
While it may seem that a static input should just be defined during the run itself, they can be very handy when building dynamic forms using conditionals, where the user should never interact with this value, but its value should change depending on other values provided.
Field Inputs
Field inputs represent a run parameter whose value can be provided by a user. The Field Input configuration defines the type of input to display in the form in the web application, as well as labels, help texts, default values, and various forms of validation, depending on the field.
Every Field Input contains the following properties: title
, hidden
, required
, description
, and help_text
A note about description
and help_text
:
- Descriptions should be a concise description of parameter as it will be displayed immediately below the input in the form. These can be dynamically updated using conditionals.
- Help texts can be more verbose explanations of the parameters as these will be displayed in a collapsable help drawer to the right of the form. These cannot be dynamically updated using conditionals, so it maybe helpful to provide insight here as to why an input might change.
🚧 Reserved Keywords 🚧
Here is a list of supported Field Inputs:
Text Input
"myTextInput": {
// required properties
"title": "My Text Input",
"type": "string",
// optional properties
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": "my default value",
"pattern": "someRegexPatternItMustMatch"
}
Integer Input
"myIntegerInput": {
// required properties
"title": "My Integer Input",
"type": "integer",
// optional properties
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": 20,
"minimum": 0,
"maximum": 100
}
Text Area Input
"myTextAreaInput": {
// required properties
"title": "My Text Area Input",
"type": "string",
"format": "textarea",
// optional properties
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": "my default value",
"pattern": "someRegexPatternItMustMatch"
}
Dropdown Input
"myDropdownInput": {
// required properties
"title": "My Dropdown Input",
"type": "string",
"format": "enum",
"enum": [
{ "id": "myDefaultValue", "name": "My Default Value" },
{ "id": "otherValue", "name": "Other Value" }
],
// optional properties
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": "myDefaultValue"
}
Multi-select Input (allows selecting multiple options, submits comma-separated string)
"myMultiselectInput": {
// required properties
"title": "My Multiselect Input",
"type": "array",
"uniqueItems": true,
"items": [
{ "id": "myDefaultValue", "name": "My Default Value" },
{ "id": "otherValue", "name": "Other Value" }
],
// optional properties
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": ["myDefaultValue"]
}
Radio Input (similar to Dropdown, but better if less options)
"myRadioInput": {
// required properties
"title": "My Radio Input",
"type": "string",
"format": "radio",
"enum": [
{ id: "myDefaultValue", name: "My Default Value" },
{ id: "otherValue", name: "Other Value" }
],
// optional properties
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": "myDefaultValue"
}
Checkbox Input
"myCheckboxInput": {
// required properties
"title": "My Checkbox Input",
"type": "boolean",
// optional properties
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": true
}
Range Input (submits comma-separated string of numbers)
"myRangeInput": {
// required properties
"title": "My Range Input",
"type": "array",
"format": "range",
"min": 0,
"max": 100,
// optional properties
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": { "min": 10, "max": 90 }
}
File Input
"myFileInput": {
// required properties
"title": "My File Input",
"type": "string",
"format": "file",
// optional properties
"filetype": ".txt",
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": "path/to/file"
}
Directory Input
If filetype
is specified, only directories containing a file of the specified type are allowed.
"myDirectoryInput": {
// required properties
"title": "My Directory Input",
"type": "string",
"format": "dir-path",
// optional properties
"filetype": ".txt",
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": "path/to/directory"
}
Spreadsheet Input (See subpage for more details)
Spreadsheet Input"mySpreadsheetInput": {
// required properties
"title": "My Spreadsheet Input",
"type": "string",
"format": "spreadsheet",
"columnConfig": {
".txt": {
"staticColumns": false,
"columns": [
{
// required properties
"name": "RunID",
// optional properties
"required": true,
"generateFromData": true,
"generateConfig": {
// required properties
"dataName": "someInputDirectoryId",
// optional properties
"delimiterPattern": "_R1|_R2|_1|_2|\\.R"
}
},
{
// required properties
"name": "SampleID",
// optional properties
"pattern": "^\\d|\\W",
"prependIfNumber": "S",
"error": "Sample name must be provided and cannot contain spaces, special characters or start with numbers",
"required": true
},
{
// required properties
"name": "SampleGroup",
// optional properties
"pattern": "\\W",
"required": true,
"error": "Group must be provided, cannot contain spaces or special characters"
}
]
}
}
// optional properties
"filetype": ".txt",
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": "path/to/directory"
}
Genome Inputs (See subpage for more details on Genome Inputs)
Genome InputsGenome ID Input (*Requires Genomes Bucket Input)
"myGenomeIdInput": {
// required properties
"title": "My Genome ID Input",
"type": "string",
"format": "genomeId",
// optional properties
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": "GRCh38"
}
Genomes Bucket Input (*Required for Genome ID Input)
The genomes bucket input is required if using a Genome ID Input as a hidden configuration input parameter.
"myGenomesBucketInput": {
"format": "genomes_bucket",
"genomeId": "myGenomIdInput",
"title": "Reference Genome Repo",
"description": "Bucket for Reference Data Files Used in the Workflows",
"default": "gs://bioinfo-workflow-references/genomes",
"hidden": true,
"required": true,
"type": "string"
}
Genome Annotation Version Input
"myGenomeAnnotationVersionInput": {
// required properties
"title": "My Genome Annotation Version Input",
"type": "string",
"format": "genoAnnotVer",
"genomeId": "myGenomIdInput"
// optional properties
"hidden": false,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details....",
"default": "latest"
}
Genome Tax ID Input (always disabled, usually hidden if necessary)
"myGenomeTaxIdInput": {
// required properties
"title": "My Genome Tax ID Input",
"type": "string",
"format": "taxId",
"genomeId": "myGenomIdInput"
// optional properties
"hidden": true,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details...."
}
Genome SNPEFF Version Input (always disabled, usually hidden if necessary)
"myGenomeSnpeffVersionInput": {
// required properties
"title": "My Genome SNPEFF Version Input",
"type": "string",
"format": "snpEffVer",
"genomeId": "myGenomIdInput"
// optional properties
"hidden": true,
"required": true,
"description": "Here is a description",
"help_text": "Here are more details...."
}