Resource requirements
The keywords “MUST”, “MUST NOT”, “SHOULD”, etc. are to be interpreted as described in RFC 2119.
1 Use of labels in modules
An appropriate resource label MUST be provided for the module as listed in the nf-core pipeline template.
The template (since nf-core/tools:4.1.0) defines two kinds of labels:
- Bundled labels set CPU, memory and time together. Use exactly one per module:
process_single,process_low,process_medium, orprocess_high. - Modifier labels override a single axis and SHOULD be stacked on top of a bundled label:
process_long(extends time),process_low_memory(drops memory),process_high_memory(raises memory).
When a process matches more than one withLabel: block, Nextflow applies them in the order they appear in the config file. The order of the label directives in the process itself does not affect precedence.
The nf-core template defines bundled labels first and modifier labels after, so modifier labels always overwrite the corresponding bundled value.
2 Source of multiple threads or cores value
If the tool supports multi-threading, provide the appropriate parameter using the Nextflow task variable.
For example, --threads $task.cpus.
If the tool does not support multi-threading, consider process_single unless large amounts of RAM are required.
3 Specifying multiple threads for piped commands
If a module contains multiple tools that support multi-threading (e.g., piping output into a samtools command), assign CPUs per tool:
- [
task.cpus] is supplied unchanged when a process uses multiple cores. - If one tool is multi-threaded and another uses a single thread, specify directly in the command itself. For example, with
${task.cpus}.