From eeabb90ff6650fde744b179cad4acd956bc33447 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Fri, 22 May 2026 08:23:20 +1200 Subject: [PATCH 01/19] Initial tutorial draft --- .../docs/src/content/docs/running/overview.md | 6 + .../tutorials/configure-a-pipeline-run.md | 438 ++++++++++++++++++ 2 files changed, 444 insertions(+) create mode 100644 sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md diff --git a/sites/docs/src/content/docs/running/overview.md b/sites/docs/src/content/docs/running/overview.md index 0a6246e833..7d38c17d22 100644 --- a/sites/docs/src/content/docs/running/overview.md +++ b/sites/docs/src/content/docs/running/overview.md @@ -25,6 +25,12 @@ nf-core pipelines can be configured to work with different execution environment - **[System requirements](configuration/nextflow-for-your-system):** Guidance on configuring pipelines to match your system's capabilities, including resource allocation, executors, and tool arguments - **[Configuration troubleshooting](configuration/troubleshooting):** Troubleshoot nf-core pipeline runs +## Tutorials + +Hands-on walkthroughs that build on the reference material above. + +- **[Configure a pipeline run](tutorials/configure-a-pipeline-run):** Hands-on tutorial using nf-core/demo to configure a run with environment variables, parameters, and config files + ## Reference data Many nf-core pipelines require reference genomes and annotation files. diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md new file mode 100644 index 0000000000..67431e8597 --- /dev/null +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -0,0 +1,438 @@ +--- +title: Configure a pipeline run +subtitle: A hands-on tutorial for configuring nf-core/demo with environment variables, parameters, and config files +shortTitle: Configure a pipeline run +--- + +Every nf-core pipeline run is shaped by three layers of configuration: environment variables that tune Nextflow itself, parameters that tune the pipeline, and config files that tune execution. +This tutorial walks through each layer in turn using [`nf-core/demo`](https://nf-co.re/demo), then combines them into a single worked example. + +By the end you will have: + +- Used `NXF_*` environment variables to control Nextflow's runtime +- Supplied pipeline parameters on the command line and from a `params.yaml` file +- Activated profiles to switch between container engines and test scenarios +- Layered a custom `custom.config` file with process-specific overrides +- Used `ext.args` (the convention for `conf/modules.config`) to extend a tool's command line without editing the module +- Understood which configuration source overrides which + +## Prerequisites + +Before starting, make sure you have: + +- [Nextflow installed](../../get_started/environment_setup/nextflow.md) +- A container engine such as Docker, Singularity, or Conda — see [Software dependencies](../../get_started/environment_setup/software-dependencies.md) +- Run a pipeline at least once — see [Run your first pipeline](../../get_started/run-your-first-pipeline.md) + +:::tip +The tutorial takes around 15 minutes and uses `nf-core/demo`'s built-in test data, so no input files are required. +::: + +## Step 1: Baseline run + +Before changing anything, run the pipeline with no custom configuration so you have something to compare against. +This baseline run relies entirely on `nf-core/demo`'s built-in defaults — no environment variables of your own, no custom parameters, no extra config files. +In each of the following steps you will replace one of those defaults and observe the effect. + +Start with a plain test invocation as your reference point: + +```bash +nextflow run nf-core/demo -profile test,docker --outdir results +``` + +Replace `docker` with your preferred software dependency manager (for example, `singularity` or `conda`). + +This run uses three defaults that you will override in the next steps: + +- The pipeline's bundled [`nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config) and the [`test`](https://github.com/nf-core/demo/blob/master/conf/test.config) and `docker` profiles +- Default pipeline parameters (input samplesheet, MultiQC title, and so on) — see the [nf-core/demo parameters page](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json) +- Nextflow's default runtime settings (work directory, version, and so on) + +:::tip +Keep the `results/` directory from this run — you can compare it to the output of later steps to confirm your configuration changes took effect. +::: + +## Step 2: Configure with environment variables + +`NXF_*` environment variables are the outermost configuration layer. +Nextflow reads them from your shell as it starts, before any config file or parameter is parsed, so they're the right place for settings that don't change between runs: which Nextflow version to use, where the work directory and container cache live, and whether to operate offline. +They configure **Nextflow itself**, not the pipeline — you cannot set pipeline inputs or outputs this way. + +You set them like any other shell variable: with `export`, inline before a single command, or by adding them to your shell's startup file. + +1. Pin a Nextflow version and redirect the work directory for this run: + + ```bash + export NXF_VER=24.10.5 + export NXF_WORK=$HOME/nf-demo-work + nextflow run nf-core/demo -profile test,docker --outdir results + ``` + + The version line at the top of stdout (and in `.nextflow.log`) should now report `24.10.5`, and intermediate files should appear under `$HOME/nf-demo-work/` instead of `./work/`. + +2. To set a variable for a single command without exporting it, prefix the invocation: + + ```bash + NXF_VER=24.10.5 nextflow run nf-core/demo -profile test,docker --outdir results + ``` + +3. To persist a variable across sessions, add the export to your shell config: + + ```bash title=".bashrc" + export NXF_VER=24.10.5 + ``` + +:::tip +The `NXF_*` variables nf-core users reach for most often are: + +- `NXF_VER`: Pin a specific Nextflow version +- `NXF_HOME`: Override Nextflow's home directory (defaults to `$HOME/.nextflow`) +- `NXF_WORK`: Override the work directory for intermediate files +- `NXF_OFFLINE`: Run without contacting the network (see [Running pipelines offline](../run-pipelines-offline.md)) +- `NXF_SINGULARITY_CACHEDIR` / `NXF_APPTAINER_CACHEDIR`: Reuse downloaded container images across runs + +For the full list, see the [Nextflow environment variables reference](https://docs.seqera.io/nextflow/reference/env-vars). +::: + +:::note +`NXF_*` variables are distinct from pipeline parameters. They configure how Nextflow runs, not what the pipeline does. You cannot set `--input` or `--outdir` with an environment variable. +::: + +## Step 3: Configure with parameters + +Pipeline parameters are the knobs the pipeline itself exposes: inputs, outputs, skip flags, reference data choices, tool toggles, and so on. +They're documented per pipeline — for `nf-core/demo`, see the [parameters reference](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json) — and they're the configuration you'll change most often. + +You can supply them two ways: directly on the command line, or from a `params.yaml` or `params.json` file. +The two forms are interchangeable, and you can mix them. CLI flags override values in a parameter file. + +1. Override a single parameter on the command line: + + ```bash + nextflow run nf-core/demo -profile test,docker --outdir my_results + ``` + + Output now goes to `my_results/` instead of `results/`. + +2. For longer parameter sets, create a `params.yaml` file: + + ```yaml title="params.yaml" + outdir: my_results + multiqc_title: "nf-core/demo configured run" + ``` + +3. Apply it with `-params-file`: + + ```bash + nextflow run nf-core/demo -profile test,docker -params-file params.yaml + ``` + + Open `my_results/multiqc/multiqc_report.html` to confirm the report title was set. + +:::tip +Both JSON and YAML are supported for parameter files. Parameter files make runs easier to reproduce and share. You can publish them alongside results so others can re-run the exact same configuration. +::: + +:::warning +nf-core pipeline parameters must be supplied on the command line or via `-params-file`. +Setting a parameter inside a custom `.config` file (for example, `params { outdir = '...' }`) will **not** override the pipeline's defaults. +Use config files for executor and resource settings, and parameter files for pipeline parameters. +::: + +## Step 4: Configure with config files + +Config files are the most flexible configuration layer. +They control both **where** the pipeline runs and **how** it runs: which executor submits jobs (`local`, `slurm`, `awsbatch`, and so on), how much CPU and memory each process should request, what Nextflow does when a process fails, which container registry to pull from, where intermediate work lives, how to apply different settings to specific steps, and much more. +They're the right place for any setting that depends on your infrastructure rather than on what the pipeline does scientifically. + +Nextflow assembles its final configuration from several config files — some it picks up automatically, some you switch on by name with `-profile`, and others you point it at explicitly with `-c`. +The next four sections cover all three approaches and then show how to target specific processes inside any config file. + +### Auto-loaded `nextflow.config` files + +Nextflow looks for config files in three places without being told. +From lowest to highest priority, they are: + +1. **The pipeline's own `nextflow.config` in the project directory.** Bundled with every nf-core pipeline and downloaded with the rest of the pipeline code — for example, [`nf-core/demo`'s `nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config), which loads [`conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) and declares every shipped profile. **Don't edit this file** — see the warning in [Configuration options](../configuration/configuration-options.md). +2. **`$HOME/.nextflow/config`.** Your personal config, applied to every Nextflow run you launch. Good for settings that should follow you across all pipelines, such as your Singularity cache location or a default executor for your workstation. +3. **`nextflow.config` in the launch directory.** Applied automatically whenever you run Nextflow from that directory. Good for per-project or per-working-directory settings you don't want to retype each time. + +Try the launch-directory form now. +Drop a `nextflow.config` in your current directory: + +```groovy title="nextflow.config" +process { + cpus = 2 + memory = 4.GB +} +``` + +Re-run the baseline command. No `-c` flag is needed, Nextflow picks the file up automatically: + +```bash +nextflow run nf-core/demo -profile test,docker --outdir results +``` + +:::tip +Use `$HOME/.nextflow/config` for personal defaults that follow you across machines, and a launch-directory `nextflow.config` for project-specific settings. +Reserve `-c` (covered below) for one-off overrides and shared team configs that should live alongside your pipeline command. +::: + +### Activate bundled settings with profiles + +A **profile** is a named bundle of configuration that lives inside a config file under the `profiles` scope. +You activate one or more with the `-profile` flag. +You've been using profiles since Step 1. `-profile test,docker` activates two: `test` (a small public dataset) and `docker` (use Docker to manage software). + +Every nf-core pipeline ships with a standard set of profiles: + +- **Software profiles**: `docker`, `singularity`, `apptainer`, `podman`, `conda`, `charliecloud`, `shifter` — one per container engine or environment manager. +- **Test profiles**: [`test`](https://github.com/nf-core/demo/blob/master/conf/test.config) (a small dataset for quick verification) and [`test_full`](https://github.com/nf-core/demo/blob/master/conf/test_full.config) (the full-size dataset used in CI). +- **Institutional profiles**: contributed to [nf-core/configs](https://github.com/nf-core/configs) and loaded automatically by every nf-core pipeline. Activate one with `-profile ` if your cluster has one. + +Combine profiles with commas, and remember that order matters — later profiles override earlier ones where they overlap: + +```bash +nextflow run nf-core/demo -profile test,docker --outdir results +``` + +You can also define your own profile for settings you'd like to reuse. +Add a `myserver` profile to your launch-directory `nextflow.config`: + +```groovy title="nextflow.config" +profiles { + myserver { + process { + executor = 'slurm' + queue = 'standard' + cpus = 4 + memory = 16.GB + } + } +} +``` + +Activate it alongside the existing profiles: + +```bash +nextflow run nf-core/demo -profile test,docker,myserver --outdir results +``` + +:::note +The `myserver` profile is illustrative — it will only run successfully if you have access to a SLURM cluster with a `standard` queue. +On a workstation without SLURM, Nextflow will fail when it tries to submit jobs. +Drop the `executor` and `queue` lines (or switch `executor` to `'local'`) to try the profile locally. +::: + +:::warning +Don't put pipeline parameters inside a profile (for example, a `params { input = '...' }` block inside `profiles { myserver { ... } }`). +The same nf-core constraint from Step 3 applies — parameters must come from the command line or `-params-file`, even when wrapped in a profile. +::: + +### Use shared institutional configs + +If you work on a shared HPC cluster or cloud platform, there's a good chance someone has already written a profile for it. +The [nf-core/configs](https://github.com/nf-core/configs) repository collects over 150 cluster-specific configs contributed by the community, covering the executor, queue, resource limits, container engine, scratch paths, module systems, and any other cluster-specific quirks needed to run nf-core pipelines well in that environment. + +Every nf-core pipeline loads these configs automatically — there's nothing to download or copy. +At run time, each pipeline fetches the [`nfcore_custom.config`](https://github.com/nf-core/configs/blob/master/nfcore_custom.config) from the `nf-core/configs` repository and makes every profile in it available alongside the pipeline's own profiles. +You activate one the same way you activate any other profile: + +```bash +nextflow run nf-core/demo -profile test,docker, --outdir results +``` + +Replace `` with the profile name for your environment. +A handful of examples from the [configs directory](https://github.com/nf-core/configs/tree/master/conf): + +- [`uppmax`](https://github.com/nf-core/configs/blob/master/conf/uppmax.config) — UPPMAX (Sweden) +- [`bih`](https://github.com/nf-core/configs/blob/master/conf/bih.config) — Berlin Institute of Health +- [`aws_tower`](https://github.com/nf-core/configs/blob/master/conf/aws_tower.config) — Seqera Platform on AWS +- [`crick`](https://github.com/nf-core/configs/blob/master/conf/crick.config) — Francis Crick Institute + +Browse the full list at [nf-co.re/configs](https://nf-co.re/configs). + +Some institutions also contribute **pipeline-specific** overrides — a profile that further tunes resources for a particular pipeline on a particular cluster. +These live under [`conf/pipeline//.config`](https://github.com/nf-core/configs/tree/master/conf/pipeline) in the repository and are picked up automatically when you run that pipeline with the matching `-profile`. + +:::tip +If your cluster doesn't have a profile yet, the [nf-core/configs contribution guide](https://github.com/nf-core/configs#documentation) describes how to add one. +Contributing a profile to `nf-core/configs` is the recommended way to share cluster configuration with your team — it removes the need for everyone to carry a `custom.config` file around, and benefits every nf-core pipeline at once. +::: + +:::note +The shared configs are loaded over the network at run time. +If you're working on an air-gapped system, see [Running pipelines offline](../run-pipelines-offline.md) for how to download them ahead of time and point Nextflow at the local copy via the `custom_config_base` parameter. +::: + +### Pass a config explicitly with `-c` + +For configuration you don't want loaded by default — a one-off resource bump, a shared institutional config, an experimental override — pass it on the command line with `-c`. + +1. Create a small `custom.config`: + + ```groovy title="custom.config" + process { + cpus = 2 + memory = 4.GB + } + ``` + +2. Apply it with `-c`: + + ```bash + nextflow run nf-core/demo -profile test,docker -c custom.config --outdir results + ``` + +3. Open `results/pipeline_info/execution_report.html` and inspect the resource columns to confirm the new requests were applied. + +You can pass `-c` more than once. +Files are applied in order, so later ones override earlier ones — useful for stacking a base config with an environment-specific override. + +### Tune how the pipeline executes + +Beyond resource requests, config files control **how** each run executes: which scheduler picks up jobs, what to do when a process fails, and where intermediate files live. +These settings sit alongside the `process` scope you used above, with a few sibling top-level options. + +Edit `custom.config` to switch to a SLURM executor with automatic retries and a scratch work directory: + +```groovy title="custom.config" +workDir = '/scratch/$USER/nf-work' + +process { + executor = 'slurm' + queue = 'long' + errorStrategy = 'retry' + maxRetries = 2 +} +``` + +Apply it the same way as before: + +```bash +nextflow run nf-core/demo -profile test,docker -c custom.config --outdir results +``` + +:::note +This config will only run successfully on a SLURM cluster with a `long` queue and access to `/scratch`. +On a workstation, leave `executor` unset (Nextflow defaults to `local`), drop `queue`, and point `workDir` at a path you can actually write to — or simply skip running this config and read the annotations below. +::: + +Each setting controls a different aspect of the run: + +- **`process.executor`**: where jobs go — `local` (default), `slurm`, `awsbatch`, `lsf`, `pbs`, `kubernetes`, and so on. +- **`process.queue`**: which queue or partition to submit to on shared clusters. +- **`process.errorStrategy`** with **`process.maxRetries`**: retry transient failures (for example, a node going down or a timeout) instead of failing the whole run. +- **`workDir`**: where Nextflow stages intermediate files — point it at fast scratch storage on HPC to keep your home filesystem clean. + +:::tip +For the full list of config scopes (`process`, `executor`, `docker`, `singularity`, `aws`, `azure`, `google`, `report`, `trace`, `timeline`, and more), see the [Nextflow config reference](https://docs.seqera.io/nextflow/reference/config). +nf-core pipelines already enable the standard execution reports under `pipeline_info/`, so you only need to override those if you want custom paths. +::: + +### Target specific processes with `withName` and `withLabel` + +The blanket `process { cpus = 2 }` example above applies to every process in the pipeline. +In practice you'll usually want to target specific steps — bump the resources for an aligner without changing anything else, or pass an extra command-line argument to one tool. +Nextflow gives you two selectors for this: + +- **`withName`** matches a specific process by its fully qualified name. `nf-core/demo` runs three processes — [`FASTQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf), [`SEQTK_TRIM`](https://github.com/nf-core/demo/blob/master/modules/nf-core/seqtk/trim/main.nf), and [`MULTIQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/multiqc/main.nf) — and each has a name you can see in `.nextflow.log` or in `pipeline_info/execution_trace.txt` after a run. +- **`withLabel`** matches every process that carries a given label. All nf-core pipelines tag their processes with size labels (`process_low`, `process_medium`, `process_high`, `process_high_memory`) — see how they map to resource requests in [`nf-core/demo`'s `conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) — so a single `withLabel` block can adjust whole resource tiers at once. + +Edit your `custom.config` to use both: + +```groovy title="custom.config" +process { + withName: 'NFCORE_DEMO:DEMO:FASTQC' { + cpus = 4 + memory = 8.GB + } + + withLabel: 'process_low' { + cpus = 2 + memory = 4.GB + } +} +``` + +Re-run with `-c custom.config` and check `results/pipeline_info/execution_report.html` — FASTQC should report the resources you set, and every other low-tier process should pick up the `process_low` block. + +:::tip +Find the full process name for `withName` in `.nextflow.log` or in `pipeline_info/execution_trace.txt` after a run. +Process labels are declared on each `process` definition inside the module — for example, [`FASTQC`'s `main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf) declares `label 'process_medium'` on its second line. +The size labels (`process_low`, `process_medium`, `process_high`, `process_high_memory`) are standard across all nf-core pipelines. +::: + +### Pass tool arguments with `ext.args` + +`ext.args` is a per-process configuration value that nf-core modules use to inject extra command-line flags into the underlying tool. +It lives inside a `withName` selector (so it follows the same targeting rules as the previous section), and the module picks it up at runtime with `def args = task.ext.args ?: ''`. + +By convention, nf-core pipelines collect every per-process option in a dedicated file, [`conf/modules.config`](https://github.com/nf-core/demo/blob/master/conf/modules.config) — another source of configuration loaded automatically through the pipeline's `nextflow.config`. +Open `nf-core/demo`'s copy to see two real uses of `ext.args`: + +```groovy +withName: FASTQC { + ext.args = '--quiet' + // ... +} + +withName: 'MULTIQC' { + ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } + // ... +} +``` + +FASTQC always runs with `--quiet`. +MULTIQC dynamically picks up `--title` if the `multiqc_title` parameter is set — which is why the `multiqc_title` value from your `params.yaml` in Step 3 flowed through into the MultiQC report. + +To pass your own flags without forking the module, override `ext.args` in `custom.config`: + +```groovy title="custom.config" +process { + withName: 'NFCORE_DEMO:DEMO:FASTQC' { + ext.args = '--quiet --noextract' + } +} +``` + +Re-run with `-c custom.config` and FASTQC will pick up the new flags through `task.ext.args` inside its [`main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf). + +Sibling keys you'll see in the same file: + +- **`ext.args2`, `ext.args3`** — second and third argument sets for modules that call more than one tool. +- **`ext.prefix`** — overrides the prefix used for the module's output filenames. + +:::tip +`ext.args` is the right way to pass tool-specific flags that aren't exposed as pipeline parameters. +Never edit the module's `main.nf` to add a flag — `ext.args` exists precisely so you can extend the command line without diverging from the canonical pipeline. +::: + +For `resourceLimits`, executor tuning, and container registry overrides, see [System requirements](../configuration/nextflow-for-your-system.md). +For profile precedence and shared institutional configs, see [Configuration options](../configuration/configuration-options.md). + +## Precedence cheat sheet + +When two sources set the same **parameter**, the higher-priority source wins. From lowest to highest priority: + +1. Pipeline defaults (for example, [`conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) and the project [`nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config)) +2. User config (`$HOME/.nextflow/config`) +3. `nextflow.config` in the launch directory +4. Config files passed with `-c`, in the order they appear +5. The `-params-file` file +6. Command-line `--` flags + +:::note +`NXF_*` environment variables are not part of this parameter precedence chain — they configure Nextflow's runtime, not pipeline parameters. Think of them as a separate layer that applies before any of the above. +::: + +:::note +Profiles aren't a separate layer in the list above — they apply through whichever config file declares them. Within a single `-profile a,b,c`, profiles are applied left to right, so later names override earlier ones where they overlap. +::: + +## Next steps + +- [Configuration options](../configuration/configuration-options.md) — profiles, shared nf-core/configs, and full precedence rules +- [System requirements](../configuration/nextflow-for-your-system.md) — resource limits, executors, and tool argument overrides +- [Running pipelines](../run-pipelines.md) — broader run patterns and common operations +- [Nextflow configuration documentation](https://docs.seqera.io/nextflow/config) From c5a1d40986b81765254b44f99aa4dde0e886f113 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 25 May 2026 11:28:59 +1200 Subject: [PATCH 02/19] Read and manual deslop --- .../tutorials/configure-a-pipeline-run.md | 133 +++++++++--------- 1 file changed, 67 insertions(+), 66 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 67431e8597..50516dd647 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -4,8 +4,8 @@ subtitle: A hands-on tutorial for configuring nf-core/demo with environment vari shortTitle: Configure a pipeline run --- -Every nf-core pipeline run is shaped by three layers of configuration: environment variables that tune Nextflow itself, parameters that tune the pipeline, and config files that tune execution. -This tutorial walks through each layer in turn using [`nf-core/demo`](https://nf-co.re/demo), then combines them into a single worked example. +nf-core pipelines are shaped by multiple levels of of configuration: environment variables that tune Nextflow itself, parameters that tune the pipeline, and config files that tune execution. +Using [`nf-core/demo`](https://nf-co.re/demo), this tutorial explains each layer as worked examples. By the end you will have: @@ -16,23 +16,21 @@ By the end you will have: - Used `ext.args` (the convention for `conf/modules.config`) to extend a tool's command line without editing the module - Understood which configuration source overrides which -## Prerequisites +:::note{title="Prerequisites"} +You will need the following to get started: -Before starting, make sure you have: +- An internet connection +- [Nextflow version 24.04.0 or later](../get_started/environment_setup/nextflow.md) +- A container engine, such as Docker, Singularity, or Conda. See [Software dependencies](../../get_started/environment_setup/software-dependencies.md) -- [Nextflow installed](../../get_started/environment_setup/nextflow.md) -- A container engine such as Docker, Singularity, or Conda — see [Software dependencies](../../get_started/environment_setup/software-dependencies.md) -- Run a pipeline at least once — see [Run your first pipeline](../../get_started/run-your-first-pipeline.md) - -:::tip -The tutorial takes around 15 minutes and uses `nf-core/demo`'s built-in test data, so no input files are required. ::: -## Step 1: Baseline run +## Baseline run Before changing anything, run the pipeline with no custom configuration so you have something to compare against. -This baseline run relies entirely on `nf-core/demo`'s built-in defaults — no environment variables of your own, no custom parameters, no extra config files. -In each of the following steps you will replace one of those defaults and observe the effect. +This baseline run relies entirely on `nf-core/demo`'s built-in defaults. +No environment variables, custom parameters, no extra config files are set. +In each of the following steps you will replace one of these defaults and observe the effect. Start with a plain test invocation as your reference point: @@ -45,18 +43,20 @@ Replace `docker` with your preferred software dependency manager (for example, ` This run uses three defaults that you will override in the next steps: - The pipeline's bundled [`nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config) and the [`test`](https://github.com/nf-core/demo/blob/master/conf/test.config) and `docker` profiles -- Default pipeline parameters (input samplesheet, MultiQC title, and so on) — see the [nf-core/demo parameters page](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json) -- Nextflow's default runtime settings (work directory, version, and so on) +- Default pipeline parameters (input samplesheet, MultiQC title, and so on). See the [nf-core/demo parameters page](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json) +- Your default Nextflow runtime settings (e.g., work directory and Nextflow version) :::tip -Keep the `results/` directory from this run — you can compare it to the output of later steps to confirm your configuration changes took effect. +Keep the `results/` directory from this run. You can compare it to the output of later steps to confirm your configuration changes took effect. ::: -## Step 2: Configure with environment variables +## Configure with environment variables `NXF_*` environment variables are the outermost configuration layer. -Nextflow reads them from your shell as it starts, before any config file or parameter is parsed, so they're the right place for settings that don't change between runs: which Nextflow version to use, where the work directory and container cache live, and whether to operate offline. -They configure **Nextflow itself**, not the pipeline — you cannot set pipeline inputs or outputs this way. +Nextflow reads them from your shell as it starts, before any config file or parameter is parsed, so they're the right place for settings that don't change between runs. +For example, which Nextflow version to use, where the work directory and container cache live, and whether to operate offline. +They configure **Nextflow itself**, not the pipeline. +You cannot set pipeline inputs or outputs this way. You set them like any other shell variable: with `export`, inline before a single command, or by adding them to your shell's startup file. @@ -98,13 +98,23 @@ For the full list, see the [Nextflow environment variables reference](https://do `NXF_*` variables are distinct from pipeline parameters. They configure how Nextflow runs, not what the pipeline does. You cannot set `--input` or `--outdir` with an environment variable. ::: -## Step 3: Configure with parameters +## Configure with parameters + +Pipeline parameters are the knobs the pipeline itself exposes. +For example, inputs, outputs, skip flags, reference data choices, and tool toggles. +They're documented per pipeline. +For `nf-core/demo`, see the [parameters reference](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json). -Pipeline parameters are the knobs the pipeline itself exposes: inputs, outputs, skip flags, reference data choices, tool toggles, and so on. -They're documented per pipeline — for `nf-core/demo`, see the [parameters reference](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json) — and they're the configuration you'll change most often. +You can supply them two ways: -You can supply them two ways: directly on the command line, or from a `params.yaml` or `params.json` file. -The two forms are interchangeable, and you can mix them. CLI flags override values in a parameter file. +- Directly on the command line +- From a `params.yaml` or `params.json` file. + +The two forms are interchangeable, and you can mix them. + +:::important +CLI flags override values in a parameter file. +::: 1. Override a single parameter on the command line: @@ -130,7 +140,9 @@ The two forms are interchangeable, and you can mix them. CLI flags override valu Open `my_results/multiqc/multiqc_report.html` to confirm the report title was set. :::tip -Both JSON and YAML are supported for parameter files. Parameter files make runs easier to reproduce and share. You can publish them alongside results so others can re-run the exact same configuration. +Both JSON and YAML are supported for parameter files. +Parameter files make runs easier to reproduce and share. +You can publish them alongside results so others can re-run the exact same configuration. ::: :::warning @@ -139,13 +151,16 @@ Setting a parameter inside a custom `.config` file (for example, `params { outdi Use config files for executor and resource settings, and parameter files for pipeline parameters. ::: -## Step 4: Configure with config files +## Configure with config files Config files are the most flexible configuration layer. -They control both **where** the pipeline runs and **how** it runs: which executor submits jobs (`local`, `slurm`, `awsbatch`, and so on), how much CPU and memory each process should request, what Nextflow does when a process fails, which container registry to pull from, where intermediate work lives, how to apply different settings to specific steps, and much more. +They control both **where** the pipeline runs and **how** it runs. +For example, which executor submits jobs (e.g., `local`, `slurm`, `awsbatch`), how much CPU and memory each process should request, what Nextflow does when a process fails, which container registry to pull from, where intermediate work lives, how to apply different settings to specific steps, and much more. They're the right place for any setting that depends on your infrastructure rather than on what the pipeline does scientifically. -Nextflow assembles its final configuration from several config files — some it picks up automatically, some you switch on by name with `-profile`, and others you point it at explicitly with `-c`. +Nextflow assembles its final configuration from several config files. +Nextflow picks up some config files automatically, some you switch on by name with `-profile`, and others you point it at explicitly with `-c`. + The next four sections cover all three approaches and then show how to target specific processes inside any config file. ### Auto-loaded `nextflow.config` files @@ -153,12 +168,12 @@ The next four sections cover all three approaches and then show how to target sp Nextflow looks for config files in three places without being told. From lowest to highest priority, they are: -1. **The pipeline's own `nextflow.config` in the project directory.** Bundled with every nf-core pipeline and downloaded with the rest of the pipeline code — for example, [`nf-core/demo`'s `nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config), which loads [`conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) and declares every shipped profile. **Don't edit this file** — see the warning in [Configuration options](../configuration/configuration-options.md). +1. **The pipeline's own `nextflow.config` in the project directory.** Bundled with every nf-core pipeline and downloaded with the rest of the pipeline code. For example, [`nf-core/demo`'s `nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config), which loads [`conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) and declares every shipped profile. **Don't edit this file**. See the warning in [Configuration options](../configuration/configuration-options.md). 2. **`$HOME/.nextflow/config`.** Your personal config, applied to every Nextflow run you launch. Good for settings that should follow you across all pipelines, such as your Singularity cache location or a default executor for your workstation. 3. **`nextflow.config` in the launch directory.** Applied automatically whenever you run Nextflow from that directory. Good for per-project or per-working-directory settings you don't want to retype each time. -Try the launch-directory form now. -Drop a `nextflow.config` in your current directory: + +Add a `nextflow.config` in your current directory: ```groovy title="nextflow.config" process { @@ -182,12 +197,17 @@ Reserve `-c` (covered below) for one-off overrides and shared team configs that A **profile** is a named bundle of configuration that lives inside a config file under the `profiles` scope. You activate one or more with the `-profile` flag. -You've been using profiles since Step 1. `-profile test,docker` activates two: `test` (a small public dataset) and `docker` (use Docker to manage software). +You've been using profiles since [Baseline run](#baseline-run). `-profile test,docker` activates two: `test` (a small public dataset) and `docker` (use Docker to manage software). Every nf-core pipeline ships with a standard set of profiles: -- **Software profiles**: `docker`, `singularity`, `apptainer`, `podman`, `conda`, `charliecloud`, `shifter` — one per container engine or environment manager. +- **Software profiles**: `docker`, `singularity`, `apptainer`, `podman`, `conda`, `charliecloud`, `shifter` (one per container engine or environment manager). - **Test profiles**: [`test`](https://github.com/nf-core/demo/blob/master/conf/test.config) (a small dataset for quick verification) and [`test_full`](https://github.com/nf-core/demo/blob/master/conf/test_full.config) (the full-size dataset used in CI). + + :::note + The [`test_full`](https://github.com/nf-core/demo/blob/master/conf/test_full.config) is also a very small test dataset that can be used for testing. + ::: + - **Institutional profiles**: contributed to [nf-core/configs](https://github.com/nf-core/configs) and loaded automatically by every nf-core pipeline. Activate one with `-profile ` if your cluster has one. Combine profiles with commas, and remember that order matters — later profiles override earlier ones where they overlap: @@ -224,11 +244,6 @@ On a workstation without SLURM, Nextflow will fail when it tries to submit jobs. Drop the `executor` and `queue` lines (or switch `executor` to `'local'`) to try the profile locally. ::: -:::warning -Don't put pipeline parameters inside a profile (for example, a `params { input = '...' }` block inside `profiles { myserver { ... } }`). -The same nf-core constraint from Step 3 applies — parameters must come from the command line or `-params-file`, even when wrapped in a profile. -::: - ### Use shared institutional configs If you work on a shared HPC cluster or cloud platform, there's a good chance someone has already written a profile for it. @@ -267,7 +282,7 @@ If you're working on an air-gapped system, see [Running pipelines offline](../ru ### Pass a config explicitly with `-c` -For configuration you don't want loaded by default — a one-off resource bump, a shared institutional config, an experimental override — pass it on the command line with `-c`. +For configuration you don't want loaded by default. For example, a one-off resource bump, a shared institutional config, or an experimental override, pass it on the command line with `-c`. 1. Create a small `custom.config`: @@ -287,11 +302,12 @@ For configuration you don't want loaded by default — a one-off resource bump, 3. Open `results/pipeline_info/execution_report.html` and inspect the resource columns to confirm the new requests were applied. You can pass `-c` more than once. -Files are applied in order, so later ones override earlier ones — useful for stacking a base config with an environment-specific override. +Files are applied in order, so later ones override earlier one. ### Tune how the pipeline executes -Beyond resource requests, config files control **how** each run executes: which scheduler picks up jobs, what to do when a process fails, and where intermediate files live. +Beyond resource requests, config files control **how** each run executes +For example, which scheduler picks up jobs, what to do when a process fails, and where intermediate files live. These settings sit alongside the `process` scope you used above, with a few sibling top-level options. Edit `custom.config` to switch to a SLURM executor with automatic retries and a scratch work directory: @@ -315,7 +331,7 @@ nextflow run nf-core/demo -profile test,docker -c custom.config --outdir results :::note This config will only run successfully on a SLURM cluster with a `long` queue and access to `/scratch`. -On a workstation, leave `executor` unset (Nextflow defaults to `local`), drop `queue`, and point `workDir` at a path you can actually write to — or simply skip running this config and read the annotations below. +On a workstation, leave `executor` unset (Nextflow defaults to `local`), drop `queue`, and point `workDir` at a path you can actually write to, or simply skip running this config and read the annotations below. ::: Each setting controls a different aspect of the run: @@ -333,7 +349,8 @@ nf-core pipelines already enable the standard execution reports under `pipeline_ ### Target specific processes with `withName` and `withLabel` The blanket `process { cpus = 2 }` example above applies to every process in the pipeline. -In practice you'll usually want to target specific steps — bump the resources for an aligner without changing anything else, or pass an extra command-line argument to one tool. +In practice you'll usually want to target specific steps. +For example, bump the resources for an aligner without changing anything else, or pass an extra command-line argument to one tool. Nextflow gives you two selectors for this: - **`withName`** matches a specific process by its fully qualified name. `nf-core/demo` runs three processes — [`FASTQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf), [`SEQTK_TRIM`](https://github.com/nf-core/demo/blob/master/modules/nf-core/seqtk/trim/main.nf), and [`MULTIQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/multiqc/main.nf) — and each has a name you can see in `.nextflow.log` or in `pipeline_info/execution_trace.txt` after a run. @@ -355,11 +372,13 @@ process { } ``` -Re-run with `-c custom.config` and check `results/pipeline_info/execution_report.html` — FASTQC should report the resources you set, and every other low-tier process should pick up the `process_low` block. +Re-run with `-c custom.config` and check `results/pipeline_info/execution_report.html`. +FASTQC should report the resources you set, and every other low-tier process should pick up the `process_low` block. :::tip Find the full process name for `withName` in `.nextflow.log` or in `pipeline_info/execution_trace.txt` after a run. -Process labels are declared on each `process` definition inside the module — for example, [`FASTQC`'s `main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf) declares `label 'process_medium'` on its second line. +Process labels are declared on each `process` definition inside the module. +For example, [`FASTQC`'s `main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf) declares `label 'process_medium'` on its second line. The size labels (`process_low`, `process_medium`, `process_high`, `process_high_memory`) are standard across all nf-core pipelines. ::: @@ -368,7 +387,7 @@ The size labels (`process_low`, `process_medium`, `process_high`, `process_high_ `ext.args` is a per-process configuration value that nf-core modules use to inject extra command-line flags into the underlying tool. It lives inside a `withName` selector (so it follows the same targeting rules as the previous section), and the module picks it up at runtime with `def args = task.ext.args ?: ''`. -By convention, nf-core pipelines collect every per-process option in a dedicated file, [`conf/modules.config`](https://github.com/nf-core/demo/blob/master/conf/modules.config) — another source of configuration loaded automatically through the pipeline's `nextflow.config`. +By convention, nf-core pipelines collect every per-process option in a dedicated file, [`conf/modules.config`](https://github.com/nf-core/demo/blob/master/conf/modules.config). It is another source of configuration loaded automatically through the pipeline's `nextflow.config`. Open `nf-core/demo`'s copy to see two real uses of `ext.args`: ```groovy @@ -384,7 +403,8 @@ withName: 'MULTIQC' { ``` FASTQC always runs with `--quiet`. -MULTIQC dynamically picks up `--title` if the `multiqc_title` parameter is set — which is why the `multiqc_title` value from your `params.yaml` in Step 3 flowed through into the MultiQC report. +MULTIQC dynamically picks up `--title` if the `multiqc_title` parameter is set. +This is why the `multiqc_title` value from your `params.yaml` flowed through into the MultiQC report. To pass your own flags without forking the module, override `ext.args` in `custom.config`: @@ -411,25 +431,6 @@ Never edit the module's `main.nf` to add a flag — `ext.args` exists precisely For `resourceLimits`, executor tuning, and container registry overrides, see [System requirements](../configuration/nextflow-for-your-system.md). For profile precedence and shared institutional configs, see [Configuration options](../configuration/configuration-options.md). -## Precedence cheat sheet - -When two sources set the same **parameter**, the higher-priority source wins. From lowest to highest priority: - -1. Pipeline defaults (for example, [`conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) and the project [`nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config)) -2. User config (`$HOME/.nextflow/config`) -3. `nextflow.config` in the launch directory -4. Config files passed with `-c`, in the order they appear -5. The `-params-file` file -6. Command-line `--` flags - -:::note -`NXF_*` environment variables are not part of this parameter precedence chain — they configure Nextflow's runtime, not pipeline parameters. Think of them as a separate layer that applies before any of the above. -::: - -:::note -Profiles aren't a separate layer in the list above — they apply through whichever config file declares them. Within a single `-profile a,b,c`, profiles are applied left to right, so later names override earlier ones where they overlap. -::: - ## Next steps - [Configuration options](../configuration/configuration-options.md) — profiles, shared nf-core/configs, and full precedence rules From 3782592dc24f2ce2c4419cf421a7ccb386409d6b Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 25 May 2026 11:32:28 +1200 Subject: [PATCH 03/19] Put it together section --- .../tutorials/configure-a-pipeline-run.md | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 50516dd647..4993dcdb96 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -431,6 +431,73 @@ Never edit the module's `main.nf` to add a flag — `ext.args` exists precisely For `resourceLimits`, executor tuning, and container registry overrides, see [System requirements](../configuration/nextflow-for-your-system.md). For profile precedence and shared institutional configs, see [Configuration options](../configuration/configuration-options.md). +## Put it all together + +Each layer you've explored solves a different problem. +In practice, a single run usually uses several at once. +This step combines them into one invocation so you can see how they interact. + +1. Set environment variables for runtime concerns that don't change between runs: + + ```bash + export NXF_VER=24.10.5 + export NXF_WORK=$HOME/nf-demo-work + ``` + +2. Capture pipeline parameters in a `params.yaml` file so the run is reproducible: + + ```yaml title="params.yaml" + outdir: my_results + multiqc_title: "nf-core/demo configured run" + ``` + +3. Put per-process overrides in `custom.config`: + + ```groovy title="custom.config" + process { + withName: 'NFCORE_DEMO:DEMO:FASTQC' { + cpus = 4 + memory = 8.GB + ext.args = '--quiet --noextract' + } + + withLabel: 'process_low' { + cpus = 2 + memory = 4.GB + } + } + ``` + +4. Launch the run, activating the `test` and `docker` profiles and passing the parameter and config files: + + ```bash + nextflow run nf-core/demo \ + -profile test,docker \ + -params-file params.yaml \ + -c custom.config + ``` + +This single command exercises every layer the tutorial introduced. Each one is resolved independently: + +- **Runtime**: `NXF_VER` and `NXF_WORK` are read from the shell before Nextflow parses any config, pinning the version and redirecting intermediate files. +- **Configuration**: config files layer in a fixed order — the pipeline's bundled `nextflow.config` (which pulls in `conf/base.config` and `conf/modules.config`) loads first, the `test` and `docker` profiles override matching keys, and `custom.config` overrides them last. The `withName` and `withLabel` blocks in `custom.config` therefore win for FASTQC and every `process_low` step. +- **Parameters**: values in `params.yaml` set the pipeline parameters. A matching `--flag` on the command line would override them. + +To confirm each layer took effect, check: + +- `my_results/pipeline_info/execution_report.html` — FASTQC should report 4 CPUs and 8 GB of memory. +- `my_results/multiqc/multiqc_report.html` — the report title should read "nf-core/demo configured run". +- `$HOME/nf-demo-work/` — intermediate files should appear here instead of under `./work/`. + +:::tip +A rule of thumb for where each setting belongs: + +- **Environment variables** for runtime concerns tied to your machine or session (Nextflow version, cache locations, offline mode). +- **`params.yaml`** for any setting the pipeline exposes as a parameter. +- **Profiles** for reusable bundles you switch on by name (container engine, test data, institutional cluster). +- **`custom.config`** for one-off or team-specific overrides that don't warrant a profile. +::: + ## Next steps - [Configuration options](../configuration/configuration-options.md) — profiles, shared nf-core/configs, and full precedence rules From 5c721c82580aefe4b7b264e9df2759a40c2e55ec Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 25 May 2026 12:40:18 +1200 Subject: [PATCH 04/19] Links --- .../docs/get_started/run-your-first-pipeline.md | 1 + .../running/tutorials/configure-a-pipeline-run.md | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/sites/docs/src/content/docs/get_started/run-your-first-pipeline.md b/sites/docs/src/content/docs/get_started/run-your-first-pipeline.md index 6dad499fd3..37708b77a6 100644 --- a/sites/docs/src/content/docs/get_started/run-your-first-pipeline.md +++ b/sites/docs/src/content/docs/get_started/run-your-first-pipeline.md @@ -167,6 +167,7 @@ Version information is automatically recorded in pipeline reports in the `pipeli Now that you've successfully run your first nf-core pipeline: +- Complete the [Configure a pipeline run](../running/tutorials/configure-a-pipeline-run.md) tutorial, more a comprehensive, hands-on walkthrough of every configuration layer (environment variables, parameters, profiles, custom config files, and `ext.args`) using `nf-core/demo` as the worked example - Browse the [nf-core pipeline catalog](https://nf-co.re/pipelines) to find workflows for your research area - Learn to [adjust resource requirements and parameters](../running/configuration/overview.md) for your infrastructure - Join the [nf-core Slack](https://nf-co.re/join/slack) community diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 4993dcdb96..f1e089fb81 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -7,14 +7,16 @@ shortTitle: Configure a pipeline run nf-core pipelines are shaped by multiple levels of of configuration: environment variables that tune Nextflow itself, parameters that tune the pipeline, and config files that tune execution. Using [`nf-core/demo`](https://nf-co.re/demo), this tutorial explains each layer as worked examples. +![nf-core/demo subway map](../../../assets/images/get_started/nf-core-demo-subway.png) + By the end you will have: -- Used `NXF_*` environment variables to control Nextflow's runtime -- Supplied pipeline parameters on the command line and from a `params.yaml` file -- Activated profiles to switch between container engines and test scenarios -- Layered a custom `custom.config` file with process-specific overrides -- Used `ext.args` (the convention for `conf/modules.config`) to extend a tool's command line without editing the module -- Understood which configuration source overrides which +- Used `NXF_*` environment variables to control Nextflow's runtime. +- Supplied pipeline parameters on the command line and from a `params.yaml` file. +- Activated profiles to switch between container engines and test scenarios. +- Layered a custom `custom.config` file with process-specific overrides. +- Used `ext.args` (the convention for `conf/modules.config`) to extend a tool's command line without editing the module. +- Understood which configuration source overrides which. :::note{title="Prerequisites"} You will need the following to get started: From 7d0b4b31cca52ba7be4d477f1ebd47824f717e66 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Mon, 25 May 2026 00:43:18 +0000 Subject: [PATCH 05/19] [automated] Fix code linting --- .../docs/running/tutorials/configure-a-pipeline-run.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index f1e089fb81..32c022df1d 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -174,7 +174,6 @@ From lowest to highest priority, they are: 2. **`$HOME/.nextflow/config`.** Your personal config, applied to every Nextflow run you launch. Good for settings that should follow you across all pipelines, such as your Singularity cache location or a default executor for your workstation. 3. **`nextflow.config` in the launch directory.** Applied automatically whenever you run Nextflow from that directory. Good for per-project or per-working-directory settings you don't want to retype each time. - Add a `nextflow.config` in your current directory: ```groovy title="nextflow.config" @@ -206,9 +205,9 @@ Every nf-core pipeline ships with a standard set of profiles: - **Software profiles**: `docker`, `singularity`, `apptainer`, `podman`, `conda`, `charliecloud`, `shifter` (one per container engine or environment manager). - **Test profiles**: [`test`](https://github.com/nf-core/demo/blob/master/conf/test.config) (a small dataset for quick verification) and [`test_full`](https://github.com/nf-core/demo/blob/master/conf/test_full.config) (the full-size dataset used in CI). - :::note - The [`test_full`](https://github.com/nf-core/demo/blob/master/conf/test_full.config) is also a very small test dataset that can be used for testing. - ::: + :::note + The [`test_full`](https://github.com/nf-core/demo/blob/master/conf/test_full.config) is also a very small test dataset that can be used for testing. + ::: - **Institutional profiles**: contributed to [nf-core/configs](https://github.com/nf-core/configs) and loaded automatically by every nf-core pipeline. Activate one with `-profile ` if your cluster has one. @@ -498,7 +497,7 @@ A rule of thumb for where each setting belongs: - **`params.yaml`** for any setting the pipeline exposes as a parameter. - **Profiles** for reusable bundles you switch on by name (container engine, test data, institutional cluster). - **`custom.config`** for one-off or team-specific overrides that don't warrant a profile. -::: + ::: ## Next steps From 978320d56890acf80277829349bd1cac6c421a41 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 25 May 2026 12:56:49 +1200 Subject: [PATCH 06/19] Fix link --- .../content/docs/running/tutorials/configure-a-pipeline-run.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 32c022df1d..000ec002f3 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -7,7 +7,7 @@ shortTitle: Configure a pipeline run nf-core pipelines are shaped by multiple levels of of configuration: environment variables that tune Nextflow itself, parameters that tune the pipeline, and config files that tune execution. Using [`nf-core/demo`](https://nf-co.re/demo), this tutorial explains each layer as worked examples. -![nf-core/demo subway map](../../../assets/images/get_started/nf-core-demo-subway.png) +![nf-core/demo subway map](../../../../assets/images/get_started/nf-core-demo-subway.png) By the end you will have: From ba29060cf627228e4d73c82423f9de15739e405b Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 25 May 2026 13:02:22 +1200 Subject: [PATCH 07/19] Learn more --- .../docs/running/tutorials/configure-a-pipeline-run.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 000ec002f3..bf5dbe20ca 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -501,7 +501,6 @@ A rule of thumb for where each setting belongs: ## Next steps -- [Configuration options](../configuration/configuration-options.md) — profiles, shared nf-core/configs, and full precedence rules -- [System requirements](../configuration/nextflow-for-your-system.md) — resource limits, executors, and tool argument overrides -- [Running pipelines](../run-pipelines.md) — broader run patterns and common operations -- [Nextflow configuration documentation](https://docs.seqera.io/nextflow/config) +- Learn more about [configuration options](../configuration/configuration-options.md) (i.e., profiles, shared nf-core/configs, and full precedence rules) +- Learn more about [aystem requirements](../configuration/nextflow-for-your-system.md) (i.e., resource limits, executors, and tool argument overrides) +- Learn more about [Nextflow configuration](https://docs.seqera.io/nextflow/config) From dfb0d44cc0df19b83761aed0db9a16dfbe0a2309 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 8 Jun 2026 17:07:41 +1200 Subject: [PATCH 08/19] First batch of fixes --- .../tutorials/configure-a-pipeline-run.md | 151 +++++++++--------- 1 file changed, 77 insertions(+), 74 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index bf5dbe20ca..f6e922bfe0 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -11,18 +11,18 @@ Using [`nf-core/demo`](https://nf-co.re/demo), this tutorial explains each layer By the end you will have: -- Used `NXF_*` environment variables to control Nextflow's runtime. - Supplied pipeline parameters on the command line and from a `params.yaml` file. - Activated profiles to switch between container engines and test scenarios. - Layered a custom `custom.config` file with process-specific overrides. - Used `ext.args` (the convention for `conf/modules.config`) to extend a tool's command line without editing the module. +- Used `NXF_*` environment variables to control Nextflow's runtime. - Understood which configuration source overrides which. :::note{title="Prerequisites"} You will need the following to get started: - An internet connection -- [Nextflow version 24.04.0 or later](../get_started/environment_setup/nextflow.md) +- [Nextflow version 25.10.4 or later](../get_started/environment_setup/nextflow.md) - A container engine, such as Docker, Singularity, or Conda. See [Software dependencies](../../get_started/environment_setup/software-dependencies.md) ::: @@ -42,67 +42,20 @@ nextflow run nf-core/demo -profile test,docker --outdir results Replace `docker` with your preferred software dependency manager (for example, `singularity` or `conda`). -This run uses three defaults that you will override in the next steps: +In the background, this run uses three defaults that you will override in the next steps: -- The pipeline's bundled [`nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config) and the [`test`](https://github.com/nf-core/demo/blob/master/conf/test.config) and `docker` profiles -- Default pipeline parameters (input samplesheet, MultiQC title, and so on). See the [nf-core/demo parameters page](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json) +- The pipeline's internal [`nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config) and the [`test`](https://github.com/nf-core/demo/blob/master/conf/test.config) and `docker` profiles +- Default pipeline parameters (path to input samplesheet, the customisable MultiQC title and so on). See the [nf-core/demo parameters page](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json) - Your default Nextflow runtime settings (e.g., work directory and Nextflow version) :::tip -Keep the `results/` directory from this run. You can compare it to the output of later steps to confirm your configuration changes took effect. -::: - -## Configure with environment variables - -`NXF_*` environment variables are the outermost configuration layer. -Nextflow reads them from your shell as it starts, before any config file or parameter is parsed, so they're the right place for settings that don't change between runs. -For example, which Nextflow version to use, where the work directory and container cache live, and whether to operate offline. -They configure **Nextflow itself**, not the pipeline. -You cannot set pipeline inputs or outputs this way. - -You set them like any other shell variable: with `export`, inline before a single command, or by adding them to your shell's startup file. - -1. Pin a Nextflow version and redirect the work directory for this run: - - ```bash - export NXF_VER=24.10.5 - export NXF_WORK=$HOME/nf-demo-work - nextflow run nf-core/demo -profile test,docker --outdir results - ``` - - The version line at the top of stdout (and in `.nextflow.log`) should now report `24.10.5`, and intermediate files should appear under `$HOME/nf-demo-work/` instead of `./work/`. - -2. To set a variable for a single command without exporting it, prefix the invocation: - - ```bash - NXF_VER=24.10.5 nextflow run nf-core/demo -profile test,docker --outdir results - ``` - -3. To persist a variable across sessions, add the export to your shell config: - - ```bash title=".bashrc" - export NXF_VER=24.10.5 - ``` - -:::tip -The `NXF_*` variables nf-core users reach for most often are: - -- `NXF_VER`: Pin a specific Nextflow version -- `NXF_HOME`: Override Nextflow's home directory (defaults to `$HOME/.nextflow`) -- `NXF_WORK`: Override the work directory for intermediate files -- `NXF_OFFLINE`: Run without contacting the network (see [Running pipelines offline](../run-pipelines-offline.md)) -- `NXF_SINGULARITY_CACHEDIR` / `NXF_APPTAINER_CACHEDIR`: Reuse downloaded container images across runs - -For the full list, see the [Nextflow environment variables reference](https://docs.seqera.io/nextflow/reference/env-vars). -::: - -:::note -`NXF_*` variables are distinct from pipeline parameters. They configure how Nextflow runs, not what the pipeline does. You cannot set `--input` or `--outdir` with an environment variable. +Keep the `results/` directory from this run. +You can compare it to the output of later steps to confirm your configuration changes took effect. ::: ## Configure with parameters -Pipeline parameters are the knobs the pipeline itself exposes. +Pipeline parameters are the knobs and switches the pipeline offers to users to control how the different steps of the pipeline execute. For example, inputs, outputs, skip flags, reference data choices, and tool toggles. They're documented per pipeline. For `nf-core/demo`, see the [parameters reference](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json). @@ -121,16 +74,16 @@ CLI flags override values in a parameter file. 1. Override a single parameter on the command line: ```bash - nextflow run nf-core/demo -profile test,docker --outdir my_results + nextflow run nf-core/demo -profile test,docker --outdir results_customcommandline ``` - Output now goes to `my_results/` instead of `results/`. + Output now goes to `results_customcommandline/` instead of `results/`. 2. For longer parameter sets, create a `params.yaml` file: ```yaml title="params.yaml" - outdir: my_results - multiqc_title: "nf-core/demo configured run" + outdir: results_customcommandline + multiqc_title: "nf-core/demo parameter file configured run" ``` 3. Apply it with `-params-file`: @@ -142,15 +95,16 @@ CLI flags override values in a parameter file. Open `my_results/multiqc/multiqc_report.html` to confirm the report title was set. :::tip -Both JSON and YAML are supported for parameter files. +Both JSON and YAML formats are supported for parameter files. Parameter files make runs easier to reproduce and share. You can publish them alongside results so others can re-run the exact same configuration. +See [Pipeline parameters](https://docs.seqera.io/nextflow/cli#pipeline-parameters) for more information. ::: :::warning nf-core pipeline parameters must be supplied on the command line or via `-params-file`. -Setting a parameter inside a custom `.config` file (for example, `params { outdir = '...' }`) will **not** override the pipeline's defaults. -Use config files for executor and resource settings, and parameter files for pipeline parameters. +Pipeline parameters are the knobs and switches the pipeline offers to users to control how the different steps of the pipeline executes. +Use config files for executor and computational resource settings, and parameter files for pipeline parameters. ::: ## Configure with config files @@ -168,28 +122,28 @@ The next four sections cover all three approaches and then show how to target sp ### Auto-loaded `nextflow.config` files Nextflow looks for config files in three places without being told. -From lowest to highest priority, they are: + nextflow run nf-core/demo -profile test,docker --outdir results_customcommandline -1. **The pipeline's own `nextflow.config` in the project directory.** Bundled with every nf-core pipeline and downloaded with the rest of the pipeline code. For example, [`nf-core/demo`'s `nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config), which loads [`conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) and declares every shipped profile. **Don't edit this file**. See the warning in [Configuration options](../configuration/configuration-options.md). +1. **The pipeline's own `nextflow.config` in the project directory.** Included with every nf-core pipeline's source code. For example, [`nf-core/demo`'s `nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config), which loads [`conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) and declares every shipped profile. **Don't edit this file**. See the warning in [Configuration options](../configuration/configuration-options.md). 2. **`$HOME/.nextflow/config`.** Your personal config, applied to every Nextflow run you launch. Good for settings that should follow you across all pipelines, such as your Singularity cache location or a default executor for your workstation. 3. **`nextflow.config` in the launch directory.** Applied automatically whenever you run Nextflow from that directory. Good for per-project or per-working-directory settings you don't want to retype each time. Add a `nextflow.config` in your current directory: -```groovy title="nextflow.config" -process { - cpus = 2 - memory = 4.GB + outdir: results_customparamsfile + multiqc_title: "nf-core/demo parameter file configured run" + cpus = 2 + memory = 4.GB } ``` Re-run the baseline command. No `-c` flag is needed, Nextflow picks the file up automatically: ```bash -nextflow run nf-core/demo -profile test,docker --outdir results +nextflow run nf-core/demo -profile test,docker --outdir results_customnextflowconfig ``` - -:::tip +Both JSON and YAML formats are supported for parameter files. +Both JSON and YAML formats are supported for parameter files. Use `$HOME/.nextflow/config` for personal defaults that follow you across machines, and a launch-directory `nextflow.config` for project-specific settings. Reserve `-c` (covered below) for one-off overrides and shared team configs that should live alongside your pipeline command. ::: @@ -197,10 +151,11 @@ Reserve `-c` (covered below) for one-off overrides and shared team configs that ### Activate bundled settings with profiles A **profile** is a named bundle of configuration that lives inside a config file under the `profiles` scope. +They allow you to switch between different sets of configurations stored in a single config file. You activate one or more with the `-profile` flag. You've been using profiles since [Baseline run](#baseline-run). `-profile test,docker` activates two: `test` (a small public dataset) and `docker` (use Docker to manage software). -Every nf-core pipeline ships with a standard set of profiles: +Every nf-core pipeline comes with a standard set of profiles: - **Software profiles**: `docker`, `singularity`, `apptainer`, `podman`, `conda`, `charliecloud`, `shifter` (one per container engine or environment manager). - **Test profiles**: [`test`](https://github.com/nf-core/demo/blob/master/conf/test.config) (a small dataset for quick verification) and [`test_full`](https://github.com/nf-core/demo/blob/master/conf/test_full.config) (the full-size dataset used in CI). @@ -216,7 +171,7 @@ Combine profiles with commas, and remember that order matters — later profiles ```bash nextflow run nf-core/demo -profile test,docker --outdir results ``` - +1. **The pipeline's own `nextflow.config` in the project directory.** Included with every nf-core pipeline's source code. For example, [`nf-core/demo`'s `nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config), which loads [`conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) and declares every shipped profile. **Don't edit this file**. See the warning in [Configuration options](../configuration/configuration-options.md). You can also define your own profile for settings you'd like to reuse. Add a `myserver` profile to your launch-directory `nextflow.config`: @@ -232,7 +187,7 @@ profiles { } } ``` - +nextflow run nf-core/demo -profile test,docker --outdir results_customnextflowconfig Activate it alongside the existing profiles: ```bash @@ -432,6 +387,54 @@ Never edit the module's `main.nf` to add a flag — `ext.args` exists precisely For `resourceLimits`, executor tuning, and container registry overrides, see [System requirements](../configuration/nextflow-for-your-system.md). For profile precedence and shared institutional configs, see [Configuration options](../configuration/configuration-options.md). +## Configure with environment variables + +`NXF_*` environment variables are the outermost configuration layer. +Nextflow reads them from your shell as it starts, before any config file or parameter is parsed, so they're the right place for settings that don't change between runs. +For example, which Nextflow version to use, where the work directory and container cache live, and whether to operate offline. +They configure **Nextflow itself**, not the pipeline. +You cannot set pipeline inputs or outputs this way. + +You set them like any other shell variable: with `export`, inline before a single command, or by adding them to your shell's startup file. + +1. Pin a Nextflow version and redirect the work directory for this run: + + ```bash + export NXF_VER=24.10.5 + export NXF_WORK=$HOME/nf-demo-work + nextflow run nf-core/demo -profile test,docker --outdir results + ``` + + The version line at the top of stdout (and in `.nextflow.log`) should now report `24.10.5`, and intermediate files should appear under `$HOME/nf-demo-work/` instead of `./work/`. + +2. To set a variable for a single command without exporting it, prefix the invocation: + + ```bash + NXF_VER=24.10.5 nextflow run nf-core/demo -profile test,docker --outdir results + ``` + +3. To persist a variable across sessions, add the export to your shell config: + + ```bash title=".bashrc" + export NXF_VER=24.10.5 + ``` + +:::tip +The `NXF_*` variables nf-core users reach for most often are: + +- `NXF_VER`: Pin a specific Nextflow version +- `NXF_HOME`: Override Nextflow's home directory (defaults to `$HOME/.nextflow`) +- `NXF_WORK`: Override the work directory for intermediate files +- `NXF_OFFLINE`: Run without contacting the network (see [Running pipelines offline](../run-pipelines-offline.md)) +- `NXF_SINGULARITY_CACHEDIR` / `NXF_APPTAINER_CACHEDIR`: Reuse downloaded container images across runs + +For the full list, see the [Nextflow environment variables reference](https://docs.seqera.io/nextflow/reference/env-vars). +::: + +:::note +`NXF_*` variables are distinct from pipeline parameters. They configure how Nextflow runs, not what the pipeline does. You cannot set `--input` or `--outdir` with an environment variable. +::: + ## Put it all together Each layer you've explored solves a different problem. From 889e7caec529be2e8ab63fc2613b50e5e733ff19 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 8 Jun 2026 17:18:15 +1200 Subject: [PATCH 09/19] Messy merge after moving a section --- .../tutorials/configure-a-pipeline-run.md | 78 ++++++++++--------- 1 file changed, 43 insertions(+), 35 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index f6e922bfe0..4c8292a1a0 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -161,28 +161,30 @@ Every nf-core pipeline comes with a standard set of profiles: - **Test profiles**: [`test`](https://github.com/nf-core/demo/blob/master/conf/test.config) (a small dataset for quick verification) and [`test_full`](https://github.com/nf-core/demo/blob/master/conf/test_full.config) (the full-size dataset used in CI). :::note - The [`test_full`](https://github.com/nf-core/demo/blob/master/conf/test_full.config) is also a very small test dataset that can be used for testing. + The [`test_full`](https://github.com/nf-core/demo/blob/master/conf/test_full.config) profile in nf-core/demo is also a very small test dataset that can be used for testing. + In other pipelines these can be much larger, but produce realistic output. ::: -- **Institutional profiles**: contributed to [nf-core/configs](https://github.com/nf-core/configs) and loaded automatically by every nf-core pipeline. Activate one with `-profile ` if your cluster has one. +- **Institutional profiles**: contributed to [nf-core/configs](https://github.com/nf-core/configs) and loaded automatically by every nf-core pipeline. Activate one with `-profile ` if your cluster has one - see [Use shared institutional configs](#use-shared-institutional-configs). Combine profiles with commas, and remember that order matters — later profiles override earlier ones where they overlap: ```bash nextflow run nf-core/demo -profile test,docker --outdir results ``` + +In this example, options in the `docker` profile will override any of the options with the same name as in `test`. + 1. **The pipeline's own `nextflow.config` in the project directory.** Included with every nf-core pipeline's source code. For example, [`nf-core/demo`'s `nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config), which loads [`conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) and declares every shipped profile. **Don't edit this file**. See the warning in [Configuration options](../configuration/configuration-options.md). You can also define your own profile for settings you'd like to reuse. -Add a `myserver` profile to your launch-directory `nextflow.config`: +Add a `myserver` profile to your existing launch-directory `nextflow.config`: ```groovy title="nextflow.config" profiles { - myserver { + mymachine { process { - executor = 'slurm' - queue = 'standard' cpus = 4 - memory = 16.GB + memory = 8.GB } } } @@ -191,13 +193,12 @@ nextflow run nf-core/demo -profile test,docker --outdir results_customnextflowco Activate it alongside the existing profiles: ```bash -nextflow run nf-core/demo -profile test,docker,myserver --outdir results +nextflow run nf-core/demo -profile test,docker,myserver --outdir results_customprofile ``` :::note The `myserver` profile is illustrative — it will only run successfully if you have access to a SLURM cluster with a `standard` queue. On a workstation without SLURM, Nextflow will fail when it tries to submit jobs. -Drop the `executor` and `queue` lines (or switch `executor` to `'local'`) to try the profile locally. ::: ### Use shared institutional configs @@ -205,7 +206,7 @@ Drop the `executor` and `queue` lines (or switch `executor` to `'local'`) to try If you work on a shared HPC cluster or cloud platform, there's a good chance someone has already written a profile for it. The [nf-core/configs](https://github.com/nf-core/configs) repository collects over 150 cluster-specific configs contributed by the community, covering the executor, queue, resource limits, container engine, scratch paths, module systems, and any other cluster-specific quirks needed to run nf-core pipelines well in that environment. -Every nf-core pipeline loads these configs automatically — there's nothing to download or copy. +Every nf-core pipeline loads these configs automatically — there's nothing to download or copy yourself. At run time, each pipeline fetches the [`nfcore_custom.config`](https://github.com/nf-core/configs/blob/master/nfcore_custom.config) from the `nf-core/configs` repository and makes every profile in it available alongside the pipeline's own profiles. You activate one the same way you activate any other profile: @@ -238,31 +239,32 @@ If you're working on an air-gapped system, see [Running pipelines offline](../ru ### Pass a config explicitly with `-c` -For configuration you don't want loaded by default. For example, a one-off resource bump, a shared institutional config, or an experimental override, pass it on the command line with `-c`. +For configuration you don't want loaded by default. +For example, a one-off resource bump, a shared institutional config, or an experimental override, pass it on the command line with `-c`. -1. Create a small `custom.config`: +1. Create a small file named `custom.config`: ```groovy title="custom.config" process { - cpus = 2 - memory = 4.GB + cpus = 3 + memory = 6.GB } ``` 2. Apply it with `-c`: ```bash - nextflow run nf-core/demo -profile test,docker -c custom.config --outdir results + nextflow run nf-core/demo -profile test,docker -c custom.config --outdir results_customconfig ``` -3. Open `results/pipeline_info/execution_report.html` and inspect the resource columns to confirm the new requests were applied. +3. Open `results_customconfig/pipeline_info/execution_report_.html` and inspect the resource columns to confirm the new requests were applied You can pass `-c` more than once. Files are applied in order, so later ones override earlier one. ### Tune how the pipeline executes -Beyond resource requests, config files control **how** each run executes +Beyond resource requests, config files control **how** each run executes. For example, which scheduler picks up jobs, what to do when a process fails, and where intermediate files live. These settings sit alongside the `process` scope you used above, with a few sibling top-level options. @@ -272,8 +274,6 @@ Edit `custom.config` to switch to a SLURM executor with automatic retries and a workDir = '/scratch/$USER/nf-work' process { - executor = 'slurm' - queue = 'long' errorStrategy = 'retry' maxRetries = 2 } @@ -286,11 +286,11 @@ nextflow run nf-core/demo -profile test,docker -c custom.config --outdir results ``` :::note -This config will only run successfully on a SLURM cluster with a `long` queue and access to `/scratch`. -On a workstation, leave `executor` unset (Nextflow defaults to `local`), drop `queue`, and point `workDir` at a path you can actually write to, or simply skip running this config and read the annotations below. +You will see now that a `nf-work/` directory specified in the config was generated in the directory where you executed the command, alongside the results directory. ::: -Each setting controls a different aspect of the run: +Each setting controls a different aspect of the run. +Common settings are: - **`process.executor`**: where jobs go — `local` (default), `slurm`, `awsbatch`, `lsf`, `pbs`, `kubernetes`, and so on. - **`process.queue`**: which queue or partition to submit to on shared clusters. @@ -298,19 +298,19 @@ Each setting controls a different aspect of the run: - **`workDir`**: where Nextflow stages intermediate files — point it at fast scratch storage on HPC to keep your home filesystem clean. :::tip -For the full list of config scopes (`process`, `executor`, `docker`, `singularity`, `aws`, `azure`, `google`, `report`, `trace`, `timeline`, and more), see the [Nextflow config reference](https://docs.seqera.io/nextflow/reference/config). +For the full list of config scopes and options (`process`, `executor`, `docker`, `singularity`, `aws`, `azure`, `google`, `report`, `trace`, `timeline`, and more), see the [Nextflow config reference](https://docs.seqera.io/nextflow/reference/config). nf-core pipelines already enable the standard execution reports under `pipeline_info/`, so you only need to override those if you want custom paths. ::: ### Target specific processes with `withName` and `withLabel` -The blanket `process { cpus = 2 }` example above applies to every process in the pipeline. -In practice you'll usually want to target specific steps. -For example, bump the resources for an aligner without changing anything else, or pass an extra command-line argument to one tool. +The blanket `process { cpus = 2 }` examples above applies to every process in the pipeline. +In practice you'll usually want to target specific steps of the pipeline. +For example, to bump the resources for an aligner without changing anything else, or pass an extra command-line argument to one tool. Nextflow gives you two selectors for this: - **`withName`** matches a specific process by its fully qualified name. `nf-core/demo` runs three processes — [`FASTQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf), [`SEQTK_TRIM`](https://github.com/nf-core/demo/blob/master/modules/nf-core/seqtk/trim/main.nf), and [`MULTIQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/multiqc/main.nf) — and each has a name you can see in `.nextflow.log` or in `pipeline_info/execution_trace.txt` after a run. -- **`withLabel`** matches every process that carries a given label. All nf-core pipelines tag their processes with size labels (`process_low`, `process_medium`, `process_high`, `process_high_memory`) — see how they map to resource requests in [`nf-core/demo`'s `conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) — so a single `withLabel` block can adjust whole resource tiers at once. +- **`withLabel`** matches every process that carries a given label. All nf-core pipelines tag their processes with size labels (`process_low`, `process_medium`, `process_high`, `process_high_memory`) — see how they map to resource requests in [`nf-core/demo`'s `conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config). A single `withLabel` block can adjust whole resource tiers at once. Edit your `custom.config` to use both: @@ -328,11 +328,11 @@ process { } ``` -Re-run with `-c custom.config` and check `results/pipeline_info/execution_report.html`. +Re-run with `-c custom.config` and check `results_customlabels/pipeline_info/execution_report.html`. FASTQC should report the resources you set, and every other low-tier process should pick up the `process_low` block. :::tip -Find the full process name for `withName` in `.nextflow.log` or in `pipeline_info/execution_trace.txt` after a run. +Find the full process name for `withName` in the console during a run, or `.nextflow.log` or in `pipeline_info/execution_trace.txt` after a run. Process labels are declared on each `process` definition inside the module. For example, [`FASTQC`'s `main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf) declares `label 'process_medium'` on its second line. The size labels (`process_low`, `process_medium`, `process_high`, `process_high_memory`) are standard across all nf-core pipelines. @@ -343,8 +343,9 @@ The size labels (`process_low`, `process_medium`, `process_high`, `process_high_ `ext.args` is a per-process configuration value that nf-core modules use to inject extra command-line flags into the underlying tool. It lives inside a `withName` selector (so it follows the same targeting rules as the previous section), and the module picks it up at runtime with `def args = task.ext.args ?: ''`. -By convention, nf-core pipelines collect every per-process option in a dedicated file, [`conf/modules.config`](https://github.com/nf-core/demo/blob/master/conf/modules.config). It is another source of configuration loaded automatically through the pipeline's `nextflow.config`. -Open `nf-core/demo`'s copy to see two real uses of `ext.args`: +By convention, nf-core pipelines collect every per-process option in a dedicated file, [`conf/modules.config`](https://github.com/nf-core/demo/blob/master/conf/modules.config). +It is another source of configuration loaded automatically through the pipeline's `nextflow.config`. +Open `nf-core/demo`'s (https://github.com/nf-core/demo/blob/45904cb9d12db3d89900e6c479fe604ef71b297b/conf/modules.config#L21-L28) to see two real uses of `ext.args`: ```groovy withName: FASTQC { @@ -358,7 +359,7 @@ withName: 'MULTIQC' { } ``` -FASTQC always runs with `--quiet`. +FASTQC always runs with FastQC's `--quiet` mode. MULTIQC dynamically picks up `--title` if the `multiqc_title` parameter is set. This is why the `multiqc_title` value from your `params.yaml` flowed through into the MultiQC report. @@ -374,6 +375,12 @@ process { Re-run with `-c custom.config` and FASTQC will pick up the new flags through `task.ext.args` inside its [`main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf). +:::danger +Customising `ext.args` is not generally not recommended, and may break the pipeline as they have not been tested by the developer. +It is recommended to request official support for a new tool option or argument from the pipeline developer. +Customise `ext.args` in a config as a last resort. +::: + Sibling keys you'll see in the same file: - **`ext.args2`, `ext.args3`** — second and third argument sets for modules that call more than one tool. @@ -381,7 +388,7 @@ Sibling keys you'll see in the same file: :::tip `ext.args` is the right way to pass tool-specific flags that aren't exposed as pipeline parameters. -Never edit the module's `main.nf` to add a flag — `ext.args` exists precisely so you can extend the command line without diverging from the canonical pipeline. +Never edit the module's `main.nf` to add a flag — `ext.args` exists precisely so you can extend the command line without changing the versioned pipeline code. ::: For `resourceLimits`, executor tuning, and container registry overrides, see [System requirements](../configuration/nextflow-for-your-system.md). @@ -481,7 +488,8 @@ This step combines them into one invocation so you can see how they interact. -c custom.config ``` -This single command exercises every layer the tutorial introduced. Each one is resolved independently: +This single command exercises every layer the tutorial introduced. +Each one is resolved independently: - **Runtime**: `NXF_VER` and `NXF_WORK` are read from the shell before Nextflow parses any config, pinning the version and redirecting intermediate files. - **Configuration**: config files layer in a fixed order — the pipeline's bundled `nextflow.config` (which pulls in `conf/base.config` and `conf/modules.config`) loads first, the `test` and `docker` profiles override matching keys, and `custom.config` overrides them last. The `withName` and `withLabel` blocks in `custom.config` therefore win for FASTQC and every `process_low` step. @@ -500,7 +508,7 @@ A rule of thumb for where each setting belongs: - **`params.yaml`** for any setting the pipeline exposes as a parameter. - **Profiles** for reusable bundles you switch on by name (container engine, test data, institutional cluster). - **`custom.config`** for one-off or team-specific overrides that don't warrant a profile. - ::: +::: ## Next steps From 8c206d3ee4bac5b4ff43ab29567a3d1f1b051c97 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 8 Jun 2026 17:23:00 +1200 Subject: [PATCH 10/19] Fix --- .../src/content/docs/get_started/run-your-first-pipeline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/docs/src/content/docs/get_started/run-your-first-pipeline.md b/sites/docs/src/content/docs/get_started/run-your-first-pipeline.md index 37708b77a6..c9b904fb7b 100644 --- a/sites/docs/src/content/docs/get_started/run-your-first-pipeline.md +++ b/sites/docs/src/content/docs/get_started/run-your-first-pipeline.md @@ -167,7 +167,7 @@ Version information is automatically recorded in pipeline reports in the `pipeli Now that you've successfully run your first nf-core pipeline: -- Complete the [Configure a pipeline run](../running/tutorials/configure-a-pipeline-run.md) tutorial, more a comprehensive, hands-on walkthrough of every configuration layer (environment variables, parameters, profiles, custom config files, and `ext.args`) using `nf-core/demo` as the worked example +- Complete the [Configure a pipeline run](../running/tutorials/configure-a-pipeline-run.md) tutorial, a more comprehensive, hands-on walkthrough of every configuration layer (environment variables, parameters, profiles, custom config files, and `ext.args`) using `nf-core/demo` as the worked example - Browse the [nf-core pipeline catalog](https://nf-co.re/pipelines) to find workflows for your research area - Learn to [adjust resource requirements and parameters](../running/configuration/overview.md) for your infrastructure - Join the [nf-core Slack](https://nf-co.re/join/slack) community From 767747c38f571b8f06914f46b824fe66538418bc Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 8 Jun 2026 17:27:28 +1200 Subject: [PATCH 11/19] Missed some --- .../running/tutorials/configure-a-pipeline-run.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 4c8292a1a0..8546669f90 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -77,12 +77,12 @@ CLI flags override values in a parameter file. nextflow run nf-core/demo -profile test,docker --outdir results_customcommandline ``` - Output now goes to `results_customcommandline/` instead of `results/`. + Output now goes to `results_customparamsfile/` instead of `results/`. 2. For longer parameter sets, create a `params.yaml` file: ```yaml title="params.yaml" - outdir: results_customcommandline + outdir: results_customparamsfile multiqc_title: "nf-core/demo parameter file configured run" ``` @@ -132,8 +132,8 @@ Add a `nextflow.config` in your current directory: outdir: results_customparamsfile multiqc_title: "nf-core/demo parameter file configured run" - cpus = 2 - memory = 4.GB + cpus = 1 + memory = 2.GB } ``` @@ -271,7 +271,7 @@ These settings sit alongside the `process` scope you used above, with a few sibl Edit `custom.config` to switch to a SLURM executor with automatic retries and a scratch work directory: ```groovy title="custom.config" -workDir = '/scratch/$USER/nf-work' +workDir = '/tmp/foo' process { errorStrategy = 'retry' @@ -323,7 +323,7 @@ process { withLabel: 'process_low' { cpus = 2 - memory = 4.GB + memory = 2.GB } } ``` From 70d252c474d2f7ea922eea9b793828f5dbb8ca25 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 8 Jun 2026 17:40:37 +1200 Subject: [PATCH 12/19] Fix consistency issues --- .../tutorials/configure-a-pipeline-run.md | 65 +++++++++---------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 8546669f90..1b39627996 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -4,7 +4,7 @@ subtitle: A hands-on tutorial for configuring nf-core/demo with environment vari shortTitle: Configure a pipeline run --- -nf-core pipelines are shaped by multiple levels of of configuration: environment variables that tune Nextflow itself, parameters that tune the pipeline, and config files that tune execution. +nf-core pipelines are shaped by multiple levels of configuration: environment variables that tune Nextflow itself, parameters that tune the pipeline, and config files that tune execution. Using [`nf-core/demo`](https://nf-co.re/demo), this tutorial explains each layer as worked examples. ![nf-core/demo subway map](../../../../assets/images/get_started/nf-core-demo-subway.png) @@ -22,7 +22,7 @@ By the end you will have: You will need the following to get started: - An internet connection -- [Nextflow version 25.10.4 or later](../get_started/environment_setup/nextflow.md) +- [Nextflow version 25.10.4 or later](../../get_started/environment_setup/nextflow.md) - A container engine, such as Docker, Singularity, or Conda. See [Software dependencies](../../get_started/environment_setup/software-dependencies.md) ::: @@ -31,7 +31,7 @@ You will need the following to get started: Before changing anything, run the pipeline with no custom configuration so you have something to compare against. This baseline run relies entirely on `nf-core/demo`'s built-in defaults. -No environment variables, custom parameters, no extra config files are set. +No environment variables, no custom parameters, and no extra config files are set. In each of the following steps you will replace one of these defaults and observe the effect. Start with a plain test invocation as your reference point: @@ -77,7 +77,7 @@ CLI flags override values in a parameter file. nextflow run nf-core/demo -profile test,docker --outdir results_customcommandline ``` - Output now goes to `results_customparamsfile/` instead of `results/`. + Output now goes to `results_customcommandline/` instead of `results/`. 2. For longer parameter sets, create a `params.yaml` file: @@ -92,7 +92,7 @@ CLI flags override values in a parameter file. nextflow run nf-core/demo -profile test,docker -params-file params.yaml ``` - Open `my_results/multiqc/multiqc_report.html` to confirm the report title was set. + Open `results_customparamsfile/multiqc/multiqc_report.html` to confirm the report title was set. :::tip Both JSON and YAML formats are supported for parameter files. @@ -103,7 +103,6 @@ See [Pipeline parameters](https://docs.seqera.io/nextflow/cli#pipeline-parameter :::warning nf-core pipeline parameters must be supplied on the command line or via `-params-file`. -Pipeline parameters are the knobs and switches the pipeline offers to users to control how the different steps of the pipeline executes. Use config files for executor and computational resource settings, and parameter files for pipeline parameters. ::: @@ -117,12 +116,11 @@ They're the right place for any setting that depends on your infrastructure rath Nextflow assembles its final configuration from several config files. Nextflow picks up some config files automatically, some you switch on by name with `-profile`, and others you point it at explicitly with `-c`. -The next four sections cover all three approaches and then show how to target specific processes inside any config file. +The sections that follow cover all three approaches and then show how to target specific processes inside any config file. ### Auto-loaded `nextflow.config` files Nextflow looks for config files in three places without being told. - nextflow run nf-core/demo -profile test,docker --outdir results_customcommandline 1. **The pipeline's own `nextflow.config` in the project directory.** Included with every nf-core pipeline's source code. For example, [`nf-core/demo`'s `nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config), which loads [`conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) and declares every shipped profile. **Don't edit this file**. See the warning in [Configuration options](../configuration/configuration-options.md). 2. **`$HOME/.nextflow/config`.** Your personal config, applied to every Nextflow run you launch. Good for settings that should follow you across all pipelines, such as your Singularity cache location or a default executor for your workstation. @@ -130,10 +128,10 @@ Nextflow looks for config files in three places without being told. Add a `nextflow.config` in your current directory: - outdir: results_customparamsfile - multiqc_title: "nf-core/demo parameter file configured run" - cpus = 1 - memory = 2.GB +```groovy title="nextflow.config" +process { + cpus = 1 + memory = 2.GB } ``` @@ -142,8 +140,8 @@ Re-run the baseline command. No `-c` flag is needed, Nextflow picks the file up ```bash nextflow run nf-core/demo -profile test,docker --outdir results_customnextflowconfig ``` -Both JSON and YAML formats are supported for parameter files. -Both JSON and YAML formats are supported for parameter files. + +:::tip Use `$HOME/.nextflow/config` for personal defaults that follow you across machines, and a launch-directory `nextflow.config` for project-specific settings. Reserve `-c` (covered below) for one-off overrides and shared team configs that should live alongside your pipeline command. ::: @@ -175,9 +173,8 @@ nextflow run nf-core/demo -profile test,docker --outdir results In this example, options in the `docker` profile will override any of the options with the same name as in `test`. -1. **The pipeline's own `nextflow.config` in the project directory.** Included with every nf-core pipeline's source code. For example, [`nf-core/demo`'s `nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config), which loads [`conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config) and declares every shipped profile. **Don't edit this file**. See the warning in [Configuration options](../configuration/configuration-options.md). You can also define your own profile for settings you'd like to reuse. -Add a `myserver` profile to your existing launch-directory `nextflow.config`: +Add a `mymachine` profile to your existing launch-directory `nextflow.config`: ```groovy title="nextflow.config" profiles { @@ -189,16 +186,16 @@ profiles { } } ``` -nextflow run nf-core/demo -profile test,docker --outdir results_customnextflowconfig + Activate it alongside the existing profiles: ```bash -nextflow run nf-core/demo -profile test,docker,myserver --outdir results_customprofile +nextflow run nf-core/demo -profile test,docker,mymachine --outdir results_customprofile ``` :::note -The `myserver` profile is illustrative — it will only run successfully if you have access to a SLURM cluster with a `standard` queue. -On a workstation without SLURM, Nextflow will fail when it tries to submit jobs. +The `mymachine` profile is illustrative — it requests more CPUs and memory than the `test` profile's small dataset needs. +On a workstation without those resources available, Nextflow will fail when it tries to run the processes. ::: ### Use shared institutional configs @@ -260,7 +257,7 @@ For example, a one-off resource bump, a shared institutional config, or an exper 3. Open `results_customconfig/pipeline_info/execution_report_.html` and inspect the resource columns to confirm the new requests were applied You can pass `-c` more than once. -Files are applied in order, so later ones override earlier one. +Files are applied in order, so later ones override earlier ones. ### Tune how the pipeline executes @@ -268,10 +265,10 @@ Beyond resource requests, config files control **how** each run executes. For example, which scheduler picks up jobs, what to do when a process fails, and where intermediate files live. These settings sit alongside the `process` scope you used above, with a few sibling top-level options. -Edit `custom.config` to switch to a SLURM executor with automatic retries and a scratch work directory: +Edit `custom.config` to add automatic retries and redirect the work directory: ```groovy title="custom.config" -workDir = '/tmp/foo' +workDir = 'nf-work' process { errorStrategy = 'retry' @@ -286,7 +283,7 @@ nextflow run nf-core/demo -profile test,docker -c custom.config --outdir results ``` :::note -You will see now that a `nf-work/` directory specified in the config was generated in the directory where you executed the command, alongside the results directory. +You will now see that an `nf-work/` directory specified in the config was generated in the directory where you executed the command, alongside the results directory. ::: Each setting controls a different aspect of the run. @@ -304,7 +301,7 @@ nf-core pipelines already enable the standard execution reports under `pipeline_ ### Target specific processes with `withName` and `withLabel` -The blanket `process { cpus = 2 }` examples above applies to every process in the pipeline. +The blanket `process { cpus = 3 }` example above applies to every process in the pipeline. In practice you'll usually want to target specific steps of the pipeline. For example, to bump the resources for an aligner without changing anything else, or pass an extra command-line argument to one tool. Nextflow gives you two selectors for this: @@ -328,7 +325,7 @@ process { } ``` -Re-run with `-c custom.config` and check `results_customlabels/pipeline_info/execution_report.html`. +Re-run with `-c custom.config` and check `pipeline_info/execution_report.html` in your output directory. FASTQC should report the resources you set, and every other low-tier process should pick up the `process_low` block. :::tip @@ -345,7 +342,7 @@ It lives inside a `withName` selector (so it follows the same targeting rules as By convention, nf-core pipelines collect every per-process option in a dedicated file, [`conf/modules.config`](https://github.com/nf-core/demo/blob/master/conf/modules.config). It is another source of configuration loaded automatically through the pipeline's `nextflow.config`. -Open `nf-core/demo`'s (https://github.com/nf-core/demo/blob/45904cb9d12db3d89900e6c479fe604ef71b297b/conf/modules.config#L21-L28) to see two real uses of `ext.args`: +Open `nf-core/demo`'s [`conf/modules.config`](https://github.com/nf-core/demo/blob/45904cb9d12db3d89900e6c479fe604ef71b297b/conf/modules.config#L21-L28) to see two real uses of `ext.args`: ```groovy withName: FASTQC { @@ -376,7 +373,7 @@ process { Re-run with `-c custom.config` and FASTQC will pick up the new flags through `task.ext.args` inside its [`main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf). :::danger -Customising `ext.args` is not generally not recommended, and may break the pipeline as they have not been tested by the developer. +Customising `ext.args` is generally not recommended, and may break the pipeline as the changes have not been tested by the developer. It is recommended to request official support for a new tool option or argument from the pipeline developer. Customise `ext.args` in a config as a last resort. ::: @@ -407,23 +404,23 @@ You set them like any other shell variable: with `export`, inline before a singl 1. Pin a Nextflow version and redirect the work directory for this run: ```bash - export NXF_VER=24.10.5 + export NXF_VER=25.10.4 export NXF_WORK=$HOME/nf-demo-work nextflow run nf-core/demo -profile test,docker --outdir results ``` - The version line at the top of stdout (and in `.nextflow.log`) should now report `24.10.5`, and intermediate files should appear under `$HOME/nf-demo-work/` instead of `./work/`. + The version line at the top of stdout (and in `.nextflow.log`) should now report `25.10.4`, and intermediate files should appear under `$HOME/nf-demo-work/` instead of `./work/`. 2. To set a variable for a single command without exporting it, prefix the invocation: ```bash - NXF_VER=24.10.5 nextflow run nf-core/demo -profile test,docker --outdir results + NXF_VER=25.10.4 nextflow run nf-core/demo -profile test,docker --outdir results ``` 3. To persist a variable across sessions, add the export to your shell config: ```bash title=".bashrc" - export NXF_VER=24.10.5 + export NXF_VER=25.10.4 ``` :::tip @@ -451,7 +448,7 @@ This step combines them into one invocation so you can see how they interact. 1. Set environment variables for runtime concerns that don't change between runs: ```bash - export NXF_VER=24.10.5 + export NXF_VER=25.10.4 export NXF_WORK=$HOME/nf-demo-work ``` @@ -513,5 +510,5 @@ A rule of thumb for where each setting belongs: ## Next steps - Learn more about [configuration options](../configuration/configuration-options.md) (i.e., profiles, shared nf-core/configs, and full precedence rules) -- Learn more about [aystem requirements](../configuration/nextflow-for-your-system.md) (i.e., resource limits, executors, and tool argument overrides) +- Learn more about [system requirements](../configuration/nextflow-for-your-system.md) (i.e., resource limits, executors, and tool argument overrides) - Learn more about [Nextflow configuration](https://docs.seqera.io/nextflow/config) From da858ef0df5716d9aa8a1e91fc32a32aef5bdf35 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Tue, 16 Jun 2026 10:57:21 +0000 Subject: [PATCH 13/19] [automated] Fix code linting --- .../content/docs/running/tutorials/configure-a-pipeline-run.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 1b39627996..01bed2f970 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -505,7 +505,7 @@ A rule of thumb for where each setting belongs: - **`params.yaml`** for any setting the pipeline exposes as a parameter. - **Profiles** for reusable bundles you switch on by name (container engine, test data, institutional cluster). - **`custom.config`** for one-off or team-specific overrides that don't warrant a profile. -::: + ::: ## Next steps From 964f3d5134f60c5a402b5f6184ee86bcd361ce96 Mon Sep 17 00:00:00 2001 From: Chris Hakkaart Date: Fri, 19 Jun 2026 08:49:38 +1200 Subject: [PATCH 14/19] Apply suggestions from code review Co-authored-by: James A. Fellows Yates --- .../tutorials/configure-a-pipeline-run.md | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 01bed2f970..2c7c9268ea 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -34,13 +34,12 @@ This baseline run relies entirely on `nf-core/demo`'s built-in defaults. No environment variables, no custom parameters, and no extra config files are set. In each of the following steps you will replace one of these defaults and observe the effect. -Start with a plain test invocation as your reference point: +Start with a plain test invocation as your reference point, replacing `docker` with your preferred software dependency manager (for example, `singularity` or `conda`). ```bash nextflow run nf-core/demo -profile test,docker --outdir results ``` -Replace `docker` with your preferred software dependency manager (for example, `singularity` or `conda`). In the background, this run uses three defaults that you will override in the next steps: @@ -92,7 +91,7 @@ CLI flags override values in a parameter file. nextflow run nf-core/demo -profile test,docker -params-file params.yaml ``` - Open `results_customparamsfile/multiqc/multiqc_report.html` to confirm the report title was set. + Open `results_customparamsfile/multiqc/nf-coredemo-parameter-file-configured-run_multiqc_report.html` to confirm the report title was set. :::tip Both JSON and YAML formats are supported for parameter files. @@ -143,7 +142,7 @@ nextflow run nf-core/demo -profile test,docker --outdir results_customnextflowco :::tip Use `$HOME/.nextflow/config` for personal defaults that follow you across machines, and a launch-directory `nextflow.config` for project-specific settings. -Reserve `-c` (covered below) for one-off overrides and shared team configs that should live alongside your pipeline command. +Reserve `-c` (covered below) for one-off overrides and shared project configs that should live alongside your pipeline command. ::: ### Activate bundled settings with profiles @@ -205,13 +204,6 @@ The [nf-core/configs](https://github.com/nf-core/configs) repository collects ov Every nf-core pipeline loads these configs automatically — there's nothing to download or copy yourself. At run time, each pipeline fetches the [`nfcore_custom.config`](https://github.com/nf-core/configs/blob/master/nfcore_custom.config) from the `nf-core/configs` repository and makes every profile in it available alongside the pipeline's own profiles. -You activate one the same way you activate any other profile: - -```bash -nextflow run nf-core/demo -profile test,docker, --outdir results -``` - -Replace `` with the profile name for your environment. A handful of examples from the [configs directory](https://github.com/nf-core/configs/tree/master/conf): - [`uppmax`](https://github.com/nf-core/configs/blob/master/conf/uppmax.config) — UPPMAX (Sweden) @@ -221,6 +213,9 @@ A handful of examples from the [configs directory](https://github.com/nf-core/co Browse the full list at [nf-co.re/configs](https://nf-co.re/configs). +You activate one the same way you activate any other profile. If your institution's infrastructure is supported by nf-core/configs, replace `` with the profile name for your environment to try it out. + + Some institutions also contribute **pipeline-specific** overrides — a profile that further tunes resources for a particular pipeline on a particular cluster. These live under [`conf/pipeline//.config`](https://github.com/nf-core/configs/tree/master/conf/pipeline) in the repository and are picked up automatically when you run that pipeline with the matching `-profile`. @@ -271,6 +266,9 @@ Edit `custom.config` to add automatic retries and redirect the work directory: workDir = 'nf-work' process { + + cpus = 3 + memory = 6.GB errorStrategy = 'retry' maxRetries = 2 } @@ -279,7 +277,7 @@ process { Apply it the same way as before: ```bash -nextflow run nf-core/demo -profile test,docker -c custom.config --outdir results +nextflow run nf-core/demo -profile test,docker -c custom.config --outdir results_customconfig ``` :::note @@ -294,7 +292,9 @@ Common settings are: - **`process.errorStrategy`** with **`process.maxRetries`**: retry transient failures (for example, a node going down or a timeout) instead of failing the whole run. - **`workDir`**: where Nextflow stages intermediate files — point it at fast scratch storage on HPC to keep your home filesystem clean. -:::tip +:::info +The syntax + For the full list of config scopes and options (`process`, `executor`, `docker`, `singularity`, `aws`, `azure`, `google`, `report`, `trace`, `timeline`, and more), see the [Nextflow config reference](https://docs.seqera.io/nextflow/reference/config). nf-core pipelines already enable the standard execution reports under `pipeline_info/`, so you only need to override those if you want custom paths. ::: @@ -327,9 +327,6 @@ process { Re-run with `-c custom.config` and check `pipeline_info/execution_report.html` in your output directory. FASTQC should report the resources you set, and every other low-tier process should pick up the `process_low` block. - -:::tip -Find the full process name for `withName` in the console during a run, or `.nextflow.log` or in `pipeline_info/execution_trace.txt` after a run. Process labels are declared on each `process` definition inside the module. For example, [`FASTQC`'s `main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf) declares `label 'process_medium'` on its second line. The size labels (`process_low`, `process_medium`, `process_high`, `process_high_memory`) are standard across all nf-core pipelines. @@ -371,7 +368,6 @@ process { ``` Re-run with `-c custom.config` and FASTQC will pick up the new flags through `task.ext.args` inside its [`main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf). - :::danger Customising `ext.args` is generally not recommended, and may break the pipeline as the changes have not been tested by the developer. It is recommended to request official support for a new tool option or argument from the pipeline developer. @@ -436,7 +432,9 @@ For the full list, see the [Nextflow environment variables reference](https://do ::: :::note -`NXF_*` variables are distinct from pipeline parameters. They configure how Nextflow runs, not what the pipeline does. You cannot set `--input` or `--outdir` with an environment variable. +`NXF_*` variables are distinct from pipeline parameters. +They configure how Nextflow runs, not what the pipeline does. +You cannot set `--input` or `--outdir` with an environment variable. ::: ## Put it all together From 75cdae3847346998e77fdd5e27f99c969a408287 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 25 Jun 2026 13:29:47 +0200 Subject: [PATCH 15/19] Start updating commands and instructions using demo 1.2.0 --- .../tutorials/configure-a-pipeline-run.md | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 2c7c9268ea..685c81933f 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -37,10 +37,9 @@ In each of the following steps you will replace one of these defaults and observ Start with a plain test invocation as your reference point, replacing `docker` with your preferred software dependency manager (for example, `singularity` or `conda`). ```bash -nextflow run nf-core/demo -profile test,docker --outdir results +nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results ``` - In the background, this run uses three defaults that you will override in the next steps: - The pipeline's internal [`nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config) and the [`test`](https://github.com/nf-core/demo/blob/master/conf/test.config) and `docker` profiles @@ -73,7 +72,7 @@ CLI flags override values in a parameter file. 1. Override a single parameter on the command line: ```bash - nextflow run nf-core/demo -profile test,docker --outdir results_customcommandline + nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results_customcommandline ``` Output now goes to `results_customcommandline/` instead of `results/`. @@ -88,10 +87,11 @@ CLI flags override values in a parameter file. 3. Apply it with `-params-file`: ```bash - nextflow run nf-core/demo -profile test,docker -params-file params.yaml + nextflow run nf-core/demo -r 1.2.0 -profile test,docker -params-file params.yaml ``` - Open `results_customparamsfile/multiqc/nf-coredemo-parameter-file-configured-run_multiqc_report.html` to confirm the report title was set. + Output now goes to `results_customparamsfile/` instead of `results/`. + Open `results_customparamsfile/multiqc/nf-coredemo-parameter-file-configured-run_multiqc_report.html` in a web browser to confirm the report title was set. :::tip Both JSON and YAML formats are supported for parameter files. @@ -137,9 +137,12 @@ process { Re-run the baseline command. No `-c` flag is needed, Nextflow picks the file up automatically: ```bash -nextflow run nf-core/demo -profile test,docker --outdir results_customnextflowconfig +nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results_customnextflowconfig ``` +Compare between the 'Tasks' section `results/pipeline_info/results/execution_report_.html` and `results_customnextflowconfig/pipeline_info/results/execution_report_.html`. +Observe that the process `NFCORE_DEMO:DEMO:COWPY` has changed it's memory from `4.GB` to `2.GB`, as specified in the new `nextflow.config`. + :::tip Use `$HOME/.nextflow/config` for personal defaults that follow you across machines, and a launch-directory `nextflow.config` for project-specific settings. Reserve `-c` (covered below) for one-off overrides and shared project configs that should live alongside your pipeline command. @@ -164,10 +167,10 @@ Every nf-core pipeline comes with a standard set of profiles: - **Institutional profiles**: contributed to [nf-core/configs](https://github.com/nf-core/configs) and loaded automatically by every nf-core pipeline. Activate one with `-profile ` if your cluster has one - see [Use shared institutional configs](#use-shared-institutional-configs). -Combine profiles with commas, and remember that order matters — later profiles override earlier ones where they overlap: +Combine profiles with commas, and remember that order matters - later profiles override earlier ones where they overlap: ```bash -nextflow run nf-core/demo -profile test,docker --outdir results +nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results ``` In this example, options in the `docker` profile will override any of the options with the same name as in `test`. @@ -179,8 +182,7 @@ Add a `mymachine` profile to your existing launch-directory `nextflow.config`: profiles { mymachine { process { - cpus = 4 - memory = 8.GB + cpus = 2 } } } @@ -189,9 +191,12 @@ profiles { Activate it alongside the existing profiles: ```bash -nextflow run nf-core/demo -profile test,docker,mymachine --outdir results_customprofile +nextflow run nf-core/demo -r 1.2.0 -profile test,docker,mymachine --outdir results_customprofile ``` +Compare between the 'Tasks' section `results_customnextflowconfig/pipeline_info/results/execution_report_.html` and `results_customprofile/pipeline_info/results/execution_report_.html`. +Observe that the process `NFCORE_DEMO:DEMO:COWPY` has changed the CPUs from `1` to `2`, as specified in the new `nextflow.config`. + :::note The `mymachine` profile is illustrative — it requests more CPUs and memory than the `test` profile's small dataset needs. On a workstation without those resources available, Nextflow will fail when it tries to run the processes. @@ -215,7 +220,6 @@ Browse the full list at [nf-co.re/configs](https://nf-co.re/configs). You activate one the same way you activate any other profile. If your institution's infrastructure is supported by nf-core/configs, replace `` with the profile name for your environment to try it out. - Some institutions also contribute **pipeline-specific** overrides — a profile that further tunes resources for a particular pipeline on a particular cluster. These live under [`conf/pipeline//.config`](https://github.com/nf-core/configs/tree/master/conf/pipeline) in the repository and are picked up automatically when you run that pipeline with the matching `-profile`. @@ -238,18 +242,19 @@ For example, a one-off resource bump, a shared institutional config, or an exper ```groovy title="custom.config" process { - cpus = 3 - memory = 6.GB + memory = 3.GB } ``` 2. Apply it with `-c`: ```bash - nextflow run nf-core/demo -profile test,docker -c custom.config --outdir results_customconfig + nextflow run nf-core/demo -r 1.2.0 -profile test,docker -c custom.config --outdir results_customconfig ``` -3. Open `results_customconfig/pipeline_info/execution_report_.html` and inspect the resource columns to confirm the new requests were applied +Compare between the 'Tasks' section `results_customprofile/pipeline_info/results/execution_report_.html` and `results_customcontig/pipeline_info/results/execution_report_.html` +Observe that the process `NFCORE_DEMO:DEMO:COWPY` has changed the memory from `2` to `3`, as specified in the new `custom.config`. +Furthermore, the CPUs have gone back from 2 to 1 as we did not specify the `mymachine` profile, thus falling back to the value in `nextflow.config`. You can pass `-c` more than once. Files are applied in order, so later ones override earlier ones. @@ -274,10 +279,12 @@ process { } ``` + + Apply it the same way as before: ```bash -nextflow run nf-core/demo -profile test,docker -c custom.config --outdir results_customconfig +nextflow run nf-core/demo -r 1.2.0 -profile test,docker -c custom.config --outdir results_customconfig ``` :::note @@ -402,7 +409,7 @@ You set them like any other shell variable: with `export`, inline before a singl ```bash export NXF_VER=25.10.4 export NXF_WORK=$HOME/nf-demo-work - nextflow run nf-core/demo -profile test,docker --outdir results + nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results ``` The version line at the top of stdout (and in `.nextflow.log`) should now report `25.10.4`, and intermediate files should appear under `$HOME/nf-demo-work/` instead of `./work/`. @@ -410,7 +417,7 @@ You set them like any other shell variable: with `export`, inline before a singl 2. To set a variable for a single command without exporting it, prefix the invocation: ```bash - NXF_VER=25.10.4 nextflow run nf-core/demo -profile test,docker --outdir results + NXF_VER=25.10.4 nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results ``` 3. To persist a variable across sessions, add the export to your shell config: @@ -477,7 +484,7 @@ This step combines them into one invocation so you can see how they interact. 4. Launch the run, activating the `test` and `docker` profiles and passing the parameter and config files: ```bash - nextflow run nf-core/demo \ + nextflow run nf-core/demo -r 1.2.0 \ -profile test,docker \ -params-file params.yaml \ -c custom.config From 95dfe22aae9477d69129d10d32354283ba11f082 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 25 Jun 2026 15:42:54 +0200 Subject: [PATCH 16/19] Continue custom config real commands --- .../tutorials/configure-a-pipeline-run.md | 91 ++++++++++++++----- 1 file changed, 66 insertions(+), 25 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 685c81933f..5ceb117885 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -267,29 +267,24 @@ These settings sit alongside the `process` scope you used above, with a few sibl Edit `custom.config` to add automatic retries and redirect the work directory: -```groovy title="custom.config" +```groovy title="custom.config" {1,6-7} workDir = 'nf-work' process { - - cpus = 3 - memory = 6.GB + memory = 3.GB + cpus = 1 errorStrategy = 'retry' maxRetries = 2 } ``` - - Apply it the same way as before: ```bash -nextflow run nf-core/demo -r 1.2.0 -profile test,docker -c custom.config --outdir results_customconfig +nextflow run nf-core/demo -r 1.2.0 -profile test,docker -c custom.config --outdir results_customconfig2 ``` -:::note You will now see that an `nf-work/` directory specified in the config was generated in the directory where you executed the command, alongside the results directory. -::: Each setting controls a different aspect of the run. Common settings are: @@ -316,26 +311,43 @@ Nextflow gives you two selectors for this: - **`withName`** matches a specific process by its fully qualified name. `nf-core/demo` runs three processes — [`FASTQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf), [`SEQTK_TRIM`](https://github.com/nf-core/demo/blob/master/modules/nf-core/seqtk/trim/main.nf), and [`MULTIQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/multiqc/main.nf) — and each has a name you can see in `.nextflow.log` or in `pipeline_info/execution_trace.txt` after a run. - **`withLabel`** matches every process that carries a given label. All nf-core pipelines tag their processes with size labels (`process_low`, `process_medium`, `process_high`, `process_high_memory`) — see how they map to resource requests in [`nf-core/demo`'s `conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config). A single `withLabel` block can adjust whole resource tiers at once. -Edit your `custom.config` to use both: +Edit your `custom.config` to include both in the `process block: + +```groovy title="custom.config" {8-16} +workDir = 'nf-work' -```groovy title="custom.config" process { + memory = 3.GB + cpus = 1 + errorStrategy = 'retry' + maxRetries = 2 + withName: 'NFCORE_DEMO:DEMO:FASTQC' { - cpus = 4 - memory = 8.GB + cpus = 1 + memory = 3.GB } withLabel: 'process_low' { - cpus = 2 - memory = 2.GB + cpus = 1 + memory = 1.GB } } ``` -Re-run with `-c custom.config` and check `pipeline_info/execution_report.html` in your output directory. -FASTQC should report the resources you set, and every other low-tier process should pick up the `process_low` block. +Re-run with the `-c custom.config`. + +```bash +nextflow run nf-core/demo -r 1.2.0 -profile test,docker -c custom.config --outdir results_customconfig3 +``` + +Compare `results_customconfig2/pipeline_info/execution_report_.html` with `results_customconfig3/pipeline_info/execution_report_.html`. +FASTQC should report requesting 1 CPU and 3 GB memory instead of 2 and 4 GB. + +`SEQTK_TRIM` has also changed, with now at 1 GB of memory and 1 CPU instead of 2 and 4 GB. Process labels are declared on each `process` definition inside the module. -For example, [`FASTQC`'s `main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf) declares `label 'process_medium'` on its second line. +For example, [`SEQTK_TRIM`'s `main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/seqtk/trim/main.nf) declares `label 'process_low'` on its second line. + +:::note The size labels (`process_low`, `process_medium`, `process_high`, `process_high_memory`) are standard across all nf-core pipelines. ::: @@ -348,7 +360,7 @@ By convention, nf-core pipelines collect every per-process option in a dedicated It is another source of configuration loaded automatically through the pipeline's `nextflow.config`. Open `nf-core/demo`'s [`conf/modules.config`](https://github.com/nf-core/demo/blob/45904cb9d12db3d89900e6c479fe604ef71b297b/conf/modules.config#L21-L28) to see two real uses of `ext.args`: -```groovy +```groovy {2,7} withName: FASTQC { ext.args = '--quiet' // ... @@ -366,15 +378,42 @@ This is why the `multiqc_title` value from your `params.yaml` flowed through int To pass your own flags without forking the module, override `ext.args` in `custom.config`: -```groovy title="custom.config" +```groovy title="custom.config" {12,19-21} +workDir = 'nf-work' + process { + memory = 3.GB + cpus = 1 + errorStrategy = 'retry' + maxRetries = 2 + withName: 'NFCORE_DEMO:DEMO:FASTQC' { - ext.args = '--quiet --noextract' + memory = 3.GB + cpus = 1 + ext.args = '--quiet --nogroup' + } + + withLabel: 'process_low' { + memory = 1.GB + cpus = 1 + } + + withName: 'MULTIQC' { + ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } } } ``` -Re-run with `-c custom.config` and FASTQC will pick up the new flags through `task.ext.args` inside its [`main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf). +Re-run with the `-c custom.config`. + +```bash +nextflow run nf-core/demo -r 1.2.0 -profile test,docker -c custom.config --outdir results_customconfig4 +``` + +FASTQC will pick up the new flags through `task.ext.args` inside its [`main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf). +Compare in your web browser `results_customconfig3/fastqc/SAMPLE1_PE/SAMPLE1_PE_1_fastqc.html` and `results_customconfig4/fastqc/SAMPLE1_PE/SAMPLE1_PE_1_fastqc.html`. +You will see the 'Per base sequence quality' plot has changed, due to addition of the `--nogroup` option. + :::danger Customising `ext.args` is generally not recommended, and may break the pipeline as the changes have not been tested by the developer. It is recommended to request official support for a new tool option or argument from the pipeline developer. @@ -396,6 +435,8 @@ For profile precedence and shared institutional configs, see [Configuration opti ## Configure with environment variables + + `NXF_*` environment variables are the outermost configuration layer. Nextflow reads them from your shell as it starts, before any config file or parameter is parsed, so they're the right place for settings that don't change between runs. For example, which Nextflow version to use, where the work directory and container cache live, and whether to operate offline. @@ -409,7 +450,7 @@ You set them like any other shell variable: with `export`, inline before a singl ```bash export NXF_VER=25.10.4 export NXF_WORK=$HOME/nf-demo-work - nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results + nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results_customenv ``` The version line at the top of stdout (and in `.nextflow.log`) should now report `25.10.4`, and intermediate files should appear under `$HOME/nf-demo-work/` instead of `./work/`. @@ -417,7 +458,7 @@ You set them like any other shell variable: with `export`, inline before a singl 2. To set a variable for a single command without exporting it, prefix the invocation: ```bash - NXF_VER=25.10.4 nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results + NXF_VER=25.10.4 nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results_customenv2 ``` 3. To persist a variable across sessions, add the export to your shell config: @@ -471,7 +512,7 @@ This step combines them into one invocation so you can see how they interact. withName: 'NFCORE_DEMO:DEMO:FASTQC' { cpus = 4 memory = 8.GB - ext.args = '--quiet --noextract' + ext.args = '--quiet --nogroup' } withLabel: 'process_low' { From cb29245b26144921b4ce248eae9ddd5de5b7f5f3 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 6 Jul 2026 12:21:29 +1200 Subject: [PATCH 17/19] Clean up --- .../tutorials/configure-a-pipeline-run.md | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index 5ceb117885..eb8f6f8d6c 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -69,13 +69,13 @@ The two forms are interchangeable, and you can mix them. CLI flags override values in a parameter file. ::: -1. Override a single parameter on the command line: +1. Set parameters on the command line. Any parameter is supplied as a `--` flag: ```bash - nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results_customcommandline + nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results_customcommandline --multiqc_title "nf-core/demo command line configured run" ``` - Output now goes to `results_customcommandline/` instead of `results/`. + Output now goes to `results_customcommandline/` instead of `results/`, and `--multiqc_title` sets the MultiQC report title. 2. For longer parameter sets, create a `params.yaml` file: @@ -140,8 +140,8 @@ Re-run the baseline command. No `-c` flag is needed, Nextflow picks the file up nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results_customnextflowconfig ``` -Compare between the 'Tasks' section `results/pipeline_info/results/execution_report_.html` and `results_customnextflowconfig/pipeline_info/results/execution_report_.html`. -Observe that the process `NFCORE_DEMO:DEMO:COWPY` has changed it's memory from `4.GB` to `2.GB`, as specified in the new `nextflow.config`. +Compare between the 'Tasks' section `results/pipeline_info/execution_report_.html` and `results_customnextflowconfig/pipeline_info/execution_report_.html`. +Observe that the process `NFCORE_DEMO:DEMO:COWPY` has changed its memory from `4.GB` to `2.GB`, as specified in the new `nextflow.config`. :::tip Use `$HOME/.nextflow/config` for personal defaults that follow you across machines, and a launch-directory `nextflow.config` for project-specific settings. @@ -194,12 +194,12 @@ Activate it alongside the existing profiles: nextflow run nf-core/demo -r 1.2.0 -profile test,docker,mymachine --outdir results_customprofile ``` -Compare between the 'Tasks' section `results_customnextflowconfig/pipeline_info/results/execution_report_.html` and `results_customprofile/pipeline_info/results/execution_report_.html`. +Compare between the 'Tasks' section `results_customnextflowconfig/pipeline_info/execution_report_.html` and `results_customprofile/pipeline_info/execution_report_.html`. Observe that the process `NFCORE_DEMO:DEMO:COWPY` has changed the CPUs from `1` to `2`, as specified in the new `nextflow.config`. :::note -The `mymachine` profile is illustrative — it requests more CPUs and memory than the `test` profile's small dataset needs. -On a workstation without those resources available, Nextflow will fail when it tries to run the processes. +The `mymachine` profile here only bumps CPUs to 2, which is also the ceiling set by the `test` profile's `resourceLimits`, so it runs fine on a laptop. +A real machine profile would set values suited to your hardware. Request more CPUs or memory than the machine actually has (and above any `resourceLimits` cap) and Nextflow will fail when it tries to run the processes. ::: ### Use shared institutional configs @@ -252,7 +252,7 @@ For example, a one-off resource bump, a shared institutional config, or an exper nextflow run nf-core/demo -r 1.2.0 -profile test,docker -c custom.config --outdir results_customconfig ``` -Compare between the 'Tasks' section `results_customprofile/pipeline_info/results/execution_report_.html` and `results_customcontig/pipeline_info/results/execution_report_.html` +Compare between the 'Tasks' section `results_customprofile/pipeline_info/execution_report_.html` and `results_customconfig/pipeline_info/execution_report_.html` Observe that the process `NFCORE_DEMO:DEMO:COWPY` has changed the memory from `2` to `3`, as specified in the new `custom.config`. Furthermore, the CPUs have gone back from 2 to 1 as we did not specify the `mymachine` profile, thus falling back to the value in `nextflow.config`. @@ -303,15 +303,15 @@ nf-core pipelines already enable the standard execution reports under `pipeline_ ### Target specific processes with `withName` and `withLabel` -The blanket `process { cpus = 3 }` example above applies to every process in the pipeline. +The blanket `process { memory = 3.GB }` example above applies to every process in the pipeline. In practice you'll usually want to target specific steps of the pipeline. For example, to bump the resources for an aligner without changing anything else, or pass an extra command-line argument to one tool. Nextflow gives you two selectors for this: -- **`withName`** matches a specific process by its fully qualified name. `nf-core/demo` runs three processes — [`FASTQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf), [`SEQTK_TRIM`](https://github.com/nf-core/demo/blob/master/modules/nf-core/seqtk/trim/main.nf), and [`MULTIQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/multiqc/main.nf) — and each has a name you can see in `.nextflow.log` or in `pipeline_info/execution_trace.txt` after a run. +- **`withName`** matches a specific process by its fully qualified name. `nf-core/demo` runs four processes — [`FASTQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf), [`SEQTK_TRIM`](https://github.com/nf-core/demo/blob/master/modules/nf-core/seqtk/trim/main.nf), `COWPY`, and [`MULTIQC`](https://github.com/nf-core/demo/blob/master/modules/nf-core/multiqc/main.nf) — and each has a name you can see in `.nextflow.log` or in `pipeline_info/execution_trace.txt` after a run. - **`withLabel`** matches every process that carries a given label. All nf-core pipelines tag their processes with size labels (`process_low`, `process_medium`, `process_high`, `process_high_memory`) — see how they map to resource requests in [`nf-core/demo`'s `conf/base.config`](https://github.com/nf-core/demo/blob/master/conf/base.config). A single `withLabel` block can adjust whole resource tiers at once. -Edit your `custom.config` to include both in the `process block: +Edit your `custom.config` to include both in the `process` block: ```groovy title="custom.config" {8-16} workDir = 'nf-work' @@ -435,8 +435,6 @@ For profile precedence and shared institutional configs, see [Configuration opti ## Configure with environment variables - - `NXF_*` environment variables are the outermost configuration layer. Nextflow reads them from your shell as it starts, before any config file or parameter is parsed, so they're the right place for settings that don't change between runs. For example, which Nextflow version to use, where the work directory and container cache live, and whether to operate offline. @@ -540,8 +538,8 @@ Each one is resolved independently: To confirm each layer took effect, check: -- `my_results/pipeline_info/execution_report.html` — FASTQC should report 4 CPUs and 8 GB of memory. -- `my_results/multiqc/multiqc_report.html` — the report title should read "nf-core/demo configured run". +- `my_results/pipeline_info/execution_report_.html` — the `withName` block requests 4 CPUs and 8 GB for FASTQC. Note that the `test` profile sets `resourceLimits = [cpus: 2, memory: '4.GB']`, so on this small test dataset the request is capped and the report shows 2 CPUs and 4 GB. Drop the `test` profile (or raise its `resourceLimits`) and FASTQC requests the full 4 CPUs and 8 GB. +- `my_results/multiqc/nf-coredemo-configured-run_multiqc_report.html` — the report title should read "nf-core/demo configured run". (Setting `multiqc_title` also renames the report file.) - `$HOME/nf-demo-work/` — intermediate files should appear here instead of under `./work/`. :::tip From 3007f9ca0b2cf21651247835e7f6ee58764eb01c Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 6 Jul 2026 12:35:07 +1200 Subject: [PATCH 18/19] Tidy language --- .../tutorials/configure-a-pipeline-run.md | 71 +++++++++---------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md index eb8f6f8d6c..c65b1f69cf 100644 --- a/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md +++ b/sites/docs/src/content/docs/running/tutorials/configure-a-pipeline-run.md @@ -4,7 +4,7 @@ subtitle: A hands-on tutorial for configuring nf-core/demo with environment vari shortTitle: Configure a pipeline run --- -nf-core pipelines are shaped by multiple levels of configuration: environment variables that tune Nextflow itself, parameters that tune the pipeline, and config files that tune execution. +nf-core pipelines are configured at several levels: environment variables for Nextflow itself, parameters for the pipeline, and config files for execution. Using [`nf-core/demo`](https://nf-co.re/demo), this tutorial explains each layer as worked examples. ![nf-core/demo subway map](../../../../assets/images/get_started/nf-core-demo-subway.png) @@ -19,7 +19,7 @@ By the end you will have: - Understood which configuration source overrides which. :::note{title="Prerequisites"} -You will need the following to get started: +You need the following: - An internet connection - [Nextflow version 25.10.4 or later](../../get_started/environment_setup/nextflow.md) @@ -43,8 +43,8 @@ nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results In the background, this run uses three defaults that you will override in the next steps: - The pipeline's internal [`nextflow.config`](https://github.com/nf-core/demo/blob/master/nextflow.config) and the [`test`](https://github.com/nf-core/demo/blob/master/conf/test.config) and `docker` profiles -- Default pipeline parameters (path to input samplesheet, the customisable MultiQC title and so on). See the [nf-core/demo parameters page](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json) -- Your default Nextflow runtime settings (e.g., work directory and Nextflow version) +- Default pipeline parameters (path to input samplesheet, the customisable MultiQC title, and others). See the [nf-core/demo parameters page](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json) +- Your default Nextflow runtime settings (for example, work directory and Nextflow version) :::tip Keep the `results/` directory from this run. @@ -53,7 +53,7 @@ You can compare it to the output of later steps to confirm your configuration ch ## Configure with parameters -Pipeline parameters are the knobs and switches the pipeline offers to users to control how the different steps of the pipeline execute. +Pipeline parameters are the knobs a pipeline exposes to control how its steps run. For example, inputs, outputs, skip flags, reference data choices, and tool toggles. They're documented per pipeline. For `nf-core/demo`, see the [parameters reference](https://nf-co.re/demo/parameters) and [`nextflow_schema.json`](https://github.com/nf-core/demo/blob/master/nextflow_schema.json). @@ -109,7 +109,7 @@ Use config files for executor and computational resource settings, and parameter Config files are the most flexible configuration layer. They control both **where** the pipeline runs and **how** it runs. -For example, which executor submits jobs (e.g., `local`, `slurm`, `awsbatch`), how much CPU and memory each process should request, what Nextflow does when a process fails, which container registry to pull from, where intermediate work lives, how to apply different settings to specific steps, and much more. +For example, which executor submits jobs (`local`, `slurm`, `awsbatch`), how much CPU and memory each process requests, what Nextflow does when a process fails, which container registry to pull from, where intermediate work lives, and how to apply settings to specific steps. They're the right place for any setting that depends on your infrastructure rather than on what the pipeline does scientifically. Nextflow assembles its final configuration from several config files. @@ -134,13 +134,13 @@ process { } ``` -Re-run the baseline command. No `-c` flag is needed, Nextflow picks the file up automatically: +Re-run the baseline command. Nextflow picks the file up automatically, without a `-c` flag: ```bash nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results_customnextflowconfig ``` -Compare between the 'Tasks' section `results/pipeline_info/execution_report_.html` and `results_customnextflowconfig/pipeline_info/execution_report_.html`. +In the 'Tasks' section, compare `results/pipeline_info/execution_report_.html` with `results_customnextflowconfig/pipeline_info/execution_report_.html`. Observe that the process `NFCORE_DEMO:DEMO:COWPY` has changed its memory from `4.GB` to `2.GB`, as specified in the new `nextflow.config`. :::tip @@ -151,7 +151,7 @@ Reserve `-c` (covered below) for one-off overrides and shared project configs th ### Activate bundled settings with profiles A **profile** is a named bundle of configuration that lives inside a config file under the `profiles` scope. -They allow you to switch between different sets of configurations stored in a single config file. +Use profiles to switch between configuration sets stored in a single config file. You activate one or more with the `-profile` flag. You've been using profiles since [Baseline run](#baseline-run). `-profile test,docker` activates two: `test` (a small public dataset) and `docker` (use Docker to manage software). @@ -165,15 +165,15 @@ Every nf-core pipeline comes with a standard set of profiles: In other pipelines these can be much larger, but produce realistic output. ::: -- **Institutional profiles**: contributed to [nf-core/configs](https://github.com/nf-core/configs) and loaded automatically by every nf-core pipeline. Activate one with `-profile ` if your cluster has one - see [Use shared institutional configs](#use-shared-institutional-configs). +- **Institutional profiles**: contributed to [nf-core/configs](https://github.com/nf-core/configs) and loaded automatically by every nf-core pipeline. Activate one with `-profile ` if your cluster has one. See [Use shared institutional configs](#use-shared-institutional-configs). -Combine profiles with commas, and remember that order matters - later profiles override earlier ones where they overlap: +Combine profiles with commas. Order matters — later profiles override earlier ones where they overlap: ```bash nextflow run nf-core/demo -r 1.2.0 -profile test,docker --outdir results ``` -In this example, options in the `docker` profile will override any of the options with the same name as in `test`. +In this example, options in the `docker` profile override matching options in `test`. You can also define your own profile for settings you'd like to reuse. Add a `mymachine` profile to your existing launch-directory `nextflow.config`: @@ -194,18 +194,19 @@ Activate it alongside the existing profiles: nextflow run nf-core/demo -r 1.2.0 -profile test,docker,mymachine --outdir results_customprofile ``` -Compare between the 'Tasks' section `results_customnextflowconfig/pipeline_info/execution_report_.html` and `results_customprofile/pipeline_info/execution_report_.html`. +In the 'Tasks' section, compare `results_customnextflowconfig/pipeline_info/execution_report_.html` with `results_customprofile/pipeline_info/execution_report_.html`. Observe that the process `NFCORE_DEMO:DEMO:COWPY` has changed the CPUs from `1` to `2`, as specified in the new `nextflow.config`. :::note -The `mymachine` profile here only bumps CPUs to 2, which is also the ceiling set by the `test` profile's `resourceLimits`, so it runs fine on a laptop. +The `mymachine` profile here only bumps CPUs to 2, which the `test` profile's `resourceLimits` already caps at. It runs fine on a laptop. A real machine profile would set values suited to your hardware. Request more CPUs or memory than the machine actually has (and above any `resourceLimits` cap) and Nextflow will fail when it tries to run the processes. ::: ### Use shared institutional configs If you work on a shared HPC cluster or cloud platform, there's a good chance someone has already written a profile for it. -The [nf-core/configs](https://github.com/nf-core/configs) repository collects over 150 cluster-specific configs contributed by the community, covering the executor, queue, resource limits, container engine, scratch paths, module systems, and any other cluster-specific quirks needed to run nf-core pipelines well in that environment. +The [nf-core/configs](https://github.com/nf-core/configs) repository collects over 150 cluster-specific configs contributed by the community. +Each covers the executor, queue, resource limits, container engine, scratch paths, module systems, and other settings needed to run nf-core pipelines well in that environment. Every nf-core pipeline loads these configs automatically — there's nothing to download or copy yourself. At run time, each pipeline fetches the [`nfcore_custom.config`](https://github.com/nf-core/configs/blob/master/nfcore_custom.config) from the `nf-core/configs` repository and makes every profile in it available alongside the pipeline's own profiles. @@ -235,8 +236,7 @@ If you're working on an air-gapped system, see [Running pipelines offline](../ru ### Pass a config explicitly with `-c` -For configuration you don't want loaded by default. -For example, a one-off resource bump, a shared institutional config, or an experimental override, pass it on the command line with `-c`. +For configuration you don't want loaded by default — a one-off resource bump, a shared institutional config, or an experimental override — pass it on the command line with `-c`. 1. Create a small file named `custom.config`: @@ -252,12 +252,12 @@ For example, a one-off resource bump, a shared institutional config, or an exper nextflow run nf-core/demo -r 1.2.0 -profile test,docker -c custom.config --outdir results_customconfig ``` -Compare between the 'Tasks' section `results_customprofile/pipeline_info/execution_report_.html` and `results_customconfig/pipeline_info/execution_report_.html` +In the 'Tasks' section, compare `results_customprofile/pipeline_info/execution_report_.html` with `results_customconfig/pipeline_info/execution_report_.html`. Observe that the process `NFCORE_DEMO:DEMO:COWPY` has changed the memory from `2` to `3`, as specified in the new `custom.config`. -Furthermore, the CPUs have gone back from 2 to 1 as we did not specify the `mymachine` profile, thus falling back to the value in `nextflow.config`. +The CPUs also drop from 2 to 1. Without the `mymachine` profile, they fall back to the value in `nextflow.config`. You can pass `-c` more than once. -Files are applied in order, so later ones override earlier ones. +Nextflow applies the files in order. Later ones override earlier ones. ### Tune how the pipeline executes @@ -284,21 +284,19 @@ Apply it the same way as before: nextflow run nf-core/demo -r 1.2.0 -profile test,docker -c custom.config --outdir results_customconfig2 ``` -You will now see that an `nf-work/` directory specified in the config was generated in the directory where you executed the command, alongside the results directory. +Nextflow now creates the `nf-work/` directory from the config in your launch directory, alongside the results directory. Each setting controls a different aspect of the run. Common settings are: -- **`process.executor`**: where jobs go — `local` (default), `slurm`, `awsbatch`, `lsf`, `pbs`, `kubernetes`, and so on. +- **`process.executor`**: where jobs go — `local` (default), `slurm`, `awsbatch`, `lsf`, `pbs`, `kubernetes`, and others. - **`process.queue`**: which queue or partition to submit to on shared clusters. - **`process.errorStrategy`** with **`process.maxRetries`**: retry transient failures (for example, a node going down or a timeout) instead of failing the whole run. - **`workDir`**: where Nextflow stages intermediate files — point it at fast scratch storage on HPC to keep your home filesystem clean. :::info -The syntax - For the full list of config scopes and options (`process`, `executor`, `docker`, `singularity`, `aws`, `azure`, `google`, `report`, `trace`, `timeline`, and more), see the [Nextflow config reference](https://docs.seqera.io/nextflow/reference/config). -nf-core pipelines already enable the standard execution reports under `pipeline_info/`, so you only need to override those if you want custom paths. +nf-core pipelines already enable the standard execution reports under `pipeline_info/`. Override them only if you want custom paths. ::: ### Target specific processes with `withName` and `withLabel` @@ -343,7 +341,7 @@ nextflow run nf-core/demo -r 1.2.0 -profile test,docker -c custom.config --outdi Compare `results_customconfig2/pipeline_info/execution_report_.html` with `results_customconfig3/pipeline_info/execution_report_.html`. FASTQC should report requesting 1 CPU and 3 GB memory instead of 2 and 4 GB. -`SEQTK_TRIM` has also changed, with now at 1 GB of memory and 1 CPU instead of 2 and 4 GB. +`SEQTK_TRIM` has also changed. It now requests 1 CPU and 1 GB instead of 2 CPUs and 4 GB. Process labels are declared on each `process` definition inside the module. For example, [`SEQTK_TRIM`'s `main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/seqtk/trim/main.nf) declares `label 'process_low'` on its second line. @@ -410,14 +408,14 @@ Re-run with the `-c custom.config`. nextflow run nf-core/demo -r 1.2.0 -profile test,docker -c custom.config --outdir results_customconfig4 ``` -FASTQC will pick up the new flags through `task.ext.args` inside its [`main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf). -Compare in your web browser `results_customconfig3/fastqc/SAMPLE1_PE/SAMPLE1_PE_1_fastqc.html` and `results_customconfig4/fastqc/SAMPLE1_PE/SAMPLE1_PE_1_fastqc.html`. -You will see the 'Per base sequence quality' plot has changed, due to addition of the `--nogroup` option. +FASTQC picks up the new flags through `task.ext.args` in its [`main.nf`](https://github.com/nf-core/demo/blob/master/modules/nf-core/fastqc/main.nf). +Compare `results_customconfig3/fastqc/SAMPLE1_PE/SAMPLE1_PE_1_fastqc.html` and `results_customconfig4/fastqc/SAMPLE1_PE/SAMPLE1_PE_1_fastqc.html` in your web browser. +The 'Per base sequence quality' plot has changed because of the `--nogroup` option. :::danger -Customising `ext.args` is generally not recommended, and may break the pipeline as the changes have not been tested by the developer. -It is recommended to request official support for a new tool option or argument from the pipeline developer. -Customise `ext.args` in a config as a last resort. +Customising `ext.args` is generally not recommended and can break the pipeline, because the developer hasn't tested these changes. +Request official support for a new tool option or argument from the pipeline developer. +Customise `ext.args` in a config only as a last resort. ::: Sibling keys you'll see in the same file: @@ -436,7 +434,8 @@ For profile precedence and shared institutional configs, see [Configuration opti ## Configure with environment variables `NXF_*` environment variables are the outermost configuration layer. -Nextflow reads them from your shell as it starts, before any config file or parameter is parsed, so they're the right place for settings that don't change between runs. +Nextflow reads them from your shell as it starts, before it parses any config file or parameter. +Use them for settings that don't change between runs. For example, which Nextflow version to use, where the work directory and container cache live, and whether to operate offline. They configure **Nextflow itself**, not the pipeline. You cannot set pipeline inputs or outputs this way. @@ -538,7 +537,7 @@ Each one is resolved independently: To confirm each layer took effect, check: -- `my_results/pipeline_info/execution_report_.html` — the `withName` block requests 4 CPUs and 8 GB for FASTQC. Note that the `test` profile sets `resourceLimits = [cpus: 2, memory: '4.GB']`, so on this small test dataset the request is capped and the report shows 2 CPUs and 4 GB. Drop the `test` profile (or raise its `resourceLimits`) and FASTQC requests the full 4 CPUs and 8 GB. +- `my_results/pipeline_info/execution_report_.html` — the `withName` block requests 4 CPUs and 8 GB for FASTQC. On this small test dataset, the `test` profile's `resourceLimits = [cpus: 2, memory: '4.GB']` caps the request, and the report shows 2 CPUs and 4 GB. Drop the `test` profile (or raise its `resourceLimits`) to see the full 4 CPUs and 8 GB. - `my_results/multiqc/nf-coredemo-configured-run_multiqc_report.html` — the report title should read "nf-core/demo configured run". (Setting `multiqc_title` also renames the report file.) - `$HOME/nf-demo-work/` — intermediate files should appear here instead of under `./work/`. @@ -553,6 +552,6 @@ A rule of thumb for where each setting belongs: ## Next steps -- Learn more about [configuration options](../configuration/configuration-options.md) (i.e., profiles, shared nf-core/configs, and full precedence rules) -- Learn more about [system requirements](../configuration/nextflow-for-your-system.md) (i.e., resource limits, executors, and tool argument overrides) +- Learn more about [configuration options](../configuration/configuration-options.md) (profiles, shared nf-core/configs, and precedence rules) +- Learn more about [system requirements](../configuration/nextflow-for-your-system.md) (resource limits, executors, and tool argument overrides) - Learn more about [Nextflow configuration](https://docs.seqera.io/nextflow/config) From 866e2e344bfed5baddecb71894eea2d7ff941d9e Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 6 Jul 2026 14:16:50 +1200 Subject: [PATCH 19/19] Replace image --- .../get_started/nf-core-demo-subway.png | Bin 28045 -> 154817 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sites/docs/src/assets/images/get_started/nf-core-demo-subway.png b/sites/docs/src/assets/images/get_started/nf-core-demo-subway.png index 1ca99fcb08c2ec865c0bdf2c28a16f0029fb1733..b5e1e8645f0398bf65b6e7dc199c5168289d4975 100644 GIT binary patch literal 154817 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 z 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 UK|_u8iX0Ug9v${+=<;{}0eH20ssI20 literal 28045 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