From 877e069a0a68558274fcaad502a1b1133d6abe48 Mon Sep 17 00:00:00 2001 From: Geraldine Van der Auwera Date: Mon, 16 Dec 2024 17:57:30 -0500 Subject: [PATCH 01/35] New multi-course structure for training materials First step toward evolving Hello Nextflow to be more modular. Just content moves and stub creation (not updated content yet except some rough chopping where bits are getting split up). --- docs/big_nextflow/01_orientation.md | 46 +++++ docs/big_nextflow/index.md | 31 +++ docs/hello_nextflow/03_hello_containers.md | 193 +----------------- ...{06_hello_config.md => 04_hello_config.md} | 181 +++------------- ...7_hello_modules.md => 05_hello_modules.md} | 2 +- docs/nf4-genomics/01_orientation.md | 46 +++++ .../02_linear.md} | 8 +- .../03_collect.md} | 12 +- docs/nf4-genomics/04_config.md | 85 ++++++++ .../05_testing.md} | 26 ++- .../img/gatk-pipeline.png | Bin .../img/haplotype-caller.excalidraw.svg | 0 .../img/hello-gatk-1.svg | 0 .../img/hello-gatk-2.svg | 0 .../img/joint-calling.png | Bin docs/nf4-genomics/img/memory-after.png | Bin 0 -> 26872 bytes docs/nf4-genomics/img/memory-before.png | Bin 0 -> 30629 bytes .../img/variants.png | Bin docs/nf4-genomics/index.md | 31 +++ docs/run_nextflow/01_orientation.md | 46 +++++ docs/run_nextflow/02_run_basics.md | 10 + .../03_run_nf-core.md} | 36 ++-- .../04_run_seqera.md} | 0 docs/run_nextflow/img/cpu-after.png | Bin 0 -> 32588 bytes docs/run_nextflow/img/cpu-before.png | Bin 0 -> 34004 bytes docs/run_nextflow/img/memory-after.png | Bin 0 -> 26872 bytes docs/run_nextflow/img/memory-before.png | Bin 0 -> 30629 bytes .../img/nested.excalidraw.svg | 0 .../img/nf-core-modules.png | Bin .../img/pipeline.excalidraw.svg | 0 .../img/pipeline_schema.png | Bin docs/run_nextflow/img/report_cover.png | Bin 0 -> 141356 bytes .../img/seqera-containers-1.png | Bin .../img/seqera-containers-2.png | Bin docs/run_nextflow/index.md | 39 ++++ .../seqera/01_run_with_cli.md | 14 +- .../seqera/02_run_with_launchpad.md | 8 +- .../seqera/img/compute_env_platforms.png | Bin .../seqera/img/launchpad.gif | Bin .../seqera/img/resolved_configuration.png | Bin .../seqera/img/run_with_tower.png | Bin .../seqera/img/running_pipeline.png | Bin .../seqera/img/task_details.png | Bin .../seqera/img/usage_create_token.png | Bin .../seqera/img/usage_name_token.png | Bin .../seqera/img/usage_token.png | Bin docs/side_quests/containers.md | 189 +++++++++++++++++ docs/side_quests/if_else.md | 87 ++++++++ docs/side_quests/index.md | 27 +++ docs/side_quests/orientation.md | 46 +++++ .../{containers/data => }/greetings.csv | 0 mkdocs.yml | 38 ++-- .../data/bam/reads_father.bam | Bin .../data/bam/reads_mother.bam | Bin .../data/bam/reads_son.bam | Bin .../data/ref/intervals.bed | 0 .../data/ref/ref.dict | 0 .../data/ref/ref.fasta | 0 .../data/ref/ref.fasta.fai | 0 .../data/sample_bams.txt | 0 .../data/samplesheet.csv | 0 .../hello-genomics.nf | 0 .../hello-operators.nf | 0 .../data/sequencer_samplesheet.csv | 2 +- .../myorg-myfirstpipeline/.editorconfig | 0 .../myorg-myfirstpipeline/.nf-core.yml | 0 .../.pre-commit-config.yaml | 0 .../myorg-myfirstpipeline/.prettierignore | 0 .../myorg-myfirstpipeline/.prettierrc.yml | 0 .../solution/myorg-myfirstpipeline/LICENSE | 0 .../solution/myorg-myfirstpipeline/README.md | 0 .../assets/email_template.html | 0 .../assets/email_template.txt | 0 .../assets/multiqc_config.yml | 0 .../assets/samplesheet.csv | 0 .../assets/schema_input.json | 0 .../assets/sendmail_template.txt | 0 .../myorg-myfirstpipeline/conf/base.config | 0 .../myorg-myfirstpipeline/conf/modules.config | 0 .../myorg-myfirstpipeline/conf/test.config | 2 +- .../conf/test_full.config | 0 .../myorg-myfirstpipeline/docs/README.md | 0 .../myorg-myfirstpipeline/docs/output.md | 0 .../myorg-myfirstpipeline/docs/usage.md | 0 .../solution/myorg-myfirstpipeline/main.nf | 2 +- .../myorg-myfirstpipeline/modules.json | 0 .../modules/local/fastqe.nf | 0 .../modules/nf-core/multiqc/environment.yml | 0 .../modules/nf-core/multiqc/main.nf | 0 .../modules/nf-core/multiqc/meta.yml | 0 .../nf-core/multiqc/tests/main.nf.test | 0 .../nf-core/multiqc/tests/main.nf.test.snap | 2 +- .../nf-core/multiqc/tests/nextflow.config | 0 .../modules/nf-core/multiqc/tests/tags.yml | 0 .../nf-core/seqtk/trim/environment.yml | 0 .../modules/nf-core/seqtk/trim/main.nf | 0 .../modules/nf-core/seqtk/trim/meta.yml | 0 .../nf-core/seqtk/trim/tests/main.nf.test | 0 .../seqtk/trim/tests/main.nf.test.snap | 2 +- .../modules/nf-core/seqtk/trim/tests/tags.yml | 0 .../myorg-myfirstpipeline/nextflow.config | 0 .../nextflow_schema.json | 0 .../main.nf | 7 +- .../nf-core/utils_nextflow_pipeline/main.nf | 0 .../nf-core/utils_nextflow_pipeline/meta.yml | 0 .../tests/main.function.nf.test | 0 .../tests/main.function.nf.test.snap | 2 +- .../tests/main.workflow.nf.test | 0 .../tests/nextflow.config | 0 .../utils_nextflow_pipeline/tests/tags.yml | 0 .../nf-core/utils_nfcore_pipeline/main.nf | 0 .../nf-core/utils_nfcore_pipeline/meta.yml | 0 .../tests/main.function.nf.test | 0 .../tests/main.function.nf.test.snap | 2 +- .../tests/main.workflow.nf.test | 0 .../tests/main.workflow.nf.test.snap | 2 +- .../tests/nextflow.config | 0 .../utils_nfcore_pipeline/tests/tags.yml | 0 .../nf-core/utils_nfschema_plugin/main.nf | 1 - .../nf-core/utils_nfschema_plugin/meta.yml | 0 .../utils_nfschema_plugin/tests/main.nf.test | 0 .../tests/nextflow.config | 2 +- .../tests/nextflow_schema.json | 0 .../solution/myorg-myfirstpipeline/tower.yml | 0 .../workflows/myfirstpipeline.nf | 0 .../containers/build/Dockerfile | 0 .../containers/build/conda.yml | 0 .../containers}/data/greetings.csv | 0 .../containers/data/pioneers.csv | 0 .../containers/results/.gitignore | 0 .../solutions/hello-containers-3.nf | 0 .../solutions/hello-containers-4.1.nf | 0 .../solutions/hello-containers-4.2.nf | 0 133 files changed, 806 insertions(+), 421 deletions(-) create mode 100644 docs/big_nextflow/01_orientation.md create mode 100644 docs/big_nextflow/index.md rename docs/hello_nextflow/{06_hello_config.md => 04_hello_config.md} (85%) rename docs/hello_nextflow/{07_hello_modules.md => 05_hello_modules.md} (99%) create mode 100644 docs/nf4-genomics/01_orientation.md rename docs/{hello_nextflow/04_hello_genomics.md => nf4-genomics/02_linear.md} (98%) rename docs/{hello_nextflow/05_hello_operators.md => nf4-genomics/03_collect.md} (97%) create mode 100644 docs/nf4-genomics/04_config.md rename docs/{hello_nextflow/08_hello_nf-test.md => nf4-genomics/05_testing.md} (96%) rename docs/{hello_nextflow => nf4-genomics}/img/gatk-pipeline.png (100%) rename docs/{hello_nextflow => nf4-genomics}/img/haplotype-caller.excalidraw.svg (100%) rename docs/{hello_nextflow => nf4-genomics}/img/hello-gatk-1.svg (100%) rename docs/{hello_nextflow => nf4-genomics}/img/hello-gatk-2.svg (100%) rename docs/{hello_nextflow => nf4-genomics}/img/joint-calling.png (100%) create mode 100644 docs/nf4-genomics/img/memory-after.png create mode 100644 docs/nf4-genomics/img/memory-before.png rename docs/{hello_nextflow => nf4-genomics}/img/variants.png (100%) create mode 100644 docs/nf4-genomics/index.md create mode 100644 docs/run_nextflow/01_orientation.md create mode 100644 docs/run_nextflow/02_run_basics.md rename docs/{hello_nextflow/09_hello_nf-core.md => run_nextflow/03_run_nf-core.md} (97%) rename docs/{hello_nextflow/10_hello_seqera.md => run_nextflow/04_run_seqera.md} (100%) create mode 100644 docs/run_nextflow/img/cpu-after.png create mode 100644 docs/run_nextflow/img/cpu-before.png create mode 100644 docs/run_nextflow/img/memory-after.png create mode 100644 docs/run_nextflow/img/memory-before.png rename docs/{hello_nextflow => run_nextflow}/img/nested.excalidraw.svg (100%) rename docs/{hello_nextflow => run_nextflow}/img/nf-core-modules.png (100%) rename docs/{hello_nextflow => run_nextflow}/img/pipeline.excalidraw.svg (100%) rename docs/{hello_nextflow => run_nextflow}/img/pipeline_schema.png (100%) create mode 100644 docs/run_nextflow/img/report_cover.png rename docs/{hello_nextflow => run_nextflow}/img/seqera-containers-1.png (100%) rename docs/{hello_nextflow => run_nextflow}/img/seqera-containers-2.png (100%) create mode 100644 docs/run_nextflow/index.md rename docs/{hello_nextflow => run_nextflow}/seqera/01_run_with_cli.md (88%) rename docs/{hello_nextflow => run_nextflow}/seqera/02_run_with_launchpad.md (94%) rename docs/{hello_nextflow => run_nextflow}/seqera/img/compute_env_platforms.png (100%) rename docs/{hello_nextflow => run_nextflow}/seqera/img/launchpad.gif (100%) rename docs/{hello_nextflow => run_nextflow}/seqera/img/resolved_configuration.png (100%) rename docs/{hello_nextflow => run_nextflow}/seqera/img/run_with_tower.png (100%) rename docs/{hello_nextflow => run_nextflow}/seqera/img/running_pipeline.png (100%) rename docs/{hello_nextflow => run_nextflow}/seqera/img/task_details.png (100%) rename docs/{hello_nextflow => run_nextflow}/seqera/img/usage_create_token.png (100%) rename docs/{hello_nextflow => run_nextflow}/seqera/img/usage_name_token.png (100%) rename docs/{hello_nextflow => run_nextflow}/seqera/img/usage_token.png (100%) create mode 100644 docs/side_quests/containers.md create mode 100644 docs/side_quests/if_else.md create mode 100644 docs/side_quests/index.md create mode 100644 docs/side_quests/orientation.md rename hello-nextflow/{containers/data => }/greetings.csv (100%) rename {hello-nextflow => nf4-genomics}/data/bam/reads_father.bam (100%) rename {hello-nextflow => nf4-genomics}/data/bam/reads_mother.bam (100%) rename {hello-nextflow => nf4-genomics}/data/bam/reads_son.bam (100%) rename {hello-nextflow => nf4-genomics}/data/ref/intervals.bed (100%) rename {hello-nextflow => nf4-genomics}/data/ref/ref.dict (100%) rename {hello-nextflow => nf4-genomics}/data/ref/ref.fasta (100%) rename {hello-nextflow => nf4-genomics}/data/ref/ref.fasta.fai (100%) rename {hello-nextflow => nf4-genomics}/data/sample_bams.txt (100%) rename {hello-nextflow => nf4-genomics}/data/samplesheet.csv (100%) rename {hello-nextflow => nf4-genomics}/hello-genomics.nf (100%) rename {hello-nextflow => nf4-genomics}/hello-operators.nf (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/data/sequencer_samplesheet.csv (91%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/.editorconfig (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/.nf-core.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/.pre-commit-config.yaml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/.prettierignore (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/.prettierrc.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/LICENSE (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/README.md (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/assets/email_template.html (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/assets/email_template.txt (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/assets/multiqc_config.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/assets/samplesheet.csv (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/assets/schema_input.json (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/assets/sendmail_template.txt (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/conf/base.config (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/conf/modules.config (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/conf/test.config (99%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/conf/test_full.config (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/docs/README.md (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/docs/output.md (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/docs/usage.md (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/main.nf (99%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules.json (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/local/fastqe.nf (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/environment.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/main.nf (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/meta.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test.snap (99%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/nextflow.config (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/tags.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/environment.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/main.nf (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/meta.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test.snap (99%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/tags.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/nextflow.config (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/nextflow_schema.json (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/local/utils_nfcore_myfirstpipeline_pipeline/main.nf (99%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/main.nf (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/meta.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap (99%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/main.nf (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap (99%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap (99%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/main.nf (99%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/meta.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config (98%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/tower.yml (100%) rename {hello-nextflow => run-nextflow}/hello-nf-core/solution/myorg-myfirstpipeline/workflows/myfirstpipeline.nf (100%) rename {hello-nextflow => side-quests}/containers/build/Dockerfile (100%) rename {hello-nextflow => side-quests}/containers/build/conda.yml (100%) rename {hello-nextflow => side-quests/containers}/data/greetings.csv (100%) rename {hello-nextflow => side-quests}/containers/data/pioneers.csv (100%) rename {hello-nextflow => side-quests}/containers/results/.gitignore (100%) rename {hello-nextflow => side-quests}/containers/solutions/hello-containers-3.nf (100%) rename {hello-nextflow => side-quests}/containers/solutions/hello-containers-4.1.nf (100%) rename {hello-nextflow => side-quests}/containers/solutions/hello-containers-4.2.nf (100%) diff --git a/docs/big_nextflow/01_orientation.md b/docs/big_nextflow/01_orientation.md new file mode 100644 index 00000000..d2d2aee5 --- /dev/null +++ b/docs/big_nextflow/01_orientation.md @@ -0,0 +1,46 @@ +# Orientation + +The Gitpod environment contains all the software, code and data necessary to work through this training course, so you don't need to install anything yourself. +However, you do need a (free) account to log in, and you should take a few minutes to familiarize yourself with the interface. + +If you have not yet done so, please follow [this link](../../envsetup/) before going any further. + +## Materials provided + +Throughout this training course, we'll be working in the `big-nextflow/` directory. +This directory contains all the code files, test data and accessory files you will need. + +Feel free to explore the contents of this directory; the easiest way to do so is to use the file explorer on the left-hand side of the Gitpod workspace. +Alternatively, you can use the `tree` command. +Throughout the course, we use the output of `tree` to represent directory structure and contents in a readable form, sometimes with minor modifications for clarity. + +Here we generate a table of contents to the second level down: + +```bash +tree . -L 2 +``` + +If you run this inside `big-nextflow`, you should see the following output: [TODO] + +```console title="Directory contents" +. +``` + +!!!note + + Don't worry if this seems like a lot; we'll go through the relevant pieces at each step of the course. + This is just meant to give you an overview. + +**Here's a summary of what you should know to get started:** + +[TODO] + +!!!tip + + If for whatever reason you move out of this directory, you can always run this command to return to it: + + ```bash + cd /workspace/gitpod/big-nextflow + ``` + +Now, to begin the course, click on the arrow in the bottom right corner of this page. diff --git a/docs/big_nextflow/index.md b/docs/big_nextflow/index.md new file mode 100644 index 00000000..493eb17b --- /dev/null +++ b/docs/big_nextflow/index.md @@ -0,0 +1,31 @@ +--- +title: Big Nextflow +hide: + - toc +--- + +# Big Nextflow + +[TODO]] + +Let's get started! + +[![Open in Gitpod](https://img.shields.io/badge/Gitpod-%20Open%20in%20Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/nextflow-io/training) + +## Learning objectives + +In this workshop, you will learn [TODO]. + +By the end of this workshop you will be able to: + +[TODO] + +## Audience & prerequisites + +[TODO] + +**Prerequisites** + +- A GitHub account +- Experience with command line + [TODO] diff --git a/docs/hello_nextflow/03_hello_containers.md b/docs/hello_nextflow/03_hello_containers.md index ec975b17..50a710e2 100644 --- a/docs/hello_nextflow/03_hello_containers.md +++ b/docs/hello_nextflow/03_hello_containers.md @@ -174,7 +174,7 @@ You know how to pull a container and run it interactively, make your data access ### What's next? -Learn how to get a container image for any pip/conda-installable tool. +[TODO] update text (was wrong one) --- @@ -183,6 +183,8 @@ Learn how to get a container image for any pip/conda-installable tool. Nextflow has built-in support for running processes inside containers to let you run tools you don't have installed in your compute environment. This means that you can use any container image you like to run your processes, and Nextflow will take care of pulling the image, mounting the data, and running the process inside it. +[TODO] [Update this to add a cowsay step to the hello-world pipeline (just add it after the uppercase step) -- include passing in the character as a parameter] + ### 2.1. Add a container directive to your process Edit the `hello-containers.nf` script to add a `container` directive to the `cowsay` process. @@ -281,191 +283,4 @@ You know how to use containers in Nextflow to run processes. ### What's next? -You have everything you need to continue to the [next chapter](./04_hello_genomics.md) of this training series. -Optionally, continue on to learn how to get container images for tools you want to use in your Nextflow pipelines. - ---- - -## 3. Optional Topic: How to find or make container images - -Some software developers provide container images for their software that are available on container registries like Docker Hub, but many do not. -In this optional section, we'll show you to two ways to get a container image for tools you want to use in your Nextflow pipelines: using Seqera Containers and building the container image yourself. - -You'll be getting/building a container image for the `quote` pip package, which will be used in the exercise at the end of this section. - -### 3.1. Get a container image from Seqera Containers - -Seqera Containers is a free service that builds container images for pip and conda (including bioconda) installable tools. -Navigate to [Seqera Containers](https://www.seqera.io/containers/) and search for the `quote` pip package. - -![Seqera Containers](img/seqera-containers-1.png) - -Click on "+Add" and then "Get Container" to request a container image for the `quote` pip package. - -![Seqera Containers](img/seqera-containers-2.png) - -If this is the first time a community container has been built for this version of the package, it may take a few minutes to complete. -Click to copy the URI (e.g. `community.wave.seqera.io/library/pip_quote:ae07804021465ee9`) of the container image that was created for you. - -You can now use the container image to run the `quote` command and get a random saying from Grace Hopper. - -```bash -docker run --rm community.wave.seqera.io/library/pip_quote:ae07804021465ee9 quote "Grace Hopper" -``` - -Output: - -```console title="Output" -Humans are allergic to change. They love to say, 'We've always done it -this way.' I try to fight that. That's why I have a clock on my wall -that runs counter-clockwise. -``` - -### 3.2. Build the container image yourself - -Let's use some build details from the Seqera Containers website to build the container image for the `quote` pip package ourselves. -Return to the Seqera Containers website and click on the "Build Details" button. - -The first item we'll look at is the `Dockerfile`, a type of script file that contains all the commands needed to build the container image. -We've added some explanatory comments to the Dockerfile below to help you understand what each part does. - -```Dockerfile title="Dockerfile" -# Start from the micromamba base docker image -FROM mambaorg/micromamba:1.5.10-noble -# Copy the conda.yml file into the container -COPY --chown=$MAMBA_USER:$MAMBA_USER conda.yml /tmp/conda.yml -# Install various utilities for Nextflow to use and the packages in the conda.yml file -RUN micromamba install -y -n base -f /tmp/conda.yml \ - && micromamba install -y -n base conda-forge::procps-ng \ - && micromamba env export --name base --explicit > environment.lock \ - && echo ">> CONDA_LOCK_START" \ - && cat environment.lock \ - && echo "<< CONDA_LOCK_END" \ - && micromamba clean -a -y -# Run the container as the root user -USER root -# Set the PATH environment variable to include the micromamba installation directory -ENV PATH="$MAMBA_ROOT_PREFIX/bin:$PATH" -``` - -The second item we'll look at is the `conda.yml` file, which contains the list of packages that need to be installed in the container image. - -```conda.yml title="conda.yml" -channels: -- conda-forge -- bioconda -dependencies: -- pip -- pip: - - quote==3.0.0 # -``` - -Copy the contents of these files into the stubs located in the `containers/build` directory, then run the following command to build the container image yourself. - -!!! Note - - We use the `-t quote:latest` flag to tag the container image with the name `quote` and the tag `latest`. - We will be able to use this tag to refer to the container image when running it on this system. - -```bash -docker build -t quote:latest containers/build -``` - -After it has finished building, you can run the container image you just built. - -```bash -docker run --rm quote:latest quote "Margaret Oakley Dayhoff" -``` - -### Takeaway - -You've learned two different ways to get a container image for a tool you want to use in your Nextflow pipelines: using Seqera Containers and building the container image yourself. - -### What's next? - -You have everything you need to continue to the [next chapter](./04_hello_genomics.md) of this training series. -You can also continue on with an optional exercise to fetch quotes on computer/biology pioneers using the `quote` container and output them using the `cowsay` container. - ---- - -## 4. Bonus Exercise: Make the cow quote famous scientists - -This section contains some stretch exercises, to practice what you've learned so far. -Doing these exercises is _not required_ to understand later parts of the training, but provide a fun way to reinforce your learnings by figuring out how to make the cow quote famous scientists. - -```console title="cowsay-output-Grace-Hopper.txt" - _________________________________________________ - / \ -| Humans are allergic to change. They love to | -| say, 'We've always done it this way.' I try to fi | -| ght that. That's why I have a clock on my wall th | -| at runs counter-clockwise. | -| -Grace Hopper | - \ / - ================================================= - \ - \ - ^__^ - (oo)\_______ - (__)\ )\/\ - ||----w | - || || -``` - -### 4.1. Modify the `hello-containers.nf` script to use a getQuote process - -We have a list of computer and biology pioneers in the `containers/data/pioneers.csv` file. -At a high level, to complete this exercise you will need to: - -- Modify the default `params.input_file` to point to the `pioneers.csv` file. -- Create a `getQuote` process that uses the `quote` container to fetch a quote for each input. -- Connect the output of the `getQuote` process to the `cowsay` process to display the quote. - -For the `quote` container image, you can either use the one you built yourself in the previous stretch exercise or use the one you got from Seqera Containers . - -!!! Hint - - A good choice for the `script` block of your getQuote process might be: - ```groovy - script: - def safe_author = author.tokenize(' ').join('-') - """ - quote "$author" > quote-${safe_author}.txt - echo "-${author}" >> quote-${safe_author}.txt - """ - ``` - -You can find a solution to this exercise in `containers/solutions/hello-containers-4.1.nf`. - -### 4.2. Modify your Nextflow pipeline to allow it to execute in `quote` and `sayHello` modes. - -Add some branching logic using to your pipeline to allow it to accept inputs intended for both `quote` and `sayHello`. -Here's an example of how to use an `if` statement in a Nextflow workflow: - -```groovy title="hello-containers.nf" -workflow { - if (params.quote) { - ... - } - else { - ... - } - cowSay(text_ch) -} -``` - -!!! Hint - - You can use `new_ch = processName.out` to assign a name to the output channel of a process. - -You can find a solution to this exercise in `containers/solutions/hello-containers-4.2.nf`. - -### Takeaway - -You know how to use containers in Nextflow to run processes, and how to build some branching logic into your pipelines! - -### What's next? - -Celebrate, take a stretch break and drink some water! - -When you are ready, move on to Part 3 of this training series to learn how to apply what you've learned so far to a more realistic data analysis use case. +[TODO] diff --git a/docs/hello_nextflow/06_hello_config.md b/docs/hello_nextflow/04_hello_config.md similarity index 85% rename from docs/hello_nextflow/06_hello_config.md rename to docs/hello_nextflow/04_hello_config.md index d6f672f9..e3db8786 100644 --- a/docs/hello_nextflow/06_hello_config.md +++ b/docs/hello_nextflow/04_hello_config.md @@ -1,5 +1,7 @@ # Part 5: Hello Config +[TODO] SIMPLIFY / STREAMLINE THIS + 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_. We're going to cover essential components of Nextflow configuration such as config files, profiles, process directives, executors, and parameter files. @@ -7,7 +9,7 @@ By learning to utilize these configuration options effectively, you can enhance --- -## 0. Warmup: Moving to a formal project structure +## 0. Warmup: Moving to a formal project structure [TODO] GET RID OF THIS 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. @@ -33,10 +35,10 @@ hello-config └── nextflow.config ``` -- **`main.nf`** is a workflow based on `hello-operators.nf`, the workflow produced by completing Part 4 of this training course; +- **`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: +- **`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: ```console title="nextflow.config" linenums="1" docker.fixOwnership = true @@ -54,8 +56,8 @@ hello-config 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. +- **`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. 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. @@ -117,6 +119,8 @@ Learn how to modify basic configuration properties to adapt to your compute envi ## 1. Determine what software packaging technology to use +[TODO] SIMPLIFY ALL THIS TO JUST USE THE COWSAY PACKAGE + 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. @@ -431,12 +435,12 @@ This runs each step on the same machine that Nextflow is running on. 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) -- AWS Batch -- Google Batch -- Azure Batch -- Kubernetes -- GA4GH TES +- HPC (SLURM, PBS, SGE) +- AWS Batch +- Google Batch +- Azure Batch +- Kubernetes +- GA4GH TES The executor is subject to a process directive called `executor`. By default it is set to `local`, so the following configuration is implied: @@ -468,6 +472,8 @@ Basically we are telling Nextflow to generate a Slurm submission script and subm ### 3.2. Launch the workflow to generate the job submission script +[TODO] THIS WAS CONFUSING — EXPLAIN BETTER OR CUT + Let's try running this; even though we know it won't execute (since we don't have Slurm set up in this Gitpod environment) we'll be able to see what the submission script looks like. ```bash @@ -714,6 +720,8 @@ Let's try that out. ### 4.3. Run the workflow to generate a resource utilization report +[TODO] SUMMARIZE AND REFER TO DEEPER DIVE IN DOMAIN-SPECIFIC EXAMPLES (not useful with toy examples) + To have Nextflow generate the report automatically, simply add `-with-report .html` to your command line. ```bash @@ -849,7 +857,7 @@ Configuring the parameters destined for the tools and operations wrapped within --- -## 5. Configure workflow parameters +## 5. Configure workflow parameters [TODO] STREAMLINE THIS (no point ping-ponging so much) 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? @@ -857,99 +865,11 @@ That is also something we should be able to do without editing code files every As it turns out, there's a lot of overlap between this kind of configuration and the infrastructure configuration, starting with the `nextflow.config` 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.config` 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" - -// Output directory -params.outdir = 'results_genomics' - -// 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.10.0 - - ┃ 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.`. +[TODO] NO JUST STICK IT STRAIGHT INTO A PARAMS JSON -```groovy title="nextflow.config" linenums="35" -/* - * Pipeline parameters - */ +### 5.4. Using a parameter file -params { - // Primary input (file of input files, one per line) - reads_bam = "${projectDir}/data/sample_bams.txt" - - // Output directory - outdir = 'results_genomics' - - // 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 +[TODO] UPDATE CODE We provide a parameter file in the current 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. @@ -985,63 +905,14 @@ executor > local (7) [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.5. 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" - - // Output directory - outdir = 'results_genomics' - - // 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 - - // Output directory - outdir = 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.6. Create a demo profile +[TODO] DECIDE IF WE KEEP THIS; IF SO UPDATE TEXT + 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:_ diff --git a/docs/hello_nextflow/07_hello_modules.md b/docs/hello_nextflow/05_hello_modules.md similarity index 99% rename from docs/hello_nextflow/07_hello_modules.md rename to docs/hello_nextflow/05_hello_modules.md index 5dfdd78a..a9cec9ff 100644 --- a/docs/hello_nextflow/07_hello_modules.md +++ b/docs/hello_nextflow/05_hello_modules.md @@ -15,7 +15,7 @@ This makes the code more shareable, flexible and maintainable. --- -## 0. Warmup +## 0. Warmup [TODO] GET RID OF MOST OF THIS When we started developing our workflow, we put everything in one single code file. In Part 5 (Hello Config), we started turning our one-file workflow into a proper pipeline project. diff --git a/docs/nf4-genomics/01_orientation.md b/docs/nf4-genomics/01_orientation.md new file mode 100644 index 00000000..79d7e0dd --- /dev/null +++ b/docs/nf4-genomics/01_orientation.md @@ -0,0 +1,46 @@ +# Orientation + +The Gitpod environment contains all the software, code and data necessary to work through this training course, so you don't need to install anything yourself. +However, you do need a (free) account to log in, and you should take a few minutes to familiarize yourself with the interface. + +If you have not yet done so, please follow [this link](../../envsetup/) before going any further. + +## Materials provided + +Throughout this training course, we'll be working in the `nf4-genomics/` directory. +This directory contains all the code files, test data and accessory files you will need. + +Feel free to explore the contents of this directory; the easiest way to do so is to use the file explorer on the left-hand side of the Gitpod workspace. +Alternatively, you can use the `tree` command. +Throughout the course, we use the output of `tree` to represent directory structure and contents in a readable form, sometimes with minor modifications for clarity. + +Here we generate a table of contents to the second level down: + +```bash +tree . -L 2 +``` + +If you run this inside `nf4-genomics`, you should see the following output: [TODO] + +```console title="Directory contents" +. +``` + +!!!note + + Don't worry if this seems like a lot; we'll go through the relevant pieces at each step of the course. + This is just meant to give you an overview. + +**Here's a summary of what you should know to get started:** + +[TODO] + +!!!tip + + If for whatever reason you move out of this directory, you can always run this command to return to it: + + ```bash + cd /workspace/gitpod/nf4-genomics + ``` + +Now, to begin the course, click on the arrow in the bottom right corner of this page. diff --git a/docs/hello_nextflow/04_hello_genomics.md b/docs/nf4-genomics/02_linear.md similarity index 98% rename from docs/hello_nextflow/04_hello_genomics.md rename to docs/nf4-genomics/02_linear.md index b1b3e522..fe495dfa 100644 --- a/docs/hello_nextflow/04_hello_genomics.md +++ b/docs/nf4-genomics/02_linear.md @@ -40,10 +40,10 @@ So to recap, we're going to develop a workflow that does the following: ### Dataset -- **A reference genome** consisting of a small region of the human chromosome 20 (from hg19/b37) and its accessory files (index and sequence dictionary). -- **Three whole genome sequencing samples** corresponding to a family trio (mother, father and son), which have been subset to a small slice of data on chromosome 20 to keep the file sizes small. - The sequencing data is in (Binary Alignment Map) format, i.e. genome sequencing reads that have already been mapped to the reference genome. -- **A list of genomic intervals**, i.e. coordinates on the genome where our samples have data suitable for calling variants, provided in BED format. +- **A reference genome** consisting of a small region of the human chromosome 20 (from hg19/b37) and its accessory files (index and sequence dictionary). +- **Three whole genome sequencing samples** corresponding to a family trio (mother, father and son), which have been subset to a small slice of data on chromosome 20 to keep the file sizes small. + The sequencing data is in (Binary Alignment Map) format, i.e. genome sequencing reads that have already been mapped to the reference genome. +- **A list of genomic intervals**, i.e. coordinates on the genome where our samples have data suitable for calling variants, provided in BED format. --- diff --git a/docs/hello_nextflow/05_hello_operators.md b/docs/nf4-genomics/03_collect.md similarity index 97% rename from docs/hello_nextflow/05_hello_operators.md rename to docs/nf4-genomics/03_collect.md index 946c6640..35e1e797 100644 --- a/docs/hello_nextflow/05_hello_operators.md +++ b/docs/nf4-genomics/03_collect.md @@ -39,10 +39,10 @@ So to recap, we're going to develop a workflow that does the following: ### Dataset -- **A reference genome** consisting of a small region of the human chromosome 20 (from hg19/b37) and its accessory files (index and sequence dictionary). -- **Three whole genome sequencing samples** corresponding to a family trio (mother, father and son), which have been subset to a small portion on chromosome 20 to keep the file sizes small. - The sequencing data is in [BAM](https://samtools.github.io/hts-specs/SAMv1.pdf) (Binary Alignment Map) format, _i.e._ genome sequencing reads that have already been mapped to the reference genome. -- **A list of genomic intervals**, _i.e._ coordinates on the genome where our samples have data suitable for calling variants, provided in BED format. +- **A reference genome** consisting of a small region of the human chromosome 20 (from hg19/b37) and its accessory files (index and sequence dictionary). +- **Three whole genome sequencing samples** corresponding to a family trio (mother, father and son), which have been subset to a small portion on chromosome 20 to keep the file sizes small. + The sequencing data is in [BAM](https://samtools.github.io/hts-specs/SAMv1.pdf) (Binary Alignment Map) format, _i.e._ genome sequencing reads that have already been mapped to the reference genome. +- **A list of genomic intervals**, _i.e._ coordinates on the genome where our samples have data suitable for calling variants, provided in BED format. --- @@ -257,8 +257,8 @@ It should look very familiar, but feel free to run it if you want to satisfy you We're going to start by making two changes: -- Add the `-ERC GVCF` parameter to the GATK HaplotypeCaller command; -- Update the output file path to use the corresponding `.g.vcf` extension, as per GATK convention. +- Add the `-ERC GVCF` parameter to the GATK HaplotypeCaller command; +- Update the output file path to use the corresponding `.g.vcf` extension, as per GATK convention. Make sure you add a backslash (`\`) at the end of the previous line when you add `-ERC GVCF`. diff --git a/docs/nf4-genomics/04_config.md b/docs/nf4-genomics/04_config.md new file mode 100644 index 00000000..3e4793b8 --- /dev/null +++ b/docs/nf4-genomics/04_config.md @@ -0,0 +1,85 @@ +# Part 3: Resource profiling and optimization + +[TODO] + +--- + +[TODO] + +### 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. You can also right click it in the file explorer on the left and click on `Show preview` in order to view it on Gitpod. + +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. + + + +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.4. Adjust resource allocations for a specific process + +We can specify resource allocations for a given process using the `withName` process selector. +The syntax looks like this when it's by itself in a process block: + +```groovy title="Syntax" +process { + withName: 'GATK_JOINTGENOTYPING' { + cpus = 4 + } +} +``` + +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 = 4 + } +} +``` + +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.5. 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. + + + +As you can see, this approach is useful when your processes have different resource requirements. It empowers you to 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. diff --git a/docs/hello_nextflow/08_hello_nf-test.md b/docs/nf4-genomics/05_testing.md similarity index 96% rename from docs/hello_nextflow/08_hello_nf-test.md rename to docs/nf4-genomics/05_testing.md index 1665d181..096a83fa 100644 --- a/docs/hello_nextflow/08_hello_nf-test.md +++ b/docs/nf4-genomics/05_testing.md @@ -1,4 +1,8 @@ -# Part 7: Hello nf-test +# Part N: Hello nf-test + +!!!note + + This training module is under redevelopment. Being able to systematically test that every part of your workflow is doing what it's supposed to do is critical for reproducibility and long-term maintenance. And it's also helpful during the development process! @@ -179,9 +183,9 @@ In plain English, the logic of the test reads as follows: The expected results are formulated as `assert` statements. -- `assert process.success` states that we expect the process to run successfully and complete without any failures. -- `snapshot(process.out).match()` states that we expect the result of the run to be identical to the result obtained in a previous run (if applicable). - We discuss this in more detail later. +- `assert process.success` states that we expect the process to run successfully and complete without any failures. +- `snapshot(process.out).match()` states that we expect the result of the run to be identical to the result obtained in a previous run (if applicable). + We discuss this in more detail later. For most real-world modules (which usually require some kind of input), this is not yet a functional test. We need to add the inputs that will be fed to the process, and any parameters if applicable. @@ -293,9 +297,9 @@ params { Finally, it's time to run our test! Let's break down the syntax. -- The basic command is `nf-test test`. -- To that, we add `--profile docker_on` to specify that we want Nextflow to run the test with Docker enabled. -- Then the test file that we want to run. +- The basic command is `nf-test test`. +- To that, we add `--profile docker_on` to specify that we want Nextflow to run the test with Docker enabled. +- Then the test file that we want to run. !!!note @@ -345,8 +349,8 @@ If we re-run the test, the program will check that the new output matches the ou If, in the course of future development, something in the code changes that causes the output to be different, the test will fail and we will have to determine whether the change is expected or not. -- If it turns out that something in the code broke, we will have to fix it, with the expectation that the fixed code will pass the test. -- If it is an expected change (e.g., the tool has been improved and the results are better) then we will need to update the snapshot to accept the new output as the reference to match, using the parameter `--update-snapshot` when we run the test command. +- If it turns out that something in the code broke, we will have to fix it, with the expectation that the fixed code will pass the test. +- If it is an expected change (e.g., the tool has been improved and the results are better) then we will need to update the snapshot to accept the new output as the reference to match, using the parameter `--update-snapshot` when we run the test command. ### 1.7. Add more tests to `SAMTOOLS_INDEX` @@ -460,8 +464,8 @@ Now that we know how to handle the simplest case, we're going to kick things up As the second step in our pipeline, its input depends on the output of another process. We can deal with this in two ways: -- Manually generate some static test data that is suitable as intermediate input to the process; -- Use a special [setup method](https://www.nf-test.com/docs/testcases/setup/) to handle it dynamically for us. +- Manually generate some static test data that is suitable as intermediate input to the process; +- Use a special [setup method](https://www.nf-test.com/docs/testcases/setup/) to handle it dynamically for us. **Spoiler:** We're going to use the setup method. diff --git a/docs/hello_nextflow/img/gatk-pipeline.png b/docs/nf4-genomics/img/gatk-pipeline.png similarity index 100% rename from docs/hello_nextflow/img/gatk-pipeline.png rename to docs/nf4-genomics/img/gatk-pipeline.png diff --git a/docs/hello_nextflow/img/haplotype-caller.excalidraw.svg b/docs/nf4-genomics/img/haplotype-caller.excalidraw.svg similarity index 100% rename from docs/hello_nextflow/img/haplotype-caller.excalidraw.svg rename to docs/nf4-genomics/img/haplotype-caller.excalidraw.svg diff --git a/docs/hello_nextflow/img/hello-gatk-1.svg b/docs/nf4-genomics/img/hello-gatk-1.svg similarity index 100% rename from docs/hello_nextflow/img/hello-gatk-1.svg rename to docs/nf4-genomics/img/hello-gatk-1.svg diff --git a/docs/hello_nextflow/img/hello-gatk-2.svg b/docs/nf4-genomics/img/hello-gatk-2.svg similarity index 100% rename from docs/hello_nextflow/img/hello-gatk-2.svg rename to docs/nf4-genomics/img/hello-gatk-2.svg diff --git a/docs/hello_nextflow/img/joint-calling.png b/docs/nf4-genomics/img/joint-calling.png similarity index 100% rename from docs/hello_nextflow/img/joint-calling.png rename to docs/nf4-genomics/img/joint-calling.png diff --git a/docs/nf4-genomics/img/memory-after.png b/docs/nf4-genomics/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/nf4-genomics/img/memory-before.png b/docs/nf4-genomics/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/variants.png b/docs/nf4-genomics/img/variants.png similarity index 100% rename from docs/hello_nextflow/img/variants.png rename to docs/nf4-genomics/img/variants.png diff --git a/docs/nf4-genomics/index.md b/docs/nf4-genomics/index.md new file mode 100644 index 00000000..e00b77fa --- /dev/null +++ b/docs/nf4-genomics/index.md @@ -0,0 +1,31 @@ +--- +title: Nextflow for Genomics +hide: + - toc +--- + +# Nextflow for Genomics + +[TODO]] + +Let's get started! + +[![Open in Gitpod](https://img.shields.io/badge/Gitpod-%20Open%20in%20Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/nextflow-io/training) + +## Learning objectives + +In this workshop, you will learn [TODO]. + +By the end of this workshop you will be able to: + +[TODO] + +## Audience & prerequisites + +[TODO] + +**Prerequisites** + +- A GitHub account +- Experience with command line + [TODO] diff --git a/docs/run_nextflow/01_orientation.md b/docs/run_nextflow/01_orientation.md new file mode 100644 index 00000000..4353bdd7 --- /dev/null +++ b/docs/run_nextflow/01_orientation.md @@ -0,0 +1,46 @@ +# Orientation + +The Gitpod environment contains all the software, code and data necessary to work through this training course, so you don't need to install anything yourself. +However, you do need a (free) account to log in, and you should take a few minutes to familiarize yourself with the interface. + +If you have not yet done so, please follow [this link](../../envsetup/) before going any further. + +## Materials provided + +Throughout this training course, we'll be working in the `run-nextflow/` directory. +This directory contains all the code files, test data and accessory files you will need. + +Feel free to explore the contents of this directory; the easiest way to do so is to use the file explorer on the left-hand side of the Gitpod workspace. +Alternatively, you can use the `tree` command. +Throughout the course, we use the output of `tree` to represent directory structure and contents in a readable form, sometimes with minor modifications for clarity. + +Here we generate a table of contents to the second level down: + +```bash +tree . -L 2 +``` + +If you run this inside `run-nextflow`, you should see the following output: [TODO] + +```console title="Directory contents" +. +``` + +!!!note + + Don't worry if this seems like a lot; we'll go through the relevant pieces at each step of the course. + This is just meant to give you an overview. + +**Here's a summary of what you should know to get started:** + +[TODO] + +!!!tip + + If for whatever reason you move out of this directory, you can always run this command to return to it: + + ```bash + cd /workspace/gitpod/run-nextflow + ``` + +Now, to begin the course, click on the arrow in the bottom right corner of this page. diff --git a/docs/run_nextflow/02_run_basics.md b/docs/run_nextflow/02_run_basics.md new file mode 100644 index 00000000..f926e96f --- /dev/null +++ b/docs/run_nextflow/02_run_basics.md @@ -0,0 +1,10 @@ +# Part 1: Run Basics + +[TODO] + +Should cover: + +- basic project structure (main.nf, modules, nextflow.config) +- run from CLI (re-use from Hello-World) +- basic config elements (refer to hello-config) including profiles +- running resource profiling and adapting the config diff --git a/docs/hello_nextflow/09_hello_nf-core.md b/docs/run_nextflow/03_run_nf-core.md similarity index 97% rename from docs/hello_nextflow/09_hello_nf-core.md rename to docs/run_nextflow/03_run_nf-core.md index 0f8b0186..3d26c019 100644 --- a/docs/hello_nextflow/09_hello_nf-core.md +++ b/docs/run_nextflow/03_run_nf-core.md @@ -1,4 +1,4 @@ -# Part 8: Hello nf-core +# Part 3: Run nf-core nf-core is a community effort to develop and maintain a curated set of analysis pipelines built using Nextflow. @@ -18,12 +18,12 @@ The nf-core collection currently offers [over 100 pipelines](https://nf-co.re/pi Each released pipeline has a dedicated page that includes 6 documentation sections: -- **Introduction:** An introduction and overview of the pipeline -- **Usage:** Descriptions of how to execute the pipeline -- **Parameters:** Grouped pipeline parameters with descriptions -- **Output:** Descriptions and examples of the expected output files -- **Results:** Example output files generated from the full test dataset -- **Releases & Statistics:** Pipeline version history and statistics +- **Introduction:** An introduction and overview of the pipeline +- **Usage:** Descriptions of how to execute the pipeline +- **Parameters:** Grouped pipeline parameters with descriptions +- **Output:** Descriptions and examples of the expected output files +- **Results:** Example output files generated from the full test dataset +- **Releases & Statistics:** Pipeline version history and statistics You should read the pipeline documentation carefully to understand what a given pipeline does and how it can be configured before attempting to run it. @@ -384,8 +384,8 @@ The nf-core pipeline template has a `main.nf` script that calls `myfirstpipeline Instead of having one large monolithic pipeline script, it's broken up into smaller script components, namely, modules and subworkflows: -- **Modules:** Wrappers around a single process -- **Subworkflows:** Two or more modules that are packaged together as a mini workflow +- **Modules:** Wrappers around a single process +- **Subworkflows:** Two or more modules that are packaged together as a mini workflow
--8<-- "docs/hello_nextflow/img/nested.excalidraw.svg" @@ -442,10 +442,10 @@ In the template, the `nextflow.config` file is a central configuration file and There are several configuration files that are stored in the `conf` folder and are added to the configuration by default or optionally as profiles: -- `base.config`: A 'blank slate' config file, appropriate for general use on most high-performance computing environments. This defines broad bins of resource usage, for example, which are convenient to apply to modules. -- `modules.config`: Additional module directives and arguments. -- `test.config`: A profile to run the pipeline with minimal test data. -- `test_full.config`: A profile to run the pipeline with a full-sized test dataset. +- `base.config`: A 'blank slate' config file, appropriate for general use on most high-performance computing environments. This defines broad bins of resource usage, for example, which are convenient to apply to modules. +- `modules.config`: Additional module directives and arguments. +- `test.config`: A profile to run the pipeline with minimal test data. +- `test_full.config`: A profile to run the pipeline with a full-sized test dataset. #### `nextflow_schema.json` @@ -642,8 +642,8 @@ Using this module information you can work out what inputs are required for the 1. `tuple val(meta), path(reads)` - - A tuple with a meta _map_ and a list of FASTQ _files_ - - The channel `ch_samplesheet` used by the `FASTQC` process can be used as the reads input. + - A tuple with a meta _map_ and a list of FASTQ _files_ + - The channel `ch_samplesheet` used by the `FASTQC` process can be used as the reads input. Only one input channel is required, and it already exists, so it can be added to your `firstpipeline.nf` file without any additional channel creation or modifications. @@ -1009,9 +1009,9 @@ In the next step we will take a look how we can add a new key to the `meta` map nf-core pipelines typically use samplesheets as inputs to the pipelines. This allows us to: -- validate each entry and print specific error messages. -- attach information to each input file. -- track which datasets are processed. +- validate each entry and print specific error messages. +- attach information to each input file. +- track which datasets are processed. Samplesheets are comma-separated text files with a header row specifying the column names, followed by one entry per row. For example, the samplesheet that we have been using during this teaching module looks like this: diff --git a/docs/hello_nextflow/10_hello_seqera.md b/docs/run_nextflow/04_run_seqera.md similarity index 100% rename from docs/hello_nextflow/10_hello_seqera.md rename to docs/run_nextflow/04_run_seqera.md diff --git a/docs/run_nextflow/img/cpu-after.png b/docs/run_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/run_nextflow/img/memory-after.png b/docs/run_nextflow/img/memory-after.png new file mode 100644 index 0000000000000000000000000000000000000000..d61b4a7c5213f1e0c736e270d636da8c78974d93 GIT binary patch literal 26872 zcmeFZcRbbq`#)YHA|b0tl*%e9tH_9=VP@}S&m(*5kTzNf8Ie7XJ&sL9B*d}z<`}2! z{kxu;@6Y%5``x~`@1Nh#=O3@v?R3s_JjQk1ulxOeJsvA5$WoFsk?-2Ii}L!lE4Oy- zA}ZOnYj+jdUgQ&ZCKUWB4N z7o6Mky4wW>36oKiVNtWmlWTnr7mB|+YOM53O(xowI;DPTOV=r2qTEePExBvw5Bdl_ zr}RKWbCgNJ?~is9zukon-Lw18m)H_X$Vx8umQEibB4fL^Yv&I-)ad60kZ=9Z7k-ZB zfAeub3y{F_GSkVo&a%X%#220D(^o||L`pgmCanxhlP%Tyc%)}_y_Ld)&c&0^5LTAinzckxkELV9D z;{%m}jN(~)X6NRsjQ$RLI=P8&pm(7Q=o}A59MVUN&K6diet9z}lzIKtDdz^kcFiLD z(H`BoQ6R5g`E56O6*ReKjajG4pOm%F>Q>pN@;dT-d8J-yq|D6w6_ zWlcXG>cWj~XJ&O9dExwlMz&)Lmpb#5uPl>FVx#G>V%YhQFwG{N`%8Q_zCWahx9Q5g zyE~;&n;X5HRdY0FAML3^wWYcK{>ZZ*3JiQUaaiY>DescyK96E*7JpbM!i=uSmG2kh z*YP1bwx7vK(ZW1m(oWPM(Wb9*T7QgKAUl#RBOxH7$w~r4^&EA23e5A9%>>&6!ofj7p=W_b2e` zVKwLaN^_W8`EdsR`%17cGv~jGcCUONF6cZGNqlK#z%PGusk@k#muSx53UQwtOVMdY z^p}0quKZ^8FCBCx*OnUM6K3sS{c#FDr$? zT>5sCujqwJz-`NQfvMg^Mb_e}lvL}!61Um-wW6*tv#3d;``X;=d3T3pTw>qZtZXj# z+rS=hGTATvVE^ZW_s7D%mv3*P7#&NqSO;;=>6%$peXhflEh4ZmTtx9{Il6jtu~(n= zn3u^&s0C76lQ%LQZk<#68v8;u%yWBlSv~8{)ozDIF+GXt^6jmB>(28U-|W6#9M^ox zaOTcaWy%bhN?f`2vV!Q$$dck$`}Xtw?)Wn;WNB;aan&NtKWelMi7+zGc@5+RPE)O) zbNHAhRWAl8D5+8$*~yd8^*dwZ-lP zTld+XqS^V}+m%GAs>v@m`?oivMaNp_$|iF-Bv@2LguK^hgf&uPjnZSpMF#He$zSzk zaK5j>u)3I|{`^U({_@Bx#jfEXiCMXYwt+% zHV0uME(l9V{6->3BI3V?geBnHQHL+*oI6cI!)%kd4az*rm_trKo21YYHsX3ck)0DR z)l`Arqt~RYq-MSbzfE(SAG7tcB)?8>w$}T-h7~0`o$1#QCDu)%v{}5=Wu<4Q)UqBf zXk{8|;O!P=qq<8y`QDO>yx?c@`e>i6BA#ZY+bV}tIm@=U*7bHNQ?~{PuEn;w^Qa~b z*w%5YBs>c^%>PMG%IEt>#@-*=1-3I=8VaPWo_06Z?=kakJumkNQx`{NQ<5DC$8d^c9m_d;nS7lWXASj>kOELZLOodmcsa- zZ-019+iOa9iqHp>z-vC0UF7>7RW_z|iX6*CvV;~6Ho9EjY&HmM(#24Iou{B(-=iTi zX`)>1R_w6i;MZs}uIWivwRwh=yteBt-{NofK7K6|pNA2&Y_-Fv$fx(^7=J!E9)mSm zOjHo3m||y%`<|YO*5G))y6BLizlC~IRjzPwVHNi{AY8$etfbqKUP6-1WH%A2PPK#@ zT|$&&+F*Z7;Up=O);G?0nPAKIj2W2>)$&w6-2fqr_lg)bYPr^->NjOP`AtWr)=?`Z7ZQn*~rSvR+=KHOqQ!S2UU#9A^{wmw>Y%n@ZS z{qTTOji05#=%7y1api$vKLyQJpUZCqKVZIr*dr!*^;2y;;>AlmBD=D*h zzu?cPZ&#@o_r9_sqAn|Dl#^h2U!8;0`@!x2NBnz9c?~MM9-L=K%i~amiq?g&TM`p4 z-VAgk=Kh4ZAaN0O-V^*R{oz`}z7)KVW~8~jUQf(xc2wvnNhA)%)5>17pwrnLKus;o zoh1CAyf5iaMBKNq;p%dq#4%Z&y$Jgytv(l1wwAK)t5Ivyo)O9Hq+8;eMe&v?@7tpQ zDW%x4Js6@inG{DZy?3(m24$u0i*>X~zU*ad{;d0!3@d{!d^AXCOL|jx_Q^rl#iIcS zdCb>e2&U`oR$_N1-y#=2uXLf^+=1ZaT~14)&q_zp#pf^S@8+*>u=m~Qn(~|~Ow0p8 zk@V&^zVeN40leID6ULW?xmT%~_N!_?BntKoUQ;d;pC+w-OSORwyI$ij6SzGey|<6og1#Br-Bo+_BTKjntroOZ-fsfB;PsrmA~Sfa#_lX3 z!TvNcyiKY&dl?tol(BR?-`3Q_?fomX>sU zZiuXeWYK|Jf6JKH+eg@@Yh){GV&oxBpQ<=z$zJpaB4Yi({lwp>33*uU`(+;l$roYW z6}?cvajn&VU>a0OYI>yQjn)V~Pk&mV0D|oBo)}AA*}x-{GNl3sMNR*q$%=63Aog`QqIDXa)edQ-_s3E_e81uejj<4GCy^7!?@7JoBn{=)!y%=Ux zNpqy;%I)!jVMrdB;_GLFEAahsFL(Qs>2Zg4J9pcRdyh&dl|MdHh#~J}deQm_8=gl0 zMolrD#+roH=IJ)d{}74KV!)a@LyF*HUfXwcyC|{j#o-`ElB)sN@FUW3@m6hVckA05 z1&^m|55u@FMg(e*$ObU1(I?^AayX7>gVW6<)+qP|KtjO*weh9xeav;FOyZ7-8CV`aHdxww2 zFPhMi>v6w&gksWC>rE^>>vUbf^|3Z)F?3XAUkQ_z`n+HYxfpgjr8!|G;cQ$dm8VK? z##DshkCX)Jc%|47PC^3Kpv;l|!uceVwdQtJBGkrd%J1th`*V$9SV(V@NaIjeS8l~^ zU8ab1<=lloajjA{?z715TW&Wuu=?JsCN0@?3xOh2N%tQnSh~>%s#2wHwYjU|Q+DaL zR-`g%1q+&UUz&NPkka~4ys!pFEr`UR8jqS@5Pd(a!v49^qI75vrZ29aG;wWyZkgX| z#r`;pPD;1DfV?KR7adi)k!lS#gtcGwrTw?-9G%A=9?5Q?jQqTIk)98ipL(B5vuvcj zA=h|vD|l>^>1jc2P+lKx(^KkF|tc&jkrMUXHM_d3lieJEAMF( zaFpv_iVLHWQ{EQDie=nZWNiggA0+D=oCk2%1KX0BF{(FWUW~6ao6W^3y9UdfFZmm* z#3U2T7-~5+dvA5eU?dbAv*Vaayi{1S6_~#5E7^K4ZKzR`E*0)`=!WNj{G#SH4#L{a zjquCT`jrWXx#(&)Ywvoa3(k6tw7)xl07s4|zGA{#ITj@7RVEnA+J6w)o!E2An5TU0 z%|ABf-JTH`T3D?ZXs<((IZ+%L$!ohCM{9Yd)#svBt45sUR=HqJvP}4pEOx{BM8suD zLuLN6<|DE#92O^vOzJ~yUn{XERn~u~^!gUBthaQakM8{oE~CENjP8}@-#w9nmU+4P*spIG z<#-duA|k<&M2fxHTdS*Pr6OV~>$$=}aJ;RQ3fH4RCm)k5dF|M>ceMMr-xqEWp$ykK zUGKb^u)N2Ycun9SUSiMp&9_fNr9-P-l_=xyE(x;} zt^H_u^jwD3>sqsJDz-J_c{0rfy(;-7&Tq!B`eScb;6wzzCEqMeDQ@ju!=Afgs1&;4 z6!*p_ddfykA!bcN{#ZhNpJinQ9)Fs?O4T5R<}`_pjmKHS)G4u)5a<*6@( zaJ)SCCQls?n6mt!nWL6;pi`oup48IkqIP$NlO?m@ov=FZRZ@5J51Mf?;kyS@F=h7X zYvnwTEAX;oBTN!ZTzru+<~Po}rEF<>QA@C2A)NcPMSQtZ_9WeuXyiR}auI(^f5l*F z^VbH8#o<>kvsYVA66>?>7eqOD7CxaukgT@82wG!qS(wXG{eYIak5jM|$D1{|CvIW%@a`@bl$#-jV-lB zzWHzc9BM7Yy7+J(*G}<>B}r9kZcB7x>2w8&W>I9VR--AMCmn}ks7E%P-XKjhg^ss`K@u`~=J<9Cro4f&Nf+`QY+6Kr zcCH?G{59iOb>3V@IMeViT~1l6%rHvWsBU-`Z*6ud1hiV5=$3$BU{ZfAkm(H7-qVMz zUaNRbjVH=Gg?-$_ZUp)d>4pZ%v(!|sK2*{3zU-yil$GIxpAYWGs?3b5mb8vf8L)Ie zw%k(bMd?4>MYK)JMz9xPqdta)t$Y8_6DN(${YM^~(sH)ZXJsCzXp+5}FdRTO@@yAc z*bMuU<#Nnzh-sBF$t6 zM7ep0&@nT0c3B*5jU#vTOWV3!)#+e?PH4BfwEmP^h;Qe}r=Ls-6@{)ale?FnMg`X9!KTMbYLyullxmOW!iVY?E=M%C5_*u_p zb=$FDY$_4idoIZVdD`a%?0-JFuLIk9cFPd|mzVuU$3{rlSKCeVi@e=UTy;irfYN0< z)9LS^{Le7`w;LwO6GU@Bs38?)4vTZgvGhL8V&`SP;Vm)iioA|J|mo0dK94TQn!UMn886l1UT zr99JyaFc>WP3GS_;GX0QVtWySZD;n!D7Uf0R-M`L%wcK-wHU9d5tP)QZBiR0sX*H2 z`U#h+(Vd(aWeMeVKGq4ZJwMg}T%*P6UJd^-pp=X5=_D$!6x51)t!cJr=p7zy=(}4N z{(IM;k5gPZPTkb2gxj?8s+%yx-)Qh#b@ym2?AElvHtSm0-vYaF>~H&oh%|Qv(q<@|9U7y?-^vMovbMK zT(#H9vkaaAmOCM$5r#{Q`J(;%Ua0l*hXX~sSba7ItJ0-rfLXQ-UrDMB+ z%on~U55Z3C(V58Fy?(n#oTiRExvsS7TnJw(#pW6Kb>$!MIK{o z7xy!?Dp``0`P9g5lXo*6F-q_eAinVe)|7rfRZ0$SKgD;&>n*hz3EWVv%=GLz=_`Ls z*gHy3tTy&WFn3lb(+y>boaCQ#GeYm0B;QPg!Z4DR9Jv{m1xeF%Ysxtn5hqV)+L;V zK@oMb54Le^wsEol`4C8u|NNXsm8R6jN` z7AnQj1dA&`l2_RDEdk%z)oB)OgDLrOBdUM$Xr$OuN45Ln6#e?@D@F0id@X#lindpa z)grNmp#MC~?^oW!0U{Tl#%G85dmIzGFe?eEUxj<@{JLdk$}`Tg0uw59yJAq_24+Q^QdWvgU29hyjy>or8997Wgo;umbQ7#ew z;zoD;Qm;#YQTy7h#+b`Zz1x?{H`_Or$#InlW-OP0g=FZFk*Bi*!nJd2ea_%?G!qdj z>ufgl&-ivDOfqB-Cc0gp|D@A&N3&R|D*M}hpY2kvFRM#1P*_P=Fj^kK!|PGEai;oa zhDSN4EL)kLWc^AfE*M%SH7(rlX~byYnMF}j!|LN%rEs0WmHr2vtCw9{gdl&5&-S{3 zFnw~B_StERNV6!ngkrvlgb3Sgqad+15^4WogtU#QNL9W?qS~wS{%iq0qZmtSG%0?J zWSb|W@VGPTg;dfJIyEIIt}!uXFXA*%Mr_NsZ{}~i2kggSr&2C?WyG+0HY!SN zjvQrJ`oxUtfHX1?lbh5qo*|<*olW?4L=qJ{HU<^!cP;tRt6v1ZVR@k*x8PJI zU1pl@4q4<5d+&Gr!Wdvg(W2Yb zGJ&$Y(oC9r1+CE%PzL;wt*S;`(yAb-LYA3qaCFX2Jk%K_a7717Z0BTtT%0Q6&kqZM%hl=w@q6N=l{ zvhVxm%c@|wOV;xn#n%h%(#h~PI1OxBg^&QQJ`khcC} zHg<1ci-KrFfO%?i;QGBi2WpKHHd_}m!_O~$WHfM$+nf|4LScPNSa%a2=c^z?6&~0v z%<#F>V72RvY%L=Kf$B5ka7xnLjapGfe_1RiAv+60#ipW=W z%HX!Tu+Sv^YOg--a|Q@W0X?6D&Rz6)7^Sj;ewd~~7kkX)*p3XYSYdO#h@_|v@hpxTBFO#D4 z0=f>&Jd{XQ@?nr=ConubUjGvg$K>uaK1X+u z9QvBPu&{;dc}>xX(**8aQwIxWE~yFGRqf+AG4nzd_&n`2Z53RuWoLM$r0|(5Bf&e#5mBDI z0>*EgB&2w2#(iblt)_B8<50^)+KqiL{Yy89=1Sb=b(12`o7{*h+G6C@o$xL7&WKoT z{XtQZtqRq>>{-GZ^YYNLaCvwaDAY~PAo#fq(exW9M||>iYB#D0bQ+~%n&h3Wz@rv) z%DqdIr!PA-^hxweM^!{*u+9CfXJQ1%jV}^X$`)VVq>H=r!YO8t02YwDr37+_qhP!z6qJgyZ{ms zeO%ODv#U*<$(G83BB@w45+A*?_69R1L!2DFb^_`ni|ea~Z-i!9)}n|#f)xH!4uYf@ znT)&u^0)3H>82=xykM<8?pi@r@eNhq9BuOq{b2DE-P@|B7EM^X+|k6Y!4=Yn^rOQv z181Hv&0XF>n=!c*@DfjME+&!}q_`}G)(XZZM^vk_r!cn;nVBfL;^gJYvEqcii6>hc zhpH2!LQ-xgFHe|euBa;w;P#U<+3f#X7h~cH+8eJNPm_g0*M^L$pP|Ma?pl1pO_i{F zeW{0;TQ_=&nZ%aZyVu34?E6}s%2gwPO~YE)1cg^k*S=scNPgFL{mIz1ww{`l zV@nP+9!9-nN!k;}>(SOn^~3fi+RqD5Ou9BbzJ(3=&ly;$=pMj4q@e34^BKp4(pA4| z6JSmEsna|a-4}m;-zJ3+iHHHa?tr)%frQ-gJfY>eiJcl3pLSgPj~ff`^IkI^{Kk0D zRl4h(HN#I_f0&+tF39BJdQhR$p~kSd$bH=vlFxjJp3{eLc{IZrsBv@GB1*6B4Bh}A zS{TI{{^7eDN`$9N%9W9*lb(%W+8&Yjx4bphf*RPwPW_+KSr0DaT&nd?B@qHexYk~? ze`?wPybv`xdfCUVe~d5EV8Z5N>?}>&d;M2ZTg4C;y~XsODV~eK8r$ zpl9+61N+3@NKrlFR7sFScdPaAY37&)bZ1y+h)O&i>X6ue9yFw>ekwG}q@F>i*x5$r zsORN@2IIyo>z|uhihE!W>Yv^3|l-Ce5C?NP^-*a0e}W|LvqkGXv%Tq@tC zevYBNEL%5V3^|gpKo(K$ND-%=I4AHJc&M2Fm;s>ZbUEF+GkXbMtC%fKGKDRz4crgQ zTdx#EK5rIOC0Ch);YIKH8jQ*G&{IBV!$t7vD0Uc9F!JW!r4vNdKi!$5SD|9AqEZ2Bf00Ld_!1sa zt~2_A1cm>{)C??lP(WK~9ad1v8>~rMAD__AWY_cN=(+UbkkS)TXE_dO=-$0*z24`u z?KQp$dEiq%3LGT);G^lFoph}Fj+i-Usb+@j`O2*UF@@qqBOh^o=mRfC!Yisx-b1d7 zg+qhY54-Qyu#AVWvbs9GJZsx?f%%eaCW}+6GE__$W!9Any(7^gM5w!*+57)sKi?F?QM019J7Z)B)J zfu4FzG#4m3Yd%*pAIOYTWBY<3*@Ka}&j&S+u8i7A2%j9FwP@OJ&GgC5-)6H`LH<2#$Y`N2nm07@CDGGFl)I2%=K{>#4r<}Be ze#Yfv^tGk~I8JlGan?g09?$;3hWo~rPh)ESzL_7aEj zuTGR=G@w7v1)+2**1n?M8bP9!I9<)He@ zvg{I~Pg0bS7nAEF_?azxV*&88q0!DKn{}_NY6Sv@fI~FCd zO>~2R{bKx7`jwNE$(kb?-(qO=ZBW@xscq`QQCyE|goC}3N~(f#IVeipqh-t_fXcYU z{*ka3Om9YF+fs8VMWL?ZVmp;U(v5)JD< z_`kj&sXneM<&vZcWo285n*-w)A={n_UK|gbT9Q&_>6OqL32+o%Li3a}=?5H1u~lP# zPA=#Dz<V%A%jNMqMOByH0q1cFJ} zQGx8Vm$d$RoAZJtB3Vs$2O?ww1jFSA&Wy0qp)Jk5AF?=KTTx({P6^;jieJO}hE&h} z++Lg(Xlqja06I(4`}~cUT6*mg&SEWEPAzZKy9(aCSC;BGN>;wLmRg*a5w>fpecNg( z*Ov&RA19gIJUpc!a8UfOQ)7La3YS$Faf9Z-Nw|HEQEe#)RI_b zlrsEoY)pmDbAPIm&!!dx_L9|fow(6DA(6_a0JE-8!|De`GxH{Uz>%mOTBnd}8}Mn} z;$2P*PGL8`v)?}r2FG6Z?uBgHtHp1wa%8_(irm!gM)yqx;1FlRub z;3a|gxZth6*I%PIEj|Xn2W6*ye)IH&wUllBBKvqQ!lc-is00kPh#Kx`ikxKkdyvZR zO~^{kGY{hMf&n2_MPre;jqhF7xliy?9nvS2|p-pc2T6z zacl+bAr~cllBG!R@%kj?pHMD+noyslfr%r!@^szE7PD^gShR}$B5DN;u z(U8382dA0WRa>2so?VIC3L`X5Rxnd#9B6;*o^pK^P)Kj@Q}0-lNS4WDUM6j-wqj0! z)KeUqbFus~ksr_1>9k6RFYn;T*SYtoO8k2R!3^WCXQpg`xkc9Sb|9h(ld(1BBWRz- zj4^MfespC(Ej=*mY%Kr9NWr9hnfaOIL+%?Z-?O6HM)!!BTn#GxS zq~1<(KbnV7z4B`3ou*VZqz|U$H23ZA3c5wrQN4oOb)oq*)b*kuD99q`F} zHH4!kv;4#ND6yBK$~W_iFUn)oKKog^gDHB})VYc7s5{daU~YRCIKn%$gGzrftcYH9 zUxzJm4`vFbmV-|`q1-zIC~9^q8Df;I?MsW`GpfnAKH|nKw=Om8Nqlj;!Jz&9b=u|i zchV2B9LeS)w76C76D_~#dXTjEp0}Xe=TpC`n^1g?N=WFhX_w_1*_+7Gk}VMY*f%RW z{n$otJ;U)oLK)Ee-x_|V4}`65hT=n}V6M~QC-#Bvgo98VTyx|XeY`Uz@aKvKNNc@i zW{tmvH1stPBiWl9rceCVHK>vD#Bn`J?2l@9{FvlGz!l+~SHEv1=?L{o^Nh#Rk>3*G zqx+!i9qj$0@aN(F=V5+M?Em4&0L|_KeF6FIi41 zK;brTinv#&A+`i1>q9Z#mT#l8+z*cV+>&}iWBfVXHAQwync+Uq*{%0m3 z>j^?#$Qi5Ay5R1;_5&4Yb&S3kppNHfG&3upL^6c}G7BD=eqW^UKLxQOY#G$0VZd!^ zP#Flh{V-;{7a@$Y1@5F?xDe6P;5Va0wn*7?e0^ckNUzx0%5Y0s(@{sD7f*oeyM4m9{w199K&yq4~XlCD}xY zUhFGD`ZGYF3$t|9$u&1jnTtGY=&Od&@5POM1;28z&@*OX-k=R|g{K*mdkaDLKu2TE zv%^M!4|BIR*So>Bp3|a|MuJ?GEt?4Ib031?RYoL6bNSU#2VVMdjqw((AW8RAUM#2L zq_2KrOi%pH&`azkSakYjzrAe`{fJP_L1KM7JN9`j?5eAr`VS-zqTf=LAi_`%_cV}) zLiQuInp#pN4`nSaJPzY5UQ7;U@Sg-WNTwyF+#*CB@fl# z7ktS)C7Ya{yW{yWY3r?x)r9WgTM_#m!0t&dksN1n&1r04`W@wV z6K8{6pdtSP{;xTqHU$PZwI^-=-zCru;nMnPj`;8RxeJ{J&WoJ7hPt;EATurUF?M|q z9k0^Qr209aBe`&i#A4z1qRV5HrYL>ZZvi|brUBY&wZa7ZUl*y(hwpR`rSXZfmxwE| zN(kf(JtLU5g~tE%J1Fgkd)|>Wra4BdRP;gG<_oBGZFv9ZHb)|UYGJ#GI>GB0+n;a`&LAauaQe!Zijf_NjyKGy$=HxJ-`Oq*}J^ruX-=lT_9@(g`~qe-Mp zD2tjn8*2UajahfTcmupsI#Pspx;DHGQPejE1caV+vVE%eGwN(|a&=hYt->%DUY8MjhyVo9E}V=OLE`&EKjeQLzBzs}`t-?~t-MKBp*` zWpR2P%x6%h${rdXFrJV{aHbb58JuCx-dT1|d<-P~-A) zhfz=-LhnGE)-;;*XeLl$J*VWujX|zBC#Ig6#?OF0JRtNpx$ z`SR1}XF%YXkPxzF+qv)xi4?8t_}54)gf~GdMRjlmFxorKYuk-I0FFX?dA2wGW+-nP zM0^51B>#+@YIS#Eu-2yZm$Gn+rD&4v?zo|?)z~o8n+H!zv`92Ac*hre@+n-GwpbU) zD&1KS#}1Oo50nCDX9MgG@5E8Nirv>A%LE;@kv($vekwkmK1VW^R8cjEGose&i8Ri1umH_Z=2Ht}#k zU8$P6Ox*D4_?rW&Rs?N~OBJ8u)ARRo8b-@3H$Z71eDFW#L4Lpsm>oH%lJd=^2wa+$Lj*^9uRA_n9p>T|scwqU8@TrD z|FTTi+jLMxr1B@M#v@&#c-&%4lwe0*?m5mIUZHd4Lf_9ISg}nE)4|`#75>#4{3Ysf zG6DBfwSXv%nrwV&b29}~KT>Aw*jdSuzUt=6kCkH3kJ$+>2NO>6Jb%Ktv%uJ%%fSj; z1_wYMU)f5P_vWI;dUyYp>Gn#Egf-NnoVTc^&V7WEI|wlwWGx%~$@%X0zeA>;S?>37 zaoE-eV#7A!(Mmovi!h6O7EbyI*7X#i48UQo^&+3E6?H>^3Y8>$L5f*+AVA41Cv|74 zKc0cfDF${IvIBmn^$P4YeVaN^#(7kQ`%Zu^q&4ByUONjdisne`o1&@5WPGS@h1#yR zHLy@vZ>}#Fj5S1b-`__&4QyrJV_FW|oGA1jQf=sCux^UEoDXy^vyk;0`LOdQ5hBA< zsM{TVG0j&bVh`op@Juh2xNREDUGO$H>_7aqowafL*m;Yv44s0nB90Tc5!(!ilbs~furj`#ae%I=HgF68 ztkI5QOTC@OQN}f3NvD~v7%kogiK*wvsQk?fCs69kA zlj6}3ogddSwDamjoTiLlos!Q+TJ5y7MrmLu&*KPFSs#$TJftnLVI8j%%BzO}6KBAC zHQxE=&BvE>pk?oqcfzu2nr1VYbdBFIoJY^~=idl&vS%;B7jFsrDk3TIM$WDry5O-s zqwZ=pnEmxGD@>RaX3BUQ)ZgO6^mMltbD%O3Qg>IP69_n%y8p6M1$nY1cqpET0io?Y zSGxR(Az9lX_#z_LXGL2u)7|&`Pf(*Qa-w>UYr934N218jrY}C(W_HW^LHnm6$kFI8 z;8f&CePOcKVG{r$@J;dq4U@f=SS|U*97ynY-?>0j71u3A>z=~qhLoMoMbM0lO!gtY zRuOK4P<1&=%*WGyXaC&A8$d?t(+6CsOLau_%)4vMpCZn4NM4s7v(`HQ6CuPa!A;t` zEv7I?_ltU(=AflB44@t2g?Vx%wc?U1;r6nAKu-vtfwAnilSeKKmV*3V0LWa+pPb&h_W3a(pDj<79cxc7?V$NF$jJ{fRXR@mL;*JxU^^FF z;1YPk>_huDq(93@ws^poqUTkwfO}dtNx+FzAs1kbvq2`;DzNRf24=kNcd6Jl^zmtL zZH}co{Y#5uP~knuHR?G1>#{P)aK-O|Y?jlRW7Z9XOhLc{ThmnCB72$Fu*r>ZDQfjO z*8V*RqFxP)%1yZac6P!1aOXaTHHqCse6o9ffhJ;PY12C|N|K6A%C-0gpV1Lgl$}iA zf3kGZSp|Sb!iNt(<1zK4ClHV^b)>-5QMGuMew@5P-D~9x0^T*M=}q zDdaM%+YOSB-oPf9q0+#iwp7a=qzM7V9z)u}{&z&4A(04dEOjJZh&(r2wr;D@n7UJL zicY?NH4V+^+2HUqqx19sYu+7+LSABQ5a|M&0iRGEt!qDY)iQ%!&4Sn!9;<)Cg%rK3mroi5Q6!Oe1H+o;x%$JA_Rpk1 zjmAJ`GH~WcA3^5N>+dEWBEBI&u&m1hsY^Uw;joBfQbfvsEDJ;A3n`B8AOzcbIQePA zZj+~qxz;KZc*Nq8e&JcYdaJ(`$O)xbv4KHetjXEE^xTcxMH=jVqeyOUmg930;X!sTS;#YB&Z=7 zFQAWQyAc5rDb|s$YUrr%eB{Dd9Q0>9C~2abNc7A1z+%b)KU%+-q5KT=Qf5MBM(4ck z`cFCafdmH7sk#f?Vbd}$<6pvzpyJP=Rk%>uRe(YvcApQ$PkR3jIOh{dPNF%mllETA z*g|$wLq|+RJE%+-QZ=*gC@=A_&jB7vkGTGeDnuSh$sHNX41@AMs7$R9r4m~1i@GeU{zYy) zabngw^k<$WO_7`I9Un~B%1J;L==J3v?;ak_hT?=?dk}0yxd3_Uk=A~2(lpSzI`Q|& z3-=lWwcuEflfTOy_XxFz^nhc|)%{EYwG5{<2dd^@bE)*4|7UFuGH^EU>=4B5dPC}r zPJS*F&F>ew2A+zq4D3nOE6z`)Xj_Nm2**PdzyS}V%({Xac8KAuB3&ghP{%P^+$+th zJ>%IA2CT5_@A%C2+zWk>vZS-87qZkD#erUM@bW|}P2i+?RfT)7PF6f1%tke6|K&R9 zJq~?(M8lqTclc9VoNSQwED`<>dqU0WD`^ZeUnqy%n*qy*Y7wcV`boKlJ%xAO4l$n5 zHU^wj&wo(N^vfX^emyYi$~)CU^9Mr5p67~Lmj#0?*lTO|_PL%X(FqnMzR9={4pv}o zKp#Jz0gao#my!uNZD3!?Rf#264rKTxpFo*Q_s;b&(RJv5+GdquFXM=GeCg5QUzLUm zXD)<&FJ$rUM5;k~*?N|#%S2C64$tG5zi|(E)?Bp4WfkFPAKP0Qg89oHXyg^SKg+60 zZ(Af(Q*|R<>|;c2)-(LZZ-emug`HBm9zHeBnU1xIa*EPvcL zaq#%v@X{57P+TlopZCD}cR%|9DurHaQpEb1`U3a1 zpv+BI*W%b& zAy2repH$$5^%W&rrpZ7=eFL_9L)#DSiX`f-EF)fjqj)m|=l2RxRNtkDb4CxKYBmG@ z2QZL*&^qokIno;)fk(nW;t;r6ocM31KECg@`M{#$xt0J+M1}80Bk=c>V$}3lkskQ8 zJzD4Bl?D^I5g7Es`Q<;{;}s279`L8H|b& zEtJ;(z7;t;GG@Z5deBG+`Ljp!O>g1dIFH)9qg~UcrS=^si|MzHsQj3YR& zDInqAmQ7s45;1G!LA%iu~~8?=_$BKA%S~|CeMCK(gZ^1(F2;TZnia z0n9MMhX~yr`d}kKdfTd`1pZp)NK-bqBBO3|T(+(q(5r3kVy=XeUU%WAVXv{^|Rw z*f-)iu(;_7sAhCu318{L%Z4}Ssy_v>vWn6n*}2`or*sCaLs`*h^sueJdONbA?V~U{ z2oB0Y4y+J!Ul=(1H#d+KL2j6X-Ua!%5@^T2nF!WcHPM(7HbLp8l?YL@6{K zs7qW@-_H}jB)cNC!zJ5}`NOdtUBTQFr}7W5h;+Qa{wmFTbM0IP!fpX?_hX|38ct>( z6y)1<+u!~tZRoOPqg@bF=BJ#TuOjux=^!%h{od;~E)L~*f>`#p0kE2A&@%=5t=oinjg5@6Uaap8_*#4eU!koPc#P1-7;3>W|R^L*@&1F~CnW z0uVE%U^oq@kUi)Gq?!g%l#6=);9o58lJ1e?KYJ{?;$%w=99~t& ziMoEYD2@3yBDki^_6=PCJ5C*FO-5so{BA?RYPZc|4J>osY;SQlJZ%qIX4gLelrGHe z@ZYU;ecu%kg81e_3nFlKLph8b2ZRt7a0twEAY}R5SYcad!yfO1I@(Brncwu88c#8f3L6jbC;PPJ(r)t~T|A;Gyg%K-D z>G8+z@cKCNWc{)bi}(YU)WLPASim*%sWB&&BV7$LpOB6;*OZwM{qG5VlqNZ{2W9LL z#qy_$JANEQ|7)^25x)_eq$-4Ew(^Elcx~=>PUKk$-Y4N)v`MO>_@^HHf`|`&tCw- z`5FNraOPDy*eHbnpCN3J^gqq0G}3a5PX4#XKmM0n=;fNfSj4wCntpwIxccbdh{3w9 zbs6IU*46Abtu!)ZNwI|!RifXRlV`S*z2^X^QfxnZ0}pqMqS5cIXp6bL2j5%lB9|A_ zPUG4ly30*?r-ZG9rR*EvNjyYMdPBxJhTyf2sRog;r2NT+jBBYQBz($J2P1!af*TSPA}wdS3krbq;PBD|!#{+bl)}uT)mkEZ>9H#0+CG@ zu?a1y;rZ8RKXxM2Z9$O8i+wkdwpKXm(JjJ;TqpYeN1pEP7yaWh-Pv$p+rjmoG@x$0 zqH=KL+1Fe|b3MIeRNR^rvG^Oya43Tf%A%vqaXEOIotgxF4f;we$sYqh^_lh{z5Vd` zu>1n{?2!|{^?@D3yG`KMwP^b~E@#kOKMBnNxx$PbQ z&74N@?p*8gFL2J9Xq=91(aAyEMu4@w#IE33A73q%sRQeRh$x|AkC8+<^aacS%*_K5 zOJXSpoRiJzEyAnOPHkGYYZnC1jDwbu2L^rfh()VXrr>sIDY{tXgg=CUp9VOZg%tUb zUrt!U@5|?#w$>1WE^O(lN}EOG+K@`ixmeOy6T44ZVvnDN!tc`4((j*`XELh~ILs9x zeCyJ5XNE*8($N5gv1ggr%YJW5uK*@N`%{$(Hl-jA|Jaa=zXHkF!C zZm@MiUHG7ZWAoM7c{j*NHR66EWjm)57PaFF2Kw2{sn*u*p|`Y#Gs$oaFb$-y zy+q6Pq^(nv4ykA=!7~~@m_Ts$a(Z3r&>*%~0N+7fv8qpI4N%AAafn{e9H2CTG$K&Q zmL-d??wqT2Owl03()+aeIS2Pf2Y!C8PFj2-zvhP^k4f(iT~ zgf4&rW0s-^%(&W-&RrI^hmlh;kv@dk?RCDBUaPzYWj$Wa77n^ zizvn{9@AO20<%cfhqQQr@X71K9!nKTzNwvG71srKxP$QH>+zB)FpC2l z&`NTfvD~X8Y(mANu`N4P$|SdP(8lC8M!LvtE~!K(hFOY`3ZqCQV|?H1oa+1s-(Sve z`{n)leD?mlKkv``{d_$i&(9>dIPrUVarlD9jAV)}DKF&UJ-TNG6*Zl2RgMjE8NxEA z#TW-$Llk|74XSIs@i5xv9cDP4w;C7Hke0j-8Z|p5bMNi167&5Pj;9q(ZE9yUOof$LJ# z|5vrJl!arTihueyDw4#f?phi(*u$hH>6R5T2*JMLAq`0$KIYx&hVf)lM#KrcAIP-L zoc&ZB(qk~2IXmnD6$lSaNH%H=ib-I(XR>UeIwN&sNY+a9oB6$qi(ofv1~-mB7Vp&u zpA@t#0dK`=ij#jKKe*a#s_wS4C9W){!Xp+#Lfm0wIK1CP$m&Vi4tP8;($4DrrRBm0uC^8~U#$ zp^gFkrY@v+e2@a}N3EhdNoR)~Re0L$^+ibkHSdb?cIRP7=o${l5PX9=+K43C!M=d8 z-n*4JwryStq@OB;ZrC-u#&5o?a7J5>A&XE`>^g9&@@mhLFn?z(lACb;9+IrC92$|5 ztN6I+9>x+W^e#g97m??ozOQt-qo{^YqQa{$#LlMB`Z;%G*Po?gj)JI+7u8EHo11!= zj%J7Vk78r>qY}r$3sWsr%LV+ol=N>qb2uI|HnLBmDraoL13`yq`$EjbyBU2U+Zq=Y}J66Lljmp^g3 zRN=vs);n8(I2JXT(m=^+rlK~9q{|EV+@hjp1_}*wdT~fK)s=^W!np3SX)vsBfa1rS zy%0m9LxoO1E{nR_(gpZi;;m!bwC|XcC6SwbF{oTFQtCY5O=^r9O1bD*o?1m>dhHr>1zXi>;R+Y4t32 ze+nsdNk9CNYT*41wo<-Z5DRyY4Do6J9c_%&TR%A4$J19?@#xfF1|bdA9rvu+4d_$= z0z7PPKrOz`3b@Bjzl`ZEJ6FQRQI1Vq%Z0nt%rIE`9Pe%1QP*5=$bHjs5}4!$mKRfB zeraTl2tnB^lD+_b?q(^ToTDLJq}Te^`$CPMv{~i}&mL`1Y*hwJRh6;CM>KJqp5wLie9j5?qs(d&wyoF%G4j* z!(vyqcd6V8J;7DU3H_OS+>&M>uonVX$SnY`@Y65>+xQf`q+4@_C z&|2(xnMr)EwP@|;b1O9OBQi&dUz}-*F=G)A^6VD5MgH3IHQBI5f5^VCogPNkmKQ{V z5Y!@gWASJGHr@0NT0pP!fz%ueGhzQ&xYD{nz@=D96mQT;e=>&Z6!Sc+%I!YQeC6~n z1#nf_Tc&FP?Bb*R5po@7(PEN!*(cSz|X+d$=SS;ibOo1z({eq2r74;x}&(0x%IVaoh?qk_* zVf0P)6)L3PWqGM$N;=IQjBnigYAewID9;|s?Lg9O@%j66?U9_I7B@&SUM&}cv#F3| zFw}gdaHIr5N}k^P9l-!)9+1pK;Av?)pO%cbW0*a}@`G|zLz|XzsK@%AXiSz$jMkl3 zEUxkU+R!f_bsG>EReYRD)NMbqp^cVY-3*p48Jzcr#qE^jRjZ_v#NP;5L_5x~i5T9%@{cKo0QB-pyCL$d@^0EIAzWEJ8UDvKLqoDc*F+Iux@-mTHPiq{BMH zf_6_o%R+XM!0If3Z+LMYgOB=j`v5@Jy{gz2L2>R) zmO+fv)A5Hq3TGC2M!i71?skwBJBD%;SpceP%1Eu0++!EVw$ho#KT<1$M4_2{!5bUM zW64(%mY#L1Vx57j#b&@S9-%t(TatF3LQ(j>>HJOhQE%6PdeRoB_FR1E?C>J)xp&2)*FvuAoG{ zXn~xYNt698z=m)5tBa8;OFD(`IgG5*>2E(A>&u*wnoE!f%M)Q5dv}JPbeE>xUmU+S zlXbJHW0Emq4Z$|?H^rpAeFdLc>~D3wHca@0oi4syQpPKlU;g5tJuTQg_NuL%{d&Rs3B#cgd6EkbN~I zT~3=O<}!l&Pzp zk3467DFbK=KMB43uGe4+`+iz_i{*t0x(f9Ok2~6i_8ZJTWZNecOZw{L(hjzF3zZxk z#65Pg5al!y=F9CM7+yl%l#{LFm~=&E=^^o6MuarZ^^LoGFsu?p`A~nuvYhcAU5|>z z%LdI^fH3Dl1ufQ*1MS!q$KO8Ms*vRb8*)}@y>Q}fdQ^_^I4A$?f%-420fMgM930Bu zS>;bx_lfP)SECpfIp!N7CPB4r3U3SYB4*}ppK0+kpZ;vB-+k(J;Ln{2xoqNCARfl* zyj2W0d4->s8vOm!*7n`x<%yk?GtVO>4>AGk zZS>hQCB%I^mXl^oeLed6Y0HNN=z6JZWsEY4_JBX*T=EI_P|9-)+DY6SA7<^HX_>Uy zQPi+|_bBd;;d3K2Yr}n81y*a?u>xJA?gVN8E{d4x_}gri)^e_GW@TWtv}Upgm=yv@ z;it#de&uO%jx3H^u4K-pgg9=maFyPO)?5x}D%#SNg4?XpuLlYAzSh4$?OnPq^VD&1 ztdJE)LTzECgR(r*7PGWVD*3Bm?~ejzN>yyerSDS1dL?k01E$o!{#E!Ahw>S+cYRl` ztTeU2{GS{lnHBrJU9zh9^1MA@KQ_<@z{$6bOPj3urg&Lt8iICD?^j~JNmZ+2lYtOr z)1`P~?T>cnQPP j_-{o0A0EA-mDQq#?6;q#l?TD6j8@t0bF^h!AEEva@LFAj literal 0 HcmV?d00001 diff --git a/docs/run_nextflow/img/memory-before.png b/docs/run_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/nested.excalidraw.svg b/docs/run_nextflow/img/nested.excalidraw.svg similarity index 100% rename from docs/hello_nextflow/img/nested.excalidraw.svg rename to docs/run_nextflow/img/nested.excalidraw.svg diff --git a/docs/hello_nextflow/img/nf-core-modules.png b/docs/run_nextflow/img/nf-core-modules.png similarity index 100% rename from docs/hello_nextflow/img/nf-core-modules.png rename to docs/run_nextflow/img/nf-core-modules.png diff --git a/docs/hello_nextflow/img/pipeline.excalidraw.svg b/docs/run_nextflow/img/pipeline.excalidraw.svg similarity index 100% rename from docs/hello_nextflow/img/pipeline.excalidraw.svg rename to docs/run_nextflow/img/pipeline.excalidraw.svg diff --git a/docs/hello_nextflow/img/pipeline_schema.png b/docs/run_nextflow/img/pipeline_schema.png similarity index 100% rename from docs/hello_nextflow/img/pipeline_schema.png rename to docs/run_nextflow/img/pipeline_schema.png diff --git a/docs/run_nextflow/img/report_cover.png b/docs/run_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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 environment.lock \ + && echo ">> CONDA_LOCK_START" \ + && cat environment.lock \ + && echo "<< CONDA_LOCK_END" \ + && micromamba clean -a -y +# Run the container as the root user +USER root +# Set the PATH environment variable to include the micromamba installation directory +ENV PATH="$MAMBA_ROOT_PREFIX/bin:$PATH" +``` + +The second item we'll look at is the `conda.yml` file, which contains the list of packages that need to be installed in the container image. + +```conda.yml title="conda.yml" +channels: +- conda-forge +- bioconda +dependencies: +- pip +- pip: + - quote==3.0.0 # +``` + +Copy the contents of these files into the stubs located in the `containers/build` directory, then run the following command to build the container image yourself. + +!!! Note + + We use the `-t quote:latest` flag to tag the container image with the name `quote` and the tag `latest`. + We will be able to use this tag to refer to the container image when running it on this system. + +```bash +docker build -t quote:latest containers/build +``` + +After it has finished building, you can run the container image you just built. + +```bash +docker run --rm quote:latest quote "Margaret Oakley Dayhoff" +``` + +### Takeaway + +You've learned two different ways to get a container image for a tool you want to use in your Nextflow pipelines: using Seqera Containers and building the container image yourself. + +### What's next? + +You have everything you need to continue to the [next chapter](./04_hello_genomics.md) of this training series. +You can also continue on with an optional exercise to fetch quotes on computer/biology pioneers using the `quote` container and output them using the `cowsay` container. + +--- + +## 2. Make the cow quote famous scientists + +This section contains some stretch exercises, to practice what you've learned so far. +Doing these exercises is _not required_ to understand later parts of the training, but provide a fun way to reinforce your learnings by figuring out how to make the cow quote famous scientists. + +```console title="cowsay-output-Grace-Hopper.txt" + _________________________________________________ + / \ +| Humans are allergic to change. They love to | +| say, 'We've always done it this way.' I try to fi | +| ght that. That's why I have a clock on my wall th | +| at runs counter-clockwise. | +| -Grace Hopper | + \ / + ================================================= + \ + \ + ^__^ + (oo)\_______ + (__)\ )\/\ + ||----w | + || || +``` + +### 2.1. Modify the `hello-containers.nf` script to use a getQuote process + +We have a list of computer and biology pioneers in the `containers/data/pioneers.csv` file. +At a high level, to complete this exercise you will need to: + +- Modify the default `params.input_file` to point to the `pioneers.csv` file. +- Create a `getQuote` process that uses the `quote` container to fetch a quote for each input. +- Connect the output of the `getQuote` process to the `cowsay` process to display the quote. + +For the `quote` container image, you can either use the one you built yourself in the previous stretch exercise or use the one you got from Seqera Containers . + +!!! Hint + + A good choice for the `script` block of your getQuote process might be: + ```groovy + script: + def safe_author = author.tokenize(' ').join('-') + """ + quote "$author" > quote-${safe_author}.txt + echo "-${author}" >> quote-${safe_author}.txt + """ + ``` + +You can find a solution to this exercise in `containers/solutions/hello-containers-4.1.nf`. + +### 2.2. Modify your Nextflow pipeline to allow it to execute in `quote` and `sayHello` modes. + +Add some branching logic using to your pipeline to allow it to accept inputs intended for both `quote` and `sayHello`. +Here's an example of how to use an `if` statement in a Nextflow workflow: + +```groovy title="hello-containers.nf" +workflow { + if (params.quote) { + ... + } + else { + ... + } + cowSay(text_ch) +} +``` + +!!! Hint + + You can use `new_ch = processName.out` to assign a name to the output channel of a process. + +You can find a solution to this exercise in `containers/solutions/hello-containers-4.2.nf`. + +### Takeaway + +You know how to use containers in Nextflow to run processes, and how to build some branching logic into your pipelines! + +### What's next? + +Celebrate, take a stretch break and drink some water! + +When you are ready, move on to Part 3 of this training series to learn how to apply what you've learned so far to a more realistic data analysis use case. diff --git a/docs/side_quests/if_else.md b/docs/side_quests/if_else.md new file mode 100644 index 00000000..49f22134 --- /dev/null +++ b/docs/side_quests/if_else.md @@ -0,0 +1,87 @@ +# Part 2: If - Else + +[TODO] + +--- + +## 1. Make the cow quote famous scientists + +This section contains some stretch exercises, to practice what you've learned so far. +Doing these exercises is _not required_ to understand later parts of the training, but provide a fun way to reinforce your learnings by figuring out how to make the cow quote famous scientists. + +```console title="cowsay-output-Grace-Hopper.txt" + _________________________________________________ + / \ +| Humans are allergic to change. They love to | +| say, 'We've always done it this way.' I try to fi | +| ght that. That's why I have a clock on my wall th | +| at runs counter-clockwise. | +| -Grace Hopper | + \ / + ================================================= + \ + \ + ^__^ + (oo)\_______ + (__)\ )\/\ + ||----w | + || || +``` + +### 1.1. Modify the `hello-containers.nf` script to use a getQuote process + +We have a list of computer and biology pioneers in the `containers/data/pioneers.csv` file. +At a high level, to complete this exercise you will need to: + +- Modify the default `params.input_file` to point to the `pioneers.csv` file. +- Create a `getQuote` process that uses the `quote` container to fetch a quote for each input. +- Connect the output of the `getQuote` process to the `cowsay` process to display the quote. + +For the `quote` container image, you can either use the one you built yourself in the previous stretch exercise or use the one you got from Seqera Containers . + +!!! Hint + + A good choice for the `script` block of your getQuote process might be: + ```groovy + script: + def safe_author = author.tokenize(' ').join('-') + """ + quote "$author" > quote-${safe_author}.txt + echo "-${author}" >> quote-${safe_author}.txt + """ + ``` + +You can find a solution to this exercise in `containers/solutions/hello-containers-4.1.nf`. + +### 1.2. Modify your Nextflow pipeline to allow it to execute in `quote` and `sayHello` modes. + +Add some branching logic using to your pipeline to allow it to accept inputs intended for both `quote` and `sayHello`. +Here's an example of how to use an `if` statement in a Nextflow workflow: + +```groovy title="hello-containers.nf" +workflow { + if (params.quote) { + ... + } + else { + ... + } + cowSay(text_ch) +} +``` + +!!! Hint + + You can use `new_ch = processName.out` to assign a name to the output channel of a process. + +You can find a solution to this exercise in `containers/solutions/hello-containers-4.2.nf`. + +### Takeaway + +You know how to use containers in Nextflow to run processes, and how to build some branching logic into your pipelines! + +### What's next? + +Celebrate, take a stretch break and drink some water! + +When you are ready, move on to Part 3 of this training series to learn how to apply what you've learned so far to a more realistic data analysis use case. diff --git a/docs/side_quests/index.md b/docs/side_quests/index.md new file mode 100644 index 00000000..e5178ad3 --- /dev/null +++ b/docs/side_quests/index.md @@ -0,0 +1,27 @@ +--- +title: Side Quests +hide: + - toc +--- + +# Side Quests + +[TODO] This is a collection of standalone training modules that go deeper into specific topics. You can go through them in any order. + +Let's get started! + +[![Open in Gitpod](https://img.shields.io/badge/Gitpod-%20Open%20in%20Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/nextflow-io/training) + +## Learning objectives + +The learning objectives are specific to each section. [TODO] + +## Audience & prerequisites + +[TODO] + +**Prerequisites** + +- A GitHub account +- Experience with command line + [TODO] diff --git a/docs/side_quests/orientation.md b/docs/side_quests/orientation.md new file mode 100644 index 00000000..4a204784 --- /dev/null +++ b/docs/side_quests/orientation.md @@ -0,0 +1,46 @@ +# Orientation + +The Gitpod environment contains all the software, code and data necessary to work through this training course, so you don't need to install anything yourself. +However, you do need a (free) account to log in, and you should take a few minutes to familiarize yourself with the interface. + +If you have not yet done so, please follow [this link](../../envsetup/) before going any further. + +## Materials provided + +Throughout this training course, we'll be working in the `tapas/` directory. +This directory contains all the code files, test data and accessory files you will need. + +Feel free to explore the contents of this directory; the easiest way to do so is to use the file explorer on the left-hand side of the Gitpod workspace. +Alternatively, you can use the `tree` command. +Throughout the course, we use the output of `tree` to represent directory structure and contents in a readable form, sometimes with minor modifications for clarity. + +Here we generate a table of contents to the second level down: + +```bash +tree . -L 2 +``` + +If you run this inside `tapas`, you should see the following output: [TODO] + +```console title="Directory contents" +. +``` + +!!!note + + Don't worry if this seems like a lot; we'll go through the relevant pieces at each step of the course. + This is just meant to give you an overview. + +**Here's a summary of what you should know to get started:** + +[TODO] + +!!!tip + + If for whatever reason you move out of this directory, you can always run this command to return to it: + + ```bash + cd /workspace/gitpod/tapas + ``` + +Now, to begin the course, click on the arrow in the bottom right corner of this page. diff --git a/hello-nextflow/containers/data/greetings.csv b/hello-nextflow/greetings.csv similarity index 100% rename from hello-nextflow/containers/data/greetings.csv rename to hello-nextflow/greetings.csv diff --git a/mkdocs.yml b/mkdocs.yml index 548855b0..fc3f82dd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -14,13 +14,24 @@ nav: - hello_nextflow/01_orientation.md - hello_nextflow/02_hello_world.md - hello_nextflow/03_hello_containers.md - - hello_nextflow/04_hello_genomics.md - - hello_nextflow/05_hello_operators.md - - hello_nextflow/06_hello_config.md - - hello_nextflow/07_hello_modules.md - - hello_nextflow/08_hello_nf-test.md - - hello_nextflow/09_hello_nf-core.md - - hello_nextflow/10_hello_seqera.md + - hello_nextflow/04_hello_config.md + - hello_nextflow/05_hello_modules.md + - Run Nextflow: + - run_nextflow/index.md + - run_nextflow/01_orientation.md + - run_nextflow/02_run_basics.md + - run_nextflow/03_run_nf-core.md + - run_nextflow/04_run_seqera.md + - Side Quests: + - side_quests/index.md + - side_quests/orientation.md + - side_quests/containers.md + - side_quests/if_else.md + - Nextflow for Genomics: + - nf4_genomics/index.md + - nf4_genomics/01_orientation.md + - nf4_genomics/02_linear.md + - nf4_genomics/03_collect.md - Fundamentals Training: - basic_training/index.md - basic_training/orientation.md @@ -167,11 +178,9 @@ plugins: restart_increment_after: - envsetup/01_setup.md - hello_nextflow/01_orientation.md - - basic_training/orientation.md - - advanced/orientation.md - - nf_customize/01_orientation.md - - nf_develop/1_01_orientation.md - - troubleshoot/01_orientation.md + - run_nextflow/01_orientation.md + - side_quests/01_orientation.md + - big_nextflow/01_orientation.md exclude: - index.md @@ -186,6 +195,11 @@ plugins: - hands_on/index.md - hands_on/solutions/*md - hello_nextflow/*.md + - basic_training/orientation.md + - advanced/orientation.md + - nf_customize/01_orientation.md + - nf_develop/1_01_orientation.md + - troubleshoot/01_orientation.md - i18n: docs_structure: suffix fallback_to_default: true diff --git a/hello-nextflow/data/bam/reads_father.bam b/nf4-genomics/data/bam/reads_father.bam similarity index 100% rename from hello-nextflow/data/bam/reads_father.bam rename to nf4-genomics/data/bam/reads_father.bam diff --git a/hello-nextflow/data/bam/reads_mother.bam b/nf4-genomics/data/bam/reads_mother.bam similarity index 100% rename from hello-nextflow/data/bam/reads_mother.bam rename to nf4-genomics/data/bam/reads_mother.bam diff --git a/hello-nextflow/data/bam/reads_son.bam b/nf4-genomics/data/bam/reads_son.bam similarity index 100% rename from hello-nextflow/data/bam/reads_son.bam rename to nf4-genomics/data/bam/reads_son.bam diff --git a/hello-nextflow/data/ref/intervals.bed b/nf4-genomics/data/ref/intervals.bed similarity index 100% rename from hello-nextflow/data/ref/intervals.bed rename to nf4-genomics/data/ref/intervals.bed diff --git a/hello-nextflow/data/ref/ref.dict b/nf4-genomics/data/ref/ref.dict similarity index 100% rename from hello-nextflow/data/ref/ref.dict rename to nf4-genomics/data/ref/ref.dict diff --git a/hello-nextflow/data/ref/ref.fasta b/nf4-genomics/data/ref/ref.fasta similarity index 100% rename from hello-nextflow/data/ref/ref.fasta rename to nf4-genomics/data/ref/ref.fasta diff --git a/hello-nextflow/data/ref/ref.fasta.fai b/nf4-genomics/data/ref/ref.fasta.fai similarity index 100% rename from hello-nextflow/data/ref/ref.fasta.fai rename to nf4-genomics/data/ref/ref.fasta.fai diff --git a/hello-nextflow/data/sample_bams.txt b/nf4-genomics/data/sample_bams.txt similarity index 100% rename from hello-nextflow/data/sample_bams.txt rename to nf4-genomics/data/sample_bams.txt diff --git a/hello-nextflow/data/samplesheet.csv b/nf4-genomics/data/samplesheet.csv similarity index 100% rename from hello-nextflow/data/samplesheet.csv rename to nf4-genomics/data/samplesheet.csv diff --git a/hello-nextflow/hello-genomics.nf b/nf4-genomics/hello-genomics.nf similarity index 100% rename from hello-nextflow/hello-genomics.nf rename to nf4-genomics/hello-genomics.nf diff --git a/hello-nextflow/hello-operators.nf b/nf4-genomics/hello-operators.nf similarity index 100% rename from hello-nextflow/hello-operators.nf rename to nf4-genomics/hello-operators.nf diff --git a/hello-nextflow/hello-nf-core/data/sequencer_samplesheet.csv b/run-nextflow/hello-nf-core/data/sequencer_samplesheet.csv similarity index 91% rename from hello-nextflow/hello-nf-core/data/sequencer_samplesheet.csv rename to run-nextflow/hello-nf-core/data/sequencer_samplesheet.csv index 3d02bafe..f2c3b780 100644 --- a/hello-nextflow/hello-nf-core/data/sequencer_samplesheet.csv +++ b/run-nextflow/hello-nf-core/data/sequencer_samplesheet.csv @@ -2,4 +2,4 @@ sample,sequencer,fastq_1,fastq_2 SAMPLE1_PE,sequencer1,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample1_R1.fastq.gz,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample1_R2.fastq.gz SAMPLE2_PE,sequencer2,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample2_R1.fastq.gz,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample2_R2.fastq.gz SAMPLE3_SE,sequencer3,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample1_R1.fastq.gz, -SAMPLE3_SE,sequencer3,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample2_R1.fastq.gz, \ No newline at end of file +SAMPLE3_SE,sequencer3,https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/illumina/amplicon/sample2_R1.fastq.gz, diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.editorconfig b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.editorconfig similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.editorconfig rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.editorconfig diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.nf-core.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.nf-core.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.nf-core.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.nf-core.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.pre-commit-config.yaml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.pre-commit-config.yaml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.pre-commit-config.yaml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.pre-commit-config.yaml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.prettierignore b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.prettierignore similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.prettierignore rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.prettierignore diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.prettierrc.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.prettierrc.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.prettierrc.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/.prettierrc.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/LICENSE b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/LICENSE similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/LICENSE rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/LICENSE diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/README.md b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/README.md similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/README.md rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/README.md diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/email_template.html b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/email_template.html similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/email_template.html rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/email_template.html diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/email_template.txt b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/email_template.txt similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/email_template.txt rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/email_template.txt diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/multiqc_config.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/multiqc_config.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/multiqc_config.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/multiqc_config.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/samplesheet.csv b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/samplesheet.csv similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/samplesheet.csv rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/samplesheet.csv diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/schema_input.json b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/schema_input.json similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/schema_input.json rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/schema_input.json diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/sendmail_template.txt b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/sendmail_template.txt similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/sendmail_template.txt rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/assets/sendmail_template.txt diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/base.config b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/base.config similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/base.config rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/base.config diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/modules.config b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/modules.config similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/modules.config rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/modules.config diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/test.config b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/test.config similarity index 99% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/test.config rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/test.config index 50ae17ee..474ef319 100644 --- a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/test.config +++ b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/test.config @@ -27,5 +27,5 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = params.pipelines_testdata_base_path + 'viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' - + } diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/test_full.config b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/test_full.config similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/test_full.config rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/conf/test_full.config diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/README.md b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/README.md similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/README.md rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/README.md diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/output.md b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/output.md similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/output.md rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/output.md diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/usage.md b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/usage.md similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/usage.md rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/docs/usage.md diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/main.nf b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/main.nf similarity index 99% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/main.nf rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/main.nf index a84e393a..de383a8b 100644 --- a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/main.nf +++ b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/main.nf @@ -77,7 +77,7 @@ workflow { params.plaintext_email, params.outdir, params.monochrome_logs, - + MYORG_MYFIRSTPIPELINE.out.multiqc_report ) } diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules.json b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules.json similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules.json rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules.json diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/local/fastqe.nf b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/local/fastqe.nf similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/local/fastqe.nf rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/local/fastqe.nf diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/environment.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/environment.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/environment.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/environment.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/main.nf b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/main.nf similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/main.nf rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/main.nf diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/meta.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/meta.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/meta.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/meta.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test.snap b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test.snap similarity index 99% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test.snap rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test.snap index 2fcbb5ff..261dc0fa 100644 --- a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -38,4 +38,4 @@ }, "timestamp": "2024-10-02T17:52:09.185842" } -} \ No newline at end of file +} diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/nextflow.config b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/nextflow.config similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/nextflow.config rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/nextflow.config diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/tags.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/tags.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/tags.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/multiqc/tests/tags.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/environment.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/environment.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/environment.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/environment.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/main.nf b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/main.nf similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/main.nf rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/main.nf diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/meta.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/meta.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/meta.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/meta.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test.snap b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test.snap similarity index 99% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test.snap rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test.snap index da181dcf..90da25d2 100644 --- a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test.snap +++ b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/main.nf.test.snap @@ -75,4 +75,4 @@ }, "timestamp": "2024-05-03T06:11:38.487227" } -} \ No newline at end of file +} diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/tags.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/tags.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/tags.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/modules/nf-core/seqtk/trim/tests/tags.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/nextflow.config b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/nextflow.config similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/nextflow.config rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/nextflow.config diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/nextflow_schema.json b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/nextflow_schema.json similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/nextflow_schema.json rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/nextflow_schema.json diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/local/utils_nfcore_myfirstpipeline_pipeline/main.nf b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/local/utils_nfcore_myfirstpipeline_pipeline/main.nf similarity index 99% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/local/utils_nfcore_myfirstpipeline_pipeline/main.nf rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/local/utils_nfcore_myfirstpipeline_pipeline/main.nf index 107036dd..4e4a4ece 100644 --- a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/local/utils_nfcore_myfirstpipeline_pipeline/main.nf +++ b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/local/utils_nfcore_myfirstpipeline_pipeline/main.nf @@ -105,7 +105,7 @@ workflow PIPELINE_COMPLETION { plaintext_email // boolean: Send plain-text email instead of HTML outdir // path: Path to output directory where results will be published monochrome_logs // boolean: Disable ANSI colour codes in log output - + multiqc_report // string: Path to MultiQC report main: @@ -164,7 +164,7 @@ def toolCitationText() { // Uncomment function in methodsDescriptionText to render in MultiQC report def citation_text = [ "Tools used in the workflow included:", - + "MultiQC (Ewels et al. 2016)", "." ].join(' ').trim() @@ -177,7 +177,7 @@ def toolBibliographyText() { // Can use ternary operators to dynamically construct based conditions, e.g. params["run_xyz"] ? "

  • Author (2023) Pub name, Journal, DOI
  • " : "", // Uncomment function in methodsDescriptionText to render in MultiQC report def reference_text = [ - + "
  • Ewels, P., Magnusson, M., Lundin, S., & Käller, M. (2016). MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics , 32(19), 3047–3048. doi: /10.1093/bioinformatics/btw354
  • " ].join(' ').trim() @@ -220,4 +220,3 @@ def methodsDescriptionText(mqc_methods_yaml) { return description_html.toString() } - diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/main.nf similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/main.nf rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/main.nf diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/meta.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/meta.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/meta.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/meta.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap similarity index 99% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap index e3f0baf4..846287c4 100644 --- a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap +++ b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap @@ -17,4 +17,4 @@ }, "timestamp": "2024-02-28T12:02:12.425833" } -} \ No newline at end of file +} diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/main.nf similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/main.nf rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/main.nf diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/meta.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap similarity index 99% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap index 1037232c..facbdcfd 100644 --- a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap +++ b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap @@ -163,4 +163,4 @@ }, "timestamp": "2024-02-28T12:03:21.714424" } -} \ No newline at end of file +} diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap similarity index 99% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap index 859d1030..84ee1e1d 100644 --- a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap +++ b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap @@ -16,4 +16,4 @@ }, "timestamp": "2024-02-28T12:03:25.726491" } -} \ No newline at end of file +} diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/main.nf b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/main.nf similarity index 99% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/main.nf rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/main.nf index 4994303e..93de2a52 100644 --- a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/main.nf +++ b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/main.nf @@ -43,4 +43,3 @@ workflow UTILS_NFSCHEMA_PLUGIN { emit: dummy_emit = true } - diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/meta.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/meta.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/meta.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/meta.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config similarity index 98% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config index 0907ac58..478fb8a0 100644 --- a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config +++ b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config @@ -5,4 +5,4 @@ plugins { validation { parametersSchema = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" monochromeLogs = true -} \ No newline at end of file +} diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/tower.yml b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/tower.yml similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/tower.yml rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/tower.yml diff --git a/hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/workflows/myfirstpipeline.nf b/run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/workflows/myfirstpipeline.nf similarity index 100% rename from hello-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/workflows/myfirstpipeline.nf rename to run-nextflow/hello-nf-core/solution/myorg-myfirstpipeline/workflows/myfirstpipeline.nf diff --git a/hello-nextflow/containers/build/Dockerfile b/side-quests/containers/build/Dockerfile similarity index 100% rename from hello-nextflow/containers/build/Dockerfile rename to side-quests/containers/build/Dockerfile diff --git a/hello-nextflow/containers/build/conda.yml b/side-quests/containers/build/conda.yml similarity index 100% rename from hello-nextflow/containers/build/conda.yml rename to side-quests/containers/build/conda.yml diff --git a/hello-nextflow/data/greetings.csv b/side-quests/containers/data/greetings.csv similarity index 100% rename from hello-nextflow/data/greetings.csv rename to side-quests/containers/data/greetings.csv diff --git a/hello-nextflow/containers/data/pioneers.csv b/side-quests/containers/data/pioneers.csv similarity index 100% rename from hello-nextflow/containers/data/pioneers.csv rename to side-quests/containers/data/pioneers.csv diff --git a/hello-nextflow/containers/results/.gitignore b/side-quests/containers/results/.gitignore similarity index 100% rename from hello-nextflow/containers/results/.gitignore rename to side-quests/containers/results/.gitignore diff --git a/hello-nextflow/containers/solutions/hello-containers-3.nf b/side-quests/containers/solutions/hello-containers-3.nf similarity index 100% rename from hello-nextflow/containers/solutions/hello-containers-3.nf rename to side-quests/containers/solutions/hello-containers-3.nf diff --git a/hello-nextflow/containers/solutions/hello-containers-4.1.nf b/side-quests/containers/solutions/hello-containers-4.1.nf similarity index 100% rename from hello-nextflow/containers/solutions/hello-containers-4.1.nf rename to side-quests/containers/solutions/hello-containers-4.1.nf diff --git a/hello-nextflow/containers/solutions/hello-containers-4.2.nf b/side-quests/containers/solutions/hello-containers-4.2.nf similarity index 100% rename from hello-nextflow/containers/solutions/hello-containers-4.2.nf rename to side-quests/containers/solutions/hello-containers-4.2.nf From c0163706d419583adc2aa628a39d57b777ca4e7e Mon Sep 17 00:00:00 2001 From: Geraldine Van der Auwera Date: Mon, 16 Dec 2024 18:01:36 -0500 Subject: [PATCH 02/35] Prettier --- docs/advanced/configuration.md | 16 +-- docs/advanced/index.md | 20 +-- docs/advanced/introduction.md | 20 +-- docs/advanced/metadata.md | 4 +- docs/advanced/support.md | 6 +- docs/basic_training/cache_and_resume.fr.md | 6 +- docs/basic_training/cache_and_resume.md | 6 +- docs/basic_training/cache_and_resume.pt.md | 6 +- docs/basic_training/channels.md | 6 +- docs/basic_training/channels.pt.md | 6 +- docs/basic_training/config.md | 8 +- docs/basic_training/config.pt.md | 8 +- docs/basic_training/containers.md | 4 +- docs/basic_training/debugging.fr.md | 18 +-- docs/basic_training/debugging.md | 18 +-- docs/basic_training/debugging.pt.md | 18 +-- docs/basic_training/executors.fr.md | 4 +- docs/basic_training/executors.md | 4 +- docs/basic_training/executors.pt.md | 4 +- docs/basic_training/index.es.md | 10 +- docs/basic_training/index.fr.md | 10 +- docs/basic_training/index.md | 26 ++-- docs/basic_training/index.pt.md | 10 +- docs/basic_training/intro.fr.md | 6 +- docs/basic_training/intro.md | 6 +- docs/basic_training/intro.pt.md | 6 +- docs/basic_training/modules.md | 8 +- docs/basic_training/modules.pt.md | 8 +- docs/basic_training/processes.md | 6 +- docs/basic_training/processes.pt.md | 12 +- docs/basic_training/rnaseq_pipeline.fr.md | 8 +- docs/basic_training/rnaseq_pipeline.md | 6 +- docs/basic_training/rnaseq_pipeline.pt.md | 8 +- docs/basic_training/seqera_platform.fr.md | 8 +- docs/basic_training/seqera_platform.md | 8 +- docs/basic_training/seqera_platform.pt.md | 8 +- docs/basic_training/setup.fr.md | 42 +++--- docs/basic_training/setup.pt.md | 42 +++--- docs/envsetup/01_setup.md | 8 +- docs/envsetup/02_local.md | 18 +-- docs/hands_on/02_workflow.md | 28 ++-- docs/hands_on/04_implementation.md | 144 ++++++++++----------- docs/hello_nextflow/01_orientation.md | 18 +-- docs/hello_nextflow/01_orientation.pt.md | 10 +- docs/hello_nextflow/02_hello_world.md | 16 +-- docs/hello_nextflow/index.md | 14 +- docs/hello_nextflow/index.pt.md | 14 +- docs/help.fr.md | 4 +- docs/help.pt.md | 4 +- docs/index.md | 6 +- docs/index.pt.md | 6 +- docs/nf_customize/02_nf-core.md | 36 +++--- docs/nf_customize/03_execution.md | 32 ++--- docs/nf_customize/04_config.md | 54 ++++---- docs/nf_customize/05_tools.md | 18 +-- docs/nf_customize/index.md | 12 +- docs/nf_develop/1_02_create.md | 32 ++--- docs/nf_develop/1_03_pipeline.md | 8 +- docs/nf_develop/extra.md | 20 +-- docs/nf_develop/index.md | 14 +- docs/troubleshoot/01_orientation.md | 6 +- docs/troubleshoot/index.md | 12 +- 62 files changed, 477 insertions(+), 477 deletions(-) diff --git a/docs/advanced/configuration.md b/docs/advanced/configuration.md index dd1b30c7..47306e75 100644 --- a/docs/advanced/configuration.md +++ b/docs/advanced/configuration.md @@ -4,8 +4,8 @@ This is an aspect of Nextflow that can be confusing. There are multiple ways of This gives us two complications: -- At which location should I be loading a configuration value? -- Given a particular parameter, how do I know where it was set? +- At which location should I be loading a configuration value? +- Given a particular parameter, how do I know where it was set? ## Precedence @@ -152,15 +152,15 @@ The most common use for dynamic process directives is to enable tasks that fail To enable this, two directives are needed: -- `maxRetries` -- `errorStrategy` +- `maxRetries` +- `errorStrategy` The `errorStrategy` directive determines what action Nextflow should take in the event of a task failure (a non-zero exit code). The available options are: -- `terminate`: Nextflow terminates the execution as soon as an error condition is reported. Pending jobs are killed (default) -- `finish`: Initiates an orderly pipeline shutdown when an error condition is raised, waiting the completion of any submitted job. -- `ignore`: Ignores processes execution errors. -- `retry`: Re-submit for execution a process returning an error condition. +- `terminate`: Nextflow terminates the execution as soon as an error condition is reported. Pending jobs are killed (default) +- `finish`: Initiates an orderly pipeline shutdown when an error condition is raised, waiting the completion of any submitted job. +- `ignore`: Ignores processes execution errors. +- `retry`: Re-submit for execution a process returning an error condition. If the `errorStrategy` is "retry", then it will retry up to the value of `maxRetries` times. diff --git a/docs/advanced/index.md b/docs/advanced/index.md index 89e363df..1de33996 100644 --- a/docs/advanced/index.md +++ b/docs/advanced/index.md @@ -16,12 +16,12 @@ Let's get started! By the end of this course you should: -- Describe commonly used and well understood operators -- Apply good practices for the propagation of metadata -- Group and split channels -- Apply Groovy helper classes to Nextflow scripts -- Sensibly structure workflows -- Apply layers of configuration to a workflow +- Describe commonly used and well understood operators +- Apply good practices for the propagation of metadata +- Group and split channels +- Apply Groovy helper classes to Nextflow scripts +- Sensibly structure workflows +- Apply layers of configuration to a workflow ## Audience & prerequisites @@ -29,10 +29,10 @@ Please note that this is **not** a beginner's workshop and familiarity with Next **Prerequisites** -- A GitHub account -- Experience with command line -- Familiarity with Nextflow and Groovy -- An understanding of common file formats +- A GitHub account +- Experience with command line +- Familiarity with Nextflow and Groovy +- An understanding of common file formats ## Follow the training video diff --git a/docs/advanced/introduction.md b/docs/advanced/introduction.md index a5967227..f523e312 100644 --- a/docs/advanced/introduction.md +++ b/docs/advanced/introduction.md @@ -14,12 +14,12 @@ Let's get started! By the end of this course you should: -- Describe commonly used and well understood operators -- Apply good practices for the propagation of metadata -- Group and split channels -- Apply Groovy helper classes to Nextflow scripts -- Sensibly structure workflows -- Apply layers of configuration to a workflow +- Describe commonly used and well understood operators +- Apply good practices for the propagation of metadata +- Group and split channels +- Apply Groovy helper classes to Nextflow scripts +- Sensibly structure workflows +- Apply layers of configuration to a workflow ## Audience & prerequisites @@ -27,10 +27,10 @@ Please note that this is **not** a beginner's workshop and familiarity with Next **Prerequisites** -- A GitHub account -- Experience with command line -- Familiarity with Nextflow and Groovy -- An understanding of common file formats +- A GitHub account +- Experience with command line +- Familiarity with Nextflow and Groovy +- An understanding of common file formats ## Follow the training video diff --git a/docs/advanced/metadata.md b/docs/advanced/metadata.md index 294ac86c..b0f02767 100644 --- a/docs/advanced/metadata.md +++ b/docs/advanced/metadata.md @@ -2,8 +2,8 @@ A central challenge in a lot of batch-style computation is how to ensure the metadata describing a file remains with the file. Two good rules for handling metadata in Nextflow are: -- Metadata should be explicit - be extremely wary of metadata encoded in filenames -- Metadata should travel through channels with the data in a tuple element. +- Metadata should be explicit - be extremely wary of metadata encoded in filenames +- Metadata should travel through channels with the data in a tuple element. ## Metadata Import diff --git a/docs/advanced/support.md b/docs/advanced/support.md index 6cf585fd..c4353e34 100644 --- a/docs/advanced/support.md +++ b/docs/advanced/support.md @@ -3,6 +3,6 @@ title: Support description: Advanced Nextflow Training Workshop --- -- Nextflow official documentation is available at [www.nextflow.io/docs/latest](https://www.nextflow.io/docs/latest/) -- If you have questions, ask on the Seqera Community Forum at [http://community.seqera.io/](http://community.seqera.io/) -- If you want to chat about Nextflow or plugin development, check the Nextflow Slack at [https://www.nextflow.io/slack-invite.html](https://www.nextflow.io/slack-invite.html) +- Nextflow official documentation is available at [www.nextflow.io/docs/latest](https://www.nextflow.io/docs/latest/) +- If you have questions, ask on the Seqera Community Forum at [http://community.seqera.io/](http://community.seqera.io/) +- If you want to chat about Nextflow or plugin development, check the Nextflow Slack at [https://www.nextflow.io/slack-invite.html](https://www.nextflow.io/slack-invite.html) diff --git a/docs/basic_training/cache_and_resume.fr.md b/docs/basic_training/cache_and_resume.fr.md index ea993951..424c9e9d 100644 --- a/docs/basic_training/cache_and_resume.fr.md +++ b/docs/basic_training/cache_and_resume.fr.md @@ -90,9 +90,9 @@ nextflow run