From 8ebf7fde5d2e9237f17fd3f39823c0237dd9de14 Mon Sep 17 00:00:00 2001 From: Marcel Ribeiro-Dantas Date: Fri, 25 Oct 2024 11:12:57 -0300 Subject: [PATCH 1/3] Fix inputs in hello operators --- docs/hello_nextflow/05_hello_operators.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/hello_nextflow/05_hello_operators.md b/docs/hello_nextflow/05_hello_operators.md index 697fd04b..acc4164d 100644 --- a/docs/hello_nextflow/05_hello_operators.md +++ b/docs/hello_nextflow/05_hello_operators.md @@ -411,7 +411,6 @@ Let's write a new process to define how that's going to work, based on the comma process GATK_GENOMICSDB { container "community.wave.seqera.io/library/gatk4:4.5.0.0--730ee8817e436867" - publishDir 'results_genomics', mode: 'copy' input: @@ -736,8 +735,8 @@ _Before:_ ```groovy title="hello-operators.nf" linenums="78" input: - path all_gvcfs_ch - path all_idxs_ch + path all_gvcfs + path all_idxs path interval_list val cohort_name ``` @@ -746,8 +745,8 @@ _After:_ ```groovy title="hello-operators.nf" linenums="78" input: - path all_gvcfs_ch - path all_idxs_ch + path all_gvcfs + path all_idxs path interval_list val cohort_name path ref_fasta From 45241a08343d247cba826dab9d30444c4d7a0c1d Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Thu, 24 Oct 2024 18:49:19 +0100 Subject: [PATCH 2/3] Add support for docker-outside-docker in devcontainer --- .devcontainer/devcontainer.json | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4936cc03..31734f9c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,10 +1,14 @@ { "name": "nfcore", - "image": "nfcore/gitpod:latest", + "image": "ghcr.io/nextflow-io/training:latest", "remoteUser": "gitpod", - - "postCreateCommand": "pre-commit install --install-hooks", - + "features": { + "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {} + }, + "remoteEnv": { + "NXF_HOME": "/workspaces/.nextflow", + "HOST_PROJECT_PATH": "${localWorkspaceFolder}" + }, // Configure tool-specific properties. "customizations": { // Configure properties specific to VS Code. @@ -13,12 +17,13 @@ "settings": { "python.defaultInterpreterPath": "/opt/conda/bin/python" }, - // Add the IDs of extensions you want installed when the container is created. "extensions": [ "ms-python.python", "ms-python.vscode-pylance", - "nf-core.nf-core-extensionpack" + "nf-core.nf-core-extensionpack", + "nextflow.nextflow", + "codezombiech.gitignore", ] } }, From 7bda265172452510205026df4332c945458193d7 Mon Sep 17 00:00:00 2001 From: Geraldine Van der Auwera Date: Sun, 27 Oct 2024 10:47:42 -0400 Subject: [PATCH 3/3] Update and expand Hello Config (#410) * Fleshed out Hello Config with additional topics and more detailed exercises * Reorganized order of sections --------- Signed-off-by: Marcel Ribeiro-Dantas Co-authored-by: Ken Brewer Co-authored-by: Marcel Ribeiro-Dantas Co-authored-by: adamrtalbot <12817534+adamrtalbot@users.noreply.github.com> --- docs/hello_nextflow/06_hello_config.md | 1082 +- docs/hello_nextflow/img/cpu-after.png | Bin 0 -> 32588 bytes docs/hello_nextflow/img/cpu-before.png | Bin 0 -> 34004 bytes docs/hello_nextflow/img/memory-after.png | Bin 0 -> 26872 bytes docs/hello_nextflow/img/memory-before.png | Bin 0 -> 30629 bytes docs/hello_nextflow/img/report_cover.png | Bin 0 -> 141356 bytes hello-nextflow/nextflow.config | 4 +- hello-nextflow/projectC/demo-params.json | 8 + .../projectC/intermediates/1-nextflow.config | 4 + .../projectC/intermediates/2-nextflow.config | 10 + .../projectC/intermediates/3-nextflow.config | 18 + .../projectC/intermediates/4-nextflow.config | 33 + .../projectC/intermediates/5-nextflow.config | 64 + .../intermediates/report-config-1.html | 261534 +++++++++++++++ .../intermediates/report-config-2.html | 261498 ++++++++++++++ hello-nextflow/projectC/main.nf | 144 + hello-nextflow/projectC/nextflow.config | 2 + hello-nextflow/projectM/demo-params.json | 8 + hello-nextflow/projectM/main.nf | 131 + hello-nextflow/projectM/nextflow.config | 65 + hello-nextflow/projectT/demo-params.json | 8 + hello-nextflow/projectT/main.nf | 131 + hello-nextflow/projectT/nextflow.config | 65 + 23 files changed, 524668 insertions(+), 141 deletions(-) create mode 100644 docs/hello_nextflow/img/cpu-after.png create mode 100644 docs/hello_nextflow/img/cpu-before.png create mode 100644 docs/hello_nextflow/img/memory-after.png create mode 100644 docs/hello_nextflow/img/memory-before.png create mode 100644 docs/hello_nextflow/img/report_cover.png create mode 100644 hello-nextflow/projectC/demo-params.json create mode 100644 hello-nextflow/projectC/intermediates/1-nextflow.config create mode 100644 hello-nextflow/projectC/intermediates/2-nextflow.config create mode 100644 hello-nextflow/projectC/intermediates/3-nextflow.config create mode 100644 hello-nextflow/projectC/intermediates/4-nextflow.config create mode 100644 hello-nextflow/projectC/intermediates/5-nextflow.config create mode 100644 hello-nextflow/projectC/intermediates/report-config-1.html create mode 100644 hello-nextflow/projectC/intermediates/report-config-2.html create mode 100644 hello-nextflow/projectC/main.nf create mode 100644 hello-nextflow/projectC/nextflow.config create mode 100644 hello-nextflow/projectM/demo-params.json create mode 100644 hello-nextflow/projectM/main.nf create mode 100644 hello-nextflow/projectM/nextflow.config create mode 100644 hello-nextflow/projectT/demo-params.json create mode 100644 hello-nextflow/projectT/main.nf create mode 100644 hello-nextflow/projectT/nextflow.config diff --git a/docs/hello_nextflow/06_hello_config.md b/docs/hello_nextflow/06_hello_config.md index cb5d7ef1..688a7272 100644 --- a/docs/hello_nextflow/06_hello_config.md +++ b/docs/hello_nextflow/06_hello_config.md @@ -1,205 +1,436 @@ # Part 5: Hello Config -This section will explore how to configure Nextflow pipelines using configuration files, profiles, process directives, and executors. -Configuration management is an essential aspect of Nextflow pipeline development, allowing you to customize the behavior of your pipeline, adapt it to different environments, and optimize resource usage. -By understanding and effectively utilizing these configuration options, you can enhance the flexibility, scalability, and performance of your pipelines. +This section will explore how to set up and manage the configuration of your Nextflow pipeline so that you'll be able to customize its behavior, adapt it to different environments, and optimize resource usage _without altering a single line of the workflow code itself_. -## 1. Check and modify configuration +We're going to cover essential components of Nextflow configuration such as config files, profiles, process directives, executors, and parameter files. +By learning to utilize these configuration options effectively, you can enhance the flexibility, scalability, and performance of your pipelines. -### 1.1. Run nf-hello-gatk with default settings +## 0. Warmup: Moving to a formal project structure + +So far we've been working with a very loose structure, with just one workflow code file and a tiny configuration file that we've mostly ignored, because we were very focused on learning how to implement the workflow itself. +However, we're now moving into the phase of this training series that is more focused on code development and maintenance practices. + +As part of that, we're going to adopt a formal project structure. +We're going to work inside a dedicated project directory called `projectC` (C for configuration), and we've renamed the workflow file `main.nf` to match the recommended Nextflow convention. + +### 0.1. Explore the `projectC` directory + +We want to launch the workflow from inside the `projectC` directory, so let's move into it now. ```bash -nextflow run seqeralabs/nf-hello-gatk -r main +cd projectC ``` -When you run the pipeline with the default settings using the command above, the following happens: +Let's take a look at the contents. +You can use the file explorer or the terminal; here we're using the output of `tree` to display the top-level directory contents. + +```console title="Directory contents" +projectC +├── demo-params.json +├── intermediates +├── main.nf +└── nextflow.config +``` + +- **`main.nf`** is a workflow based on `hello-operators.nf`, the workflow produced by completing Part 4 of this training course; + +- **`nextflow.config`** is a copy of the original `nextflow.config` file from the `hello-nextflow` directory, one level up (where we've been working so far). + Whenever there is a file named `nextflow.config` in the current directory, Nextflow will automatically load configuration from it. The one we have been using contains the following lines: -1. Nextflow downloads the pipeline from the GitHub repository `seqeralabs/nf-hello-gatk`. -1. It then executes the pipeline using the default configuration. -1. The pipeline will likely use Docker containers to run the required tools (Samtools and GATK). -1. It processes the input BAM files, creates index files, and performs variant calling. -1. The results are generated by default in the `results` directory. -1. Nextflow also creates a `work` directory containing intermediate files and logs. -1. Upon completion, Nextflow displays a run summary, including any errors or warnings. + ```console title="nextflow.config" linenums="1" + docker.fixOwnership = true + docker.enabled = true + ``` -Now, let's see how this was configured and set up. + The `docker.fixOwnership = true` line is not really interesting. + It's a workaround for an issue that sometimes occur with containerized tools that set the wrong permissions on the files they write (which is the case with GenomicsDBImport in the GATK container image in our workflow). -### 1.2. Check configuration + The `docker.enabled = true` line is what we care about here. + It specifies that Nextflow should use Docker to run process calls that specify a container image. + We're going to be playing with that shortly. -Open the `nextflow.config` file and inspect the contents: +!!!note + + Anything you put into the `nextflow.config` can be overridden at runtime by providing the relevant process directives or parameters and values on the command line, or by importing another configuration file, according to the order of precedence described [here](https://www.nextflow.io/docs/latest/config.html). + +- **`demo-params.json`** is a parameter file intended for supplying parameter values to a workflow. + We will use it in section 5 of this tutorial. + +- **`intermediates/`** is a directory containing the intermediate forms of the workflow and configuration files for each section of this tutorial. + +The one thing that's missing is a way to point to the original data without making a copy of it or updating the file paths wherever they're specified. +The simplest solution is to link to the data location. + +### 0.2. Create a symbolic link to the data + +Run this command from inside the `projectC` directory: ```bash -code nextflow.config +ln -s ../data data ``` -The contents should look like this: +This creates a symbolic link called `data` pointing to the data directory, which allows us to avoid having to change anything to how the file paths are set up. -```groovy title="nextflow.config" linenums="1" -docker.enabled = true +```console title="Directory contents" +projectC +├── data -> ../data +├── demo-params.json +├── intermediates +├── main.nf +└── nextflow.config +``` + +Later we'll cover a better way of handling this, but this will do for now. + +### 0.3. Verify that the initial workflow runs properly + +Now that everything is in place, we should be able to run the workflow successfully. + +```bash +nextflow run main.nf ``` -This config block tells the pipeline to use Docker containers to run the required tools. +This should run successfully: -### 1.3. Modify configuration +```console title="Output" +Nextflow 24.09.2-edge is available - Please consider updating your version to it + + N E X T F L O W ~ version 24.02.0-edge + + ┃ Launching `main.nf` [tender_brahmagupta] DSL2 - revision: 848ff2f9b5 + +executor > local (7) +[fb/f755b1] SAMTOOLS_INDEX (1) [100%] 3 of 3 ✔ +[d8/467767] GATK_HAPLOTYPECALLER (1) [100%] 3 of 3 ✔ +[ee/2c7855] GATK_JOINTGENOTYPING [100%] 1 of 1 ✔ +``` + +There will now be a `work` directory and a `results_genomics` directory inside your current `projectC` directory. + +### Takeaway -Let's modify the configuration to use Conda instead of Docker and explicitly disable Docker. +You know what are the two most important files in a Nextflow project: `main.nf` and its `nextflow.config`. + +### What's next? + +Learn how to modify basic configuration properties to adapt to your compute environment's requirements. + +--- + +## 1. Determine what software packaging technology to use + +In the very first part of this training course (Part 1: Hello World) we just used locally installed software in our workflow. Then from Part 2 onward, we've been using Docker containers. + +Now, let's pretend we're working on an HPC cluster and the admin doesn't allow the use of Docker for security reasons. + +### 1.1. Disable Docker in the config file + +First, we have to switch the value of `docker.enabled` to false. _Before:_ -```groovy title="nextflow.config" linenums="1" +```console title="nextflow.config" linenums="1" +docker.fixOwnership = true docker.enabled = true ``` _After:_ -```groovy title="nextflow.config" linenums="1" +```console title="nextflow.config" linenums="1" +docker.fixOwnership = true docker.enabled = false -conda.enabled = true ``` -Now let's run the pipeline again with the modified configuration: +Let's see what happens if we run that. + +### 1.2. Run the workflow without Docker + +We are now launching the `main.nf` workflow from inside the `projectC` directory. ```bash -nextflow run seqeralabs/nf-hello-gatk -r main +nextflow run main.nf ``` -This time, the pipeline will use Conda environments to run the required tools. +As expected, the run fails with an error message that looks like this: -### Takeaway +```console title="Output" + N E X T F L O W ~ version 24.02.0-edge -You know how to switch software packaging systems using configuration files. + ┃ Launching `projectC/main.nf` [silly_ramanujan] DSL2 - revision: 9129bc4618 -### What's next? +executor > local (3) +[93/4417d0] SAMTOOLS_INDEX (1) [ 0%] 0 of 3 +[- ] GATK_HAPLOTYPECALLER - +[- ] GATK_JOINTGENOTYPING - +ERROR ~ Error executing process > 'SAMTOOLS_INDEX (2)' -Learn how to use profiles to customize the behavior of your pipeline. +Caused by: + Process `SAMTOOLS_INDEX (2)` terminated with an error exit status (127) ---- +Command executed: + + samtools index 'reads_father.bam' + +Command exit status: + 127 + +Command output: + (empty) -## 2. Profiles +Command error: + .command.sh: line 2: samtools: command not found +``` + +Command not found? Of course, we don't have Samtools installed in our environment, and we can no longer use the Docker container. What to do? + +!!!note + + Nextflow supports multiple other container technologies such as including Singularity (which is more widely used on HPC), and software package managers such as Conda. -Profiles are a way to customize the behavior of Nextflow pipelines by selection, rather than setting them permanently. +Let's try using Conda environments for our workflow. -### 2.1. Create a profile +### 1.3. Enable Conda in the configuration file + +First, we need to add a directive enabling the use of Conda, right after the line that controls the use of Docker. +And while we're at it, let's put a blank line before those two to emphasize the logical grouping. _Before:_ ```groovy title="nextflow.config" linenums="1" +docker.fixOwnership = true docker.enabled = false -conda.enabled = true ``` _After:_ ```groovy title="nextflow.config" linenums="1" -profiles { - docker { - docker.enabled = true - } - conda { - conda.enabled = true - } -} +docker.fixOwnership = true + +docker.enabled = false +conda.enabled = true ``` -### 2.2. Run the pipeline with a profile +This should allow Nextflow to create and utilize Conda environments for processes that have Conda packages specified. Which means we now need to add those to our processes! -```bash -nextflow run seqeralabs/nf-hello-gatk -r main -profile docker +### 1.4. Specify Conda packages in the process definitions + +We know that the Bioconda project provides Conda packages for Samtools and GATK, so we just need to retrieve their URIs and add them to the corresponding process definitions using the `conda` directive. + +!!! note + + There are a few different ways to get the URI for a given conda package. + We recommend using the [Seqera Containers](https://seqera.io/containers/) search query, which will give you a URI that you can copy paste, even if you're not creating a container. + +For your convenience, we are providing the URIs below. Just make sure to _add_ the `conda` directive. +To be clear, we're not _replacing_ the `docker` directive, just adding an alternative option. + +#### 1.4.1. Update SAMTOOLS_INDEX + +The URI is `"bioconda::samtools=1.20"`. + +_Before:_ + +```console title="main.nf" linenums="22" +process SAMTOOLS_INDEX { + + container 'community.wave.seqera.io/library/samtools:1.20--b5dfbd93de237464' + + publishDir 'results_genomics', mode: 'symlink' ``` -or +_After:_ -```bash -nextflow run seqeralabs/nf-hello-gatk -r main -profile conda +```console title="main.nf" linenums="22" +process SAMTOOLS_INDEX { + + container "community.wave.seqera.io/library/samtools:1.20--b5dfbd93de237464" + conda "bioconda::samtools=1.20" + + publishDir 'results_genomics', mode: 'symlink' ``` -As demonstrated above, by creating and using profiles, we've enhanced our pipeline's flexibility and ease of use. -We can now run our pipeline with Docker or Conda using a single command line argument by specifying the appropriate profile (`-profile docker` or `-profile conda`). -This method of configuration management improves the portability and maintainability of our Nextflow pipeline, enabling us to accommodate various execution scenarios easily. +#### 1.4.2. Update GATK_HAPLOTYPECALLER -### Takeaway +The URI is `"bioconda::gatk4=4.5.0.0"`. -You know how to use profiles to customize the configuration of your pipeline. +_Before:_ -### What's next? +```console title="main.nf" linenums="43" +process GATK_HAPLOTYPECALLER { -Learn how to change process resource use with configuration. + container "community.wave.seqera.io/library/gatk4:4.5.0.0--730ee8817e436867" ---- + publishDir 'results_genomics', mode: 'symlink' +``` -## 3. Process directives and resources +_After:_ -### 3.1. Process directives +```console title="main.nf" linenums="43" +process GATK_HAPLOTYPECALLER { -In a previous training module, we used process directives to modify the behavior of a process when we added the `publishDir` directive to export files from the working directory. -Let's look into directives in more detail. + container "community.wave.seqera.io/library/gatk4:4.5.0.0--730ee8817e436867" + conda "bioconda::gatk4=4.5.0.0" -### 3.1.1 Set process resources + publishDir 'results_genomics', mode: 'symlink' +``` -By default, Nextflow will use a single CPU and 2GB of memory for each process. -We can modify this behavior by setting the `cpu` and `memory` directives in the `process` block. -Add the following to the end of your `nextflow.config` file: +#### 1.4.3. Update GATK_JOINTGENOTYPING -```groovy title="nextflow.config" linenums="11" -process { - cpus = 8 - memory = 4.GB -} +The URI is `"bioconda::gatk4=4.5.0.0"`. + +_Before:_ + +```console title="main.nf" linenums="74" +process GATK_JOINTGENOTYPING { + + container "community.wave.seqera.io/library/gatk4:4.5.0.0--730ee8817e436867" + + publishDir 'results_genomics', mode: 'symlink' ``` -Run the pipeline again with the modified configuration: +_After:_ + +```console title="main.nf" linenums="74" +process GATK_JOINTGENOTYPING { + + container "community.wave.seqera.io/library/gatk4:4.5.0.0--730ee8817e436867" + conda "bioconda::gatk4=4.5.0.0" + + publishDir 'results_genomics', mode: 'symlink' +``` + +Once all three processes are updated, we can try running the workflow again. + +### 1.5. Run the workflow to verify that it can use Conda + +Let's try it out. ```bash -nextflow run seqeralabs/nf-hello-gatk -r main -profile docker +nextflow run main.nf ``` -You shouldn't see any difference; however, you might notice that the three processes get bottlenecked behind each other. -This is because Nextflow will ensure we aren't using more CPUs than are available. +This will take a bit longer than usual the first time, and you might see the console output stay 'stuck' at this stage for a minute or so: -!!! tip +```console title="Output" + N E X T F L O W ~ version 24.02.0-edge - You can check the number of CPUs given to the process by looking at the .command.run. There will be a function called `nxf_launch()` that includes the command `docker run -i --cpu-shares 1024`, where `--cpu-shares` is the number of CPUs given to the process multiplied by 1024. + ┃ Launching `main.nf` [extravagant_thompson] DSL2 - revision: 848ff2f9b5 -### 3.1.2 Modify process resources for a specific process +[- ] SAMTOOLS_INDEX - +[- ] GATK_HAPLOTYPECALLER - +[- ] GATK_JOINTGENOTYPING - +Creating env using conda: bioconda::samtools=1.20 [cache /workspace/gitpod/hello-nextflow/projectC/work/conda/env-6684ea23d69ceb1742019ff36904f612] +``` -We can also modify the resources for a specific process using the `withName` directive. -Add the following to the end of your `nextflow.config` file: +That's because Nextflow has to retrieve the Conda packages and create the environment, which takes a bit of work behind the scenes. The good news is that you don't need to deal with any of it yourself! -```groovy title="nextflow.config" linenums="11" -process { - withName: 'GATK_HAPLOTYPECALLER' { - cpus = 8 - memory = 4.GB +After a few moments, it should spit out some more output, and eventually complete without error. + +```console title="Output" + N E X T F L O W ~ version 24.02.0-edge + + ┃ Launching `main.nf` [silly_goldstine] DSL2 - revision: a60f9fd6af + +executor > local (7) +[23/b59106] SAMTOOLS_INDEX (1) [100%] 3 of 3 ✔ +[da/e1bf1d] GATK_HAPLOTYPECALLER (1) [100%] 3 of 3 ✔ +[2e/e6ffca] GATK_JOINTGENOTYPING [100%] 1 of 1 ✔ +``` + +And from our standpoint, it looks like it works exactly the same as running with Docker, even though on the backend the mechanics are a bit different. + +This means we're all set to run with Conda environments if needed. + +!!!note + + Since these directives are assigned per process, it is possible 'mix and match', _i.e._ configure some of the processes in your workflow to run with Docker and others with Conda, for example, if the compute infrastructure you are using supports both. + In that case, you would enable both Docker and Conda in your configuration file. + If both are available for a given process, Nextflow will prioritize containers. + + And as noted earlier, Nextflow supports multiple other software packaging and container technologies, so you are not limited to just those two. + +### Takeaway + +You know how to configure which software package each process should use, and how to switch between technologies. + +### What's next? + +Learn how to use profiles to make selecting an option easier. + +--- + +## 2. Use profiles to select preset configurations + +Profiles are a great way to adapt your workflow configuration by selecting preset options at runtime, to avoid having to edit a file every time you want to run something differently. + +### 2.1. Create profiles for switching between Docker and Conda + +Setting up these profiles mainly involves restructuring how we specify the `docker` and `conda` directives. + +_Before:_ + +```groovy title="nextflow.config" linenums="1" +docker.fixOwnership = true + +docker.enabled = false +conda.enabled = true +``` + +_After:_ + +```groovy title="nextflow.config" linenums="1" +docker.fixOwnership = true + +profiles { + docker_on { + docker.enabled = true + } + conda_on { + conda.enabled = true } } ``` -Run the pipeline again with the modified configuration: +This makes it possible to activate one or the other by specifying a profile in our Nextflow run command line. + +### 2.2. Run the workflow with a profile + +Let's try running the workflow with Conda. ```bash -nextflow run seqeralabs/nf-hello-gatk -r main -profile docker +nextflow run main.nf -profile conda_on +``` + +It works! + +``` + N E X T F L O W ~ version 24.02.0-edge + + ┃ Launching `main.nf` [sharp_gauss] DSL2 - revision: 66cd7c255a + +executor > local (7) +[f4/ef2cb6] SAMTOOLS_INDEX (1) [100%] 3 of 3 ✔ +[70/77152c] GATK_HAPLOTYPECALLER (1) [100%] 3 of 3 ✔ +[a6/0f72fd] GATK_JOINTGENOTYPING [100%] 1 of 1 ✔ ``` -Now, the settings are only applied to the GATK HaplotypeCaller process. -This is useful when your processes have different resource requirements so you can right-size your resources for each process. +Feel free to try it out with the Docker profile too. You just have to switch `-profile conda_on` to `-profile docker_on` in the command. ### Takeaway -You know how to modify process resources using configuration files. +You know how to use profiles to select a preset configuration at runtime with minimal hassle. ### What's next? -Learn how to change the executor used by Nextflow. +Learn how to change the executor used by Nextflow to actually do the work. --- -## 4. Executor - -### 4.1. Local executor +## 3. Determine what executor(s) should be used to do the work Until now, we have been running our pipeline with the local executor. This runs each step on the same machine that Nextflow is running on. -However, for large genomics pipelines, you will want to use a distributed executor. +However, for large workloads, you will typically want to use a distributed executor such as an HPC or cloud. Nextflow supports several different distributed executors, including: - HPC (SLURM, PBS, SGE) @@ -207,41 +438,69 @@ Nextflow supports several different distributed executors, including: - Google Batch - Azure Batch - Kubernetes +- GA4GH TES -We can modify the executor used by nextflow using the `executor` process directive. Because `local` is the default executor, the following configuration is implied: +The executor is subject to a process directive called `executor`. By default it is set to `local`, so the following configuration is implied: -```groovy title="nextflow.config" linenums="18" +```groovy title="Built-in configuration" process { executor = 'local' } ``` -### 4.2. Other executors +Let's look at what it would take to using a Slurm scheduler, assuming we had a connection to a cluster and Slurm was installed appropriately. -!!! note +!!! warning + + What follows is for demonstration purposes but **will not execute the work** since we don't have access to an external executor. - This is a demonstration and designed to go wrong! +### 3.1. Set up a Slurm executor -If we wish to change executor, we could simply set this to one of the values in the documentation: +Add the following lines to the `nextflow.config` file: -```groovy title="nextflow.config" linenums="18" +```groovy title="nextflow.config" linenums="12" process { executor = 'slurm' } ``` -However, if we add this to our config and run the pipeline we will that includes this error: +And... that's it! As noted before, this does assume that Slurm itself is already set up for you, but this is really all Nextflow itself needs to know. -```console -Cannot run program "sbatch" +Basically we are telling Nextflow to generate a Slurm submission script and submit it using an `sbatch` command. + +### 3.2. Launch the workflow to generate the job submission script + +Let's try running this; even though we now it won't execute (since we don't have Slurm set up in the Gitpod environment) we'll be able to see what the submission script looks like. + +```bash +nextflow run main.nf -profile conda_on ``` -Nextflow has interpreted that we wish to submit to a Slurm cluster, which requires the use of the command `sbatch`. -However, because our Gitpod instance doesn't have slurm installed (and isn't connected to a cluster) this throws an error. +As expected, this fails with a fairly unambiguous error: -If we check inside the `.command.run` file created in the work directory, we can see that Nextflow has created a script to submit the job to Slurm. -!!! note -The output of your nextflow console will have the hash of the work subdirectory, which will differ from the paths shown below. +```console title="Output" +nextflow + N E X T F L O W ~ version 24.02.0-edge + + ┃ Launching `main.nf` [grave_gauss] DSL2 - revision: 66cd7c255a + +[- ] SAMTOOLS_INDEX [ 0%] 0 of 3 +[eb/2962ce] SAMTOOLS_INDEX (3) [ 33%] 1 of 3, failed: 1 +[- ] GATK_HAPLOTYPECALLER - +[- ] GATK_JOINTGENOTYPING - +ERROR ~ Error executing process > 'SAMTOOLS_INDEX (3)' + +Caused by: + java.io.IOException: Cannot run program "sbatch" (in directory "/workspace/gitpod/hello-nextflow/projectC/work/eb/2962ce167b3025a41ece6ce6d7efc2"): error=2, No such file or directory + +Command executed: + + sbatch .command.run +``` + +However, it did produce what we are looking for: the `.command.run` file that Nextflow tried to submit to Slurm via the `sbatch` command. + +Let's take a look inside. **TODO: UPDATE NEXTFLOW VERSION SO WE CAN HAVE THIS SWEET OUTPUT** ```bash title=".command.run" linenums="1" #!/bin/bash @@ -259,71 +518,616 @@ NXF_CHDIR=/home/gitpod/work/34/850fe31af0eb62a0eb1643ed77b84f ### ... ``` -If our process had more directives, such as `clusterOptions`, `cpus`, `memory`, `queue`, and `time`, these would also be included in the `.command.run` file and directly passed to the Slurm execution. -They would also be translated to the equivalent options for other executors. -This is how Nextflow creates the commands required to correctly submit a job to the sbatch cluster via a single configuration change. +This shows the job submission details that Nextflow is trying to hand over to Slurm. + +!!!note -### 4.3. Using Executors in Profiles + There other options that we could additionally set using other process directives to control resource allocations, which we'll get to in a little bit. + These would also be included in the `.command.run` file and directly passed to the Slurm execution. -Let's combine `profiles` with `executors`. Add the following to your configuration file: +You can try using any of the other supported executors in the same way. Nextflow will translate the values submitted to the executor into the appropriate equivalent instructions. -Remove the following lines: +Conveniently, you can also set up profiles to select which executor you want to use at runtime, just like we did for the Docker vs. Conda environments selection earlier. + +### 3.3. Set up profiles for executors too + +Let's replace the process block we had added with the executor selection profiles. + +_Before:_ + +```groovy title="nextflow.config" linenums="3" +profiles { + docker_on { + docker.enabled = true + } + conda_on { + conda.enabled = true + } +} -```groovy title="nextflow.config" linenums="17" process { executor = 'slurm' } ``` -Before: +_After:_ -```groovy title="nextflow.config" linenums="1" +```groovy title="nextflow.config" linenums="3" +profiles { + docker_on { + docker.enabled = true + } + conda_on { + conda.enabled = true + } + local_exec { + process.executor = 'local' + } + slurm_exec { + process.executor = 'slurm' + } +} +``` + +Although it may look like these are going to be mutually exclusive, you can actually combine multiple profiles. +Let's try that now. + +### 3.4. Run with a combination of profiles + +To use two profiles at the same time, simply give both to the `-profile` parameter, separated by a comma. + +```bash +nextflow run main.nf -profile docker_on,local_exec +``` + +With that, we've returned to the original configuration of using Docker containers with local execution, not that you can tell from the console output: + +```console title="Output" + N E X T F L O W ~ version 24.02.0-edge + + ┃ Launching `main.nf` [irreverent_bassi] DSL2 - revision: 66cd7c255a + +executor > local (7) +[17/82bbc4] SAMTOOLS_INDEX (2) [100%] 3 of 3 ✔ +[8e/93609c] GATK_HAPLOTYPECALLER (2) [100%] 3 of 3 ✔ +[e6/df6740] GATK_JOINTGENOTYPING [100%] 1 of 1 ✔ +``` + +The point is, we can now use profiles to switch to a different software packaging system (Conda) or a different executor (such as Slurm) with a single command-line option. +For example, if we were back on our hypothetical HPC from earlier, we would switch to using `-profile conda,slurm` in our Nextflow command line. + +Feel free to test that on your own to satisfy yourself that it works as expected. + +Moving on, we're going to take this logic a step further, and set up dedicated profiles for groups of configuration elements that we usually want to activate together. + +### 3.5. Create profiles that combine several configuration elements + +Let's set up some dedicated profiles for the two case figures we've been envisioning: running locally with Docker, which we'll call `my_laptop`, and running on the HPC cluster with Conda, which we'll call `univ_hpc`. + +_Before:_ + +```groovy title="nextflow.config" linenums="3" +profiles { + docker_on { + docker.enabled = true + } + conda_on { + conda.enabled = true + } + local_exec { + process.executor = 'local' + } + slurm_exec { + process.executor = 'slurm' + } +} +``` + +_After:_ + +```groovy title="nextflow.config" linenums="3" profiles { - docker { + docker_on { docker.enabled = true - conda.enabled = false } - conda { - docker.enabled = false + conda_on { + conda.enabled = true + } + my_laptop { + process.executor = 'local' + docker.enabled = true + } + univ_hpc { + process.executor = 'slurm' conda.enabled = true } } ``` -After: +Now we have profiles for the two main case figures we've been considering. +If in the future we find other elements of configuration that are always co-occurring with these, we can simply add them to the corresponding profile(s). + +Feel free to test these new profiles on your own using either `-profile my_laptop` or `-profile univ_hpc`. +Just remember that the `univ_hpc` one won't work unless you run it in an environment that is set up appropriately to use Slurm. + +!!!note + + You'll notice we've removed the two profiles that _only_ specified the executor, because in those cases we're always going to want to specify the software packaging technology too. + + We're leaving in the Docker and Conda profiles because those ones come in handy by themselves, although there are also some dedicated command line flags for those, and it's a nice illustration of the fact that you can have the same directives set in multiple profiles. + Just keep in mind that if you combine profiles with conflicting settings for the same directives, you might be surprised by the results. + +### Takeaway + +You now know how to change the executor and combine that with other environment settings using profiles. + +### What's next? + +Learn how to control the resources allocated for executing processes. + +--- + +## 4. Allocate compute resources with process directives + +We've covered how to control what compute environment Nextflow is going to use to run the workflow, so now the next logical question is, how do we control the resources (CPU, memory etc) that will be allocated? + +The answer may not surprise you; it's process directives again. + +### 4.1. Increase default process resource allocations + +By default, Nextflow will use a single CPU and 2GB of memory for each process. +Let's say we decide to double that. + +We can modify this behavior by setting the `cpu` and `memory` directives in the `process` block. Add the following to the end of your `nextflow.config` file: + +```groovy title="nextflow.config" linenums="20" +process { + // defaults for all processes + cpus = 2 + memory = 4.GB +} +``` + +### 4.2. Run the workflow with the increased defaults + +Let's try that out, bearing in mind that we need to keep `-profile my_laptop` in the command going forward. + +```bash +nextflow run main.nf -profile my_laptop +``` + +You may not notice any real difference in how quickly this runs, since this is such a small workload. +But if you have a machine with few CPUs and you allocate a high number per process, you might see process calls getting queued behind each other. +This is because Nextflow will ensure we aren't using more CPUs than are available. + +!!! tip + + You can check the number of CPUs allocated to a given process by looking at the `.command.run` log in its work directory. + There will be a function called `nxf_launch()` that includes the command `docker run -i --cpu-shares 1024`, where `--cpu-shares` is the number of CPUs given to the process multiplied by 1024. + +You're probably wondering if you can set resource allocations per individual process, and the answer is of course yes, yes you can! +We'll show you how to do that in a moment. + +But first, let's talk about how you can find out how much CPU and memory your processes are likely to need. +The classic approach is to do resource profiling, meaning you run the workflow with some default allocations, record how much each process used, and from there, estimate how to adjust the base allocations. + +The truly excellent news on this front is that Nextflow includes built-in tools for doing this, and will happily generate a report for you on request. +Let's try that out. + +### 4.3. Run the workflow to generate a resource utilization report + +To have Nextflow generate the report automatically, simply add `-with-report .html` to your command line. + +```bash +nextflow run main.nf -profile my_laptop -with-report report-config-1.html +``` + +The report is an html file, which you can download and open in your browser. +Take a few minutes to look through the report and see if you can identify some opportunities for adjusting resources. +Make sure to click on the tabs that show the utilization results as a percentage of what was allocated. +There is some [documentation](https://www.nextflow.io/docs/latest/reports.html) describing all the available features. + +**TODO: insert images** + +One observation is that the `GATK_JOINTGENOTYPING` seems to be very hungry for CPU, which makes sense since it performs a lot of complex calculations. +So we could try boosting that and see if it cuts down on runtime. + +However, we seem to have overshot the mark with the memory allocations; all processes are only using a fraction of what we're giving them. +We should dial that back down and save some resources. + +### 4.3. Adjust resource allocations for a specific process + +We can specify resource allocations for a given process using the `withName` directive. +The syntax looks like this when it's by itself in a process block: + +```groovy title="Syntax" +process { + withName: 'GATK_JOINTGENOTYPING' { + cpus = 8 + } +} +``` + +Let's add that to the existing process block in the `nextflow.config` file. + +```groovy title="nextflow.config" linenums="11" +process { + // defaults for all processes + cpus = 2 + memory = 2.GB + // allocations for a specific process + withName: 'GATK_JOINTGENOTYPING' { + cpus = 8 + } +} +``` + +With that specified, the default settings will apply to all processes **except** the `GATK_JOINTGENOTYPING` process, which is a special snowflake that gets a lot more CPU. +Hopefully that should have an effect. + +### 4.4. Run again with the modified configuration + +Let's run the workflow again with the modified configuration and with the reporting flag turned on, but notice we're giving the report a different name so we can differentiate them. + +```bash +nextflow run main.nf -profile my_laptop -with-report report-config-2.html +``` + +Once again, you probably won't notice a substantial difference in runtime, because this is such a small workload and the tools spend more time in ancillary tasks than in performing the 'real' work. + +However, the second report shows that our resource utilization is more balanced now, and the runtime of the `GATK_JOINTGENOTYPING` process has been cut in half. +We probably didn't need to go all the way to 8 CPUs, but since there's only one call to that process, it's not a huge drain. + +**TODO: screenshots?** + +As you can see, this approach is useful when your processes have different resource requirements. It empowers you to can right-size the resource allocations you set up for each process based on actual data, not guesswork. + +!!!note + + This is just a tiny taster of what you can do to optimize your use of resources. + Nextflow itself has some really neat [dynamic retry logic](https://training.nextflow.io/basic_training/debugging/#dynamic-resources-allocation) built in to retry jobs that fail due to resource limitations. + Additionally, the Seqera Platform offers AI-driven tooling for optimizing your resource allocations automatically as well. + + We'll cover both of those approaches in an upcoming part of this training course. + +That being said, there may be some constraints on what you can (or must) allocate depending on what computing executor and compute infrastructure you're using. For example, your cluster may require you to stay within certain limits that don't apply when you're running elsewhere. + +### 4.5. Add resource limits to an HPC profile + +You can use the `resourceLimits` directive to set the relevant limitations. The syntax looks like this when it's by itself in a process block: + +```groovy title="Syntax" +process { + resourceLimits = [ + memory: 750.GB, + cpus: 200, + time: 30.d + ] +} +``` + +Let's add this to the `univ_hpc` profile we set up earlier. + +_Before:_ ```groovy title="nextflow.config" + univ_hpc { + process.executor = 'slurm' + conda.enabled = true + } +``` + +_After:_ + +```groovy title="nextflow.config" + univ_hpc { + process.executor = 'slurm' + conda.enabled = true + process.resourceLimits = [ + memory: 750.GB, + cpus: 200, + time: 30.d + ] + } +``` + +We can't test this since we don't have a live connection to Slurm in the Gitpod environment. +However, you can try running the workflow with resource allocations that exceed these limits, then look up the `sbatch` command in the `.command.run` script file. +You should see that the requests that actually get sent to the executor are capped at the values specified by `resourceLimits`. + +!!!note + + The nf-core project has compiled a [collection of configuration files](https://nf-co.re/configs/) shared by various institutions around the world, covering a wide range of HPC and cloud executors. + + Those shared configs are valuable both for people who work there and can therefore just utilize their institution's configuration out of the box, and for people who are looking to develop a configuration for their own infrastructure. + +### Takeaway + +You know how to allocate process resources, tweak those allocations based on the utilization report, and use a profile to adapt the allocations to the compute environment. + +### What's next? + +Configuring the parameters destined for the tools and operations wrapped within processes. + +--- + +## 5. Configure workflow parameters + +So far we've been exploring options for configuring how Nextflow behaves in terms of executing the work. +That's all well and good, but how do we manage the parameters that are meant for the workflow itself, and the tools it calls within the processes? +That is also something we should be able to do without editing code files every time we want to run on some new data or switch to a different set of reference files. + +As it turns out, there's a lot of overlap between this kind of configuration and the infrastructure configuration, starting with the `nextflow.conf` file, which can also house default values for command line parameters. + +### 5.1. Move the default parameter declarations to the configuration file + +We originally stored all our default parameter values in the workflow script itself, but we can move them out into the `nextflow.conf` file if we prefer. + +So let's cut this set of params out of `main.nf`: + +```groovy title="main.nf" linenums="3" +/* + * Pipeline parameters + */ + +// Primary input (file of input files, one per line) +params.reads_bam = "${projectDir}/data/sample_bams.txt" + +// Accessory files +params.reference = "${projectDir}/data/ref/ref.fasta" +params.reference_index = "${projectDir}/data/ref/ref.fasta.fai" +params.reference_dict = "${projectDir}/data/ref/ref.dict" +params.intervals = "${projectDir}/data/ref/intervals.bed" + +// Base name for final output file +params.cohort_name = "family_trio" +``` + +And let's stick it into the `nextflow.config` file. + +!!!note + + It doesn't really matter where we put it into the file, as long as we keep the params together and avoid mixing them in with the infrastructure configuration, for the sake of readability. + So putting it at the end will do just fine. + +### 5.2. Run the workflow with `-resume` to verify that it still works + +Let's check that we haven't broken anything, and let's include the `-resume` flag. + +```bash +nextflow run main.nf -profile my_laptop -resume +``` + +Not only does everything work, but all of the process calls are recognized as having been run previously. + +```console title="Output" + N E X T F L O W ~ version 24.02.0-edge + + ┃ Launching `main.nf` [modest_kay] DSL2 - revision: 328869237b + +[d6/353bb0] SAMTOOLS_INDEX (3) [100%] 3 of 3, cached: 3 ✔ +[dc/2a9e3f] GATK_HAPLOTYPECALLER (2) [100%] 3 of 3, cached: 3 ✔ +[fe/a940b2] GATK_JOINTGENOTYPING [100%] 1 of 1, cached: 1 ✔ +``` + +Indeed, having moved the parameter values to a different file changes nothing to the command submission that Nextflow generates. The resumability of the pipeline is preserved. + +### 5.3. Streamline the syntax of the parameter defaults + +Now that our default parameter declarations are in `nextflow.config`, we can switch to using a more structured syntax using a `params` block. That allows us to remove the repeated `params.`. + +```groovy title="nextflow.config" linenums="35" +/* + * Pipeline parameters + */ + +params { + // Primary input (file of input files, one per line) + reads_bam = "${projectDir}/data/sample_bams.txt" + + // Accessory files + reference = "${projectDir}/data/ref/ref.fasta" + reference_index = "${projectDir}/data/ref/ref.fasta.fai" + reference_dict = "${projectDir}/data/ref/ref.dict" + intervals = "${projectDir}/data/ref/intervals.bed" + + // Base name for final output file + cohort_name = "family_trio" +} +``` + +Feel free to re-run this with the same command as above to verify that it works and still preserves the resumability of the pipeline. + +At this point, you may be wondering how to provide actual data and reference files to run this workflow for real, since what we've put in here is just a tiny test set. + +There are several options. +As we mentioned earlier (see note at the start of this page), you can override the defaults specified in the `nextflow.config` file by providing directives or parameter values on the command line, or by importing other configuration files. + +In this particular case, the best solution is to use a parameter file, which is a JSON file containing key-value pairs for all of the parameters you want to supply values for. + +### 5.4. Using a parameter file to override defaults + +We provide a parameter file in the project directory, called `demo-params.json`, which contains key-value pairs for all of the parameters our workflow expects. +The values are the same input files and reference files we've been using so far. + +```json title="demo-params.json" linenums="1" +{ + "reads_bam": "data/sample_bams.txt", + "reference": "data/ref/ref.fasta", + "reference_index": "data/ref/ref.fasta.fai", + "reference_dict": "data/ref/ref.dict", + "intervals": "data/ref/intervals.bed", + "cohort_name": "family_trio" +} +``` + +To run the workflow with this parameter file, simply add `-params-file demo-params.json` to the base command. + +```bash +nextflow run main.nf -profile my_laptop -params-file demo-params.json +``` + +It works! And as expected, this produces the same outputs as previously. + +```console title="Output" + N E X T F L O W ~ version 24.02.0-edge + + ┃ Launching `main.nf` [marvelous_mandelbrot] DSL2 - revision: 328869237b + +executor > local (7) +[63/23a827] SAMTOOLS_INDEX (1) [100%] 3 of 3 ✔ +[aa/60aa4a] GATK_HAPLOTYPECALLER (2) [100%] 3 of 3 ✔ +[35/bda5eb] GATK_JOINTGENOTYPING [100%] 1 of 1 ✔ +``` + +However, you may be thinking, well, did we really override the configuration? How would we know, since those were the same files? + +### 5.6. Remove or generalize default values from `nextflow.config` + +Let's strip out all the file paths from the `params` block in `nextflow.config`, replacing them with `null`, and replace the `cohort_name` value with something more generic. + +_Before:_ + +```groovy title="nextflow.config" linenums="39" +params { + // Primary input (file of input files, one per line) + reads_bam = "${projectDir}/data/sample_bams.txt" + + // Accessory files + reference = "${projectDir}/data/ref/ref.fasta" + reference_index = "${projectDir}/data/ref/ref.fasta.fai" + reference_dict = "${projectDir}/data/ref/ref.dict" + intervals = "${projectDir}/data/ref/intervals.bed" + + // Base name for final output file + cohort_name = "family_trio" +} +``` + +_After:_ + +```groovy title="nextflow.config" linenums="39" +params { + // Primary input (file of input files, one per line) + reads_bam = null + + // Accessory files + reference = null + reference_index = null + reference_dict = null + intervals = null + + // Base name for final output file + cohort_name = "my_cohort" +} +``` + +Now, if you run the same command again, it will still work. +So yes, we're definitely able to pull those parameter values from the parameter file. + +This is great because, with the parameter file in hand, we'll now be able to provide parameter values at runtime without having to type massive command lines **and** without modifying the workflow nor the default configuration. + +That being said, it was nice to be able to demo the workflow without having to keep track of filenames and such. Let's see if we can use a profile to replicate that behavior. + +### 5.7. Create a demo profile + +Yes we can! We just need to retrieve the default parameter declarations as they were written in the original workflow (with the `params.*` syntax) and copy them into a new profile that we'll call `demo`. + +_Before:_ + +```groovy title="nextflow.config" linenums="3" +profiles { + docker_on { + docker.enabled = true + } + conda_on { + conda.enabled = true + } + my_laptop { + process.executor = 'local' + docker.enabled = true + } + univ_hpc { + process.executor = 'slurm' + conda.enabled = true + process.resourceLimits = [ + memory: 750.GB, + cpus: 200, + time: 30.d + ] + } +} +``` + +_After:_ + +```groovy title="nextflow.config" linenums="3" profiles { - docker { + docker_on { docker.enabled = true - conda.enabled = false } - conda { - docker.enabled = false + conda_on { conda.enabled = true } - local { + my_laptop { process.executor = 'local' + docker.enabled = true } - slurm { + univ_hpc { process.executor = 'slurm' + conda.enabled = true + process.resourceLimits = [ + memory: 750.GB, + cpus: 200, + time: 30.d + ] + } + demo { + // Primary input (file of input files, one per line) + params.reads_bam = "data/sample_bams.txt" + + // Accessory files + params.reference = "data/ref/ref.fasta" + params.reference_index = "data/ref/ref.fasta.fai" + params.reference_dict = "data/ref/ref.dict" + params.intervals = "data/ref/intervals.bed" + + // Base name for final output file + params.cohort_name = "family_trio" } } ``` -Now run the pipeline using two profiles, `docker` and `local`: +As long as we distribute the data bundle with the workflow code, this will enable anyone to quickly try out the workflow without having to supply their own inputs or pointing to the parameter file. + +### 5.8. Run with the demo profile + +Let's try that out: ```bash -nextflow run seqeralabs/nf-hello-gatk -r main -profile docker,local +nextflow run main.nf -profile my_laptop,demo +``` + +And it works perfectly! + +```console title="Output" + N E X T F L O W ~ version 24.02.0-edge + + ┃ Launching `main.nf` [cheesy_shaw] DSL2 - revision: 328869237b + +executor > local (7) +[4f/5ea14f] SAMTOOLS_INDEX (1) [100%] 3 of 3 ✔ +[fc/761e86] GATK_HAPLOTYPECALLER (3) [100%] 3 of 3 ✔ +[8a/2f498f] GATK_JOINTGENOTYPING [100%] 1 of 1 ✔ ``` -We have returned to the original configuration of using Docker containers with local execution. -However, now we can use profiles to switch to a different software packaging system (conda) or a different executor (slurm) with a single command-line option. +Imagine what we can do with this tooling in place. +For example, we could also add profiles with popular sets of reference files to save people the trouble of providing their own. ### Takeaway -You now know how to change the executor in Nextflow. +You know how to manage parameter defaults, override them at runtime using a parameter file, and set up profiles. ### What's next? -Well done! You've successfully modified the execution of a pipeline _without altering a single line of code_. This highlights the power of Nextflow's configuration; enabling you to control how the pipeline runs without changing what it runs. Use this flexibility to adapt your pipeline to run in any environment. +Celebrate and relax. Then we'll move on to learning how to modularize the workflow code for optimal maintainability and reuse. diff --git a/docs/hello_nextflow/img/cpu-after.png b/docs/hello_nextflow/img/cpu-after.png new file mode 100644 index 0000000000000000000000000000000000000000..f173ef020e37059800495443219975ca9b8408f4 GIT binary patch literal 32588 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

K7K%1j~P8&Ti>vC<+;Gc#nC~l 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ƒ)R|O17+loSk2fj`JH@wQE+p0y^v(R6 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 bjVCr*O6|Why|=@i1paBM>8chfTZjH1vYIl> literal 0 HcmV?d00001 diff --git a/docs/hello_nextflow/img/memory-after.png b/docs/hello_nextflow/img/memory-after.png new file mode 100644 index 0000000000000000000000000000000000000000..d61b4a7c5213f1e0c736e270d636da8c78974d93 GIT binary patch literal 26872 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 literal 0 HcmV?d00001 diff --git a/docs/hello_nextflow/img/memory-before.png b/docs/hello_nextflow/img/memory-before.png new file mode 100644 index 0000000000000000000000000000000000000000..ce0f7ac27c42d9c1c233bcea851916606b76db15 GIT binary patch literal 30629 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 TtSvB_2>fUubyRDVZJzuOpfoqf literal 0 HcmV?d00001 diff --git a/docs/hello_nextflow/img/report_cover.png b/docs/hello_nextflow/img/report_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..9feb1792ca80c562d04ff52529c6c308a606d0fc GIT binary patch literal 141356 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

dslw8;vSFd&RBhnf<)K{J%F)V{U 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 + + + + + + + + + + [pedantic_celsius] Nextflow Workflow Report + + + + +

+ +
+
+

Nextflow workflow report

+

[pedantic_celsius]

+ +
+ Workflow execution completed successfully! +
+ +
+
Run times
+
+ 26-Oct-2024 23:00:05 - + 26-Oct-2024 23:00:34 + (duration: + 28.5s) +
+ +
+
+
+   7 succeeded   +
+
+   0 cached   +
+
+   0 ignored   +
+
+   0 failed   +
+
+
+ +
Nextflow command
+
+
nextflow run main.nf -profile my_laptop -with-report report-config-1.html
+
+
+ +
+
CPU-Hours
+
(a few seconds)
+ +
Launch directory
+
+ /workspace/gitpod/hello-nextflow/projectC +
+ +
Work directory
+
+ /workspace/gitpod/hello-nextflow/projectC/work +
+ +
Project directory
+
+ /workspace/gitpod/hello-nextflow/projectC +
+ +
Script name
+
main.nf
+ +
Script ID
+
+ 950a6d78a8bd595a190c65cd064b432d +
+ +
Workflow session
+
+ 7b5a2539-acdb-40e7-af11-bdd8d821e112 +
+ +
Workflow profile
+
my_laptop
+ +
Nextflow version
+
+ version 24.02.0-edge, build 5907 (10-03-2024 19:56 UTC) +
+
+
+
+ +
+

Resource Usage

+

+ These plots give an overview of the distribution of resource + usage for each process. +

+ +

CPU

+ +
+
+
+
+
+
+
+
+ +

Memory

+ +
+
+
+
+
+
+
+
+
+
+
+ +

Job Duration

+ +
+
+
+
+
+
+
+
+ +

I/O

+ +
+
+
+
+
+
+
+
+
+ +
+
+

Tasks

+

+ This table shows information about each task in the + workflow. Use the search box on the right to filter rows for + specific values. Clicking headers will sort the table by + that value and scrolling side to side will reveal more + columns. +

+
+ + +
+
+
+
+
+ +
+ (tasks table omitted because the dataset is too big) +
+
+ +
+
+ Generated by + Nextflow, + version 24.02.0-edge +
+
+ + + + diff --git a/hello-nextflow/projectC/intermediates/report-config-2.html b/hello-nextflow/projectC/intermediates/report-config-2.html new file mode 100644 index 00000000..c2892b53 --- /dev/null +++ b/hello-nextflow/projectC/intermediates/report-config-2.html @@ -0,0 +1,261498 @@ + + + + + + + + + + + [awesome_fermi] Nextflow Workflow Report + + + + + + +
+
+

Nextflow workflow report

+

[awesome_fermi]

+ +
+ Workflow execution completed successfully! +
+ +
+
Run times
+
+ 26-Oct-2024 23:03:28 - + 26-Oct-2024 23:03:53 + (duration: + 24.8s) +
+ +
+
+
+   7 succeeded   +
+
+   0 cached   +
+
+   0 ignored   +
+
+   0 failed   +
+
+
+ +
Nextflow command
+
+
nextflow run main.nf -profile my_laptop -with-report report-config-2.html
+
+
+ +
+
CPU-Hours
+
(a few seconds)
+ +
Launch directory
+
+ /workspace/gitpod/hello-nextflow/projectC +
+ +
Work directory
+
+ /workspace/gitpod/hello-nextflow/projectC/work +
+ +
Project directory
+
+ /workspace/gitpod/hello-nextflow/projectC +
+ +
Script name
+
main.nf
+ +
Script ID
+
+ 950a6d78a8bd595a190c65cd064b432d +
+ +
Workflow session
+
+ 8242639b-0c16-4575-91cc-13b125fe9f10 +
+ +
Workflow profile
+
my_laptop
+ +
Nextflow version
+
+ version 24.02.0-edge, build 5907 (10-03-2024 19:56 UTC) +
+
+
+
+ +
+

Resource Usage

+

+ These plots give an overview of the distribution of resource + usage for each process. +

+ +

CPU

+ +
+
+
+
+
+
+
+
+ +

Memory

+ +
+
+
+
+
+
+
+
+
+
+
+ +

Job Duration

+ +
+
+
+
+
+
+
+
+ +

I/O

+ +
+
+
+
+
+
+
+
+
+ +
+
+

Tasks

+

+ This table shows information about each task in the + workflow. Use the search box on the right to filter rows for + specific values. Clicking headers will sort the table by + that value and scrolling side to side will reveal more + columns. +

+
+ + +
+
+
+
+
+ +
+ (tasks table omitted because the dataset is too big) +
+
+ +
+
+ Generated by + Nextflow, + version 24.02.0-edge +
+
+ + + + diff --git a/hello-nextflow/projectC/main.nf b/hello-nextflow/projectC/main.nf new file mode 100644 index 00000000..439b643e --- /dev/null +++ b/hello-nextflow/projectC/main.nf @@ -0,0 +1,144 @@ +#!/usr/bin/env nextflow + +/* + * Pipeline parameters + */ + +// Primary input (file of input files, one per line) +params.reads_bam = "${projectDir}/data/sample_bams.txt" + +// Accessory files +params.reference = "${projectDir}/data/ref/ref.fasta" +params.reference_index = "${projectDir}/data/ref/ref.fasta.fai" +params.reference_dict = "${projectDir}/data/ref/ref.dict" +params.intervals = "${projectDir}/data/ref/intervals.bed" + +// Base name for final output file +params.cohort_name = "family_trio" + +/* + * Generate BAM index file + */ +process SAMTOOLS_INDEX { + + container 'community.wave.seqera.io/library/samtools:1.20--b5dfbd93de237464' + + publishDir 'results_genomics', mode: 'symlink' + + input: + path input_bam + + output: + tuple path(input_bam), path("${input_bam}.bai") + + """ + samtools index '$input_bam' + """ +} + +/* + * Call variants with GATK HaplotypeCaller + */ +process GATK_HAPLOTYPECALLER { + + container "community.wave.seqera.io/library/gatk4:4.5.0.0--730ee8817e436867" + + publishDir 'results_genomics', mode: 'symlink' + + input: + tuple path(input_bam), path(input_bam_index) + path ref_fasta + path ref_index + path ref_dict + path interval_list + + output: + path "${input_bam}.g.vcf" + path "${input_bam}.g.vcf.idx" + + """ + gatk HaplotypeCaller \ + -R ${ref_fasta} \ + -I ${input_bam} \ + -O ${input_bam}.g.vcf \ + -L ${interval_list} \ + -ERC GVCF + """ +} + +/* + * Combine GVCFs into GenomicsDB datastore and run joint genotyping to produce cohort-level calls + */ +process GATK_JOINTGENOTYPING { + + container "community.wave.seqera.io/library/gatk4:4.5.0.0--730ee8817e436867" + + publishDir 'results_genomics', mode: 'symlink' + + input: + path all_gvcfs + path all_idxs + path interval_list + val cohort_name + path ref_fasta + path ref_index + path ref_dict + + output: + path "${cohort_name}.joint.vcf" + path "${cohort_name}.joint.vcf.idx" + + script: + def gvcfs_line = all_gvcfs.collect { gvcf -> "-V ${gvcf}" }.join(' ') + """ + gatk GenomicsDBImport \ + ${gvcfs_line} \ + -L ${interval_list} \ + --genomicsdb-workspace-path ${cohort_name}_gdb + + gatk GenotypeGVCFs \ + -R ${ref_fasta} \ + -V gendb://${cohort_name}_gdb \ + -L ${interval_list} \ + -O ${cohort_name}.joint.vcf + """ +} + +workflow { + + // Create input channel from a text file listing input file paths + reads_ch = Channel.fromPath(params.reads_bam).splitText() + + // Load the file paths for the accessory files (reference and intervals) + ref_file = file(params.reference) + ref_index_file = file(params.reference_index) + ref_dict_file = file(params.reference_dict) + intervals_file = file(params.intervals) + + // Create index file for input BAM file + SAMTOOLS_INDEX(reads_ch) + + // Call variants from the indexed BAM file + GATK_HAPLOTYPECALLER( + SAMTOOLS_INDEX.out, + ref_file, + ref_index_file, + ref_dict_file, + intervals_file + ) + + // Collect variant calling outputs across samples + all_gvcfs_ch = GATK_HAPLOTYPECALLER.out[0].collect() + all_idxs_ch = GATK_HAPLOTYPECALLER.out[1].collect() + + // Combine GVCFs into a GenomicsDB data store and apply joint genotyping + GATK_JOINTGENOTYPING( + all_gvcfs_ch, + all_idxs_ch, + intervals_file, + params.cohort_name, + ref_file, + ref_index_file, + ref_dict_file + ) +} \ No newline at end of file diff --git a/hello-nextflow/projectC/nextflow.config b/hello-nextflow/projectC/nextflow.config new file mode 100644 index 00000000..6f89ad50 --- /dev/null +++ b/hello-nextflow/projectC/nextflow.config @@ -0,0 +1,2 @@ +docker.enabled = true +docker.fixOwnership = true \ No newline at end of file diff --git a/hello-nextflow/projectM/demo-params.json b/hello-nextflow/projectM/demo-params.json new file mode 100644 index 00000000..2162a750 --- /dev/null +++ b/hello-nextflow/projectM/demo-params.json @@ -0,0 +1,8 @@ +{ + "reads_bam": "data/sample_bams.txt", + "reference": "data/ref/ref.fasta", + "reference_index": "data/ref/ref.fasta.fai", + "reference_dict": "data/ref/ref.dict", + "intervals": "data/ref/intervals.bed", + "cohort_name": "family_trio" +} diff --git a/hello-nextflow/projectM/main.nf b/hello-nextflow/projectM/main.nf new file mode 100644 index 00000000..3925e4f4 --- /dev/null +++ b/hello-nextflow/projectM/main.nf @@ -0,0 +1,131 @@ +#!/usr/bin/env nextflow + +/* + * Generate BAM index file + */ +process SAMTOOLS_INDEX { + + container "community.wave.seqera.io/library/samtools:1.20--b5dfbd93de237464" + conda "bioconda::samtools=1.20" + + publishDir 'results_genomics', mode: 'symlink' + + input: + path input_bam + + output: + tuple path(input_bam), path("${input_bam}.bai") + + """ + samtools index '$input_bam' + """ +} + +/* + * Call variants with GATK HaplotypeCaller + */ +process GATK_HAPLOTYPECALLER { + + container "community.wave.seqera.io/library/gatk4:4.5.0.0--730ee8817e436867" + conda "bioconda::gatk4=4.5.0.0" + + publishDir 'results_genomics', mode: 'symlink' + + input: + tuple path(input_bam), path(input_bam_index) + path ref_fasta + path ref_index + path ref_dict + path interval_list + + output: + path "${input_bam}.g.vcf" + path "${input_bam}.g.vcf.idx" + + """ + gatk HaplotypeCaller \ + -R ${ref_fasta} \ + -I ${input_bam} \ + -O ${input_bam}.g.vcf \ + -L ${interval_list} \ + -ERC GVCF + """ +} + +/* + * Combine GVCFs into GenomicsDB datastore and run joint genotyping to produce cohort-level calls + */ +process GATK_JOINTGENOTYPING { + + container "community.wave.seqera.io/library/gatk4:4.5.0.0--730ee8817e436867" + conda "bioconda::gatk4=4.5.0.0" + + publishDir 'results_genomics', mode: 'symlink' + + input: + path all_gvcfs + path all_idxs + path interval_list + val cohort_name + path ref_fasta + path ref_index + path ref_dict + + output: + path "${cohort_name}.joint.vcf" + path "${cohort_name}.joint.vcf.idx" + + script: + def gvcfs_line = all_gvcfs.collect { gvcf -> "-V ${gvcf}" }.join(' ') + """ + gatk GenomicsDBImport \ + ${gvcfs_line} \ + -L ${interval_list} \ + --genomicsdb-workspace-path ${cohort_name}_gdb + + gatk GenotypeGVCFs \ + -R ${ref_fasta} \ + -V gendb://${cohort_name}_gdb \ + -L ${interval_list} \ + -O ${cohort_name}.joint.vcf + """ +} + +workflow { + + // Create input channel from a text file listing input file paths + reads_ch = Channel.fromPath(params.reads_bam).splitText() + + // Load the file paths for the accessory files (reference and intervals) + ref_file = file(params.reference) + ref_index_file = file(params.reference_index) + ref_dict_file = file(params.reference_dict) + intervals_file = file(params.intervals) + + // Create index file for input BAM file + SAMTOOLS_INDEX(reads_ch) + + // Call variants from the indexed BAM file + GATK_HAPLOTYPECALLER( + SAMTOOLS_INDEX.out, + ref_file, + ref_index_file, + ref_dict_file, + intervals_file + ) + + // Collect variant calling outputs across samples + all_gvcfs_ch = GATK_HAPLOTYPECALLER.out[0].collect() + all_idxs_ch = GATK_HAPLOTYPECALLER.out[1].collect() + + // Combine GVCFs into a GenomicsDB data store and apply joint genotyping + GATK_JOINTGENOTYPING( + all_gvcfs_ch, + all_idxs_ch, + intervals_file, + params.cohort_name, + ref_file, + ref_index_file, + ref_dict_file + ) +} \ No newline at end of file diff --git a/hello-nextflow/projectM/nextflow.config b/hello-nextflow/projectM/nextflow.config new file mode 100644 index 00000000..e86cfea4 --- /dev/null +++ b/hello-nextflow/projectM/nextflow.config @@ -0,0 +1,65 @@ +docker.fixOwnership = true + +profiles { + docker_on { + docker.enabled = true + } + conda_on { + conda.enabled = true + } + my_laptop { + process.executor = 'local' + docker.enabled = true + } + univ_hpc { + process.executor = 'slurm' + conda.enabled = true + process.resourceLimits = [ + memory: 750.GB, + cpus: 200, + time: 30.d + ] + } + demo { + // Primary input (file of input files, one per line) + params.reads_bam = "data/sample_bams.txt" + + // Accessory files + params.reference = "data/ref/ref.fasta" + params.reference_index = "data/ref/ref.fasta.fai" + params.reference_dict = "data/ref/ref.dict" + params.intervals = "data/ref/intervals.bed" + + // Base name for final output file + params.cohort_name = "family_trio" + } +} + +process { + // defaults for all processes + cpus = 2 + memory = 2.GB + // allocations for a specific process + withName: 'GATK_JOINTGENOTYPING' { + cpus = 8 + } +} + +/* + * Pipeline parameters + */ + +params { + // Primary input (file of input files, one per line) + reads_bam = null + + // Accessory files + reference = null + reference_index = null + reference_dict = null + intervals = null + + // Base name for final output file + cohort_name = "my_cohort" +} + diff --git a/hello-nextflow/projectT/demo-params.json b/hello-nextflow/projectT/demo-params.json new file mode 100644 index 00000000..2162a750 --- /dev/null +++ b/hello-nextflow/projectT/demo-params.json @@ -0,0 +1,8 @@ +{ + "reads_bam": "data/sample_bams.txt", + "reference": "data/ref/ref.fasta", + "reference_index": "data/ref/ref.fasta.fai", + "reference_dict": "data/ref/ref.dict", + "intervals": "data/ref/intervals.bed", + "cohort_name": "family_trio" +} diff --git a/hello-nextflow/projectT/main.nf b/hello-nextflow/projectT/main.nf new file mode 100644 index 00000000..3925e4f4 --- /dev/null +++ b/hello-nextflow/projectT/main.nf @@ -0,0 +1,131 @@ +#!/usr/bin/env nextflow + +/* + * Generate BAM index file + */ +process SAMTOOLS_INDEX { + + container "community.wave.seqera.io/library/samtools:1.20--b5dfbd93de237464" + conda "bioconda::samtools=1.20" + + publishDir 'results_genomics', mode: 'symlink' + + input: + path input_bam + + output: + tuple path(input_bam), path("${input_bam}.bai") + + """ + samtools index '$input_bam' + """ +} + +/* + * Call variants with GATK HaplotypeCaller + */ +process GATK_HAPLOTYPECALLER { + + container "community.wave.seqera.io/library/gatk4:4.5.0.0--730ee8817e436867" + conda "bioconda::gatk4=4.5.0.0" + + publishDir 'results_genomics', mode: 'symlink' + + input: + tuple path(input_bam), path(input_bam_index) + path ref_fasta + path ref_index + path ref_dict + path interval_list + + output: + path "${input_bam}.g.vcf" + path "${input_bam}.g.vcf.idx" + + """ + gatk HaplotypeCaller \ + -R ${ref_fasta} \ + -I ${input_bam} \ + -O ${input_bam}.g.vcf \ + -L ${interval_list} \ + -ERC GVCF + """ +} + +/* + * Combine GVCFs into GenomicsDB datastore and run joint genotyping to produce cohort-level calls + */ +process GATK_JOINTGENOTYPING { + + container "community.wave.seqera.io/library/gatk4:4.5.0.0--730ee8817e436867" + conda "bioconda::gatk4=4.5.0.0" + + publishDir 'results_genomics', mode: 'symlink' + + input: + path all_gvcfs + path all_idxs + path interval_list + val cohort_name + path ref_fasta + path ref_index + path ref_dict + + output: + path "${cohort_name}.joint.vcf" + path "${cohort_name}.joint.vcf.idx" + + script: + def gvcfs_line = all_gvcfs.collect { gvcf -> "-V ${gvcf}" }.join(' ') + """ + gatk GenomicsDBImport \ + ${gvcfs_line} \ + -L ${interval_list} \ + --genomicsdb-workspace-path ${cohort_name}_gdb + + gatk GenotypeGVCFs \ + -R ${ref_fasta} \ + -V gendb://${cohort_name}_gdb \ + -L ${interval_list} \ + -O ${cohort_name}.joint.vcf + """ +} + +workflow { + + // Create input channel from a text file listing input file paths + reads_ch = Channel.fromPath(params.reads_bam).splitText() + + // Load the file paths for the accessory files (reference and intervals) + ref_file = file(params.reference) + ref_index_file = file(params.reference_index) + ref_dict_file = file(params.reference_dict) + intervals_file = file(params.intervals) + + // Create index file for input BAM file + SAMTOOLS_INDEX(reads_ch) + + // Call variants from the indexed BAM file + GATK_HAPLOTYPECALLER( + SAMTOOLS_INDEX.out, + ref_file, + ref_index_file, + ref_dict_file, + intervals_file + ) + + // Collect variant calling outputs across samples + all_gvcfs_ch = GATK_HAPLOTYPECALLER.out[0].collect() + all_idxs_ch = GATK_HAPLOTYPECALLER.out[1].collect() + + // Combine GVCFs into a GenomicsDB data store and apply joint genotyping + GATK_JOINTGENOTYPING( + all_gvcfs_ch, + all_idxs_ch, + intervals_file, + params.cohort_name, + ref_file, + ref_index_file, + ref_dict_file + ) +} \ No newline at end of file diff --git a/hello-nextflow/projectT/nextflow.config b/hello-nextflow/projectT/nextflow.config new file mode 100644 index 00000000..e86cfea4 --- /dev/null +++ b/hello-nextflow/projectT/nextflow.config @@ -0,0 +1,65 @@ +docker.fixOwnership = true + +profiles { + docker_on { + docker.enabled = true + } + conda_on { + conda.enabled = true + } + my_laptop { + process.executor = 'local' + docker.enabled = true + } + univ_hpc { + process.executor = 'slurm' + conda.enabled = true + process.resourceLimits = [ + memory: 750.GB, + cpus: 200, + time: 30.d + ] + } + demo { + // Primary input (file of input files, one per line) + params.reads_bam = "data/sample_bams.txt" + + // Accessory files + params.reference = "data/ref/ref.fasta" + params.reference_index = "data/ref/ref.fasta.fai" + params.reference_dict = "data/ref/ref.dict" + params.intervals = "data/ref/intervals.bed" + + // Base name for final output file + params.cohort_name = "family_trio" + } +} + +process { + // defaults for all processes + cpus = 2 + memory = 2.GB + // allocations for a specific process + withName: 'GATK_JOINTGENOTYPING' { + cpus = 8 + } +} + +/* + * Pipeline parameters + */ + +params { + // Primary input (file of input files, one per line) + reads_bam = null + + // Accessory files + reference = null + reference_index = null + reference_dict = null + intervals = null + + // Base name for final output file + cohort_name = "my_cohort" +} +