add nextflow d30e48d
This commit is contained in:
416
nextflow/adr/module-spec-schema.json
Normal file
416
nextflow/adr/module-spec-schema.json
Normal file
@@ -0,0 +1,416 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://raw.githubusercontent.com/nextflow-io/schemas/main/module/v1/schema.json",
|
||||
"title": "Nextflow Module Schema",
|
||||
"description": "Schema for Nextflow module meta.yml files, supporting both nf-core community patterns and the Nextflow module system",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Module name. Can be a simple identifier (e.g., 'fastqc', 'bwa_mem') for local/nf-core modules, or a fully qualified scoped name (e.g., 'nf-core/fastqc', 'myorg/custom') for registry modules.",
|
||||
"examples": ["fastqc", "bwa_mem", "nf-core/fastqc", "myorg/salmon-quant"],
|
||||
"pattern": "^([a-z0-9][a-z0-9-]*/)?[a-z][a-z0-9_-]*$"
|
||||
},
|
||||
"version": {
|
||||
"type": "string",
|
||||
"description": "Semantic version of the module (MAJOR.MINOR.PATCH). Required for registry publication",
|
||||
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$",
|
||||
"examples": ["1.0.0", "2.1.3", "1.0.0-beta.1"]
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "Brief description of what the module does",
|
||||
"minLength": 10,
|
||||
"maxLength": 500
|
||||
},
|
||||
"keywords": {
|
||||
"type": "array",
|
||||
"description": "Keywords for discovery and categorization",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 2
|
||||
},
|
||||
"minItems": 1,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"license": {
|
||||
"type": "string",
|
||||
"description": "SPDX license identifier for the module code itself",
|
||||
"examples": ["MIT", "Apache-2.0", "GPL-3.0-or-later"]
|
||||
},
|
||||
"authors": {
|
||||
"type": "array",
|
||||
"description": "Original authors of the module (GitHub handles preferred)",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^@?[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$"
|
||||
},
|
||||
"minItems": 1
|
||||
},
|
||||
"maintainers": {
|
||||
"type": "array",
|
||||
"description": "Current maintainers of the module (GitHub handles preferred)",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^@?[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$"
|
||||
}
|
||||
},
|
||||
"requires": {
|
||||
"type": "object",
|
||||
"description": "Runtime requirements for the module",
|
||||
"properties": {
|
||||
"nextflow": {
|
||||
"type": "string",
|
||||
"description": "Nextflow version constraint using comparison operators",
|
||||
"examples": [">=24.04.0", ">=24.04.0,<25.0.0"],
|
||||
"pattern": "^[<>=!]+[0-9]+\\.[0-9]+\\.[0-9]+(-[a-zA-Z0-9]+)?(,\\s*[<>=!]+[0-9]+\\.[0-9]+\\.[0-9]+(-[a-zA-Z0-9]+)?)*$"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"input": {
|
||||
"type": "array",
|
||||
"description": "Inputs of the module",
|
||||
"items": {
|
||||
"$ref": "#/$defs/structuredParameter"
|
||||
}
|
||||
},
|
||||
"output": {
|
||||
"type": "array",
|
||||
"description": "Outputs of the module",
|
||||
"items": {
|
||||
"$ref": "#/$defs/structuredParameter"
|
||||
}
|
||||
},
|
||||
"topics": {
|
||||
"type": "array",
|
||||
"description": "Topics of the module",
|
||||
"items": {
|
||||
"$ref": "#/$defs/structuredParameter"
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"type": "array",
|
||||
"description": "Software tools wrapped by this module with their metadata",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"minProperties": 1,
|
||||
"maxProperties": 1,
|
||||
"patternProperties": {
|
||||
"^[a-zA-Z][a-zA-Z0-9_-]*$": {
|
||||
"$ref": "#/$defs/toolSpec"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": ["name", "description"],
|
||||
"$defs": {
|
||||
"toolSpec": {
|
||||
"type": "object",
|
||||
"description": "Specification for a software tool used by the module",
|
||||
"properties": {
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "Description of the tool and its purpose"
|
||||
},
|
||||
"homepage": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Tool's homepage URL",
|
||||
"pattern": "^https?://.*$"
|
||||
},
|
||||
"documentation": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Documentation URL",
|
||||
"pattern": "^(https?|ftp)://.*$"
|
||||
},
|
||||
"tool_dev_url": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Development/source code URL",
|
||||
"pattern": "^https?://.*$"
|
||||
},
|
||||
"doi": {
|
||||
"description": "Digital Object Identifier for the tool's publication",
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^10\\.\\d{4,9}/[^,]+$"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"const": "no DOI available"
|
||||
}
|
||||
]
|
||||
},
|
||||
"arxiv": {
|
||||
"type": "string",
|
||||
"description": "arXiv identifier",
|
||||
"pattern": "^arXiv:\\d{4}\\.\\d{4,5}(v\\d+)?$"
|
||||
},
|
||||
"licence": {
|
||||
"type": "array",
|
||||
"description": "SPDX license identifier(s) for the tool",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"identifier": {
|
||||
"description": "bio.tools identifier or empty string",
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^biotools:[a-zA-Z0-9_-]+$"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"maxLength": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"manual": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Manual/user guide URL"
|
||||
}
|
||||
},
|
||||
"required": ["description"],
|
||||
"anyOf": [
|
||||
{
|
||||
"required": ["homepage"]
|
||||
},
|
||||
{
|
||||
"required": ["documentation"]
|
||||
},
|
||||
{
|
||||
"required": ["tool_dev_url"]
|
||||
},
|
||||
{
|
||||
"required": ["doi"]
|
||||
}
|
||||
]
|
||||
},
|
||||
"structuredParameter": {
|
||||
"oneOf": [
|
||||
{
|
||||
"$ref": "#/$defs/paramSpec"
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/paramSpec"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"paramSpec": {
|
||||
"type": "object",
|
||||
"description": "Specification for a module parameter",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Parameter identifier",
|
||||
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "Data type of the parameter value",
|
||||
"enum": [
|
||||
"boolean",
|
||||
"float",
|
||||
"integer",
|
||||
"string",
|
||||
"list",
|
||||
"map",
|
||||
"file",
|
||||
"directory"
|
||||
]
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "Human-readable description of the parameter"
|
||||
},
|
||||
"pattern": {
|
||||
"type": "string",
|
||||
"description": "Glob pattern for file/directory parameters"
|
||||
},
|
||||
"optional": {
|
||||
"type": "boolean",
|
||||
"description": "Whether this parameter is optional",
|
||||
"default": false
|
||||
},
|
||||
"enum": {
|
||||
"type": "array",
|
||||
"description": "List of allowed values",
|
||||
"uniqueItems": true
|
||||
},
|
||||
"ontologies": {
|
||||
"type": "array",
|
||||
"description": "Ontology annotations (e.g., EDAM)",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"patternProperties": {
|
||||
"^[a-zA-Z]+$": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "Ontology URI"
|
||||
}
|
||||
}
|
||||
},
|
||||
"uniqueItems": true
|
||||
}
|
||||
},
|
||||
"required": ["type", "description"]
|
||||
}
|
||||
},
|
||||
"allOf": [
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"name": {
|
||||
"pattern": "^[a-z0-9][a-z0-9-]*/"
|
||||
}
|
||||
},
|
||||
"required": ["name"]
|
||||
},
|
||||
"then": {
|
||||
"required": ["name", "description", "version"],
|
||||
"properties": {
|
||||
"version": {
|
||||
"description": "Version is required for scoped/registry modules (scope/name format)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"examples": [
|
||||
{
|
||||
"name": "fastqc",
|
||||
"description": "Run FastQC on sequenced reads",
|
||||
"keywords": ["quality control", "qc", "adapters", "fastq"],
|
||||
"tools": [
|
||||
{
|
||||
"fastqc": {
|
||||
"description": "FastQC gives general quality metrics about your reads.",
|
||||
"homepage": "https://www.bioinformatics.babraham.ac.uk/projects/fastqc/",
|
||||
"documentation": "https://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/",
|
||||
"licence": ["GPL-2.0-only"],
|
||||
"identifier": "biotools:fastqc"
|
||||
}
|
||||
}
|
||||
],
|
||||
"input": [
|
||||
[
|
||||
{
|
||||
"name": "meta",
|
||||
"type": "map",
|
||||
"description": "Groovy Map containing sample information"
|
||||
},
|
||||
{
|
||||
"name": "reads",
|
||||
"type": "file",
|
||||
"description": "Input FastQ files",
|
||||
"ontologies": []
|
||||
}
|
||||
]
|
||||
],
|
||||
"output": [
|
||||
[
|
||||
{
|
||||
"type": "map",
|
||||
"description": "Sample information"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"description": "FastQC report",
|
||||
"pattern": "*_{fastqc.html}",
|
||||
"ontologies": []
|
||||
}
|
||||
],
|
||||
{
|
||||
"name": "versions",
|
||||
"type": "file",
|
||||
"description": "File containing software versions",
|
||||
"pattern": "versions.yml"
|
||||
}
|
||||
],
|
||||
"authors": ["@drpatelh", "@ewels"],
|
||||
"maintainers": ["@drpatelh", "@ewels"]
|
||||
},
|
||||
{
|
||||
"name": "nf-core/bwa-align",
|
||||
"version": "1.2.4",
|
||||
"description": "Align reads using BWA-MEM algorithm",
|
||||
"keywords": ["alignment", "bwa", "mapping", "fastq", "bam"],
|
||||
"license": "MIT",
|
||||
"authors": ["@nf-core"],
|
||||
"maintainers": ["@nf-core"],
|
||||
"requires": {
|
||||
"nextflow": ">=24.04.0"
|
||||
},
|
||||
"tools": [
|
||||
{
|
||||
"bwa": {
|
||||
"description": "BWA aligner",
|
||||
"homepage": "http://bio-bwa.sourceforge.net/",
|
||||
"licence": ["GPL-3.0-or-later"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"samtools": {
|
||||
"description": "SAMtools",
|
||||
"homepage": "http://www.htslib.org/",
|
||||
"licence": ["MIT"]
|
||||
}
|
||||
}
|
||||
],
|
||||
"input": [
|
||||
[
|
||||
{
|
||||
"name": "meta",
|
||||
"type": "map",
|
||||
"description": "Sample metadata map"
|
||||
},
|
||||
{
|
||||
"name": "reads",
|
||||
"type": "file",
|
||||
"description": "Input FastQ files",
|
||||
"ontologies": [
|
||||
{ "edam": "http://edamontology.org/format_1930" }
|
||||
]
|
||||
}
|
||||
],
|
||||
{
|
||||
"name": "index",
|
||||
"type": "directory",
|
||||
"description": "BWA index directory"
|
||||
}
|
||||
],
|
||||
"output": [
|
||||
[
|
||||
{
|
||||
"type": "map",
|
||||
"description": "Sample metadata"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"description": "Aligned BAM file",
|
||||
"pattern": "*.bam",
|
||||
"ontologies": [
|
||||
{ "edam": "http://edamontology.org/format_2572" }
|
||||
]
|
||||
}
|
||||
],
|
||||
{
|
||||
"name": "versions",
|
||||
"type": "file",
|
||||
"description": "Software versions"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user