Components
Components are the building blocks of nf-core pipelines. They consist of modules (wrappers around individual tools) and subworkflows (combinations of multiple modules that perform related tasks). These specifications define the standards for developing reusable, interoperable components that can be shared across the nf-core ecosystem.
While these specifications are mandatory for components contributed to the nf-core repository, they represent proven best practices for developing high-quality, maintainable Nextflow components that can benefit any workflow development project.
Module specifications
The following specifications define standards for developing nf-core modules:
- General: Foundation for module development including input/output handling,
ext.args, multi-tool piping, compression, version emission, and script templating. - Naming conventions: Standards for naming module files, processes, parameters, functions, channels, and outputs.
- Input/output options: Guidelines for defining input channels, output emissions, and handling optional inputs and outputs.
- Documentation: Requirements for
meta.yamlfiles including tool descriptions, keywords, and ontology integration. - Module parameters: Guidelines for parameter usage ensuring modules remain flexible and reusable across different pipeline contexts.
- Resource requirements: Standards for specifying computational resources through process labels and the
taskdirective. - Software requirements: Guidelines for declaring software dependencies using Conda, Docker, and Singularity through BioContainers.
- Testing: Requirements for nf-test including snapshot testing, stub tests, and CI configuration.
- Miscellaneous: Code formatting standards including the “Harshil Alignment” format.
Subworkflow specifications
The following specifications define standards for developing nf-core subworkflows:
- General: Foundation for subworkflow development including minimum subworkflow size and version reporting channels.
- Naming conventions: Standards for naming subworkflow files, parameters, functions, channels, and input/output structures.
- Input/output options: Guidelines for defining required input and output channels, and handling optional inputs.
- Subworkflow parameters: Guidelines for parameter usage ensuring subworkflows remain flexible and reusable across different pipeline contexts.
- Documentation: Requirements for documenting channel structures in code comments and
meta.ymlfiles. - Testing: Requirements for nf-test including scope of testing, tags for dependent modules, assertions, and CI configuration.
- Miscellaneous: Code formatting standards including the “Harshil Alignment” format.