From 7642616163ce86b38c582e85c0e771017db8b2e0 Mon Sep 17 00:00:00 2001 From: mirpedrol Date: Tue, 20 Feb 2024 16:50:28 +0100 Subject: [PATCH 01/43] bump version to 3.0dev --- .gitpod.yml | 2 +- CHANGELOG.md | 10 ++++++++++ setup.py | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.gitpod.yml b/.gitpod.yml index a4f1c17169..39fb530da2 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,4 +1,4 @@ -image: nfcore/gitpod:latest +image: nfcore/gitpod:dev tasks: - name: install current state of nf-core/tools and setup pre-commit command: | diff --git a/CHANGELOG.md b/CHANGELOG.md index a9d83051f3..950322d873 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # nf-core/tools: Changelog +## v3.0dev + +### Template + +### Linting + +### Components + +### General + ## [v2.13 - Tin Puppy](https://github.com/nf-core/tools/releases/tag/2.13) - [2024-02-20] ### Template diff --git a/setup.py b/setup.py index 3bfb99d4a8..ce877d8ce6 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import find_packages, setup -version = "2.13" +version = "3.0dev" with open("README.md") as f: readme = f.read() From d36a50347b5b68ffd411b313284bd4d2a1e0d901 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 21 Feb 2024 10:32:10 +0100 Subject: [PATCH 02/43] update badges --- nf_core/pipeline-template/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nf_core/pipeline-template/README.md b/nf_core/pipeline-template/README.md index 037d3fd81a..996e9d6fb1 100644 --- a/nf_core/pipeline-template/README.md +++ b/nf_core/pipeline-template/README.md @@ -19,7 +19,7 @@ [![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) [![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/) [![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/) -[![Launch on Nextflow Tower](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Nextflow%20Tower-%234256e7)](https://tower.nf/launch?pipeline=https://github.com/{{ name }}) +[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://tower.nf/launch?pipeline=https://github.com/{{ name }}) {% endif -%} {%- if branded -%}[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23{{ short_name }}-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/{{ short_name }}){% endif -%} From f48caff6b4e2f81aeb2c7887f5796e24d85e719e Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 21 Feb 2024 10:37:37 +0100 Subject: [PATCH 03/43] add nf-test badge --- nf_core/pipeline-template/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/nf_core/pipeline-template/README.md b/nf_core/pipeline-template/README.md index 996e9d6fb1..7f01b3a4bd 100644 --- a/nf_core/pipeline-template/README.md +++ b/nf_core/pipeline-template/README.md @@ -14,6 +14,7 @@ {% if branded -%}[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/{{ short_name }}/results){% endif -%} {%- if github_badges -%} [![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX) +[![nf-test](https://img.shields.io/badge/unit_testing-nf--test-337ab7.svg)](https://www.nf-test.com) [![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A523.04.0-23aa62.svg)](https://www.nextflow.io/) [![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) From 5602f95c51ab6232abc2cf1a47cb24b5b1b3da56 Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 21 Feb 2024 10:39:50 +0100 Subject: [PATCH 04/43] fix typo --- .../subworkflows/local/utils_nfcore_pipeline_pipeline/main.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nf_core/pipeline-template/subworkflows/local/utils_nfcore_pipeline_pipeline/main.nf b/nf_core/pipeline-template/subworkflows/local/utils_nfcore_pipeline_pipeline/main.nf index 24d4c2d7e1..e97420a14f 100644 --- a/nf_core/pipeline-template/subworkflows/local/utils_nfcore_pipeline_pipeline/main.nf +++ b/nf_core/pipeline-template/subworkflows/local/utils_nfcore_pipeline_pipeline/main.nf @@ -158,7 +158,7 @@ workflow PIPELINE_COMPLETION { def validateInputParameters() { genomeExistsError() } -{%- endif -%} +{%- endif %} // // Validate channels from input samplesheet @@ -201,7 +201,7 @@ def genomeExistsError() { error(error_string) } } -{%- endif -%} +{%- endif %} // // Generate methods description for MultiQC From aeab91365f98ba6740c556eeeffe09889e262a7a Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 21 Feb 2024 10:41:25 +0100 Subject: [PATCH 05/43] unit-tests --- nf_core/pipeline-template/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nf_core/pipeline-template/README.md b/nf_core/pipeline-template/README.md index 7f01b3a4bd..a3b141cf38 100644 --- a/nf_core/pipeline-template/README.md +++ b/nf_core/pipeline-template/README.md @@ -14,7 +14,7 @@ {% if branded -%}[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/{{ short_name }}/results){% endif -%} {%- if github_badges -%} [![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX) -[![nf-test](https://img.shields.io/badge/unit_testing-nf--test-337ab7.svg)](https://www.nf-test.com) +[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com) [![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A523.04.0-23aa62.svg)](https://www.nextflow.io/) [![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) From e5d78f0ad96d7339942804889599949d7da5804c Mon Sep 17 00:00:00 2001 From: maxulysse Date: Wed, 21 Feb 2024 10:43:37 +0100 Subject: [PATCH 06/43] use jinja --- .../subworkflows/local/utils_nfcore_pipeline_pipeline/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nf_core/pipeline-template/subworkflows/local/utils_nfcore_pipeline_pipeline/main.nf b/nf_core/pipeline-template/subworkflows/local/utils_nfcore_pipeline_pipeline/main.nf index e97420a14f..5bc51caab8 100644 --- a/nf_core/pipeline-template/subworkflows/local/utils_nfcore_pipeline_pipeline/main.nf +++ b/nf_core/pipeline-template/subworkflows/local/utils_nfcore_pipeline_pipeline/main.nf @@ -1,5 +1,5 @@ // -// Subworkflow with functionality specific to the nf-core/pipeline pipeline +// Subworkflow with functionality specific to the {{ name }} pipeline // /* From 15195a29e43cca5e642688f665c1911b0d6a8304 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 22 Feb 2024 13:36:41 +0000 Subject: [PATCH 07/43] chore(deps): update seqeralabs/action-tower-launch digest to aa88624 --- nf_core/pipeline-template/.github/workflows/awsfulltest.yml | 2 +- nf_core/pipeline-template/.github/workflows/awstest.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nf_core/pipeline-template/.github/workflows/awsfulltest.yml b/nf_core/pipeline-template/.github/workflows/awsfulltest.yml index 52aa8fa196..6121942ca1 100644 --- a/nf_core/pipeline-template/.github/workflows/awsfulltest.yml +++ b/nf_core/pipeline-template/.github/workflows/awsfulltest.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Launch workflow via tower - uses: seqeralabs/action-tower-launch@922e5c8d5ac4e918107ec311d2ebbd65e5982b3d # v2 + uses: seqeralabs/action-tower-launch@aa88624706d400097880b69f1204f7f25436e93f # v2 # TODO nf-core: You can customise AWS full pipeline tests as required # Add full size test data (but still relatively small datasets for few samples) # on the `test_full.config` test runs with only one set of parameters {%- raw %} diff --git a/nf_core/pipeline-template/.github/workflows/awstest.yml b/nf_core/pipeline-template/.github/workflows/awstest.yml index 5488095197..0f775d783b 100644 --- a/nf_core/pipeline-template/.github/workflows/awstest.yml +++ b/nf_core/pipeline-template/.github/workflows/awstest.yml @@ -12,7 +12,7 @@ jobs: steps: # Launch workflow using Tower CLI tool action {%- raw %} - name: Launch workflow via tower - uses: seqeralabs/action-tower-launch@922e5c8d5ac4e918107ec311d2ebbd65e5982b3d # v2 + uses: seqeralabs/action-tower-launch@aa88624706d400097880b69f1204f7f25436e93f # v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} From ef0b87b8408ab3f940df645fcf327f1da2b023c7 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Fri, 23 Feb 2024 16:40:45 +0000 Subject: [PATCH 08/43] [automated] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 950322d873..43f9e20e9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ ### General +- chore(deps): update seqeralabs/action-tower-launch digest to aa88624 ([#2793](https://github.com/nf-core/tools/pull/2793)) + ## [v2.13 - Tin Puppy](https://github.com/nf-core/tools/releases/tag/2.13) - [2024-02-20] ### Template From daa28ea6bf0314f33bba8bbadd06adad2e0fc10d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 23 Feb 2024 18:40:33 +0000 Subject: [PATCH 09/43] chore(deps): update codecov/codecov-action digest to 0cfda1d --- .github/workflows/pytest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 5351bb985c..5faeef49da 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -198,7 +198,7 @@ jobs: coverage report coverage xml - - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # v4 + - uses: codecov/codecov-action@0cfda1dd0a4ad9efc75517f399d859cd1ea4ced1 # v4 with: files: coverage.xml env: From b0a268b3b113bf235095daa02c61076c244d7bba Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Sat, 24 Feb 2024 22:33:16 +0000 Subject: [PATCH 10/43] [automated] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43f9e20e9c..55a550a4e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ ### General - chore(deps): update seqeralabs/action-tower-launch digest to aa88624 ([#2793](https://github.com/nf-core/tools/pull/2793)) +- chore(deps): update codecov/codecov-action digest to 0cfda1d ([#2794](https://github.com/nf-core/tools/pull/2794)) ## [v2.13 - Tin Puppy](https://github.com/nf-core/tools/releases/tag/2.13) - [2024-02-20] From a059e167c24307223e6fd6b9e13170ef8704a631 Mon Sep 17 00:00:00 2001 From: Ken Brewer Date: Sun, 25 Feb 2024 20:48:06 +0000 Subject: [PATCH 11/43] fix(devcontainer): remove deprecated linters With the migration of linting functionality out of the core vscode python extension to individual extensions (https://github.com/microsoft/vscode-python/wiki/Migration-to-Python-Tools-Extensions), these linter paths are no longer needed. In addition, with the adoption of ruff for python formatting & linting, these linters may also be no longer correct in some settings. --- .devcontainer/devcontainer.json | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0d11a7fe0a..fa1bfca649 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -11,15 +11,7 @@ "vscode": { // Set *default* container specific settings.json values on container create. "settings": { - "python.defaultInterpreterPath": "/opt/conda/bin/python", - "python.linting.enabled": true, - "python.linting.pylintEnabled": true, - "python.formatting.autopep8Path": "/opt/conda/bin/autopep8", - "python.formatting.yapfPath": "/opt/conda/bin/yapf", - "python.linting.flake8Path": "/opt/conda/bin/flake8", - "python.linting.pycodestylePath": "/opt/conda/bin/pycodestyle", - "python.linting.pydocstylePath": "/opt/conda/bin/pydocstyle", - "python.linting.pylintPath": "/opt/conda/bin/pylint" + "python.defaultInterpreterPath": "/opt/conda/bin/python" }, // Add the IDs of extensions you want installed when the container is created. From 4052a020c00e5d67c3496cd6aeb5c976049a67ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20H=C3=B6rtenhuber?= Date: Tue, 27 Feb 2024 08:33:35 +0000 Subject: [PATCH 12/43] copy changes over to template, update extensions in gitpod.yml --- .gitpod.yml | 3 --- .../pipeline-template/.devcontainer/devcontainer.json | 10 +--------- nf_core/pipeline-template/.gitpod.yml | 6 ++---- 3 files changed, 3 insertions(+), 16 deletions(-) diff --git a/.gitpod.yml b/.gitpod.yml index 39fb530da2..b2fbb73133 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -12,10 +12,7 @@ tasks: vscode: extensions: # based on nf-core.nf-core-extensionpack - - codezombiech.gitignore # Language support for .gitignore files - # - cssho.vscode-svgviewer # SVG viewer - esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code - - eamodio.gitlens # Quickly glimpse into whom, why, and when a line or code block was changed - EditorConfig.EditorConfig # override user/workspace settings with settings found in .editorconfig files - Gruntfuggly.todo-tree # Display TODO and FIXME in a tree view in the activity bar - mechatroner.rainbow-csv # Highlight columns in csv files in different colors diff --git a/nf_core/pipeline-template/.devcontainer/devcontainer.json b/nf_core/pipeline-template/.devcontainer/devcontainer.json index 4ecfbfe335..b290e09017 100644 --- a/nf_core/pipeline-template/.devcontainer/devcontainer.json +++ b/nf_core/pipeline-template/.devcontainer/devcontainer.json @@ -10,15 +10,7 @@ "vscode": { // Set *default* container specific settings.json values on container create. "settings": { - "python.defaultInterpreterPath": "/opt/conda/bin/python", - "python.linting.enabled": true, - "python.linting.pylintEnabled": true, - "python.formatting.autopep8Path": "/opt/conda/bin/autopep8", - "python.formatting.yapfPath": "/opt/conda/bin/yapf", - "python.linting.flake8Path": "/opt/conda/bin/flake8", - "python.linting.pycodestylePath": "/opt/conda/bin/pycodestyle", - "python.linting.pydocstylePath": "/opt/conda/bin/pydocstyle", - "python.linting.pylintPath": "/opt/conda/bin/pylint" + "python.defaultInterpreterPath": "/opt/conda/bin/python" }, // Add the IDs of extensions you want installed when the container is created. diff --git a/nf_core/pipeline-template/.gitpod.yml b/nf_core/pipeline-template/.gitpod.yml index 363d5b1d42..105a1821a1 100644 --- a/nf_core/pipeline-template/.gitpod.yml +++ b/nf_core/pipeline-template/.gitpod.yml @@ -10,13 +10,11 @@ tasks: vscode: extensions: # based on nf-core.nf-core-extensionpack - - codezombiech.gitignore # Language support for .gitignore files - # - cssho.vscode-svgviewer # SVG viewer - esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code - - eamodio.gitlens # Quickly glimpse into whom, why, and when a line or code block was changed - EditorConfig.EditorConfig # override user/workspace settings with settings found in .editorconfig files - Gruntfuggly.todo-tree # Display TODO and FIXME in a tree view in the activity bar - mechatroner.rainbow-csv # Highlight columns in csv files in different colors - # - nextflow.nextflow # Nextflow syntax highlighting + # - nextflow.nextflow # Nextflow syntax highlighting - oderwat.indent-rainbow # Highlight indentation level - streetsidesoftware.code-spell-checker # Spelling checker for source code + - charliermarsh.ruff # Code linter Ruff From 622601e664b65bd199d8f95b2efb3850329217dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20H=C3=B6rtenhuber?= Date: Tue, 27 Feb 2024 08:34:18 +0000 Subject: [PATCH 13/43] update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 55a550a4e9..89468b4cb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Template +- Remove obsolete editor settings in `devcontainer.json` and `gitpod.yml` ([#2795](https://github.com/nf-core/tools/pull/2795)) + ### Linting ### Components From a0381de06a288a796e4b57885512cb49e6c89cb9 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Fri, 16 Feb 2024 17:31:48 +0100 Subject: [PATCH 14/43] Write a new helper function: gather_registries() to read the config. --- nf_core/download.py | 449 +++++++++++++++++++++++++++++++++----------- 1 file changed, 337 insertions(+), 112 deletions(-) diff --git a/nf_core/download.py b/nf_core/download.py index bb7b2ae473..d70008597b 100644 --- a/nf_core/download.py +++ b/nf_core/download.py @@ -1,6 +1,5 @@ """Downloads a nf-core pipeline to the local file system.""" - import concurrent.futures import io import logging @@ -34,13 +33,17 @@ log = logging.getLogger(__name__) stderr = rich.console.Console( - stderr=True, style="dim", highlight=False, force_terminal=nf_core.utils.rich_force_colors() + stderr=True, + style="dim", + highlight=False, + force_terminal=nf_core.utils.rich_force_colors(), ) class DownloadError(RuntimeError): """A custom exception that is raised when nf-core download encounters a problem that we already took into consideration. - In this case, we do not want to print the traceback, but give the user some concise, helpful feedback instead.""" + In this case, we do not want to print the traceback, but give the user some concise, helpful feedback instead. + """ class DownloadProgress(rich.progress.Progress): @@ -120,9 +123,15 @@ def __init__( # if flag is not specified, do not assume deliberate choice and prompt config inclusion interactively. # this implies that non-interactive "no" choice is only possible implicitly (e.g. with --tower or if prompt is suppressed by !stderr.is_interactive). # only alternative would have been to make it a parameter with argument, e.g. -d="yes" or -d="no". - self.include_configs = True if download_configuration else False if bool(tower) else None + self.include_configs = ( + True if download_configuration else False if bool(tower) else None + ) # Specifying a cache index or container library implies that containers should be downloaded. - self.container_system = "singularity" if container_cache_index or bool(container_library) else container_system + self.container_system = ( + "singularity" + if container_cache_index or bool(container_library) + else container_system + ) # Manually specified container library (registry) if isinstance(container_library, str) and bool(len(container_library)): self.container_library = [container_library] @@ -131,7 +140,9 @@ def __init__( else: self.container_library = ["quay.io"] # if a container_cache_index is given, use the file and overrule choice. - self.container_cache_utilisation = "remote" if container_cache_index else container_cache_utilisation + self.container_cache_utilisation = ( + "remote" if container_cache_index else container_cache_utilisation + ) self.container_cache_index = container_cache_index # allows to specify a container library / registry or a respective mirror to download images from self.parallel_downloads = parallel_downloads @@ -154,8 +165,8 @@ def download_workflow(self): # Get workflow details try: self.prompt_pipeline_name() - self.pipeline, self.wf_revisions, self.wf_branches = nf_core.utils.get_repo_releases_branches( - self.pipeline, self.wfs + self.pipeline, self.wf_revisions, self.wf_branches = ( + nf_core.utils.get_repo_releases_branches(self.pipeline, self.wfs) ) self.prompt_revision() self.get_revision_hash() @@ -181,9 +192,16 @@ def download_workflow(self): f"Use containers: '{self.container_system}'", ] if self.container_system: - summary_log.append(f"Container library: '{', '.join(self.container_library)}'") - if self.container_system == "singularity" and os.environ.get("NXF_SINGULARITY_CACHEDIR") is not None: - summary_log.append(f"Using [blue]$NXF_SINGULARITY_CACHEDIR[/]': {os.environ['NXF_SINGULARITY_CACHEDIR']}'") + summary_log.append( + f"Container library: '{', '.join(self.container_library)}'" + ) + if ( + self.container_system == "singularity" + and os.environ.get("NXF_SINGULARITY_CACHEDIR") is not None + ): + summary_log.append( + f"Using [blue]$NXF_SINGULARITY_CACHEDIR[/]': {os.environ['NXF_SINGULARITY_CACHEDIR']}'" + ) if self.containers_remote: summary_log.append( f"Successfully read {len(self.containers_remote)} containers from the remote '$NXF_SINGULARITY_CACHEDIR' contents." @@ -201,9 +219,13 @@ def download_workflow(self): if not self.tower: # Only show entry, if option was prompted. - summary_log.append(f"Include default institutional configuration: '{self.include_configs}'") + summary_log.append( + f"Include default institutional configuration: '{self.include_configs}'" + ) else: - summary_log.append(f"Enabled for seqeralabs® Nextflow Tower: '{self.tower}'") + summary_log.append( + f"Enabled for seqeralabs® Nextflow Tower: '{self.tower}'" + ) # Check that the outdir doesn't already exist if os.path.exists(self.outdir): @@ -243,14 +265,20 @@ def download_workflow_static(self): # Download the pipeline files for each selected revision log.info("Downloading workflow files from GitHub") - for item in zip(self.revision, self.wf_sha.values(), self.wf_download_url.values()): - revision_dirname = self.download_wf_files(revision=item[0], wf_sha=item[1], download_url=item[2]) + for item in zip( + self.revision, self.wf_sha.values(), self.wf_download_url.values() + ): + revision_dirname = self.download_wf_files( + revision=item[0], wf_sha=item[1], download_url=item[2] + ) if self.include_configs: try: self.wf_use_local_configs(revision_dirname) except FileNotFoundError as e: - raise DownloadError("Error editing pipeline config file to use local configs!") from e + raise DownloadError( + "Error editing pipeline config file to use local configs!" + ) from e # Collect all required singularity images if self.container_system == "singularity": @@ -275,7 +303,9 @@ def download_workflow_tower(self, location=None): remote_url=f"https://github.com/{self.pipeline}.git", revision=self.revision if self.revision else None, commit=self.wf_sha.values() if bool(self.wf_sha) else None, - location=location if location else None, # manual location is required for the tests to work + location=( + location if location else None + ), # manual location is required for the tests to work in_cache=False, ) @@ -300,13 +330,17 @@ def download_workflow_tower(self, location=None): # Justify why compression is skipped for Tower downloads (Prompt is not shown, but CLI argument could have been set) if self.compress_type is not None: - log.info("Compression choice is ignored for Tower downloads since nothing can be reasonably compressed.") + log.info( + "Compression choice is ignored for Tower downloads since nothing can be reasonably compressed." + ) def prompt_pipeline_name(self): """Prompt for the pipeline name if not set with a flag""" if self.pipeline is None: - stderr.print("Specify the name of a nf-core pipeline or a GitHub repository name (user/repo).") + stderr.print( + "Specify the name of a nf-core pipeline or a GitHub repository name (user/repo)." + ) self.pipeline = nf_core.utils.prompt_remote_pipeline_name(self.wfs) def prompt_revision(self): @@ -335,18 +369,28 @@ def prompt_revision(self): if bool(choice): # have to make sure that self.revision is a list of strings, regardless if choice is str or list of strings. - self.revision.append(choice) if isinstance(choice, str) else self.revision.extend(choice) + ( + self.revision.append(choice) + if isinstance(choice, str) + else self.revision.extend(choice) + ) else: if bool(tag_set): self.revision = tag_set - log.info("No particular revision was selected, all available will be downloaded.") + log.info( + "No particular revision was selected, all available will be downloaded." + ) else: - raise AssertionError(f"No revisions of {self.pipeline} available for download.") + raise AssertionError( + f"No revisions of {self.pipeline} available for download." + ) def get_revision_hash(self): """Find specified revision / branch hash""" - for revision in self.revision: # revision is a list of strings, but may be of length 1 + for ( + revision + ) in self.revision: # revision is a list of strings, but may be of length 1 # Branch if revision in self.wf_branches.keys(): self.wf_sha = {**self.wf_sha, revision: self.wf_branches[revision]} @@ -362,18 +406,27 @@ def get_revision_hash(self): else: log.info( "Available {} revisions: '{}'".format( - self.pipeline, "', '".join([r["tag_name"] for r in self.wf_revisions]) + self.pipeline, + "', '".join([r["tag_name"] for r in self.wf_revisions]), + ) + ) + log.info( + "Available {} branches: '{}'".format( + self.pipeline, "', '".join(self.wf_branches.keys()) ) ) - log.info("Available {} branches: '{}'".format(self.pipeline, "', '".join(self.wf_branches.keys()))) - raise AssertionError(f"Not able to find revision / branch '{revision}' for {self.pipeline}") + raise AssertionError( + f"Not able to find revision / branch '{revision}' for {self.pipeline}" + ) # Set the outdir if not self.outdir: if len(self.wf_sha) > 1: self.outdir = f"{self.pipeline.replace('/', '-').lower()}_{datetime.now().strftime('%Y-%m-%d_%H-%M')}" else: - self.outdir = f"{self.pipeline.replace('/', '-').lower()}_{self.revision[0]}" + self.outdir = ( + f"{self.pipeline.replace('/', '-').lower()}_{self.revision[0]}" + ) if not self.tower: for revision, wf_sha in self.wf_sha.items(): @@ -398,7 +451,9 @@ def prompt_container_download(self): """Prompt whether to download container images or not""" if self.container_system is None and stderr.is_interactive and not self.tower: - stderr.print("\nIn addition to the pipeline code, this tool can download software containers.") + stderr.print( + "\nIn addition to the pipeline code, this tool can download software containers." + ) self.container_system = questionary.select( "Download software container images:", choices=["none", "singularity"], @@ -425,9 +480,13 @@ def prompt_singularity_cachedir_creation(self): cachedir_path = None while cachedir_path is None: prompt_cachedir_path = questionary.path( - "Specify the path:", only_directories=True, style=nf_core.utils.nfcore_question_style + "Specify the path:", + only_directories=True, + style=nf_core.utils.nfcore_question_style, ).unsafe_ask() - cachedir_path = os.path.abspath(os.path.expanduser(prompt_cachedir_path)) + cachedir_path = os.path.abspath( + os.path.expanduser(prompt_cachedir_path) + ) if prompt_cachedir_path == "": log.error("Not using [blue]$NXF_SINGULARITY_CACHEDIR[/]") cachedir_path = False @@ -477,7 +536,9 @@ def prompt_singularity_cachedir_creation(self): + f'export NXF_SINGULARITY_CACHEDIR="{cachedir_path}"' + "\n#######################################\n" ) - log.info(f"Successfully wrote to [blue]{shellprofile_path}[/]") + log.info( + f"Successfully wrote to [blue]{shellprofile_path}[/]" + ) log.warning( "You will need reload your terminal after the download completes for this to take effect." ) @@ -485,7 +546,8 @@ def prompt_singularity_cachedir_creation(self): def prompt_singularity_cachedir_utilization(self): """Ask if we should *only* use $NXF_SINGULARITY_CACHEDIR without copying into target""" if ( - self.container_cache_utilisation is None # no choice regarding singularity cache has been made. + self.container_cache_utilisation + is None # no choice regarding singularity cache has been made. and self.container_system == "singularity" and os.environ.get("NXF_SINGULARITY_CACHEDIR") is not None and stderr.is_interactive @@ -517,9 +579,13 @@ def prompt_singularity_cachedir_remote(self): validate=SingularityCacheFilePathValidator, style=nf_core.utils.nfcore_question_style, ).unsafe_ask() - cachedir_index = os.path.abspath(os.path.expanduser(prompt_cachedir_index)) + cachedir_index = os.path.abspath( + os.path.expanduser(prompt_cachedir_index) + ) if prompt_cachedir_index == "": - log.error("Will disregard contents of a remote [blue]$NXF_SINGULARITY_CACHEDIR[/]") + log.error( + "Will disregard contents of a remote [blue]$NXF_SINGULARITY_CACHEDIR[/]" + ) self.container_cache_index = None self.container_cache_utilisation = "copy" elif not os.access(cachedir_index, os.R_OK): @@ -546,18 +612,30 @@ def read_remote_containers(self): n_total_images += 1 self.containers_remote.append(match.group(0)) if n_total_images == 0: - raise LookupError("Could not find valid container names in the index file.") + raise LookupError( + "Could not find valid container names in the index file." + ) self.containers_remote = sorted(list(set(self.containers_remote))) except (FileNotFoundError, LookupError) as e: - log.error(f"[red]Issue with reading the specified remote $NXF_SINGULARITY_CACHE index:[/]\n{e}\n") - if stderr.is_interactive and rich.prompt.Confirm.ask("[blue]Specify a new index file and try again?"): - self.container_cache_index = None # reset chosen path to index file. + log.error( + f"[red]Issue with reading the specified remote $NXF_SINGULARITY_CACHE index:[/]\n{e}\n" + ) + if stderr.is_interactive and rich.prompt.Confirm.ask( + "[blue]Specify a new index file and try again?" + ): + self.container_cache_index = ( + None # reset chosen path to index file. + ) self.prompt_singularity_cachedir_remote() else: - log.info("Proceeding without consideration of the remote $NXF_SINGULARITY_CACHE index.") + log.info( + "Proceeding without consideration of the remote $NXF_SINGULARITY_CACHE index." + ) self.container_cache_index = None if os.environ.get("NXF_SINGULARITY_CACHEDIR"): - self.container_cache_utilisation = "copy" # default to copy if possible, otherwise skip. + self.container_cache_utilisation = ( + "copy" # default to copy if possible, otherwise skip. + ) else: self.container_cache_utilisation = None @@ -599,14 +677,21 @@ def download_wf_files(self, revision, wf_sha, download_url): revision_dirname = re.sub("[^0-9a-zA-Z]+", "_", revision) # account for name collisions, if there is a branch / release named "configs" or "singularity-images" if revision_dirname in ["configs", "singularity-images"]: - revision_dirname = re.sub("[^0-9a-zA-Z]+", "_", self.pipeline + revision_dirname) + revision_dirname = re.sub( + "[^0-9a-zA-Z]+", "_", self.pipeline + revision_dirname + ) # Rename the internal directory name to be more friendly gh_name = f"{self.pipeline}-{wf_sha if bool(wf_sha) else ''}".split("/")[-1] - os.rename(os.path.join(self.outdir, gh_name), os.path.join(self.outdir, revision_dirname)) + os.rename( + os.path.join(self.outdir, gh_name), + os.path.join(self.outdir, revision_dirname), + ) # Make downloaded files executable - for dirpath, _, filelist in os.walk(os.path.join(self.outdir, revision_dirname)): + for dirpath, _, filelist in os.walk( + os.path.join(self.outdir, revision_dirname) + ): for fname in filelist: os.chmod(os.path.join(dirpath, fname), 0o775) @@ -624,7 +709,10 @@ def download_configs(self): zipfile.extractall(self.outdir) # Rename the internal directory name to be more friendly - os.rename(os.path.join(self.outdir, configs_local_dir), os.path.join(self.outdir, "configs")) + os.rename( + os.path.join(self.outdir, configs_local_dir), + os.path.join(self.outdir, "configs"), + ) # Make downloaded files executable for dirpath, _, filelist in os.walk(os.path.join(self.outdir, "configs")): @@ -647,7 +735,10 @@ def wf_use_local_configs(self, revision_dirname): nfconfig = nfconfig.replace(find_str, repl_str) # Append the singularity.cacheDir to the end if we need it - if self.container_system == "singularity" and self.container_cache_utilisation == "copy": + if ( + self.container_system == "singularity" + and self.container_cache_utilisation == "copy" + ): nfconfig += ( f"\n\n// Added by `nf-core download` v{nf_core.__version__} //\n" + 'singularity.cacheDir = "${projectDir}/../singularity-images/"' @@ -682,7 +773,9 @@ def find_container_images(self, workflow_directory): # Find any config variables that look like a container for k, v in self.nf_config.items(): - if (k.startswith("process.") or k.startswith("params.")) and k.endswith(".container"): + if (k.startswith("process.") or k.startswith("params.")) and k.endswith( + ".container" + ): """ Can be plain string / Docker URI or DSL2 syntax @@ -699,7 +792,9 @@ def find_container_images(self, workflow_directory): if bool(config_findings_dsl2): # finding fill always be a tuple of length 2, first the quote used and second the enquoted value. for finding in config_findings_dsl2: - config_findings.append(finding + (self.nf_config, "Nextflow configs")) + config_findings.append( + finding + (self.nf_config, "Nextflow configs") + ) else: # no regex match, likely just plain string """ Append string also as finding-like tuple for consistency @@ -707,7 +802,9 @@ def find_container_images(self, workflow_directory): self.nf_config is needed, because we need to restart search over raw input if no proper container matches are found. """ - config_findings.append((k, v.strip('"').strip("'"), self.nf_config, "Nextflow configs")) + config_findings.append( + (k, v.strip('"').strip("'"), self.nf_config, "Nextflow configs") + ) # rectify the container paths found in the config # Raw config_findings may yield multiple containers, so better create a shallow copy of the list, since length of input and output may be different ?!? @@ -734,10 +831,13 @@ def find_container_images(self, workflow_directory): re.DOTALL is used to account for the string to be spread out across multiple lines. """ container_regex = re.compile( - r"container\s+[\\s{}=$]*(?P[\'\"])(?P(?:.(?!\1))*.?)\1[\\s}]*", re.DOTALL + r"container\s+[\\s{}=$]*(?P[\'\"])(?P(?:.(?!\1))*.?)\1[\\s}]*", + re.DOTALL, ) - local_module_findings = re.findall(container_regex, search_space) + local_module_findings = re.findall( + container_regex, search_space + ) # finding fill always be a tuple of length 2, first the quote used and second the enquoted value. for finding in local_module_findings: @@ -750,7 +850,9 @@ def find_container_images(self, workflow_directory): module_findings = self.rectify_raw_container_matches(module_findings[:]) # Again clean list, in case config declares Docker URI but module or previous finding already had the http:// download - self.containers = self.prioritize_direct_download(previous_findings + config_findings + module_findings) + self.containers = self.prioritize_direct_download( + previous_findings + config_findings + module_findings + ) def rectify_raw_container_matches(self, raw_findings): """Helper function to rectify the raw extracted container matches into fully qualified container names. @@ -796,9 +898,7 @@ def rectify_raw_container_matches(self, raw_findings): cleaned_matches = [] # Thanks Stack Overflow for the regex: https://stackoverflow.com/a/3809435/713980 - url_regex = ( - r"https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)" - ) + url_regex = r"https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)" # Thanks Stack Overflow for the regex: https://stackoverflow.com/a/39672069/713980 docker_regex = r"^(?:(?=[^:\/]{1,253})(?!-)[a-zA-Z0-9-]{1,63}(?(?(?:.(?!(?(?(?:.(?!(? Date: Fri, 16 Feb 2024 20:09:20 +0100 Subject: [PATCH 15/43] nf-core download: Write function to symlink containers to different libraries (registries). --- nf_core/download.py | 424 ++++++++++++++++---------------------------- 1 file changed, 157 insertions(+), 267 deletions(-) diff --git a/nf_core/download.py b/nf_core/download.py index d70008597b..fb64b27ada 100644 --- a/nf_core/download.py +++ b/nf_core/download.py @@ -123,15 +123,9 @@ def __init__( # if flag is not specified, do not assume deliberate choice and prompt config inclusion interactively. # this implies that non-interactive "no" choice is only possible implicitly (e.g. with --tower or if prompt is suppressed by !stderr.is_interactive). # only alternative would have been to make it a parameter with argument, e.g. -d="yes" or -d="no". - self.include_configs = ( - True if download_configuration else False if bool(tower) else None - ) + self.include_configs = True if download_configuration else False if bool(tower) else None # Specifying a cache index or container library implies that containers should be downloaded. - self.container_system = ( - "singularity" - if container_cache_index or bool(container_library) - else container_system - ) + self.container_system = "singularity" if container_cache_index or bool(container_library) else container_system # Manually specified container library (registry) if isinstance(container_library, str) and bool(len(container_library)): self.container_library = [container_library] @@ -140,9 +134,7 @@ def __init__( else: self.container_library = ["quay.io"] # if a container_cache_index is given, use the file and overrule choice. - self.container_cache_utilisation = ( - "remote" if container_cache_index else container_cache_utilisation - ) + self.container_cache_utilisation = "remote" if container_cache_index else container_cache_utilisation self.container_cache_index = container_cache_index # allows to specify a container library / registry or a respective mirror to download images from self.parallel_downloads = parallel_downloads @@ -165,8 +157,8 @@ def download_workflow(self): # Get workflow details try: self.prompt_pipeline_name() - self.pipeline, self.wf_revisions, self.wf_branches = ( - nf_core.utils.get_repo_releases_branches(self.pipeline, self.wfs) + self.pipeline, self.wf_revisions, self.wf_branches = nf_core.utils.get_repo_releases_branches( + self.pipeline, self.wfs ) self.prompt_revision() self.get_revision_hash() @@ -192,16 +184,9 @@ def download_workflow(self): f"Use containers: '{self.container_system}'", ] if self.container_system: - summary_log.append( - f"Container library: '{', '.join(self.container_library)}'" - ) - if ( - self.container_system == "singularity" - and os.environ.get("NXF_SINGULARITY_CACHEDIR") is not None - ): - summary_log.append( - f"Using [blue]$NXF_SINGULARITY_CACHEDIR[/]': {os.environ['NXF_SINGULARITY_CACHEDIR']}'" - ) + summary_log.append(f"Container library: '{', '.join(self.container_library)}'") + if self.container_system == "singularity" and os.environ.get("NXF_SINGULARITY_CACHEDIR") is not None: + summary_log.append(f"Using [blue]$NXF_SINGULARITY_CACHEDIR[/]': {os.environ['NXF_SINGULARITY_CACHEDIR']}'") if self.containers_remote: summary_log.append( f"Successfully read {len(self.containers_remote)} containers from the remote '$NXF_SINGULARITY_CACHEDIR' contents." @@ -219,13 +204,9 @@ def download_workflow(self): if not self.tower: # Only show entry, if option was prompted. - summary_log.append( - f"Include default institutional configuration: '{self.include_configs}'" - ) + summary_log.append(f"Include default institutional configuration: '{self.include_configs}'") else: - summary_log.append( - f"Enabled for seqeralabs® Nextflow Tower: '{self.tower}'" - ) + summary_log.append(f"Enabled for seqeralabs® Nextflow Tower: '{self.tower}'") # Check that the outdir doesn't already exist if os.path.exists(self.outdir): @@ -265,24 +246,19 @@ def download_workflow_static(self): # Download the pipeline files for each selected revision log.info("Downloading workflow files from GitHub") - for item in zip( - self.revision, self.wf_sha.values(), self.wf_download_url.values() - ): - revision_dirname = self.download_wf_files( - revision=item[0], wf_sha=item[1], download_url=item[2] - ) + for item in zip(self.revision, self.wf_sha.values(), self.wf_download_url.values()): + revision_dirname = self.download_wf_files(revision=item[0], wf_sha=item[1], download_url=item[2]) if self.include_configs: try: self.wf_use_local_configs(revision_dirname) except FileNotFoundError as e: - raise DownloadError( - "Error editing pipeline config file to use local configs!" - ) from e + raise DownloadError("Error editing pipeline config file to use local configs!") from e # Collect all required singularity images if self.container_system == "singularity": self.find_container_images(os.path.join(self.outdir, revision_dirname)) + self.gather_registries(os.path.join(self.outdir, revision_dirname)) try: self.get_singularity_images(current_revision=item[0]) @@ -303,9 +279,7 @@ def download_workflow_tower(self, location=None): remote_url=f"https://github.com/{self.pipeline}.git", revision=self.revision if self.revision else None, commit=self.wf_sha.values() if bool(self.wf_sha) else None, - location=( - location if location else None - ), # manual location is required for the tests to work + location=(location if location else None), # manual location is required for the tests to work in_cache=False, ) @@ -322,6 +296,7 @@ def download_workflow_tower(self, location=None): self.workflow_repo.checkout(commit) # Collect all required singularity images self.find_container_images(self.workflow_repo.access()) + self.gather_registries(self.workflow_repo.access()) try: self.get_singularity_images(current_revision=revision) @@ -330,17 +305,13 @@ def download_workflow_tower(self, location=None): # Justify why compression is skipped for Tower downloads (Prompt is not shown, but CLI argument could have been set) if self.compress_type is not None: - log.info( - "Compression choice is ignored for Tower downloads since nothing can be reasonably compressed." - ) + log.info("Compression choice is ignored for Tower downloads since nothing can be reasonably compressed.") def prompt_pipeline_name(self): """Prompt for the pipeline name if not set with a flag""" if self.pipeline is None: - stderr.print( - "Specify the name of a nf-core pipeline or a GitHub repository name (user/repo)." - ) + stderr.print("Specify the name of a nf-core pipeline or a GitHub repository name (user/repo).") self.pipeline = nf_core.utils.prompt_remote_pipeline_name(self.wfs) def prompt_revision(self): @@ -369,28 +340,18 @@ def prompt_revision(self): if bool(choice): # have to make sure that self.revision is a list of strings, regardless if choice is str or list of strings. - ( - self.revision.append(choice) - if isinstance(choice, str) - else self.revision.extend(choice) - ) + (self.revision.append(choice) if isinstance(choice, str) else self.revision.extend(choice)) else: if bool(tag_set): self.revision = tag_set - log.info( - "No particular revision was selected, all available will be downloaded." - ) + log.info("No particular revision was selected, all available will be downloaded.") else: - raise AssertionError( - f"No revisions of {self.pipeline} available for download." - ) + raise AssertionError(f"No revisions of {self.pipeline} available for download.") def get_revision_hash(self): """Find specified revision / branch hash""" - for ( - revision - ) in self.revision: # revision is a list of strings, but may be of length 1 + for revision in self.revision: # revision is a list of strings, but may be of length 1 # Branch if revision in self.wf_branches.keys(): self.wf_sha = {**self.wf_sha, revision: self.wf_branches[revision]} @@ -410,23 +371,15 @@ def get_revision_hash(self): "', '".join([r["tag_name"] for r in self.wf_revisions]), ) ) - log.info( - "Available {} branches: '{}'".format( - self.pipeline, "', '".join(self.wf_branches.keys()) - ) - ) - raise AssertionError( - f"Not able to find revision / branch '{revision}' for {self.pipeline}" - ) + log.info("Available {} branches: '{}'".format(self.pipeline, "', '".join(self.wf_branches.keys()))) + raise AssertionError(f"Not able to find revision / branch '{revision}' for {self.pipeline}") # Set the outdir if not self.outdir: if len(self.wf_sha) > 1: self.outdir = f"{self.pipeline.replace('/', '-').lower()}_{datetime.now().strftime('%Y-%m-%d_%H-%M')}" else: - self.outdir = ( - f"{self.pipeline.replace('/', '-').lower()}_{self.revision[0]}" - ) + self.outdir = f"{self.pipeline.replace('/', '-').lower()}_{self.revision[0]}" if not self.tower: for revision, wf_sha in self.wf_sha.items(): @@ -451,9 +404,7 @@ def prompt_container_download(self): """Prompt whether to download container images or not""" if self.container_system is None and stderr.is_interactive and not self.tower: - stderr.print( - "\nIn addition to the pipeline code, this tool can download software containers." - ) + stderr.print("\nIn addition to the pipeline code, this tool can download software containers.") self.container_system = questionary.select( "Download software container images:", choices=["none", "singularity"], @@ -484,9 +435,7 @@ def prompt_singularity_cachedir_creation(self): only_directories=True, style=nf_core.utils.nfcore_question_style, ).unsafe_ask() - cachedir_path = os.path.abspath( - os.path.expanduser(prompt_cachedir_path) - ) + cachedir_path = os.path.abspath(os.path.expanduser(prompt_cachedir_path)) if prompt_cachedir_path == "": log.error("Not using [blue]$NXF_SINGULARITY_CACHEDIR[/]") cachedir_path = False @@ -536,9 +485,7 @@ def prompt_singularity_cachedir_creation(self): + f'export NXF_SINGULARITY_CACHEDIR="{cachedir_path}"' + "\n#######################################\n" ) - log.info( - f"Successfully wrote to [blue]{shellprofile_path}[/]" - ) + log.info(f"Successfully wrote to [blue]{shellprofile_path}[/]") log.warning( "You will need reload your terminal after the download completes for this to take effect." ) @@ -546,8 +493,7 @@ def prompt_singularity_cachedir_creation(self): def prompt_singularity_cachedir_utilization(self): """Ask if we should *only* use $NXF_SINGULARITY_CACHEDIR without copying into target""" if ( - self.container_cache_utilisation - is None # no choice regarding singularity cache has been made. + self.container_cache_utilisation is None # no choice regarding singularity cache has been made. and self.container_system == "singularity" and os.environ.get("NXF_SINGULARITY_CACHEDIR") is not None and stderr.is_interactive @@ -579,13 +525,9 @@ def prompt_singularity_cachedir_remote(self): validate=SingularityCacheFilePathValidator, style=nf_core.utils.nfcore_question_style, ).unsafe_ask() - cachedir_index = os.path.abspath( - os.path.expanduser(prompt_cachedir_index) - ) + cachedir_index = os.path.abspath(os.path.expanduser(prompt_cachedir_index)) if prompt_cachedir_index == "": - log.error( - "Will disregard contents of a remote [blue]$NXF_SINGULARITY_CACHEDIR[/]" - ) + log.error("Will disregard contents of a remote [blue]$NXF_SINGULARITY_CACHEDIR[/]") self.container_cache_index = None self.container_cache_utilisation = "copy" elif not os.access(cachedir_index, os.R_OK): @@ -612,30 +554,18 @@ def read_remote_containers(self): n_total_images += 1 self.containers_remote.append(match.group(0)) if n_total_images == 0: - raise LookupError( - "Could not find valid container names in the index file." - ) + raise LookupError("Could not find valid container names in the index file.") self.containers_remote = sorted(list(set(self.containers_remote))) except (FileNotFoundError, LookupError) as e: - log.error( - f"[red]Issue with reading the specified remote $NXF_SINGULARITY_CACHE index:[/]\n{e}\n" - ) - if stderr.is_interactive and rich.prompt.Confirm.ask( - "[blue]Specify a new index file and try again?" - ): - self.container_cache_index = ( - None # reset chosen path to index file. - ) + log.error(f"[red]Issue with reading the specified remote $NXF_SINGULARITY_CACHE index:[/]\n{e}\n") + if stderr.is_interactive and rich.prompt.Confirm.ask("[blue]Specify a new index file and try again?"): + self.container_cache_index = None # reset chosen path to index file. self.prompt_singularity_cachedir_remote() else: - log.info( - "Proceeding without consideration of the remote $NXF_SINGULARITY_CACHE index." - ) + log.info("Proceeding without consideration of the remote $NXF_SINGULARITY_CACHE index.") self.container_cache_index = None if os.environ.get("NXF_SINGULARITY_CACHEDIR"): - self.container_cache_utilisation = ( - "copy" # default to copy if possible, otherwise skip. - ) + self.container_cache_utilisation = "copy" # default to copy if possible, otherwise skip. else: self.container_cache_utilisation = None @@ -677,9 +607,7 @@ def download_wf_files(self, revision, wf_sha, download_url): revision_dirname = re.sub("[^0-9a-zA-Z]+", "_", revision) # account for name collisions, if there is a branch / release named "configs" or "singularity-images" if revision_dirname in ["configs", "singularity-images"]: - revision_dirname = re.sub( - "[^0-9a-zA-Z]+", "_", self.pipeline + revision_dirname - ) + revision_dirname = re.sub("[^0-9a-zA-Z]+", "_", self.pipeline + revision_dirname) # Rename the internal directory name to be more friendly gh_name = f"{self.pipeline}-{wf_sha if bool(wf_sha) else ''}".split("/")[-1] @@ -689,9 +617,7 @@ def download_wf_files(self, revision, wf_sha, download_url): ) # Make downloaded files executable - for dirpath, _, filelist in os.walk( - os.path.join(self.outdir, revision_dirname) - ): + for dirpath, _, filelist in os.walk(os.path.join(self.outdir, revision_dirname)): for fname in filelist: os.chmod(os.path.join(dirpath, fname), 0o775) @@ -735,10 +661,7 @@ def wf_use_local_configs(self, revision_dirname): nfconfig = nfconfig.replace(find_str, repl_str) # Append the singularity.cacheDir to the end if we need it - if ( - self.container_system == "singularity" - and self.container_cache_utilisation == "copy" - ): + if self.container_system == "singularity" and self.container_cache_utilisation == "copy": nfconfig += ( f"\n\n// Added by `nf-core download` v{nf_core.__version__} //\n" + 'singularity.cacheDir = "${projectDir}/../singularity-images/"' @@ -773,9 +696,7 @@ def find_container_images(self, workflow_directory): # Find any config variables that look like a container for k, v in self.nf_config.items(): - if (k.startswith("process.") or k.startswith("params.")) and k.endswith( - ".container" - ): + if (k.startswith("process.") or k.startswith("params.")) and k.endswith(".container"): """ Can be plain string / Docker URI or DSL2 syntax @@ -792,9 +713,7 @@ def find_container_images(self, workflow_directory): if bool(config_findings_dsl2): # finding fill always be a tuple of length 2, first the quote used and second the enquoted value. for finding in config_findings_dsl2: - config_findings.append( - finding + (self.nf_config, "Nextflow configs") - ) + config_findings.append(finding + (self.nf_config, "Nextflow configs")) else: # no regex match, likely just plain string """ Append string also as finding-like tuple for consistency @@ -802,9 +721,7 @@ def find_container_images(self, workflow_directory): self.nf_config is needed, because we need to restart search over raw input if no proper container matches are found. """ - config_findings.append( - (k, v.strip('"').strip("'"), self.nf_config, "Nextflow configs") - ) + config_findings.append((k, v.strip('"').strip("'"), self.nf_config, "Nextflow configs")) # rectify the container paths found in the config # Raw config_findings may yield multiple containers, so better create a shallow copy of the list, since length of input and output may be different ?!? @@ -835,9 +752,7 @@ def find_container_images(self, workflow_directory): re.DOTALL, ) - local_module_findings = re.findall( - container_regex, search_space - ) + local_module_findings = re.findall(container_regex, search_space) # finding fill always be a tuple of length 2, first the quote used and second the enquoted value. for finding in local_module_findings: @@ -850,9 +765,7 @@ def find_container_images(self, workflow_directory): module_findings = self.rectify_raw_container_matches(module_findings[:]) # Again clean list, in case config declares Docker URI but module or previous finding already had the http:// download - self.containers = self.prioritize_direct_download( - previous_findings + config_findings + module_findings - ) + self.containers = self.prioritize_direct_download(previous_findings + config_findings + module_findings) def rectify_raw_container_matches(self, raw_findings): """Helper function to rectify the raw extracted container matches into fully qualified container names. @@ -898,7 +811,9 @@ def rectify_raw_container_matches(self, raw_findings): cleaned_matches = [] # Thanks Stack Overflow for the regex: https://stackoverflow.com/a/3809435/713980 - url_regex = r"https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)" + url_regex = ( + r"https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)" + ) # Thanks Stack Overflow for the regex: https://stackoverflow.com/a/39672069/713980 docker_regex = r"^(?:(?=[^:\/]{1,253})(?!-)[a-zA-Z0-9-]{1,63}(? Date: Mon, 19 Feb 2024 17:46:43 +0100 Subject: [PATCH 16/43] Refactor: Always trim registry from output name. Naming collisions are presumably unlikely, names including the registry are now consistently always symlinks. --- nf_core/download.py | 63 +++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/nf_core/download.py b/nf_core/download.py index fb64b27ada..96e6469dee 100644 --- a/nf_core/download.py +++ b/nf_core/download.py @@ -133,6 +133,8 @@ def __init__( self.container_library = [*container_library] else: self.container_library = ["quay.io"] + # Create a new set and add all values from self.container_library (CLI arguments to --container-library) + self.registry_set = set(self.container_library) if hasattr(self, "container_library") else set() # if a container_cache_index is given, use the file and overrule choice. self.container_cache_utilisation = "remote" if container_cache_index else container_cache_utilisation self.container_cache_index = container_cache_index @@ -985,9 +987,6 @@ def gather_registries(self, workflow_directory): if not self.nf_config: self.nf_config = nf_core.utils.fetch_wf_config(workflow_directory) - # Create a new set and add all values from self.container_library (CLI arguments to --container-library) - self.registry_set = set(self.container_library) if hasattr(self, "container_library") else set() - # Select registries defined in pipeline config configured_registries = [ "apptainer.registry", @@ -1000,6 +999,9 @@ def gather_registries(self, workflow_directory): if registry in self.nf_config: self.registry_set.add(self.nf_config[registry]) + # add depot.galaxyproject.org to the set, because it is the default registry for singularity hardcoded in modules + self.registry_set.add("depot.galaxyproject.org") + def symlink_singularity_images(self, image_out_path): """Create a symlink for each registry in the registry set that points to the image. We have dropped the explicit registries from the modules in favor of the configurable registries. @@ -1014,35 +1016,31 @@ def symlink_singularity_images(self, image_out_path): """ if self.registry_set: - # add depot.galaxyproject.org to the set, because it is the default registry for singularity hardcoded in modules - self.registry_set.add("depot.galaxyproject.org") - - # Create a regex pattern from the set + # Create a regex pattern from the set, in case trimming is needed. trim_pattern = "|".join(f"{re.escape(registry)}-?" for registry in self.registry_set) - # Use the pattern to trim the string - trimmed_image_name = re.sub(f"^{trim_pattern}", "", os.path.basename(image_out_path)) - for registry in self.registry_set: - # avoid symlinking the same file to itself if not os.path.basename(image_out_path).startswith(registry): - symlink_name = f"./{registry}-{trimmed_image_name}" - - symlink_full = os.path.join(os.path.dirname(image_out_path), symlink_name) - target_name = os.path.join("./", os.path.basename(image_out_path)) - - if not os.path.exists(symlink_full): - os.makedirs(os.path.dirname(symlink_full), exist_ok=True) - image_dir = os.open(os.path.dirname(image_out_path), os.O_RDONLY) - try: - os.symlink( - target_name, - symlink_name, - dir_fd=image_dir, - ) - log.debug(f"Symlinked {target_name} as {symlink_name}.") - finally: - os.close(image_dir) + symlink_name = f"./{registry}-{os.path.basename(image_out_path)}" + else: + trimmed_name = re.sub(f"^{trim_pattern}", "", os.path.basename(image_out_path)) + symlink_name = f"./{registry}-{trimmed_name}" + + symlink_full = os.path.join(os.path.dirname(image_out_path), symlink_name) + target_name = os.path.join("./", os.path.basename(image_out_path)) + + if not os.path.exists(symlink_full): + os.makedirs(os.path.dirname(symlink_full), exist_ok=True) + image_dir = os.open(os.path.dirname(image_out_path), os.O_RDONLY) + try: + os.symlink( + target_name, + symlink_name, + dir_fd=image_dir, + ) + log.debug(f"Symlinked {target_name} as {symlink_name}.") + finally: + os.close(image_dir) def get_singularity_images(self, current_revision=""): """Loop through container names and download Singularity images""" @@ -1234,6 +1232,15 @@ def singularity_image_filenames(self, container): # Add file extension out_name = out_name + extension + # Trim potential registries from the name for consistency. + # This will allow pipelines to work offline without symlinked images, + # if docker.registry / singularity.registry are set to empty strings at runtime, which can be included in the HPC config profiles easily. + if self.registry_set: + # Create a regex pattern from the set of registries + trim_pattern = "|".join(f"{re.escape(registry)}-?" for registry in self.registry_set) + # Use the pattern to trim the string + out_name = re.sub(f"^{trim_pattern}", "", out_name) + # Full destination and cache paths out_path = os.path.abspath(os.path.join(self.outdir, "singularity-images", out_name)) cache_path = None From 7954bcbc5fc541cecb4961eed5fd5df1b6b17c85 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Tue, 20 Feb 2024 16:00:40 +0100 Subject: [PATCH 17/43] Modify the pytest.yml action such that Singularity is used for the nf-core download tests. --- .github/workflows/pytest.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 5faeef49da..d5345bdb33 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -108,6 +108,12 @@ jobs: sudo add-apt-repository --remove ppa:git-core/ppa sudo apt install -y git + - name: Set up Singularity + if: ${{ matrix.test == 'test_download.py'}} + uses: eWaterCycle/setup-singularity@931d4e31109e875b13309ae1d07c70ca8fbc8537 # v7 + with: + singularity-version: 3.8.3 + - name: Get current date id: date run: echo "date=$(date +'%Y-%m')" >> $GITHUB_ENV From 5cfccd3357839757d346e62987731e1183bcf453 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Tue, 20 Feb 2024 18:26:29 +0100 Subject: [PATCH 18/43] Extend ContainerError to match ghcr.io error message. --- nf_core/download.py | 1 + 1 file changed, 1 insertion(+) diff --git a/nf_core/download.py b/nf_core/download.py index 96e6469dee..14fa907426 100644 --- a/nf_core/download.py +++ b/nf_core/download.py @@ -1722,6 +1722,7 @@ def __init__( elif ( re.search(r"requested\saccess\sto\sthe\sresource\sis\sdenied", line) or re.search(r"StatusCode:\s404", line) + or re.search(r"400|Bad\s?Request", line) or re.search(r"invalid\sstatus\scode\sfrom\sregistry\s400", line) ): # Unfortunately, every registry seems to return an individual error here: From 08170240c6512cbcc4fc43f811051a90aef01a13 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Wed, 21 Feb 2024 11:51:36 +0100 Subject: [PATCH 19/43] Add test_gather_registries() to test_download.py --- nf_core/download.py | 6 +++--- tests/test_download.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/nf_core/download.py b/nf_core/download.py index 14fa907426..cb2fb173b2 100644 --- a/nf_core/download.py +++ b/nf_core/download.py @@ -713,7 +713,7 @@ def find_container_images(self, workflow_directory): config_findings_dsl2 = re.findall(config_regex, v) if bool(config_findings_dsl2): - # finding fill always be a tuple of length 2, first the quote used and second the enquoted value. + # finding will always be a tuple of length 2, first the quote used and second the enquoted value. for finding in config_findings_dsl2: config_findings.append(finding + (self.nf_config, "Nextflow configs")) else: # no regex match, likely just plain string @@ -1021,10 +1021,10 @@ def symlink_singularity_images(self, image_out_path): for registry in self.registry_set: if not os.path.basename(image_out_path).startswith(registry): - symlink_name = f"./{registry}-{os.path.basename(image_out_path)}" + symlink_name = f"{registry}-{os.path.basename(image_out_path)}" else: trimmed_name = re.sub(f"^{trim_pattern}", "", os.path.basename(image_out_path)) - symlink_name = f"./{registry}-{trimmed_name}" + symlink_name = f"{registry}-{trimmed_name}" symlink_full = os.path.join(os.path.dirname(image_out_path), symlink_name) target_name = os.path.join("./", os.path.basename(image_out_path)) diff --git a/tests/test_download.py b/tests/test_download.py index 7f34f7fbc6..826884b618 100644 --- a/tests/test_download.py +++ b/tests/test_download.py @@ -352,6 +352,38 @@ def test_get_singularity_images(self, tmp_path, mock_fetch_wf_config): # Test that they are all caught inside get_singularity_images(). download_obj.get_singularity_images() + # + # Test for gather_registries' + # + @with_temporary_folder + @mock.patch("nf_core.utils.fetch_wf_config") + def test_gather_registries(self, tmp_path, mock_fetch_wf_config): + download_obj = DownloadWorkflow( + pipeline="dummy", + outdir=tmp_path, + container_library=None, + ) + mock_fetch_wf_config.return_value = { + "apptainer.registry": "apptainer-registry.io", + "docker.registry": "docker.io", + "podman.registry": "podman-registry.io", + "singularity.registry": "singularity-registry.io", + "someother.registry": "fake-registry.io", + } + download_obj.gather_registries(tmp_path) + assert download_obj.registry_set + assert isinstance(download_obj.registry_set, set) + assert len(download_obj.registry_set) == 6 + + assert "quay.io" in download_obj.registry_set # default registry, if no container library is provided. + assert "depot.galaxyproject.org" in download_obj.registry_set # default registry, often hardcoded in modules + assert "apptainer-registry.io" in download_obj.registry_set + assert "docker.io" in download_obj.registry_set + assert "podman-registry.io" in download_obj.registry_set + assert "singularity-registry.io" in download_obj.registry_set + # it should only pull the apptainer, docker, podman and singularity registry from the config, but not any registry. + assert "fake-registry.io" not in download_obj.registry_set + # If Singularity is not installed, it raises a OSError because the singularity command can't be found. @pytest.mark.skipif( shutil.which("singularity") is not None, From d1fb738282771b400ce6f2779024003017da553c Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Wed, 21 Feb 2024 21:40:54 +0100 Subject: [PATCH 20/43] Finally a comprehensive test for symlink_singularity_images() --- nf_core/download.py | 6 ++--- tests/test_download.py | 56 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/nf_core/download.py b/nf_core/download.py index cb2fb173b2..eac0516fb6 100644 --- a/nf_core/download.py +++ b/nf_core/download.py @@ -1021,15 +1021,15 @@ def symlink_singularity_images(self, image_out_path): for registry in self.registry_set: if not os.path.basename(image_out_path).startswith(registry): - symlink_name = f"{registry}-{os.path.basename(image_out_path)}" + symlink_name = os.path.join("./", f"{registry}-{os.path.basename(image_out_path)}") else: trimmed_name = re.sub(f"^{trim_pattern}", "", os.path.basename(image_out_path)) - symlink_name = f"{registry}-{trimmed_name}" + symlink_name = os.path.join("./", f"{registry}-{trimmed_name}") symlink_full = os.path.join(os.path.dirname(image_out_path), symlink_name) target_name = os.path.join("./", os.path.basename(image_out_path)) - if not os.path.exists(symlink_full): + if not os.path.exists(symlink_full) and target_name != symlink_name: os.makedirs(os.path.dirname(symlink_full), exist_ok=True) image_dir = os.open(os.path.dirname(image_out_path), os.O_RDONLY) try: diff --git a/tests/test_download.py b/tests/test_download.py index 826884b618..3a11f4d41a 100644 --- a/tests/test_download.py +++ b/tests/test_download.py @@ -352,6 +352,60 @@ def test_get_singularity_images(self, tmp_path, mock_fetch_wf_config): # Test that they are all caught inside get_singularity_images(). download_obj.get_singularity_images() + @with_temporary_folder + @mock.patch("os.makedirs") + @mock.patch("os.symlink") + @mock.patch("os.open") + @mock.patch("os.close") + @mock.patch("re.sub") + @mock.patch("os.path.basename") + @mock.patch("os.path.dirname") + def test_symlink_singularity_images( + self, + tmp_path, + mock_dirname, + mock_basename, + mock_resub, + mock_close, + mock_open, + mock_symlink, + mock_makedirs, + ): + # Setup + mock_resub.return_value = "singularity-image.img" + mock_dirname.return_value = f"{tmp_path}/path/to" + mock_basename.return_value = "quay.io-singularity-image.img" + mock_open.return_value = 12 # file descriptor + mock_close.return_value = 12 # file descriptor + + download_obj = DownloadWorkflow( + pipeline="dummy", + outdir=tmp_path, + container_library=("mirage-the-imaginative-registry.io", "quay.io"), + ) + + # Call the method + download_obj.symlink_singularity_images(f"{tmp_path}/path/to/quay.io-singularity-image.img") + print(mock_resub.call_args) + + # Check that os.makedirs was called with the correct arguments + mock_makedirs.assert_any_call(f"{tmp_path}/path/to", exist_ok=True) + + # Check that os.open was called with the correct arguments + mock_open.assert_called_once_with(f"{tmp_path}/path/to", os.O_RDONLY) + + # Check that os.symlink was called with the correct arguments + mock_symlink.assert_any_call( + "./quay.io-singularity-image.img", + "./mirage-the-imaginative-registry.io-quay.io-singularity-image.img", + dir_fd=12, + ) + # Check that there is no attempt to symlink to itself (test parameters would result in that behavior if not checked in the function) + assert ( + unittest.mock.call("./quay.io-singularity-image.img", "./quay.io-singularity-image.img", dir_fd=12) + not in mock_symlink.call_args_list + ) + # # Test for gather_registries' # @@ -384,7 +438,9 @@ def test_gather_registries(self, tmp_path, mock_fetch_wf_config): # it should only pull the apptainer, docker, podman and singularity registry from the config, but not any registry. assert "fake-registry.io" not in download_obj.registry_set + # # If Singularity is not installed, it raises a OSError because the singularity command can't be found. + # @pytest.mark.skipif( shutil.which("singularity") is not None, reason="Can't test how the code behaves when singularity is not installed if it is.", From 5a3fa12bdcaf557675f0495905cd6aeafb6a472f Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Wed, 21 Feb 2024 22:12:54 +0100 Subject: [PATCH 21/43] Changelog. --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89468b4cb0..f6c0b056b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ - Remove obsolete editor settings in `devcontainer.json` and `gitpod.yml` ([#2795](https://github.com/nf-core/tools/pull/2795)) +### Download + +- Improved offline container image resolution by introducing symlinks, fixes issues [#2751](https://github.com/nf-core/tools/issues/2751), [#2644](https://github.com/nf-core/tools/issues/2644) and [demultiplex#164](https://github.com/nf-core/demultiplex/issues/164): ([#2768](https://github.com/nf-core/tools/pull/2768)) + ### Linting ### Components From d1179a48628e1c7048c62bfd91382453b564f56c Mon Sep 17 00:00:00 2001 From: Matthias Zepper <6963520+MatthiasZepper@users.noreply.github.com> Date: Mon, 26 Feb 2024 12:15:24 +0100 Subject: [PATCH 22/43] Apply @Aratz 's suggestions from code review Co-authored-by: Adrien Coulier --- nf_core/download.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nf_core/download.py b/nf_core/download.py index eac0516fb6..4afee7fab0 100644 --- a/nf_core/download.py +++ b/nf_core/download.py @@ -1023,7 +1023,7 @@ def symlink_singularity_images(self, image_out_path): if not os.path.basename(image_out_path).startswith(registry): symlink_name = os.path.join("./", f"{registry}-{os.path.basename(image_out_path)}") else: - trimmed_name = re.sub(f"^{trim_pattern}", "", os.path.basename(image_out_path)) + trimmed_name = re.sub(f"^({trim_pattern})", "", os.path.basename(image_out_path)) symlink_name = os.path.join("./", f"{registry}-{trimmed_name}") symlink_full = os.path.join(os.path.dirname(image_out_path), symlink_name) @@ -1239,7 +1239,7 @@ def singularity_image_filenames(self, container): # Create a regex pattern from the set of registries trim_pattern = "|".join(f"{re.escape(registry)}-?" for registry in self.registry_set) # Use the pattern to trim the string - out_name = re.sub(f"^{trim_pattern}", "", out_name) + out_name = re.sub(f"^({trim_pattern})", "", out_name) # Full destination and cache paths out_path = os.path.abspath(os.path.join(self.outdir, "singularity-images", out_name)) From e3c7f5b9dd454260806cfbde3292c14611d506fb Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Mon, 26 Feb 2024 19:28:04 +0100 Subject: [PATCH 23/43] Improved the documentation of the singularity_image_filenames() function. --- nf_core/download.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/nf_core/download.py b/nf_core/download.py index 4afee7fab0..31192676c0 100644 --- a/nf_core/download.py +++ b/nf_core/download.py @@ -1017,13 +1017,13 @@ def symlink_singularity_images(self, image_out_path): if self.registry_set: # Create a regex pattern from the set, in case trimming is needed. - trim_pattern = "|".join(f"{re.escape(registry)}-?" for registry in self.registry_set) + trim_pattern = "|".join(f"^{re.escape(registry)}-?" for registry in self.registry_set) for registry in self.registry_set: if not os.path.basename(image_out_path).startswith(registry): symlink_name = os.path.join("./", f"{registry}-{os.path.basename(image_out_path)}") else: - trimmed_name = re.sub(f"^({trim_pattern})", "", os.path.basename(image_out_path)) + trimmed_name = re.sub(f"{trim_pattern}", "", os.path.basename(image_out_path)) symlink_name = os.path.join("./", f"{registry}-{trimmed_name}") symlink_full = os.path.join(os.path.dirname(image_out_path), symlink_name) @@ -1209,8 +1209,11 @@ def singularity_image_filenames(self, container): or a Docker Hub repository ID. Returns: - results (bool, str): Returns True if we have the image in the target location. - Returns a download path if not. + tuple (str, str): Returns a tuple of (out_path, cache_path). + out_path is the final target output path. it may point to the NXF_SINGULARITY_CACHEDIR, if cache utilisation was set to 'amend'. + If cache utilisation was set to 'copy', it will point to the target folder, a subdirectory of the output directory. In the latter case, + cache_path may either be None (image is not yet cached locally) or point to the image in the NXF_SINGULARITY_CACHEDIR, so it will not be + downloaded from the web again, but directly copied from there. See get_singularity_images() for implementation. """ # Generate file paths @@ -1237,9 +1240,9 @@ def singularity_image_filenames(self, container): # if docker.registry / singularity.registry are set to empty strings at runtime, which can be included in the HPC config profiles easily. if self.registry_set: # Create a regex pattern from the set of registries - trim_pattern = "|".join(f"{re.escape(registry)}-?" for registry in self.registry_set) + trim_pattern = "|".join(f"^{re.escape(registry)}-?" for registry in self.registry_set) # Use the pattern to trim the string - out_name = re.sub(f"^({trim_pattern})", "", out_name) + out_name = re.sub(f"{trim_pattern}", "", out_name) # Full destination and cache paths out_path = os.path.abspath(os.path.join(self.outdir, "singularity-images", out_name)) From dceb7b3686fc2f38056cb5bbead658beb174fb9e Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Tue, 27 Feb 2024 12:49:00 +0100 Subject: [PATCH 24/43] Added a test for the so far untested singularity_image_filenames() function. --- tests/test_download.py | 62 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tests/test_download.py b/tests/test_download.py index 3a11f4d41a..d823040247 100644 --- a/tests/test_download.py +++ b/tests/test_download.py @@ -454,6 +454,68 @@ def test_singularity_pull_image_singularity_not_installed(self, tmp_dir, mock_ri "a-container", f"{tmp_dir}/anothercontainer.sif", None, "quay.io", mock_rich_progress ) + # + # Test for 'singularity_image_filenames' function + # + @with_temporary_folder + def test_singularity_image_filenames(self, tmp_path): + os.environ["NXF_SINGULARITY_CACHEDIR"] = f"{tmp_path}/cachedir" + + download_obj = DownloadWorkflow(pipeline="dummy", outdir=tmp_path) + download_obj.outdir = tmp_path + download_obj.container_cache_utilisation = "amend" + download_obj.registry_set = {"docker.io", "quay.io", "depot.galaxyproject.org"} + + ## Test phase I: Container not yet cached, should be amended to cache + # out_path: str, Path to cache + # cache_path: None + + result = download_obj.singularity_image_filenames( + "https://depot.galaxyproject.org/singularity/bbmap:38.93--he522d1c_0" + ) + + # Assert that the result is a tuple of length 2 + self.assertIsInstance(result, tuple) + self.assertEqual(len(result), 2) + + # Assert that the types of the elements are (str, None) + self.assertTrue(all((isinstance(element, str), element is None) for element in result)) + + # assert that the correct out_path is returned that points to the cache + assert result[0].endswith("/cachedir/singularity-bbmap-38.93--he522d1c_0.img") + + ## Test phase II: Test various container names + # out_path: str, Path to cache + # cache_path: None + result = download_obj.singularity_image_filenames( + "quay.io/biocontainers/mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2:59cdd445419f14abac76b31dd0d71217994cbcc9-0" + ) + assert result[0].endswith( + "/cachedir/biocontainers-mulled-v2-1fa26d1ce03c295fe2fdcf85831a92fbcbd7e8c2-59cdd445419f14abac76b31dd0d71217994cbcc9-0.img" + ) + + result = download_obj.singularity_image_filenames("nf-core/ubuntu:20.04") + assert result[0].endswith("/cachedir/nf-core-ubuntu-20.04.img") + + ## Test phase III: Container wil lbe cached but also copied to out_path + # out_path: str, Path to cache + # cache_path: str, Path to cache + download_obj.container_cache_utilisation = "copy" + result = download_obj.singularity_image_filenames( + "https://depot.galaxyproject.org/singularity/bbmap:38.93--he522d1c_0" + ) + + self.assertTrue(all(isinstance(element, str) for element in result)) + assert result[0].endswith("/singularity-images/singularity-bbmap-38.93--he522d1c_0.img") + assert result[1].endswith("/cachedir/singularity-bbmap-38.93--he522d1c_0.img") + + ## Test phase IV: Expect an error if no NXF_SINGULARITY_CACHEDIR is defined + os.environ["NXF_SINGULARITY_CACHEDIR"] = "" + with self.assertRaises(FileNotFoundError): + download_obj.singularity_image_filenames( + "https://depot.galaxyproject.org/singularity/bbmap:38.93--he522d1c_0" + ) + # # Test for '--singularity-cache remote --singularity-cache-index'. Provide a list of containers already available in a remote location. # From 27e6f7e75515b83306fff5e1b4ddd6ad40e6d542 Mon Sep 17 00:00:00 2001 From: Nicolas Vannieuwkerke <101190534+nvnieuwk@users.noreply.github.com> Date: Tue, 27 Feb 2024 15:08:20 +0100 Subject: [PATCH 25/43] Fixed a typo in the template --- nf_core/pipeline-template/.github/CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nf_core/pipeline-template/.github/CONTRIBUTING.md b/nf_core/pipeline-template/.github/CONTRIBUTING.md index 881ecbb022..44b796fd43 100644 --- a/nf_core/pipeline-template/.github/CONTRIBUTING.md +++ b/nf_core/pipeline-template/.github/CONTRIBUTING.md @@ -98,7 +98,7 @@ Once there, use `nf-core schema build` to add to `nextflow_schema.json`. Sensible defaults for process resource requirements (CPUs / memory / time) for a process should be defined in `conf/base.config`. These should generally be specified generic with `withLabel:` selectors so they can be shared across multiple processes/steps of the pipeline. A nf-core standard set of labels that should be followed where possible can be seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/master/nf_core/pipeline-template/conf/base.config), which has the default process as a single core-process, and then different levels of multi-core configurations for increasingly large memory requirements defined with standardised labels. -The process resources can be passed on to the tool dynamically within the process with the `${task.cpu}` and `${task.memory}` variables in the `script:` block. +The process resources can be passed on to the tool dynamically within the process with the `${task.cpus}` and `${task.memory}` variables in the `script:` block. ### Naming schemes From 37f2651a31af9e71b227b77fc5486173b23ef477 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 14:10:33 +0000 Subject: [PATCH 26/43] chore(deps): update gitpod/workspace-base docker digest to c15ee2f --- nf_core/gitpod/gitpod.Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nf_core/gitpod/gitpod.Dockerfile b/nf_core/gitpod/gitpod.Dockerfile index c441d40df1..f04c7dcd04 100644 --- a/nf_core/gitpod/gitpod.Dockerfile +++ b/nf_core/gitpod/gitpod.Dockerfile @@ -1,7 +1,7 @@ # Test build locally before making a PR # docker build -t gitpod:test -f nf_core/gitpod/gitpod.Dockerfile . -FROM gitpod/workspace-base@sha256:728e1fab64f6924128b987264603a6f277bd881de95feaf39129a1ffdde36e14 +FROM gitpod/workspace-base@sha256:c15ee2f4de8902421ccbfbd77329a9e8e4abf18477e1b5ae8a1a572790254647 USER root From 145fa489482a9e999f5910742f8134403437686e Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Tue, 27 Feb 2024 15:15:42 +0000 Subject: [PATCH 27/43] [automated] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89468b4cb0..3fe084d81a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - chore(deps): update seqeralabs/action-tower-launch digest to aa88624 ([#2793](https://github.com/nf-core/tools/pull/2793)) - chore(deps): update codecov/codecov-action digest to 0cfda1d ([#2794](https://github.com/nf-core/tools/pull/2794)) +- chore(deps): update gitpod/workspace-base docker digest to c15ee2f ([#2799](https://github.com/nf-core/tools/pull/2799)) ## [v2.13 - Tin Puppy](https://github.com/nf-core/tools/releases/tag/2.13) - [2024-02-20] From e64f1a7e9ea6905926949ca4373b560358ad0cf2 Mon Sep 17 00:00:00 2001 From: Matthias Zepper Date: Tue, 27 Feb 2024 17:47:19 +0100 Subject: [PATCH 28/43] Added a few type hints and opened Pandoras box. --- nf_core/download.py | 60 +++++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/nf_core/download.py b/nf_core/download.py index 31192676c0..d08e0ba40e 100644 --- a/nf_core/download.py +++ b/nf_core/download.py @@ -10,6 +10,7 @@ import tarfile import textwrap from datetime import datetime +from typing import List, Optional, Tuple from zipfile import ZipFile import git @@ -978,7 +979,7 @@ def prioritize_direct_download(self, container_list): d[k] = c return sorted(list(d.values())) - def gather_registries(self, workflow_directory): + def gather_registries(self, workflow_directory: str) -> None: """Fetch the registries from the pipeline config and CLI arguments and store them in a set. This is needed to symlink downloaded container images so Nextflow will find them. """ @@ -1002,7 +1003,7 @@ def gather_registries(self, workflow_directory): # add depot.galaxyproject.org to the set, because it is the default registry for singularity hardcoded in modules self.registry_set.add("depot.galaxyproject.org") - def symlink_singularity_images(self, image_out_path): + def symlink_singularity_images(self, image_out_path: str) -> None: """Create a symlink for each registry in the registry set that points to the image. We have dropped the explicit registries from the modules in favor of the configurable registries. Unfortunately, Nextflow still expects the registry to be part of the file name, so a symlink is needed. @@ -1042,7 +1043,7 @@ def symlink_singularity_images(self, image_out_path): finally: os.close(image_dir) - def get_singularity_images(self, current_revision=""): + def get_singularity_images(self, current_revision: str = "") -> None: """Loop through container names and download Singularity images""" if len(self.containers) == 0: @@ -1060,10 +1061,10 @@ def get_singularity_images(self, current_revision=""): ) # Organise containers based on what we need to do with them - containers_exist = [] - containers_cache = [] - containers_download = [] - containers_pull = [] + containers_exist: List[str] = [] + containers_cache: List[Tuple[str, str, Optional[str]]] = [] + containers_download: List[Tuple[str, str, Optional[str]]] = [] + containers_pull: List[Tuple[str, str, Optional[str]]] = [] for container in self.containers: # Fetch the output and cached filenames for this container out_path, cache_path = self.singularity_image_filenames(container) @@ -1086,16 +1087,16 @@ def get_singularity_images(self, current_revision=""): # We have a copy of this in the NXF_SINGULARITY_CACHE dir if cache_path and os.path.exists(cache_path): - containers_cache.append([container, out_path, cache_path]) + containers_cache.append((container, out_path, cache_path)) continue # Direct download within Python if container.startswith("http"): - containers_download.append([container, out_path, cache_path]) + containers_download.append((container, out_path, cache_path)) continue # Pull using singularity - containers_pull.append([container, out_path, cache_path]) + containers_pull.append((container, out_path, cache_path)) # Exit if we need to pull images and Singularity is not installed if len(containers_pull) > 0: @@ -1127,8 +1128,8 @@ def get_singularity_images(self, current_revision=""): # Kick off concurrent downloads future_downloads = [ - pool.submit(self.singularity_download_image, *container, progress) - for container in containers_download + pool.submit(self.singularity_download_image, *containers, progress) + for containers in containers_download ] # Make ctrl-c work with multi-threading @@ -1153,13 +1154,13 @@ def get_singularity_images(self, current_revision=""): # Re-raise exception on the main thread raise - for container in containers_pull: + for containers in containers_pull: progress.update(task, description="Pulling singularity images") # it is possible to try multiple registries / mirrors if multiple were specified. # Iteration happens over a copy of self.container_library[:], as I want to be able to remove failing registries for subsequent images. for library in self.container_library[:]: try: - self.singularity_pull_image(*container, library, progress) + self.singularity_pull_image(*containers, library, progress) # Pulling the image was successful, no ContainerError was raised, break the library loop break except ContainerError.ImageExistsError: @@ -1196,12 +1197,12 @@ def get_singularity_images(self, current_revision=""): # The else clause executes after the loop completes normally. # This means the library loop completed without breaking, indicating failure for all libraries (registries) log.error( - f"Not able to pull image of {container}. Service might be down or internet connection is dead." + f"Not able to pull image of {containers}. Service might be down or internet connection is dead." ) # Task should advance in any case. Failure to pull will not kill the download process. progress.update(task, advance=1) - def singularity_image_filenames(self, container): + def singularity_image_filenames(self, container: str) -> Tuple[str, Optional[str]]: """Check Singularity cache for image, copy to destination folder if found. Args: @@ -1258,7 +1259,7 @@ def singularity_image_filenames(self, container): return (out_path, cache_path) - def singularity_copy_cache_image(self, container, out_path, cache_path): + def singularity_copy_cache_image(self, container: str, out_path: str, cache_path: Optional[str]) -> None: """Copy Singularity image from NXF_SINGULARITY_CACHEDIR to target folder.""" # Copy to destination folder if we have a cached version if cache_path and os.path.exists(cache_path): @@ -1267,7 +1268,9 @@ def singularity_copy_cache_image(self, container, out_path, cache_path): # Create symlinks to ensure that the images are found even with different registries being used. self.symlink_singularity_images(out_path) - def singularity_download_image(self, container, out_path, cache_path, progress): + def singularity_download_image( + self, container: str, out_path: str, cache_path: Optional[str], progress: DownloadProgress + ) -> None: """Download a singularity image from the web. Use native Python to download the file. @@ -1314,7 +1317,6 @@ def singularity_download_image(self, container, out_path, cache_path, progress): # Rename partial filename to final filename os.rename(output_path_tmp, output_path) - output_path_tmp = None # Copy cached download if we are using the cache if cache_path: @@ -1339,8 +1341,12 @@ def singularity_download_image(self, container, out_path, cache_path, progress): os.remove(output_path) # Re-raise the caught exception raise + finally: + del output_path_tmp - def singularity_pull_image(self, container, out_path, cache_path, library, progress): + def singularity_pull_image( + self, container: str, out_path: str, cache_path: Optional[str], library: List[str], progress: DownloadProgress + ) -> None: """Pull a singularity image using ``singularity pull`` Attempt to use a local installation of singularity to pull the image. @@ -1355,6 +1361,11 @@ def singularity_pull_image(self, container, out_path, cache_path, library, progr """ output_path = cache_path or out_path + # where the output of 'singularity pull' is first generated before being copied to the NXF_SINGULARITY_CACHDIR. + # if not defined by the Singularity administrators, then use the temporary directory to avoid storing the images in the work directory. + if os.environ.get("SINGULARITY_CACHEDIR") is None: + os.environ["SINGULARITY_CACHEDIR"] = NFCORE_CACHE_DIR + # Sometimes, container still contain an explicit library specification, which # resulted in attempted pulls e.g. from docker://quay.io/quay.io/qiime2/core:2022.11 # Thus, if an explicit registry is specified, the provided -l value is ignored. @@ -1399,9 +1410,10 @@ def singularity_pull_image(self, container, out_path, cache_path, library, progr bufsize=1, ) as proc: lines = [] - for line in proc.stdout: - lines.append(line) - progress.update(task, current_log=line.strip()) + if proc.stdout is not None: + for line in proc.stdout: + lines.append(line) + progress.update(task, current_log=line.strip()) if lines: # something went wrong with the container retrieval @@ -1428,7 +1440,7 @@ def singularity_pull_image(self, container, out_path, cache_path, library, progr progress.remove_task(task) - def compress_download(self): + def compress_download(self) -> None: """Take the downloaded files and make a compressed .tar.gz archive.""" log.debug(f"Creating archive: {self.output_filename}") From e064b76a7f4d2d5b41d10976400101ac83a18498 Mon Sep 17 00:00:00 2001 From: FriederikeHanssen Date: Wed, 28 Feb 2024 13:48:48 +0000 Subject: [PATCH 29/43] Unpin pinned dependecies for tower actions --- nf_core/pipeline-template/.github/workflows/awsfulltest.yml | 4 ++-- nf_core/pipeline-template/.github/workflows/awstest.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nf_core/pipeline-template/.github/workflows/awsfulltest.yml b/nf_core/pipeline-template/.github/workflows/awsfulltest.yml index 6121942ca1..4c9fd69fcc 100644 --- a/nf_core/pipeline-template/.github/workflows/awsfulltest.yml +++ b/nf_core/pipeline-template/.github/workflows/awsfulltest.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Launch workflow via tower - uses: seqeralabs/action-tower-launch@aa88624706d400097880b69f1204f7f25436e93f # v2 + uses: seqeralabs/action-tower-launch@v2 # TODO nf-core: You can customise AWS full pipeline tests as required # Add full size test data (but still relatively small datasets for few samples) # on the `test_full.config` test runs with only one set of parameters {%- raw %} @@ -31,7 +31,7 @@ jobs: } profiles: test_full - - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4 + - uses: actions/upload-artifact@v4 with: name: Tower debug log file path: | diff --git a/nf_core/pipeline-template/.github/workflows/awstest.yml b/nf_core/pipeline-template/.github/workflows/awstest.yml index 0f775d783b..25726aa1c9 100644 --- a/nf_core/pipeline-template/.github/workflows/awstest.yml +++ b/nf_core/pipeline-template/.github/workflows/awstest.yml @@ -12,7 +12,7 @@ jobs: steps: # Launch workflow using Tower CLI tool action {%- raw %} - name: Launch workflow via tower - uses: seqeralabs/action-tower-launch@aa88624706d400097880b69f1204f7f25436e93f # v2 + uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} @@ -25,7 +25,7 @@ jobs: } profiles: test - - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4 + - uses: actions/upload-artifact@v4 with: name: Tower debug log file path: | From c6bc426a4d96fa81d3a5c7c6ea8ea3fc71596554 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Wed, 28 Feb 2024 13:51:47 +0000 Subject: [PATCH 30/43] [automated] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fe084d81a..6d7730dfe2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ - chore(deps): update seqeralabs/action-tower-launch digest to aa88624 ([#2793](https://github.com/nf-core/tools/pull/2793)) - chore(deps): update codecov/codecov-action digest to 0cfda1d ([#2794](https://github.com/nf-core/tools/pull/2794)) - chore(deps): update gitpod/workspace-base docker digest to c15ee2f ([#2799](https://github.com/nf-core/tools/pull/2799)) +- Unpin dependencies ([#2806](https://github.com/nf-core/tools/pull/2806)) ## [v2.13 - Tin Puppy](https://github.com/nf-core/tools/releases/tag/2.13) - [2024-02-20] From 54c671d005a1ffae663e7dcc4577d8c9c0653533 Mon Sep 17 00:00:00 2001 From: Sateesh Date: Wed, 28 Feb 2024 15:32:50 +0000 Subject: [PATCH 31/43] add nf-test test instructions to contributing and PR template --- nf_core/pipeline-template/.github/CONTRIBUTING.md | 7 +++++-- nf_core/pipeline-template/.github/PULL_REQUEST_TEMPLATE.md | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/nf_core/pipeline-template/.github/CONTRIBUTING.md b/nf_core/pipeline-template/.github/CONTRIBUTING.md index 44b796fd43..6b39de4af6 100644 --- a/nf_core/pipeline-template/.github/CONTRIBUTING.md +++ b/nf_core/pipeline-template/.github/CONTRIBUTING.md @@ -31,8 +31,11 @@ If you're not used to this workflow with git, you can start with some [docs from ## Tests -You can optionally test your changes by running the pipeline locally. Then it is recommended to use the `debug` profile to -receive warnings about process selectors and other debug info. Example: `nextflow run . -profile debug,test,docker --outdir `. +You have the option to test your changes locally by running the pipeline. For receiving warnings about process selectors and other `debug` information, it is recommended to use the debug profile. Execute all the tests with the following command: + +``` +nf-test test --profile debug,test,docker --verbose +``` When you create a pull request with changes, [GitHub Actions](https://github.com/features/actions) will run automatic tests. Typically, pull-requests are only fully reviewed when these tests are passing, though of course we can help out before then. diff --git a/nf_core/pipeline-template/.github/PULL_REQUEST_TEMPLATE.md b/nf_core/pipeline-template/.github/PULL_REQUEST_TEMPLATE.md index 4f01a97993..d04335275a 100644 --- a/nf_core/pipeline-template/.github/PULL_REQUEST_TEMPLATE.md +++ b/nf_core/pipeline-template/.github/PULL_REQUEST_TEMPLATE.md @@ -20,7 +20,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/{{ name }}/t - [ ] If necessary, also make a PR on the {{ name }} _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. {%- endif %} - [ ] Make sure your code lints (`nf-core lint`). -- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). +- [ ] Ensure the test suite passes (`nf-test test main.nf.test -profile test,docker`). - [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). - [ ] Usage Documentation in `docs/usage.md` is updated. - [ ] Output Documentation in `docs/output.md` is updated. From f7d7f0b0a7c495c572fa1b7bbec13b50b54f79b0 Mon Sep 17 00:00:00 2001 From: Sateesh Date: Thu, 29 Feb 2024 04:17:01 +0000 Subject: [PATCH 32/43] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fe084d81a..e42b5e9d3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Template - Remove obsolete editor settings in `devcontainer.json` and `gitpod.yml` ([#2795](https://github.com/nf-core/tools/pull/2795)) +- Add nf-test test instructions to contributing and PR template ([#2807](https://github.com/nf-core/tools/pull/2807)) ### Linting From 0bfaa166925dfb6d7c28fb4a2c53156b4f572cc3 Mon Sep 17 00:00:00 2001 From: mashehu Date: Thu, 29 Feb 2024 11:42:14 +0100 Subject: [PATCH 33/43] bump version to 2.13.1 [skip changelog] --- .github/RELEASE_CHECKLIST.md | 2 +- .gitpod.yml | 2 +- CHANGELOG.md | 2 +- setup.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/RELEASE_CHECKLIST.md b/.github/RELEASE_CHECKLIST.md index 775dd9ecd4..9a1905c7a0 100644 --- a/.github/RELEASE_CHECKLIST.md +++ b/.github/RELEASE_CHECKLIST.md @@ -3,7 +3,7 @@ 1. Check issue milestones to see outstanding issues to resolve if possible or transfer to the milestones for the next release e.g. [`v1.9`](https://github.com/nf-core/tools/issues?q=is%3Aopen+is%3Aissue+milestone%3A1.9) 2. Most importantly, pick an undeniably outstanding [name](http://www.codenamegenerator.com/) for the release where _Prefix_ = _Metal_ and _Dictionary_ = _Animal_. 3. Check the [pipeline health page](https://nf-co.re/pipeline_health) to make sure that all repos look sane (missing `TEMPLATE` branches etc) -4. Check that modules/subworkflows in tempalte are up to date with the latest releases +4. Check that modules/subworkflows in template are up to date with the latest releases 5. Create a PR to `dev` to bump the version in `CHANGELOG.md` and `setup.py` and change the gitpod container to `nfcore/gitpod:latest`. 6. Make sure all CI tests are passing! 7. Create a PR from `dev` to `master` diff --git a/.gitpod.yml b/.gitpod.yml index b2fbb73133..445cb35706 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,4 +1,4 @@ -image: nfcore/gitpod:dev +image: nfcore/gitpod:latest tasks: - name: install current state of nf-core/tools and setup pre-commit command: | diff --git a/CHANGELOG.md b/CHANGELOG.md index e42b5e9d3c..caa1100c96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # nf-core/tools: Changelog -## v3.0dev +## [v2.13 - Tin Puppy Patch](https://github.com/nf-core/tools/releases/tag/2.13) - [2024-02-20] ### Template diff --git a/setup.py b/setup.py index ce877d8ce6..c7f3fa41c6 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import find_packages, setup -version = "3.0dev" +version = "2.13.1" with open("README.md") as f: readme = f.read() From 7084d409bd699919d0f78c3e37f3fdec7a4b6751 Mon Sep 17 00:00:00 2001 From: mashehu Date: Thu, 29 Feb 2024 11:49:59 +0100 Subject: [PATCH 34/43] fix changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index caa1100c96..f9c90eb891 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # nf-core/tools: Changelog -## [v2.13 - Tin Puppy Patch](https://github.com/nf-core/tools/releases/tag/2.13) - [2024-02-20] +## [v2.13.1 - Tin Puppy Patch](https://github.com/nf-core/tools/releases/tag/2.13) - [2024-02-29] ### Template From 8b2295b50c629666880e6c833bb72c02d72a4d34 Mon Sep 17 00:00:00 2001 From: mashehu Date: Thu, 29 Feb 2024 12:12:15 +0100 Subject: [PATCH 35/43] Template: Fix topic extraction step for hashtags in toots --- CHANGELOG.md | 1 + .../.github/workflows/release-announcements.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa59d905ed..716002de2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Remove obsolete editor settings in `devcontainer.json` and `gitpod.yml` ([#2795](https://github.com/nf-core/tools/pull/2795)) - Add nf-test test instructions to contributing and PR template ([#2807](https://github.com/nf-core/tools/pull/2807)) +- Fix topic extraction step for hashtags in toots ([#2810](https://github.com/nf-core/tools/pull/2810)) ### Download diff --git a/nf_core/pipeline-template/.github/workflows/release-announcements.yml b/nf_core/pipeline-template/.github/workflows/release-announcements.yml index 6d11280ae8..58ef1731f7 100644 --- a/nf_core/pipeline-template/.github/workflows/release-announcements.yml +++ b/nf_core/pipeline-template/.github/workflows/release-announcements.yml @@ -12,7 +12,7 @@ jobs: - name: get topics and convert to hashtags id: get_topics run: | - curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.name == "${{ github.repository }}") | .topics[]' | awk '{print "#"$0}' | tr '\n' ' ' > $GITHUB_OUTPUT + curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .topics[]' | awk '{print "#"$0}' | tr '\n' ' ' >> $GITHUB_OUTPUT - uses: rzr/fediverse-action@master with: From e69ed9b09a403ec90c364a293bc1baee8e01cf1f Mon Sep 17 00:00:00 2001 From: mashehu Date: Thu, 29 Feb 2024 12:43:58 +0100 Subject: [PATCH 36/43] Template: Update modules and subworkflows --- CHANGELOG.md | 1 + nf_core/pipeline-template/modules.json | 8 ++-- .../modules/nf-core/multiqc/environment.yml | 2 +- .../modules/nf-core/multiqc/main.nf | 4 +- .../nf-core/multiqc/tests/main.nf.test.snap | 12 +++--- .../tests/main.function.nf.test | 2 +- .../tests/main.function.nf.test.snap | 12 +++++- .../tests/main.workflow.nf.test | 20 ++------- .../tests/nextflow.config | 2 +- .../tests/main.function.nf.test.snap | 42 +++++++++++++++---- .../tests/main.workflow.nf.test.snap | 6 ++- .../tests/main.nf.test | 2 +- 12 files changed, 71 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa59d905ed..d01d1a880c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Remove obsolete editor settings in `devcontainer.json` and `gitpod.yml` ([#2795](https://github.com/nf-core/tools/pull/2795)) - Add nf-test test instructions to contributing and PR template ([#2807](https://github.com/nf-core/tools/pull/2807)) +- Update modules and subworkflows in the template ([#2811](https://github.com/nf-core/tools/pull/2811)) ### Download diff --git a/nf_core/pipeline-template/modules.json b/nf_core/pipeline-template/modules.json index 97cbbe6df5..38aa622063 100644 --- a/nf_core/pipeline-template/modules.json +++ b/nf_core/pipeline-template/modules.json @@ -12,7 +12,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "ccacf6f5de6df3bc6d73b665c1fd2933d8bbc290", + "git_sha": "b7ebe95761cd389603f9cc0e0dc384c0f663815a", "installed_by": ["modules"] } } @@ -21,17 +21,17 @@ "nf-core": { "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "262b17ed2aad591039f914951659177e6c39a8d8", + "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", "installed_by": ["subworkflows"] }, "utils_nfvalidation_plugin": { "branch": "master", - "git_sha": "cd08c91373cd00a73255081340e4914485846ba1", + "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", "installed_by": ["subworkflows"] } } diff --git a/nf_core/pipeline-template/modules/nf-core/multiqc/environment.yml b/nf_core/pipeline-template/modules/nf-core/multiqc/environment.yml index 2212096af4..ca39fb67e2 100644 --- a/nf_core/pipeline-template/modules/nf-core/multiqc/environment.yml +++ b/nf_core/pipeline-template/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - bioconda - defaults dependencies: - - bioconda::multiqc=1.20 + - bioconda::multiqc=1.21 diff --git a/nf_core/pipeline-template/modules/nf-core/multiqc/main.nf b/nf_core/pipeline-template/modules/nf-core/multiqc/main.nf index 354f4430f9..47ac352f94 100644 --- a/nf_core/pipeline-template/modules/nf-core/multiqc/main.nf +++ b/nf_core/pipeline-template/modules/nf-core/multiqc/main.nf @@ -3,8 +3,8 @@ process MULTIQC { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.20--pyhdfd78af_0' : - 'biocontainers/multiqc:1.20--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.21--pyhdfd78af_0' : + 'biocontainers/multiqc:1.21--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" diff --git a/nf_core/pipeline-template/modules/nf-core/multiqc/tests/main.nf.test.snap b/nf_core/pipeline-template/modules/nf-core/multiqc/tests/main.nf.test.snap index c204b4881e..bfebd80298 100644 --- a/nf_core/pipeline-template/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/nf_core/pipeline-template/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "multiqc_versions_single": { "content": [ [ - "versions.yml:md5,d320d4c37e349c5588e07e7a31cd4186" + "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-14T09:28:51.744211298" + "timestamp": "2024-02-29T08:48:55.657331" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,d320d4c37e349c5588e07e7a31cd4186" + "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-14T09:29:28.847433492" + "timestamp": "2024-02-29T08:49:49.071937" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,d320d4c37e349c5588e07e7a31cd4186" + "versions.yml:md5,21f35ee29416b9b3073c28733efe4b7d" ] ], "meta": { "nf-test": "0.8.4", "nextflow": "23.10.1" }, - "timestamp": "2024-02-14T09:29:13.223621555" + "timestamp": "2024-02-29T08:49:25.457567" } } \ No newline at end of file diff --git a/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test b/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test index 8ed4310cac..68718e4f59 100644 --- a/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test +++ b/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test @@ -51,4 +51,4 @@ nextflow_function { ) } } -} \ No newline at end of file +} diff --git a/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap b/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap index db2030f8b0..e3f0baf473 100644 --- a/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap +++ b/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.function.nf.test.snap @@ -3,10 +3,18 @@ "content": [ "v9.9.9" ], - "timestamp": "2024-01-19T11:32:36.031083" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:02:05.308243" }, "Test Function checkCondaChannels": { "content": null, - "timestamp": "2024-01-19T11:32:50.456" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:02:12.425833" } } \ No newline at end of file diff --git a/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test b/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test index f7c54bc68f..ca964ce8e1 100644 --- a/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test +++ b/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/main.workflow.nf.test @@ -11,9 +11,6 @@ nextflow_workflow { test("Should run no inputs") { when { - params { - outdir = "tests/results" - } workflow { """ print_version = false @@ -39,9 +36,6 @@ nextflow_workflow { test("Should print version") { when { - params { - outdir = "tests/results" - } workflow { """ print_version = true @@ -68,19 +62,16 @@ nextflow_workflow { test("Should dump params") { when { - params { - outdir = "$outputDir" - } workflow { """ print_version = false dump_parameters = true - outdir = params.outdir + outdir = 'results' check_conda_channels = false input[0] = false input[1] = true - input[2] = params.outdir + input[2] = outdir input[3] = false """ } @@ -96,19 +87,16 @@ nextflow_workflow { test("Should not create params JSON if no output directory") { when { - params { - outdir = "$outputDir" - } workflow { """ print_version = false dump_parameters = true - outdir = params.outdir + outdir = null check_conda_channels = false input[0] = false input[1] = true - input[2] = null + input[2] = outdir input[3] = false """ } diff --git a/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config b/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config index 53574ffec4..d0a926bf6d 100644 --- a/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config +++ b/nf_core/pipeline-template/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config @@ -6,4 +6,4 @@ manifest { nextflowVersion = '!>=23.04.0' version = '9.9.9' doi = 'https://doi.org/10.5281/zenodo.5070524' -} \ No newline at end of file +} diff --git a/nf_core/pipeline-template/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap b/nf_core/pipeline-template/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap index 10f948e629..1037232c9e 100644 --- a/nf_core/pipeline-template/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap +++ b/nf_core/pipeline-template/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.function.nf.test.snap @@ -1,25 +1,41 @@ { "Test Function checkProfileProvided": { "content": null, - "timestamp": "2024-02-09T15:43:55.145717" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:03.360873" }, "Test Function checkConfigProvided": { "content": [ true ], - "timestamp": "2024-01-19T11:34:13.548431224" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:02:59.729647" }, "Test Function nfCoreLogo": { "content": [ "\n\n-\u001b[2m----------------------------------------------------\u001b[0m-\n \u001b[0;32m,--.\u001b[0;30m/\u001b[0;32m,-.\u001b[0m\n\u001b[0;34m ___ __ __ __ ___ \u001b[0;32m/,-._.--~'\u001b[0m\n\u001b[0;34m |\\ | |__ __ / ` / \\ |__) |__ \u001b[0;33m} {\u001b[0m\n\u001b[0;34m | \\| | \\__, \\__/ | \\ |___ \u001b[0;32m\\`-._,-`-,\u001b[0m\n \u001b[0;32m`._,._,'\u001b[0m\n\u001b[0;35m nextflow_workflow v9.9.9\u001b[0m\n-\u001b[2m----------------------------------------------------\u001b[0m-\n" ], - "timestamp": "2024-01-19T11:34:38.840454873" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:10.562934" }, "Test Function workflowCitation": { "content": [ "If you use nextflow_workflow for your analysis please cite:\n\n* The pipeline\n https://doi.org/10.5281/zenodo.5070524\n\n* The nf-core framework\n https://doi.org/10.1038/s41587-020-0439-x\n\n* Software dependencies\n https://github.com/nextflow_workflow/blob/master/CITATIONS.md" ], - "timestamp": "2024-01-19T11:34:22.24352016" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:07.019761" }, "Test Function without logColours": { "content": [ @@ -73,13 +89,21 @@ "biwhite": "" } ], - "timestamp": "2024-01-19T11:35:04.418416984" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:17.969323" }, "Test Function dashedLine": { "content": [ "-\u001b[2m----------------------------------------------------\u001b[0m-" ], - "timestamp": "2024-01-19T11:34:55.420000755" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:14.366181" }, "Test Function with logColours": { "content": [ @@ -133,6 +157,10 @@ "biwhite": "\u001b[1;97m" } ], - "timestamp": "2024-01-19T11:35:13.436366565" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:21.714424" } } \ No newline at end of file diff --git a/nf_core/pipeline-template/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap b/nf_core/pipeline-template/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap index d07ce54c51..859d1030fb 100644 --- a/nf_core/pipeline-template/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap +++ b/nf_core/pipeline-template/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.workflow.nf.test.snap @@ -10,6 +10,10 @@ ] } ], - "timestamp": "2024-01-19T11:35:22.538940073" + "meta": { + "nf-test": "0.8.4", + "nextflow": "23.10.1" + }, + "timestamp": "2024-02-28T12:03:25.726491" } } \ No newline at end of file diff --git a/nf_core/pipeline-template/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test b/nf_core/pipeline-template/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test index 517ee54e48..5784a33f2f 100644 --- a/nf_core/pipeline-template/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test +++ b/nf_core/pipeline-template/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test @@ -197,4 +197,4 @@ nextflow_workflow { ) } } -} \ No newline at end of file +} From 149724b25a04dd749dd106f9451f15ccf2741581 Mon Sep 17 00:00:00 2001 From: mashehu Date: Thu, 29 Feb 2024 12:48:33 +0100 Subject: [PATCH 37/43] fix md syntax in contributing --- nf_core/pipeline-template/.github/CONTRIBUTING.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/nf_core/pipeline-template/.github/CONTRIBUTING.md b/nf_core/pipeline-template/.github/CONTRIBUTING.md index 6b39de4af6..6244a6544e 100644 --- a/nf_core/pipeline-template/.github/CONTRIBUTING.md +++ b/nf_core/pipeline-template/.github/CONTRIBUTING.md @@ -11,9 +11,8 @@ Contributions to the code are even more welcome ;) {% if branded -%} -:::info -If you need help using or modifying {{ name }} then the best place to ask is on the nf-core Slack [#{{ short_name }}](https://nfcore.slack.com/channels/{{ short_name }}) channel ([join our Slack here](https://nf-co.re/join/slack)). -::: +> [!NOTE] +> If you need help using or modifying {{ name }} then the best place to ask is on the nf-core Slack [#{{ short_name }}](https://nfcore.slack.com/channels/{{ short_name }}) channel ([join our Slack here](https://nf-co.re/join/slack)). {% endif -%} @@ -33,7 +32,7 @@ If you're not used to this workflow with git, you can start with some [docs from You have the option to test your changes locally by running the pipeline. For receiving warnings about process selectors and other `debug` information, it is recommended to use the debug profile. Execute all the tests with the following command: -``` +```bash nf-test test --profile debug,test,docker --verbose ``` From b30d765a655da7cdd271659f92feb495fd694be0 Mon Sep 17 00:00:00 2001 From: mashehu Date: Thu, 29 Feb 2024 12:49:31 +0100 Subject: [PATCH 38/43] only run automated changelog on PRs to dev --- .github/workflows/changelog.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index 6316d62f33..63bf8fa5ed 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -4,6 +4,8 @@ on: types: [created] pull_request_target: types: [opened] + branches: + - dev jobs: update_changelog: From 3725453013905d2aeb527a3260a30dd39533261e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20H=C3=B6rtenhuber?= Date: Thu, 29 Feb 2024 13:06:41 +0000 Subject: [PATCH 39/43] unpin setup-nextflow --- .github/actions/create-lint-wf/action.yml | 2 +- .github/workflows/create-test-lint-wf-template.yml | 2 +- .github/workflows/create-test-wf.yml | 2 +- .github/workflows/pytest.yml | 2 +- .github/workflows/rich-codex.yml | 2 +- .github/workflows/sync.yml | 2 +- nf_core/pipeline-template/.github/workflows/ci.yml | 2 +- .../pipeline-template/.github/workflows/download_pipeline.yml | 2 +- nf_core/pipeline-template/.github/workflows/linting.yml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/actions/create-lint-wf/action.yml b/.github/actions/create-lint-wf/action.yml index 3b63f198cc..51bf2ae5f7 100644 --- a/.github/actions/create-lint-wf/action.yml +++ b/.github/actions/create-lint-wf/action.yml @@ -17,7 +17,7 @@ runs: # Set up Nextflow - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 with: version: ${{ matrix.NXF_VER }} diff --git a/.github/workflows/create-test-lint-wf-template.yml b/.github/workflows/create-test-lint-wf-template.yml index 6f27236462..188cccfd75 100644 --- a/.github/workflows/create-test-lint-wf-template.yml +++ b/.github/workflows/create-test-lint-wf-template.yml @@ -72,7 +72,7 @@ jobs: pip install . - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 with: version: latest-everything diff --git a/.github/workflows/create-test-wf.yml b/.github/workflows/create-test-wf.yml index 0166931be7..cd36d4e62d 100644 --- a/.github/workflows/create-test-wf.yml +++ b/.github/workflows/create-test-wf.yml @@ -59,7 +59,7 @@ jobs: pip install . - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 with: version: ${{ matrix.NXF_VER }} diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 5faeef49da..da7d267b7b 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -113,7 +113,7 @@ jobs: run: echo "date=$(date +'%Y-%m')" >> $GITHUB_ENV - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 - name: Look if nf-test is already installed and write to env variable id: check-nftest diff --git a/.github/workflows/rich-codex.yml b/.github/workflows/rich-codex.yml index 0e8a1c5e9b..8748f3d7b3 100644 --- a/.github/workflows/rich-codex.yml +++ b/.github/workflows/rich-codex.yml @@ -15,7 +15,7 @@ jobs: cache-dependency-path: setup.py - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 - name: Cache nf-test installation id: cache-software diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index d89e255bfb..c998552ddd 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -67,7 +67,7 @@ jobs: pip install . - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 with: version: "latest-everything" diff --git a/nf_core/pipeline-template/.github/workflows/ci.yml b/nf_core/pipeline-template/.github/workflows/ci.yml index 631862d9ec..84c727f60d 100644 --- a/nf_core/pipeline-template/.github/workflows/ci.yml +++ b/nf_core/pipeline-template/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 with: version: "{% raw %}${{ matrix.NXF_VER }}{% endraw %}" diff --git a/nf_core/pipeline-template/.github/workflows/download_pipeline.yml b/nf_core/pipeline-template/.github/workflows/download_pipeline.yml index 20b811ab2b..dcd7caabfc 100644 --- a/nf_core/pipeline-template/.github/workflows/download_pipeline.yml +++ b/nf_core/pipeline-template/.github/workflows/download_pipeline.yml @@ -28,7 +28,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 with: diff --git a/nf_core/pipeline-template/.github/workflows/linting.yml b/nf_core/pipeline-template/.github/workflows/linting.yml index 3ec259b5ed..59b85f95fc 100644 --- a/nf_core/pipeline-template/.github/workflows/linting.yml +++ b/nf_core/pipeline-template/.github/workflows/linting.yml @@ -35,7 +35,7 @@ jobs: uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@b9f764e8ba5c76b712ace14ecbfcef0e40ae2dd8 # v1 + uses: nf-core/setup-nextflow@v1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 with: From 11cb480ed165ddb60b71f1876b390ef9228ef5cc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 21:14:24 +0000 Subject: [PATCH 40/43] chore(deps): update actions/download-artifact digest to 87c5514 --- .github/workflows/pytest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index d5345bdb33..480b4dadbe 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -197,7 +197,7 @@ jobs: mv .github/.coveragerc . - name: Download all artifacts - uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4 + uses: actions/download-artifact@87c55149d96e628cc2ef7e6fc2aab372015aec85 # v4 - name: Run coverage run: | coverage combine --keep coverage*/.coverage* From 8c153aa8be2fb4b475d29cca247e6a4e8655f928 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Feb 2024 00:54:06 +0000 Subject: [PATCH 41/43] chore(deps): update codecov/codecov-action digest to 54bcd87 --- .github/workflows/pytest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 480b4dadbe..edfeabdc92 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -204,7 +204,7 @@ jobs: coverage report coverage xml - - uses: codecov/codecov-action@0cfda1dd0a4ad9efc75517f399d859cd1ea4ced1 # v4 + - uses: codecov/codecov-action@54bcd8715eee62d40e33596ef5e8f0f48dbbccab # v4 with: files: coverage.xml env: From 6499a6146ccf47719110a2640461da1f5f4fd5d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20H=C3=B6rtenhuber?= Date: Thu, 29 Feb 2024 14:32:10 +0100 Subject: [PATCH 42/43] Apply suggestions from code review --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 196f20a1a1..e75f5ac4da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Remove obsolete editor settings in `devcontainer.json` and `gitpod.yml` ([#2795](https://github.com/nf-core/tools/pull/2795)) - Add nf-test test instructions to contributing and PR template ([#2807](https://github.com/nf-core/tools/pull/2807)) - Update modules and subworkflows in the template ([#2811](https://github.com/nf-core/tools/pull/2811)) +- Unpin setup-nextflow and action-tower-launch ([#2806](https://github.com/nf-core/tools/pull/2806)) ### Download @@ -18,10 +19,8 @@ ### General -- chore(deps): update seqeralabs/action-tower-launch digest to aa88624 ([#2793](https://github.com/nf-core/tools/pull/2793)) - chore(deps): update codecov/codecov-action digest to 0cfda1d ([#2794](https://github.com/nf-core/tools/pull/2794)) - chore(deps): update gitpod/workspace-base docker digest to c15ee2f ([#2799](https://github.com/nf-core/tools/pull/2799)) -- Unpin dependencies ([#2806](https://github.com/nf-core/tools/pull/2806)) ## [v2.13 - Tin Puppy](https://github.com/nf-core/tools/releases/tag/2.13) - [2024-02-20] From 17b2b093cd8c2e5666f74873ef4f8eab89bd3dff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 29 Feb 2024 15:43:07 +0000 Subject: [PATCH 43/43] Generate new screengrabs with rich-codex --- docs/images/nf-core-bump-version.svg | 148 ++++----- docs/images/nf-core-create-logo.svg | 68 ++-- docs/images/nf-core-create.svg | 126 +++---- docs/images/nf-core-download.svg | 100 +++--- docs/images/nf-core-launch-rnaseq.svg | 82 ++--- docs/images/nf-core-licences.svg | 68 ++-- docs/images/nf-core-lint.svg | 174 +++++----- docs/images/nf-core-list-rna.svg | 134 ++++---- docs/images/nf-core-list-stars.svg | 104 +++--- docs/images/nf-core-list.svg | 108 +++--- docs/images/nf-core-modules-bump-version.svg | 106 +++--- docs/images/nf-core-modules-create.svg | 84 ++--- docs/images/nf-core-modules-info.svg | 206 ++++++------ docs/images/nf-core-modules-install.svg | 86 ++--- docs/images/nf-core-modules-lint.svg | 74 ++--- docs/images/nf-core-modules-list-local.svg | 116 +++---- docs/images/nf-core-modules-list-remote.svg | 132 ++++---- docs/images/nf-core-modules-patch.svg | 156 ++++----- docs/images/nf-core-modules-remove.svg | 70 ++-- docs/images/nf-core-modules-test.svg | 70 ++-- docs/images/nf-core-modules-update.svg | 82 ++--- docs/images/nf-core-schema-build.svg | 84 ++--- docs/images/nf-core-schema-lint.svg | 78 ++--- docs/images/nf-core-schema-validate.svg | 82 ++--- docs/images/nf-core-subworkflows-create.svg | 104 +++--- docs/images/nf-core-subworkflows-info.svg | 138 ++++---- docs/images/nf-core-subworkflows-install.svg | 92 +++--- docs/images/nf-core-subworkflows-lint.svg | 308 +++++++++--------- .../nf-core-subworkflows-list-local.svg | 130 ++++---- .../nf-core-subworkflows-list-remote.svg | 132 ++++---- docs/images/nf-core-subworkflows-remove.svg | 124 +++---- docs/images/nf-core-subworkflows-test.svg | 70 ++-- docs/images/nf-core-subworkflows-update.svg | 93 +++--- docs/images/nf-core-sync.svg | 108 +++--- 34 files changed, 1938 insertions(+), 1899 deletions(-) diff --git a/docs/images/nf-core-bump-version.svg b/docs/images/nf-core-bump-version.svg index 838d1cfc7f..70171475d9 100644 --- a/docs/images/nf-core-bump-version.svg +++ b/docs/images/nf-core-bump-version.svg @@ -19,122 +19,122 @@ font-weight: 700; } - .terminal-978478039-matrix { + .terminal-3430704182-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-978478039-title { + .terminal-3430704182-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-978478039-r1 { fill: #c5c8c6 } -.terminal-978478039-r2 { fill: #98a84b } -.terminal-978478039-r3 { fill: #9a9b99 } -.terminal-978478039-r4 { fill: #608ab1 } -.terminal-978478039-r5 { fill: #d0b344 } -.terminal-978478039-r6 { fill: #cc555a } + .terminal-3430704182-r1 { fill: #c5c8c6 } +.terminal-3430704182-r2 { fill: #98a84b } +.terminal-3430704182-r3 { fill: #9a9b99 } +.terminal-3430704182-r4 { fill: #608ab1 } +.terminal-3430704182-r5 { fill: #d0b344 } +.terminal-3430704182-r6 { fill: #cc555a } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -146,41 +146,41 @@ - + - - $ nf-core bump-version 1.1 - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -INFO     Changing version number from '1.0dev' to '1.1' -INFO     Updated version in 'nextflow.config' - - version         = '1.0dev' - + version         = '1.1' - - -INFO     Updated version in 'assets/multiqc_config.yml' - - This report has been generated by the <a  -href="https://github.com/nf-core/nextbigthing/tree/dev" target="_blank">nf-core/nextbigthing</a> - + This report has been generated by the <a  -href="https://github.com/nf-core/nextbigthing/releases/tag/1.1"  -target="_blank">nf-core/nextbigthing</a> - - -INFO     Updated version in 'assets/multiqc_config.yml' - - <a href="https://nf-co.re/nextbigthing/dev/docs/output"  -target="_blank">documentation</a>. - + <a href="https://nf-co.re/nextbigthing/1.1/docs/output"  -target="_blank">documentation</a>. - - + + $ nf-core bump-version 1.1 + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +INFO     Changing version number from '1.0dev' to '1.1' +INFO     Updated version in 'nextflow.config' + - version         = '1.0dev' + + version         = '1.1' + + +INFO     Updated version in 'assets/multiqc_config.yml' + - This report has been generated by the <a  +href="https://github.com/nf-core/nextbigthing/tree/dev" target="_blank">nf-core/nextbigthing</a> + + This report has been generated by the <a  +href="https://github.com/nf-core/nextbigthing/releases/tag/1.1"  +target="_blank">nf-core/nextbigthing</a> + + +INFO     Updated version in 'assets/multiqc_config.yml' + - <a href="https://nf-co.re/nextbigthing/dev/docs/output"  +target="_blank">documentation</a>. + + <a href="https://nf-co.re/nextbigthing/1.1/docs/output"  +target="_blank">documentation</a>. + + diff --git a/docs/images/nf-core-create-logo.svg b/docs/images/nf-core-create-logo.svg index ac5d872b94..c6e7269363 100644 --- a/docs/images/nf-core-create-logo.svg +++ b/docs/images/nf-core-create-logo.svg @@ -19,62 +19,62 @@ font-weight: 700; } - .terminal-189794694-matrix { + .terminal-2584676837-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-189794694-title { + .terminal-2584676837-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-189794694-r1 { fill: #c5c8c6 } -.terminal-189794694-r2 { fill: #98a84b } -.terminal-189794694-r3 { fill: #9a9b99 } -.terminal-189794694-r4 { fill: #608ab1 } -.terminal-189794694-r5 { fill: #d0b344 } -.terminal-189794694-r6 { fill: #98729f } + .terminal-2584676837-r1 { fill: #c5c8c6 } +.terminal-2584676837-r2 { fill: #98a84b } +.terminal-2584676837-r3 { fill: #9a9b99 } +.terminal-2584676837-r4 { fill: #608ab1 } +.terminal-2584676837-r5 { fill: #d0b344 } +.terminal-2584676837-r6 { fill: #98729f } - + - + - + - + - + - + - + - + - + - + - + - + @@ -86,21 +86,21 @@ - + - - $ nf-core create-logo nextbigthing - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -INFO     Created logo: nf-core-nextbigthing_logo_light.png + + $ nf-core create-logo nextbigthing + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +INFO     Created logo: nf-core-nextbigthing_logo_light.png diff --git a/docs/images/nf-core-create.svg b/docs/images/nf-core-create.svg index 68cae552b3..422e6734ce 100644 --- a/docs/images/nf-core-create.svg +++ b/docs/images/nf-core-create.svg @@ -19,104 +19,104 @@ font-weight: 700; } - .terminal-2074661465-matrix { + .terminal-165925560-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2074661465-title { + .terminal-165925560-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2074661465-r1 { fill: #c5c8c6 } -.terminal-2074661465-r2 { fill: #98a84b } -.terminal-2074661465-r3 { fill: #9a9b99 } -.terminal-2074661465-r4 { fill: #608ab1 } -.terminal-2074661465-r5 { fill: #d0b344 } -.terminal-2074661465-r6 { fill: #98729f } -.terminal-2074661465-r7 { fill: #ff2c7a } -.terminal-2074661465-r8 { fill: #98a84b;font-weight: bold } -.terminal-2074661465-r9 { fill: #1984e9;text-decoration: underline; } + .terminal-165925560-r1 { fill: #c5c8c6 } +.terminal-165925560-r2 { fill: #98a84b } +.terminal-165925560-r3 { fill: #9a9b99 } +.terminal-165925560-r4 { fill: #608ab1 } +.terminal-165925560-r5 { fill: #d0b344 } +.terminal-165925560-r6 { fill: #98729f } +.terminal-165925560-r7 { fill: #ff2c7a } +.terminal-165925560-r8 { fill: #98a84b;font-weight: bold } +.terminal-165925560-r9 { fill: #1984e9;text-decoration: underline; } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -128,34 +128,34 @@ - + - - $ nf-core create -n nextbigthing -d "This pipeline analyses data from the next big omics technique"  --a "Big Steve" --plain - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -INFO     Creating new nf-core pipeline: 'nf-core/nextbigthing' -INFO     Initialising pipeline git repository                                                        -INFO     Done. Remember to add a remote and push to GitHub:                                          - cd /home/runner/work/tools/tools/tmp/nf-core-nextbigthing - git remote add origin git@github.com:USERNAME/REPO_NAME.git  - git push --all origin                                        -INFO     This will also push your newly created dev branch and the TEMPLATE branch for syncing.      -INFO    !!!!!! IMPORTANT !!!!!! - -If you are interested in adding your pipeline to the nf-core community, -PLEASE COME AND TALK TO US IN THE NF-CORE SLACK BEFORE WRITING ANY CODE! - -Please read: https://nf-co.re/developers/adding_pipelines#join-the-community + + $ nf-core create -n nextbigthing -d "This pipeline analyses data from the next big omics technique"  +-a "Big Steve" --plain + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +INFO     Creating new nf-core pipeline: 'nf-core/nextbigthing' +INFO     Initialising pipeline git repository                                                        +INFO     Done. Remember to add a remote and push to GitHub:                                          + cd /home/runner/work/tools/tools/tmp/nf-core-nextbigthing + git remote add origin git@github.com:USERNAME/REPO_NAME.git  + git push --all origin                                        +INFO     This will also push your newly created dev branch and the TEMPLATE branch for syncing.      +INFO    !!!!!! IMPORTANT !!!!!! + +If you are interested in adding your pipeline to the nf-core community, +PLEASE COME AND TALK TO US IN THE NF-CORE SLACK BEFORE WRITING ANY CODE! + +Please read: https://nf-co.re/developers/adding_pipelines#join-the-community diff --git a/docs/images/nf-core-download.svg b/docs/images/nf-core-download.svg index e2ed5b22b4..5594930fa7 100644 --- a/docs/images/nf-core-download.svg +++ b/docs/images/nf-core-download.svg @@ -19,86 +19,86 @@ font-weight: 700; } - .terminal-2088037745-matrix { + .terminal-2899766736-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2088037745-title { + .terminal-2899766736-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2088037745-r1 { fill: #c5c8c6 } -.terminal-2088037745-r2 { fill: #98a84b } -.terminal-2088037745-r3 { fill: #9a9b99 } -.terminal-2088037745-r4 { fill: #608ab1 } -.terminal-2088037745-r5 { fill: #d0b344 } -.terminal-2088037745-r6 { fill: #cc555a } + .terminal-2899766736-r1 { fill: #c5c8c6 } +.terminal-2899766736-r2 { fill: #98a84b } +.terminal-2899766736-r3 { fill: #9a9b99 } +.terminal-2899766736-r4 { fill: #608ab1 } +.terminal-2899766736-r5 { fill: #d0b344 } +.terminal-2899766736-r6 { fill: #cc555a } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -110,29 +110,29 @@ - + - - $ nf-core download rnaseq -r 3.8 --outdir nf-core-rnaseq -x none -s none -d - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -WARNING  Could not find GitHub authentication token. Some API requests may fail.                     -INFO     Saving 'nf-core/rnaseq' -          Pipeline revision: '3.8' -          Use containers: 'none' -          Container library: 'quay.io' -          Output directory: 'nf-core-rnaseq' -          Include default institutional configuration: 'True' -INFO     Downloading centralised configs from GitHub                                                 -INFO     Downloading workflow files from GitHub                                                      + + $ nf-core download rnaseq -r 3.8 --outdir nf-core-rnaseq -x none -s none -d + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +WARNING  Could not find GitHub authentication token. Some API requests may fail.                     +INFO     Saving 'nf-core/rnaseq' +          Pipeline revision: '3.8' +          Use containers: 'none' +          Container library: 'quay.io' +          Output directory: 'nf-core-rnaseq' +          Include default institutional configuration: 'True' +INFO     Downloading centralised configs from GitHub                                                 +INFO     Downloading workflow files from GitHub                                                      diff --git a/docs/images/nf-core-launch-rnaseq.svg b/docs/images/nf-core-launch-rnaseq.svg index 6bbbbaf099..f2608fe76f 100644 --- a/docs/images/nf-core-launch-rnaseq.svg +++ b/docs/images/nf-core-launch-rnaseq.svg @@ -19,72 +19,72 @@ font-weight: 700; } - .terminal-1939516884-matrix { + .terminal-3860049459-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-1939516884-title { + .terminal-3860049459-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-1939516884-r1 { fill: #c5c8c6 } -.terminal-1939516884-r2 { fill: #98a84b } -.terminal-1939516884-r3 { fill: #9a9b99 } -.terminal-1939516884-r4 { fill: #608ab1 } -.terminal-1939516884-r5 { fill: #d0b344 } -.terminal-1939516884-r6 { fill: #c5c8c6;font-weight: bold } -.terminal-1939516884-r7 { fill: #68a0b3;font-weight: bold } + .terminal-3860049459-r1 { fill: #c5c8c6 } +.terminal-3860049459-r2 { fill: #98a84b } +.terminal-3860049459-r3 { fill: #9a9b99 } +.terminal-3860049459-r4 { fill: #608ab1 } +.terminal-3860049459-r5 { fill: #d0b344 } +.terminal-3860049459-r6 { fill: #c5c8c6;font-weight: bold } +.terminal-3860049459-r7 { fill: #68a0b3;font-weight: bold } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -96,24 +96,24 @@ - + - - $ nf-core launch rnaseq -r 3.8.1 - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -INFO     NOTE: This tool ignores any pipeline parameter defaults overwritten by Nextflow config      -         files or profiles                                                                           - -INFO     Downloading workflow: nf-core/rnaseq (3.8.1) + + $ nf-core launch rnaseq -r 3.8.1 + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +INFO     NOTE: This tool ignores any pipeline parameter defaults overwritten by Nextflow config      +         files or profiles                                                                           + +INFO     Downloading workflow: nf-core/rnaseq (3.8.1) diff --git a/docs/images/nf-core-licences.svg b/docs/images/nf-core-licences.svg index 35962d8e4f..8cc00c351b 100644 --- a/docs/images/nf-core-licences.svg +++ b/docs/images/nf-core-licences.svg @@ -19,62 +19,62 @@ font-weight: 700; } - .terminal-2800093472-matrix { + .terminal-918620543-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2800093472-title { + .terminal-918620543-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2800093472-r1 { fill: #c5c8c6 } -.terminal-2800093472-r2 { fill: #98a84b } -.terminal-2800093472-r3 { fill: #9a9b99 } -.terminal-2800093472-r4 { fill: #608ab1 } -.terminal-2800093472-r5 { fill: #d0b344 } -.terminal-2800093472-r6 { fill: #68a0b3;font-weight: bold } + .terminal-918620543-r1 { fill: #c5c8c6 } +.terminal-918620543-r2 { fill: #98a84b } +.terminal-918620543-r3 { fill: #9a9b99 } +.terminal-918620543-r4 { fill: #608ab1 } +.terminal-918620543-r5 { fill: #d0b344 } +.terminal-918620543-r6 { fill: #68a0b3;font-weight: bold } - + - + - + - + - + - + - + - + - + - + - + - + @@ -86,21 +86,21 @@ - + - - $ nf-core licences deepvariant - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -INFO     Fetching licence information for 8 tools                                                    + + $ nf-core licences deepvariant + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +INFO     Fetching licence information for 8 tools                                                    diff --git a/docs/images/nf-core-lint.svg b/docs/images/nf-core-lint.svg index 74e41870d3..2e55a7e11e 100644 --- a/docs/images/nf-core-lint.svg +++ b/docs/images/nf-core-lint.svg @@ -19,139 +19,139 @@ font-weight: 700; } - .terminal-3628718215-matrix { + .terminal-2900416932-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3628718215-title { + .terminal-2900416932-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3628718215-r1 { fill: #c5c8c6 } -.terminal-3628718215-r2 { fill: #98a84b } -.terminal-3628718215-r3 { fill: #9a9b99 } -.terminal-3628718215-r4 { fill: #608ab1 } -.terminal-3628718215-r5 { fill: #d0b344 } -.terminal-3628718215-r6 { fill: #98729f } -.terminal-3628718215-r7 { fill: #c5c8c6;font-weight: bold } -.terminal-3628718215-r8 { fill: #608ab1;text-decoration: underline; } -.terminal-3628718215-r9 { fill: #d0b344;font-weight: bold } -.terminal-3628718215-r10 { fill: #68a0b3;font-weight: bold } -.terminal-3628718215-r11 { fill: #cc555a } + .terminal-2900416932-r1 { fill: #c5c8c6 } +.terminal-2900416932-r2 { fill: #98a84b } +.terminal-2900416932-r3 { fill: #9a9b99 } +.terminal-2900416932-r4 { fill: #608ab1 } +.terminal-2900416932-r5 { fill: #d0b344 } +.terminal-2900416932-r6 { fill: #98729f } +.terminal-2900416932-r7 { fill: #c5c8c6;font-weight: bold } +.terminal-2900416932-r8 { fill: #608ab1;text-decoration: underline; } +.terminal-2900416932-r9 { fill: #d0b344;font-weight: bold } +.terminal-2900416932-r10 { fill: #68a0b3;font-weight: bold } +.terminal-2900416932-r11 { fill: #cc555a } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -163,45 +163,45 @@ - + - - $ nf-core lint - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Testing pipeline: . - - -╭─[?] 1 Pipeline Test Ignored────────────────────────────────────────────────────────────────────╮ - -pipeline_todos: pipeline_todos                                                                   - -╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─[!] 1 Pipeline Test Warning────────────────────────────────────────────────────────────────────╮ - -readme: README contains the placeholder zenodo.XXXXXXX. This should be replaced with the zenodo  -doi (after the first release).                                                                   - -╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ - - -╭──────────────────────╮ -LINT RESULTS SUMMARY -├──────────────────────┤ -[✔] 188 Tests Passed -[?]   1 Test Ignored -[!]   1 Test Warning -[✗]   0 Tests Failed -╰──────────────────────╯ + + $ nf-core lint + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Testing pipeline: . + + +╭─[?] 1 Pipeline Test Ignored────────────────────────────────────────────────────────────────────╮ + +pipeline_todos: pipeline_todos                                                                   + +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─[!] 1 Pipeline Test Warning────────────────────────────────────────────────────────────────────╮ + +readme: README contains the placeholder zenodo.XXXXXXX. This should be replaced with the zenodo  +doi (after the first release).                                                                   + +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ + + +╭──────────────────────╮ +LINT RESULTS SUMMARY +├──────────────────────┤ +[✔] 188 Tests Passed +[?]   1 Test Ignored +[!]   1 Test Warning +[✗]   0 Tests Failed +╰──────────────────────╯ diff --git a/docs/images/nf-core-list-rna.svg b/docs/images/nf-core-list-rna.svg index ff51d523e4..643545c6fc 100644 --- a/docs/images/nf-core-list-rna.svg +++ b/docs/images/nf-core-list-rna.svg @@ -19,111 +19,111 @@ font-weight: 700; } - .terminal-822138325-matrix { + .terminal-1703728371-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-822138325-title { + .terminal-1703728371-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-822138325-r1 { fill: #c5c8c6 } -.terminal-822138325-r2 { fill: #98a84b } -.terminal-822138325-r3 { fill: #9a9b99 } -.terminal-822138325-r4 { fill: #608ab1 } -.terminal-822138325-r5 { fill: #d0b344 } -.terminal-822138325-r6 { fill: #c5c8c6;font-weight: bold } -.terminal-822138325-r7 { fill: #868887 } + .terminal-1703728371-r1 { fill: #c5c8c6 } +.terminal-1703728371-r2 { fill: #98a84b } +.terminal-1703728371-r3 { fill: #9a9b99 } +.terminal-1703728371-r4 { fill: #608ab1 } +.terminal-1703728371-r5 { fill: #d0b344 } +.terminal-1703728371-r6 { fill: #c5c8c6;font-weight: bold } +.terminal-1703728371-r7 { fill: #868887 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -135,37 +135,37 @@ - + - - $ nf-core list rna rna-seq - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ -Have latest         -Pipeline Name       StarsLatest Release    ReleasedLast Pulledrelease?            -┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ -│ rnasplice            │    22 │          1.0.2 │ 1 months ago │           - │ -                   │ -│ circrna              │    34 │            dev │    yesterday │           - │ -                   │ -│ rnaseq               │   735 │         3.14.0 │ 1 months ago │           - │ -                   │ -│ smrnaseq             │    64 │          2.2.4 │ 4 months ago │           - │ -                   │ -│ scrnaseq             │   124 │          2.5.1 │  4 weeks ago │           - │ -                   │ -│ differentialabundan… │    38 │          1.4.0 │ 3 months ago │           - │ -                   │ -│ rnafusion            │   126 │          3.0.1 │ 3 months ago │           - │ -                   │ -│ spatialtranscriptom… │    36 │            dev │  3 weeks ago │           - │ -                   │ -│ dualrnaseq           │    16 │          1.0.0 │  3 years ago │           - │ -                   │ -│ marsseq              │     5 │          1.0.3 │ 7 months ago │           - │ -                   │ -│ lncpipe              │    28 │            dev │  1 years ago │           - │ -                   │ -│ scflow               │    24 │            dev │  2 years ago │           - │ -                   │ -└──────────────────────┴───────┴────────────────┴──────────────┴─────────────┴─────────────────────┘ + + $ nf-core list rna rna-seq + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ +Have latest         +Pipeline Name       StarsLatest Release    ReleasedLast Pulledrelease?            +┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ +│ rnaseq               │   742 │         3.14.0 │ 2 months ago │           - │ -                   │ +│ differentialabundan… │    38 │          1.4.0 │ 3 months ago │           - │ -                   │ +│ smrnaseq             │    64 │          2.3.0 │   6 days ago │           - │ -                   │ +│ rnasplice            │    25 │          1.0.3 │   6 days ago │           - │ -                   │ +│ circrna              │    34 │            dev │  1 weeks ago │           - │ -                   │ +│ scrnaseq             │   125 │          2.5.1 │ 1 months ago │           - │ -                   │ +│ rnafusion            │   126 │          3.0.1 │ 3 months ago │           - │ -                   │ +│ spatialtranscriptom… │    36 │            dev │  4 weeks ago │           - │ -                   │ +│ dualrnaseq           │    16 │          1.0.0 │  3 years ago │           - │ -                   │ +│ marsseq              │     5 │          1.0.3 │ 8 months ago │           - │ -                   │ +│ lncpipe              │    28 │            dev │  1 years ago │           - │ -                   │ +│ scflow               │    24 │            dev │  3 years ago │           - │ -                   │ +└──────────────────────┴───────┴────────────────┴──────────────┴─────────────┴─────────────────────┘ diff --git a/docs/images/nf-core-list-stars.svg b/docs/images/nf-core-list-stars.svg index 4b020b0dc7..8ea120599f 100644 --- a/docs/images/nf-core-list-stars.svg +++ b/docs/images/nf-core-list-stars.svg @@ -19,88 +19,88 @@ font-weight: 700; } - .terminal-2391931080-matrix { + .terminal-3700160896-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2391931080-title { + .terminal-3700160896-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2391931080-r1 { fill: #c5c8c6 } -.terminal-2391931080-r2 { fill: #98a84b } -.terminal-2391931080-r3 { fill: #9a9b99 } -.terminal-2391931080-r4 { fill: #608ab1 } -.terminal-2391931080-r5 { fill: #d0b344 } -.terminal-2391931080-r6 { fill: #c5c8c6;font-weight: bold } -.terminal-2391931080-r7 { fill: #868887 } -.terminal-2391931080-r8 { fill: #868887;font-style: italic; } + .terminal-3700160896-r1 { fill: #c5c8c6 } +.terminal-3700160896-r2 { fill: #98a84b } +.terminal-3700160896-r3 { fill: #9a9b99 } +.terminal-3700160896-r4 { fill: #608ab1 } +.terminal-3700160896-r5 { fill: #d0b344 } +.terminal-3700160896-r6 { fill: #c5c8c6;font-weight: bold } +.terminal-3700160896-r7 { fill: #868887 } +.terminal-3700160896-r8 { fill: #868887;font-style: italic; } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -112,29 +112,29 @@ - + - - $ nf-core list -s stars - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ -Have latest         -Pipeline Name      StarsLatest Release     ReleasedLast Pulledrelease?            -┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ -│ rnaseq              │   735 │         3.14.0 │  1 months ago │           - │ -                   │ -│ sarek               │   312 │          3.4.0 │  3 months ago │           - │ -                   │ -│ mag                 │   170 │          2.5.4 │    1 week ago │           - │ -                   │ -│ chipseq             │   160 │          2.0.0 │   1 years ago │           - │ -                   │ -[..truncated..] + + $ nf-core list -s stars + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ +Have latest         +Pipeline Name      StarsLatest Release     ReleasedLast Pulledrelease?            +┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ +│ rnaseq              │   742 │         3.14.0 │  2 months ago │           - │ -                   │ +│ sarek               │   320 │          3.4.0 │  4 months ago │           - │ -                   │ +│ mag                 │   175 │          2.5.4 │   2 weeks ago │           - │ -                   │ +│ chipseq             │   161 │          2.0.0 │   1 years ago │           - │ -                   │ +[..truncated..] diff --git a/docs/images/nf-core-list.svg b/docs/images/nf-core-list.svg index aa93f830ee..5e4939f746 100644 --- a/docs/images/nf-core-list.svg +++ b/docs/images/nf-core-list.svg @@ -19,91 +19,91 @@ font-weight: 700; } - .terminal-1155039927-matrix { + .terminal-3505815442-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-1155039927-title { + .terminal-3505815442-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-1155039927-r1 { fill: #c5c8c6 } -.terminal-1155039927-r2 { fill: #98a84b } -.terminal-1155039927-r3 { fill: #9a9b99 } -.terminal-1155039927-r4 { fill: #608ab1 } -.terminal-1155039927-r5 { fill: #d0b344 } -.terminal-1155039927-r6 { fill: #c5c8c6;font-weight: bold } -.terminal-1155039927-r7 { fill: #868887 } -.terminal-1155039927-r8 { fill: #868887;font-style: italic; } + .terminal-3505815442-r1 { fill: #c5c8c6 } +.terminal-3505815442-r2 { fill: #98a84b } +.terminal-3505815442-r3 { fill: #9a9b99 } +.terminal-3505815442-r4 { fill: #608ab1 } +.terminal-3505815442-r5 { fill: #d0b344 } +.terminal-3505815442-r6 { fill: #c5c8c6;font-weight: bold } +.terminal-3505815442-r7 { fill: #868887 } +.terminal-3505815442-r8 { fill: #868887;font-style: italic; } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -115,30 +115,30 @@ - + - - $ nf-core list - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ -Have latest         -Pipeline Name      StarsLatest Release     ReleasedLast Pulledrelease?            -┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ -│ fetchngs            │   100 │         1.11.0 │  4 months ago │           - │ -                   │ -│ phageannotator      │     7 │            dev │  20 hours ago │           - │ -                   │ -│ riboseq             │     2 │            dev │  22 hours ago │           - │ -                   │ -│ bacass              │    48 │          2.1.0 │  4 months ago │           - │ -                   │ -│ rnasplice           │    22 │          1.0.2 │  1 months ago │           - │ -                   │ -[..truncated..] + + $ nf-core list + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓ +Have latest         +Pipeline Name      StarsLatest Release     ReleasedLast Pulledrelease?            +┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩ +│ raredisease         │    65 │          1.1.1 │  7 months ago │           - │ -                   │ +│ fetchngs            │   101 │         1.11.0 │  4 months ago │           - │ -                   │ +│ sarek               │   320 │          3.4.0 │  4 months ago │           - │ -                   │ +│ methylseq           │   126 │          2.6.0 │  2 months ago │           - │ -                   │ +│ rnaseq              │   742 │         3.14.0 │  2 months ago │           - │ -                   │ +[..truncated..] diff --git a/docs/images/nf-core-modules-bump-version.svg b/docs/images/nf-core-modules-bump-version.svg index c886806891..093a0cebc6 100644 --- a/docs/images/nf-core-modules-bump-version.svg +++ b/docs/images/nf-core-modules-bump-version.svg @@ -19,90 +19,90 @@ font-weight: 700; } - .terminal-692975589-matrix { + .terminal-1669068868-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-692975589-title { + .terminal-1669068868-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-692975589-r1 { fill: #c5c8c6 } -.terminal-692975589-r2 { fill: #98a84b } -.terminal-692975589-r3 { fill: #9a9b99 } -.terminal-692975589-r4 { fill: #608ab1 } -.terminal-692975589-r5 { fill: #d0b344 } -.terminal-692975589-r6 { fill: #98a84b;font-weight: bold } -.terminal-692975589-r7 { fill: #c5c8c6;font-weight: bold } + .terminal-1669068868-r1 { fill: #c5c8c6 } +.terminal-1669068868-r2 { fill: #98a84b } +.terminal-1669068868-r3 { fill: #9a9b99 } +.terminal-1669068868-r4 { fill: #608ab1 } +.terminal-1669068868-r5 { fill: #d0b344 } +.terminal-1669068868-r6 { fill: #98a84b;font-weight: bold } +.terminal-1669068868-r7 { fill: #c5c8c6;font-weight: bold } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -114,30 +114,30 @@ - + - - $ nf-core modules bump-versions fastqc - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - - -╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ -[!] 1 Module version up to date. -╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭──────────────────────────────────────────┬───────────────────────────────────────────────────────╮ -Module name                             Update Message                                        -├──────────────────────────────────────────┼───────────────────────────────────────────────────────┤ - fastqc                                    Module version up to date: fastqc                      -╰──────────────────────────────────────────┴───────────────────────────────────────────────────────╯ + + $ nf-core modules bump-versions fastqc + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + + +╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ +[!] 1 Module version up to date. +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭──────────────────────────────────────────┬───────────────────────────────────────────────────────╮ +Module name                             Update Message                                        +├──────────────────────────────────────────┼───────────────────────────────────────────────────────┤ + fastqc                                    Module version up to date: fastqc                      +╰──────────────────────────────────────────┴───────────────────────────────────────────────────────╯ diff --git a/docs/images/nf-core-modules-create.svg b/docs/images/nf-core-modules-create.svg index 295289aaca..caa9c389f0 100644 --- a/docs/images/nf-core-modules-create.svg +++ b/docs/images/nf-core-modules-create.svg @@ -19,74 +19,74 @@ font-weight: 700; } - .terminal-2070228187-matrix { + .terminal-2912300346-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2070228187-title { + .terminal-2912300346-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2070228187-r1 { fill: #c5c8c6 } -.terminal-2070228187-r2 { fill: #98a84b } -.terminal-2070228187-r3 { fill: #9a9b99 } -.terminal-2070228187-r4 { fill: #608ab1 } -.terminal-2070228187-r5 { fill: #d0b344 } -.terminal-2070228187-r6 { fill: #68a0b3;font-weight: bold } + .terminal-2912300346-r1 { fill: #c5c8c6 } +.terminal-2912300346-r2 { fill: #98a84b } +.terminal-2912300346-r3 { fill: #9a9b99 } +.terminal-2912300346-r4 { fill: #608ab1 } +.terminal-2912300346-r5 { fill: #d0b344 } +.terminal-2912300346-r6 { fill: #68a0b3;font-weight: bold } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -98,25 +98,25 @@ - + - - $ nf-core modules create fastqc --author @nf-core-bot  --label process_low --meta --force - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Repository type: modules -INFO    Press enter to use default values (shown in brackets)or type your own responses.  -ctrl+click underlined text to open links. -INFO     Using Bioconda package: 'bioconda::fastqc=0.12.1' + + $ nf-core modules create fastqc --author @nf-core-bot  --label process_low --meta --force + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Repository type: modules +INFO    Press enter to use default values (shown in brackets)or type your own responses.  +ctrl+click underlined text to open links. +INFO     Using Bioconda package: 'bioconda::fastqc=0.12.1' diff --git a/docs/images/nf-core-modules-info.svg b/docs/images/nf-core-modules-info.svg index a35ecdec75..255c595e7c 100644 --- a/docs/images/nf-core-modules-info.svg +++ b/docs/images/nf-core-modules-info.svg @@ -19,163 +19,163 @@ font-weight: 700; } - .terminal-3092902354-matrix { + .terminal-1309602353-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3092902354-title { + .terminal-1309602353-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3092902354-r1 { fill: #c5c8c6 } -.terminal-3092902354-r2 { fill: #98a84b } -.terminal-3092902354-r3 { fill: #9a9b99 } -.terminal-3092902354-r4 { fill: #608ab1 } -.terminal-3092902354-r5 { fill: #d0b344 } -.terminal-3092902354-r6 { fill: #c5c8c6;font-weight: bold } -.terminal-3092902354-r7 { fill: #98a84b;font-weight: bold } -.terminal-3092902354-r8 { fill: #868887 } -.terminal-3092902354-r9 { fill: #d08442 } -.terminal-3092902354-r10 { fill: #868887;font-style: italic; } -.terminal-3092902354-r11 { fill: #98729f } + .terminal-1309602353-r1 { fill: #c5c8c6 } +.terminal-1309602353-r2 { fill: #98a84b } +.terminal-1309602353-r3 { fill: #9a9b99 } +.terminal-1309602353-r4 { fill: #608ab1 } +.terminal-1309602353-r5 { fill: #d0b344 } +.terminal-1309602353-r6 { fill: #c5c8c6;font-weight: bold } +.terminal-1309602353-r7 { fill: #98a84b;font-weight: bold } +.terminal-1309602353-r8 { fill: #868887 } +.terminal-1309602353-r9 { fill: #d08442 } +.terminal-1309602353-r10 { fill: #868887;font-style: italic; } +.terminal-1309602353-r11 { fill: #98729f } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -187,53 +187,53 @@ - + - - $ nf-core modules info abacas - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -╭─ Module: abacas  ────────────────────────────────────────────────────────────────────────────────╮ -│ 🌐 Repository: https://github.com/nf-core/modules.git                                            │ -│ 🔧 Tools: abacas                                                                                 │ -│ 📖 Description: contiguate draft genome assembly                                                 │ -╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ -                  ╷                                                                   ╷              -📥 Inputs        Description                                                             Pattern -╺━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━╸ - meta  (map)     │Groovy Map containing sample information e.g. [ id:'test',         │ -                  │single_end:false ]                                                 │ -╶─────────────────┼───────────────────────────────────────────────────────────────────┼────────────╴ - scaffold  (file)│Fasta file containing scaffold                                     │*.{fasta,fa} -╶─────────────────┼───────────────────────────────────────────────────────────────────┼────────────╴ - fasta  (file)   │FASTA reference file                                               │*.{fasta,fa} -                  ╵                                                                   ╵              -                  ╷                                                                   ╷              -📤 Outputs       Description                                                             Pattern -╺━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━╸ - meta  (map)     │Groovy Map containing sample information e.g. [ id:'test',         │ -                  │single_end:false ]                                                 │ -╶─────────────────┼───────────────────────────────────────────────────────────────────┼────────────╴ - results  (file) │List containing abacas output files [ 'test.abacas.bin',           │ *.{abacas}* -                  │'test.abacas.fasta', 'test.abacas.gaps', 'test.abacas.gaps.tab',   │ -                  │'test.abacas.nucmer.delta', 'test.abacas.nucmer.filtered.delta',   │ -                  │'test.abacas.nucmer.tiling', 'test.abacas.tab',                    │ -                  │'test.abacas.unused.contigs.out', 'test.abacas.MULTIFASTA.fa' ]    │ -╶─────────────────┼───────────────────────────────────────────────────────────────────┼────────────╴ - versions  (file)│File containing software versions                                  │versions.yml -                  ╵                                                                   ╵              - - 💻  Installation command: nf-core modules install abacas - + + $ nf-core modules info abacas + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +╭─ Module: abacas  ────────────────────────────────────────────────────────────────────────────────╮ +│ 🌐 Repository: https://github.com/nf-core/modules.git                                            │ +│ 🔧 Tools: abacas                                                                                 │ +│ 📖 Description: contiguate draft genome assembly                                                 │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ +                  ╷                                                                   ╷              +📥 Inputs        Description                                                             Pattern +╺━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━╸ + meta  (map)     │Groovy Map containing sample information e.g. [ id:'test',         │ +                  │single_end:false ]                                                 │ +╶─────────────────┼───────────────────────────────────────────────────────────────────┼────────────╴ + scaffold  (file)│Fasta file containing scaffold                                     │*.{fasta,fa} +╶─────────────────┼───────────────────────────────────────────────────────────────────┼────────────╴ + fasta  (file)   │FASTA reference file                                               │*.{fasta,fa} +                  ╵                                                                   ╵              +                  ╷                                                                   ╷              +📤 Outputs       Description                                                             Pattern +╺━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━╸ + meta  (map)     │Groovy Map containing sample information e.g. [ id:'test',         │ +                  │single_end:false ]                                                 │ +╶─────────────────┼───────────────────────────────────────────────────────────────────┼────────────╴ + results  (file) │List containing abacas output files [ 'test.abacas.bin',           │ *.{abacas}* +                  │'test.abacas.fasta', 'test.abacas.gaps', 'test.abacas.gaps.tab',   │ +                  │'test.abacas.nucmer.delta', 'test.abacas.nucmer.filtered.delta',   │ +                  │'test.abacas.nucmer.tiling', 'test.abacas.tab',                    │ +                  │'test.abacas.unused.contigs.out', 'test.abacas.MULTIFASTA.fa' ]    │ +╶─────────────────┼───────────────────────────────────────────────────────────────────┼────────────╴ + versions  (file)│File containing software versions                                  │versions.yml +                  ╵                                                                   ╵              + + 💻  Installation command: nf-core modules install abacas + diff --git a/docs/images/nf-core-modules-install.svg b/docs/images/nf-core-modules-install.svg index d0ac5b2946..2b0331bcaa 100644 --- a/docs/images/nf-core-modules-install.svg +++ b/docs/images/nf-core-modules-install.svg @@ -19,76 +19,76 @@ font-weight: 700; } - .terminal-2787740720-matrix { + .terminal-310938767-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2787740720-title { + .terminal-310938767-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2787740720-r1 { fill: #c5c8c6 } -.terminal-2787740720-r2 { fill: #98a84b } -.terminal-2787740720-r3 { fill: #9a9b99 } -.terminal-2787740720-r4 { fill: #608ab1 } -.terminal-2787740720-r5 { fill: #d0b344 } + .terminal-310938767-r1 { fill: #c5c8c6 } +.terminal-310938767-r2 { fill: #98a84b } +.terminal-310938767-r3 { fill: #9a9b99 } +.terminal-310938767-r4 { fill: #608ab1 } +.terminal-310938767-r5 { fill: #d0b344 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -100,26 +100,26 @@ - + - - $ nf-core modules install abacas - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Installing 'abacas' -INFO     Use the following statement to include this module:                                         - - include { ABACAS } from '../modules/nf-core/abacas/main'                                            - + + $ nf-core modules install abacas + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Installing 'abacas' +INFO     Use the following statement to include this module:                                         + + include { ABACAS } from '../modules/nf-core/abacas/main'                                            + diff --git a/docs/images/nf-core-modules-lint.svg b/docs/images/nf-core-modules-lint.svg index c53b1dfdbc..2809eeee22 100644 --- a/docs/images/nf-core-modules-lint.svg +++ b/docs/images/nf-core-modules-lint.svg @@ -19,67 +19,67 @@ font-weight: 700; } - .terminal-1620728557-matrix { + .terminal-1680431948-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-1620728557-title { + .terminal-1680431948-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-1620728557-r1 { fill: #c5c8c6 } -.terminal-1620728557-r2 { fill: #98a84b } -.terminal-1620728557-r3 { fill: #9a9b99 } -.terminal-1620728557-r4 { fill: #608ab1 } -.terminal-1620728557-r5 { fill: #d0b344 } + .terminal-1680431948-r1 { fill: #c5c8c6 } +.terminal-1680431948-r2 { fill: #98a84b } +.terminal-1680431948-r3 { fill: #9a9b99 } +.terminal-1680431948-r4 { fill: #608ab1 } +.terminal-1680431948-r5 { fill: #d0b344 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -91,23 +91,23 @@ - + - - $ nf-core modules lint multiqc - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Linting modules repo: '.' -INFO     Linting module: 'multiqc' + + $ nf-core modules lint multiqc + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Linting modules repo: '.' +INFO     Linting module: 'multiqc' diff --git a/docs/images/nf-core-modules-list-local.svg b/docs/images/nf-core-modules-list-local.svg index 4b06362a82..ecb9ed499a 100644 --- a/docs/images/nf-core-modules-list-local.svg +++ b/docs/images/nf-core-modules-list-local.svg @@ -19,98 +19,98 @@ font-weight: 700; } - .terminal-4225841500-matrix { + .terminal-2419669372-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-4225841500-title { + .terminal-2419669372-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-4225841500-r1 { fill: #c5c8c6 } -.terminal-4225841500-r2 { fill: #98a84b } -.terminal-4225841500-r3 { fill: #9a9b99 } -.terminal-4225841500-r4 { fill: #608ab1 } -.terminal-4225841500-r5 { fill: #d0b344 } -.terminal-4225841500-r6 { fill: #c5c8c6;font-weight: bold } + .terminal-2419669372-r1 { fill: #c5c8c6 } +.terminal-2419669372-r2 { fill: #98a84b } +.terminal-2419669372-r3 { fill: #9a9b99 } +.terminal-2419669372-r4 { fill: #608ab1 } +.terminal-2419669372-r5 { fill: #d0b344 } +.terminal-2419669372-r6 { fill: #c5c8c6;font-weight: bold } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -122,33 +122,33 @@ - + - - $ nf-core modules list local - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Modules installed in '.':                                                                   - -self.repo_type='pipeline' -┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓ -Module NameRepository           Version SHA          Message              Date       -┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩ -│ fastqc      │ https://github.com/n… │ f4ae1d942bd50c5c0b9b… │ Update FASTQC to use  │ 2024-01-31 │ -│             │                       │                       │ unique names for      │            │ -│             │                       │                       │ snapshots (#4825)     │            │ -│ multiqc     │ https://github.com/n… │ ccacf6f5de6df3bc6d73… │ Bump Multiqc to 1.20  │ 2024-02-14 │ -│             │                       │                       │ (#4910)               │            │ -└─────────────┴───────────────────────┴───────────────────────┴───────────────────────┴────────────┘ + + $ nf-core modules list local + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Modules installed in '.':                                                                   + +self.repo_type='pipeline' +┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓ +Module NameRepository           Version SHA          Message              Date       +┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩ +│ fastqc      │ https://github.com/n… │ f4ae1d942bd50c5c0b9b… │ Update FASTQC to use  │ 2024-01-31 │ +│             │                       │                       │ unique names for      │            │ +│             │                       │                       │ snapshots (#4825)     │            │ +│ multiqc     │ https://github.com/n… │ b7ebe95761cd389603f9… │ Update MQC container  │ 2024-02-29 │ +│             │                       │                       │ (#5006)               │            │ +└─────────────┴───────────────────────┴───────────────────────┴───────────────────────┴────────────┘ diff --git a/docs/images/nf-core-modules-list-remote.svg b/docs/images/nf-core-modules-list-remote.svg index aca2dc7d9b..138be73068 100644 --- a/docs/images/nf-core-modules-list-remote.svg +++ b/docs/images/nf-core-modules-list-remote.svg @@ -19,109 +19,109 @@ font-weight: 700; } - .terminal-2422626649-matrix { + .terminal-2384550328-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2422626649-title { + .terminal-2384550328-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2422626649-r1 { fill: #c5c8c6 } -.terminal-2422626649-r2 { fill: #98a84b } -.terminal-2422626649-r3 { fill: #9a9b99 } -.terminal-2422626649-r4 { fill: #608ab1 } -.terminal-2422626649-r5 { fill: #d0b344 } -.terminal-2422626649-r6 { fill: #1984e9;text-decoration: underline; } -.terminal-2422626649-r7 { fill: #c5c8c6;font-weight: bold } -.terminal-2422626649-r8 { fill: #868887;font-style: italic; } + .terminal-2384550328-r1 { fill: #c5c8c6 } +.terminal-2384550328-r2 { fill: #98a84b } +.terminal-2384550328-r3 { fill: #9a9b99 } +.terminal-2384550328-r4 { fill: #608ab1 } +.terminal-2384550328-r5 { fill: #d0b344 } +.terminal-2384550328-r6 { fill: #1984e9;text-decoration: underline; } +.terminal-2384550328-r7 { fill: #c5c8c6;font-weight: bold } +.terminal-2384550328-r8 { fill: #868887;font-style: italic; } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -133,36 +133,36 @@ - + - - $ nf-core modules list remote - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Modules available from https://github.com/nf-core/modules.git(master):                     - -┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ -Module Name                                           -┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ -│ abacas                                                │ -│ abricate/run                                          │ -│ abricate/summary                                      │ -│ abritamr/run                                          │ -│ adapterremoval                                        │ -│ adapterremovalfixprefix                               │ -│ admixture                                             │ -│ affy/justrma                                          │ -│ agat/convertspgff2gtf                                 │ -[..truncated..] + + $ nf-core modules list remote + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Modules available from https://github.com/nf-core/modules.git(master):                     + +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +Module Name                                           +┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ +│ abacas                                                │ +│ abricate/run                                          │ +│ abricate/summary                                      │ +│ abritamr/run                                          │ +│ adapterremoval                                        │ +│ adapterremovalfixprefix                               │ +│ admixture                                             │ +│ affy/justrma                                          │ +│ agat/convertspgff2gtf                                 │ +[..truncated..] diff --git a/docs/images/nf-core-modules-patch.svg b/docs/images/nf-core-modules-patch.svg index 84ad24867e..5ed5e2f4d1 100644 --- a/docs/images/nf-core-modules-patch.svg +++ b/docs/images/nf-core-modules-patch.svg @@ -19,127 +19,127 @@ font-weight: 700; } - .terminal-3587976170-matrix { + .terminal-1838296137-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3587976170-title { + .terminal-1838296137-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3587976170-r1 { fill: #c5c8c6 } -.terminal-3587976170-r2 { fill: #98a84b } -.terminal-3587976170-r3 { fill: #9a9b99 } -.terminal-3587976170-r4 { fill: #608ab1 } -.terminal-3587976170-r5 { fill: #d0b344 } -.terminal-3587976170-r6 { fill: #ff2627 } -.terminal-3587976170-r7 { fill: #00823d } -.terminal-3587976170-r8 { fill: #ff2c7a;font-weight: bold } + .terminal-1838296137-r1 { fill: #c5c8c6 } +.terminal-1838296137-r2 { fill: #98a84b } +.terminal-1838296137-r3 { fill: #9a9b99 } +.terminal-1838296137-r4 { fill: #608ab1 } +.terminal-1838296137-r5 { fill: #d0b344 } +.terminal-1838296137-r6 { fill: #ff2627 } +.terminal-1838296137-r7 { fill: #00823d } +.terminal-1838296137-r8 { fill: #ff2c7a;font-weight: bold } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -151,42 +151,42 @@ - + - - $ nf-core modules patch fastqc - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Changes in module 'nf-core/fastqc' -INFO    'modules/nf-core/fastqc/environment.yml' is unchanged                                       -INFO    'modules/nf-core/fastqc/meta.yml' is unchanged                                              -INFO     Changes in 'fastqc/main.nf':                                                                - ---- modules/nf-core/fastqc/main.nf -+++ modules/nf-core/fastqc/main.nf -@@ -1,6 +1,6 @@ -process FASTQC {                                                                                   -    tag "$meta.id"                                                                                 --    label 'process_medium' -+    label 'process_low' - -    conda "${moduleDir}/environment.yml"                                                           -    container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_  - - -INFO    'modules/nf-core/fastqc/tests/tags.yml' is unchanged                                        -INFO    'modules/nf-core/fastqc/tests/main.nf.test' is unchanged                                    -INFO    'modules/nf-core/fastqc/tests/main.nf.test.snap' is unchanged                               -INFO     Patch file of 'modules/nf-core/fastqc' written to 'modules/nf-core/fastqc/fastqc.diff' + + $ nf-core modules patch fastqc + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Changes in module 'nf-core/fastqc' +INFO    'modules/nf-core/fastqc/environment.yml' is unchanged                                       +INFO    'modules/nf-core/fastqc/meta.yml' is unchanged                                              +INFO     Changes in 'fastqc/main.nf':                                                                + +--- modules/nf-core/fastqc/main.nf ++++ modules/nf-core/fastqc/main.nf +@@ -1,6 +1,6 @@ +process FASTQC {                                                                                   +    tag "$meta.id"                                                                                 +-    label 'process_medium' ++    label 'process_low' + +    conda "${moduleDir}/environment.yml"                                                           +    container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_  + + +INFO    'modules/nf-core/fastqc/tests/tags.yml' is unchanged                                        +INFO    'modules/nf-core/fastqc/tests/main.nf.test' is unchanged                                    +INFO    'modules/nf-core/fastqc/tests/main.nf.test.snap' is unchanged                               +INFO     Patch file of 'modules/nf-core/fastqc' written to 'modules/nf-core/fastqc/fastqc.diff' diff --git a/docs/images/nf-core-modules-remove.svg b/docs/images/nf-core-modules-remove.svg index c78034e35c..91f7020043 100644 --- a/docs/images/nf-core-modules-remove.svg +++ b/docs/images/nf-core-modules-remove.svg @@ -19,64 +19,64 @@ font-weight: 700; } - .terminal-3332058498-matrix { + .terminal-2115907041-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3332058498-title { + .terminal-2115907041-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3332058498-r1 { fill: #c5c8c6 } -.terminal-3332058498-r2 { fill: #98a84b } -.terminal-3332058498-r3 { fill: #9a9b99 } -.terminal-3332058498-r4 { fill: #608ab1 } -.terminal-3332058498-r5 { fill: #d0b344 } + .terminal-2115907041-r1 { fill: #c5c8c6 } +.terminal-2115907041-r2 { fill: #98a84b } +.terminal-2115907041-r3 { fill: #9a9b99 } +.terminal-2115907041-r4 { fill: #608ab1 } +.terminal-2115907041-r5 { fill: #d0b344 } - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -88,22 +88,22 @@ - + - - $ nf-core modules remove abacas - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Removed files for 'abacas' and its dependencies 'abacas'.                                   + + $ nf-core modules remove abacas + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Removed files for 'abacas' and its dependencies 'abacas'.                                   diff --git a/docs/images/nf-core-modules-test.svg b/docs/images/nf-core-modules-test.svg index daff523354..52e86ba826 100644 --- a/docs/images/nf-core-modules-test.svg +++ b/docs/images/nf-core-modules-test.svg @@ -19,64 +19,64 @@ font-weight: 700; } - .terminal-2250961056-matrix { + .terminal-9171199-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2250961056-title { + .terminal-9171199-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2250961056-r1 { fill: #c5c8c6 } -.terminal-2250961056-r2 { fill: #98a84b } -.terminal-2250961056-r3 { fill: #9a9b99 } -.terminal-2250961056-r4 { fill: #608ab1 } -.terminal-2250961056-r5 { fill: #d0b344 } + .terminal-9171199-r1 { fill: #c5c8c6 } +.terminal-9171199-r2 { fill: #98a84b } +.terminal-9171199-r3 { fill: #9a9b99 } +.terminal-9171199-r4 { fill: #608ab1 } +.terminal-9171199-r5 { fill: #d0b344 } - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -88,22 +88,22 @@ - + - - $ nf-core modules test fastqc --no-prompts - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Generating nf-test snapshot                                                                 + + $ nf-core modules test fastqc --no-prompts + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Generating nf-test snapshot                                                                 diff --git a/docs/images/nf-core-modules-update.svg b/docs/images/nf-core-modules-update.svg index ddc5facf65..23d9931ce2 100644 --- a/docs/images/nf-core-modules-update.svg +++ b/docs/images/nf-core-modules-update.svg @@ -19,73 +19,73 @@ font-weight: 700; } - .terminal-3937334707-matrix { + .terminal-2984179218-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3937334707-title { + .terminal-2984179218-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3937334707-r1 { fill: #c5c8c6 } -.terminal-3937334707-r2 { fill: #98a84b } -.terminal-3937334707-r3 { fill: #9a9b99 } -.terminal-3937334707-r4 { fill: #608ab1 } -.terminal-3937334707-r5 { fill: #d0b344 } + .terminal-2984179218-r1 { fill: #c5c8c6 } +.terminal-2984179218-r2 { fill: #98a84b } +.terminal-2984179218-r3 { fill: #9a9b99 } +.terminal-2984179218-r4 { fill: #608ab1 } +.terminal-2984179218-r5 { fill: #d0b344 } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -97,25 +97,25 @@ - + - - $ nf-core modules update --all --no-preview - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO    'modules/nf-core/abacas' is already up to date                                              -INFO    'modules/nf-core/fastqc' is already up to date                                              -INFO    'modules/nf-core/multiqc' is already up to date                                             -INFO     Updates complete ✨                                                                         + + $ nf-core modules update --all --no-preview + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO    'modules/nf-core/abacas' is already up to date                                              +INFO    'modules/nf-core/fastqc' is already up to date                                              +INFO    'modules/nf-core/multiqc' is already up to date                                             +INFO     Updates complete ✨                                                                         diff --git a/docs/images/nf-core-schema-build.svg b/docs/images/nf-core-schema-build.svg index cf0ab90005..7236440a0d 100644 --- a/docs/images/nf-core-schema-build.svg +++ b/docs/images/nf-core-schema-build.svg @@ -19,72 +19,72 @@ font-weight: 700; } - .terminal-2534001313-matrix { + .terminal-978569984-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2534001313-title { + .terminal-978569984-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2534001313-r1 { fill: #c5c8c6 } -.terminal-2534001313-r2 { fill: #98a84b } -.terminal-2534001313-r3 { fill: #9a9b99 } -.terminal-2534001313-r4 { fill: #608ab1 } -.terminal-2534001313-r5 { fill: #d0b344 } -.terminal-2534001313-r6 { fill: #98a84b;font-weight: bold } -.terminal-2534001313-r7 { fill: #868887;font-weight: bold } -.terminal-2534001313-r8 { fill: #868887 } -.terminal-2534001313-r9 { fill: #4e707b;font-weight: bold } -.terminal-2534001313-r10 { fill: #68a0b3;font-weight: bold } + .terminal-978569984-r1 { fill: #c5c8c6 } +.terminal-978569984-r2 { fill: #98a84b } +.terminal-978569984-r3 { fill: #9a9b99 } +.terminal-978569984-r4 { fill: #608ab1 } +.terminal-978569984-r5 { fill: #d0b344 } +.terminal-978569984-r6 { fill: #98a84b;font-weight: bold } +.terminal-978569984-r7 { fill: #868887;font-weight: bold } +.terminal-978569984-r8 { fill: #868887 } +.terminal-978569984-r9 { fill: #4e707b;font-weight: bold } +.terminal-978569984-r10 { fill: #68a0b3;font-weight: bold } - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -96,23 +96,23 @@ - + - - $ nf-core schema build --no-prompts - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -INFO    [] Default parameters match schema validation -INFO    [] Pipeline schema looks valid(found 30 params) -INFO     Writing schema with 31 params: 'nextflow_schema.json' + + $ nf-core schema build --no-prompts + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +INFO    [] Default parameters match schema validation +INFO    [] Pipeline schema looks valid(found 30 params) +INFO     Writing schema with 31 params: 'nextflow_schema.json' diff --git a/docs/images/nf-core-schema-lint.svg b/docs/images/nf-core-schema-lint.svg index fc3b8f5f31..d08a01144b 100644 --- a/docs/images/nf-core-schema-lint.svg +++ b/docs/images/nf-core-schema-lint.svg @@ -19,68 +19,68 @@ font-weight: 700; } - .terminal-3503377192-matrix { + .terminal-3566947207-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3503377192-title { + .terminal-3566947207-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3503377192-r1 { fill: #c5c8c6 } -.terminal-3503377192-r2 { fill: #98a84b } -.terminal-3503377192-r3 { fill: #9a9b99 } -.terminal-3503377192-r4 { fill: #608ab1 } -.terminal-3503377192-r5 { fill: #d0b344 } -.terminal-3503377192-r6 { fill: #98a84b;font-weight: bold } -.terminal-3503377192-r7 { fill: #868887;font-weight: bold } -.terminal-3503377192-r8 { fill: #868887 } -.terminal-3503377192-r9 { fill: #4e707b;font-weight: bold } + .terminal-3566947207-r1 { fill: #c5c8c6 } +.terminal-3566947207-r2 { fill: #98a84b } +.terminal-3566947207-r3 { fill: #9a9b99 } +.terminal-3566947207-r4 { fill: #608ab1 } +.terminal-3566947207-r5 { fill: #d0b344 } +.terminal-3566947207-r6 { fill: #98a84b;font-weight: bold } +.terminal-3566947207-r7 { fill: #868887;font-weight: bold } +.terminal-3566947207-r8 { fill: #868887 } +.terminal-3566947207-r9 { fill: #4e707b;font-weight: bold } - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -92,22 +92,22 @@ - + - - $ nf-core schema lint - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -INFO    [] Default parameters match schema validation -INFO    [] Pipeline schema looks valid(found 31 params) + + $ nf-core schema lint + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +INFO    [] Default parameters match schema validation +INFO    [] Pipeline schema looks valid(found 31 params) diff --git a/docs/images/nf-core-schema-validate.svg b/docs/images/nf-core-schema-validate.svg index c5bbd59a37..33984ccbeb 100644 --- a/docs/images/nf-core-schema-validate.svg +++ b/docs/images/nf-core-schema-validate.svg @@ -19,71 +19,71 @@ font-weight: 700; } - .terminal-2855795864-matrix { + .terminal-2456222967-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2855795864-title { + .terminal-2456222967-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2855795864-r1 { fill: #c5c8c6 } -.terminal-2855795864-r2 { fill: #98a84b } -.terminal-2855795864-r3 { fill: #9a9b99 } -.terminal-2855795864-r4 { fill: #608ab1 } -.terminal-2855795864-r5 { fill: #d0b344 } -.terminal-2855795864-r6 { fill: #98a84b;font-weight: bold } -.terminal-2855795864-r7 { fill: #868887;font-weight: bold } -.terminal-2855795864-r8 { fill: #868887 } -.terminal-2855795864-r9 { fill: #4e707b;font-weight: bold } + .terminal-2456222967-r1 { fill: #c5c8c6 } +.terminal-2456222967-r2 { fill: #98a84b } +.terminal-2456222967-r3 { fill: #9a9b99 } +.terminal-2456222967-r4 { fill: #608ab1 } +.terminal-2456222967-r5 { fill: #d0b344 } +.terminal-2456222967-r6 { fill: #98a84b;font-weight: bold } +.terminal-2456222967-r7 { fill: #868887;font-weight: bold } +.terminal-2456222967-r8 { fill: #868887 } +.terminal-2456222967-r9 { fill: #4e707b;font-weight: bold } - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -95,23 +95,23 @@ - + - - $ nf-core schema validate nf-core-rnaseq/3_8 nf-params.json - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -INFO    [] Default parameters match schema validation -INFO    [] Pipeline schema looks valid(found 93 params) -INFO    [] Input parameters look valid + + $ nf-core schema validate nf-core-rnaseq/3_8 nf-params.json + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +INFO    [] Default parameters match schema validation +INFO    [] Pipeline schema looks valid(found 93 params) +INFO    [] Input parameters look valid diff --git a/docs/images/nf-core-subworkflows-create.svg b/docs/images/nf-core-subworkflows-create.svg index e39d489764..fd20914cfe 100644 --- a/docs/images/nf-core-subworkflows-create.svg +++ b/docs/images/nf-core-subworkflows-create.svg @@ -19,89 +19,89 @@ font-weight: 700; } - .terminal-1669631293-matrix { + .terminal-694979996-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-1669631293-title { + .terminal-694979996-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-1669631293-r1 { fill: #c5c8c6 } -.terminal-1669631293-r2 { fill: #98a84b } -.terminal-1669631293-r3 { fill: #9a9b99 } -.terminal-1669631293-r4 { fill: #608ab1 } -.terminal-1669631293-r5 { fill: #d0b344 } -.terminal-1669631293-r6 { fill: #68a0b3;font-weight: bold } + .terminal-694979996-r1 { fill: #c5c8c6 } +.terminal-694979996-r2 { fill: #98a84b } +.terminal-694979996-r3 { fill: #9a9b99 } +.terminal-694979996-r4 { fill: #608ab1 } +.terminal-694979996-r5 { fill: #d0b344 } +.terminal-694979996-r6 { fill: #68a0b3;font-weight: bold } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -113,30 +113,30 @@ - + - - $ nf-core subworkflows create bam_stats_samtools --author @nf-core-bot --force - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Repository type: modules -INFO    Press enter to use default values (shown in brackets)or type your own responses.  -ctrl+click underlined text to open links. -INFO     Created component template: 'bam_stats_samtools' -INFO     Created following files:                                                                    -           subworkflows/nf-core/bam_stats_samtools/main.nf                                           -           subworkflows/nf-core/bam_stats_samtools/meta.yml                                          -           subworkflows/nf-core/bam_stats_samtools/tests/tags.yml                                    -           subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test                                + + $ nf-core subworkflows create bam_stats_samtools --author @nf-core-bot --force + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Repository type: modules +INFO    Press enter to use default values (shown in brackets)or type your own responses.  +ctrl+click underlined text to open links. +INFO     Created component template: 'bam_stats_samtools' +INFO     Created following files:                                                                    +           subworkflows/nf-core/bam_stats_samtools/main.nf                                           +           subworkflows/nf-core/bam_stats_samtools/meta.yml                                          +           subworkflows/nf-core/bam_stats_samtools/tests/tags.yml                                    +           subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test                                diff --git a/docs/images/nf-core-subworkflows-info.svg b/docs/images/nf-core-subworkflows-info.svg index 5e792aaf27..b3f4f38ed3 100644 --- a/docs/images/nf-core-subworkflows-info.svg +++ b/docs/images/nf-core-subworkflows-info.svg @@ -19,112 +19,112 @@ font-weight: 700; } - .terminal-3309876258-matrix { + .terminal-1309193345-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3309876258-title { + .terminal-1309193345-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3309876258-r1 { fill: #c5c8c6 } -.terminal-3309876258-r2 { fill: #98a84b } -.terminal-3309876258-r3 { fill: #9a9b99 } -.terminal-3309876258-r4 { fill: #608ab1 } -.terminal-3309876258-r5 { fill: #d0b344 } -.terminal-3309876258-r6 { fill: #c5c8c6;font-weight: bold } -.terminal-3309876258-r7 { fill: #98a84b;font-weight: bold } -.terminal-3309876258-r8 { fill: #868887 } -.terminal-3309876258-r9 { fill: #868887;font-style: italic; } -.terminal-3309876258-r10 { fill: #d08442 } -.terminal-3309876258-r11 { fill: #98729f } + .terminal-1309193345-r1 { fill: #c5c8c6 } +.terminal-1309193345-r2 { fill: #98a84b } +.terminal-1309193345-r3 { fill: #9a9b99 } +.terminal-1309193345-r4 { fill: #608ab1 } +.terminal-1309193345-r5 { fill: #d0b344 } +.terminal-1309193345-r6 { fill: #c5c8c6;font-weight: bold } +.terminal-1309193345-r7 { fill: #98a84b;font-weight: bold } +.terminal-1309193345-r8 { fill: #868887 } +.terminal-1309193345-r9 { fill: #868887;font-style: italic; } +.terminal-1309193345-r10 { fill: #d08442 } +.terminal-1309193345-r11 { fill: #98729f } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -136,36 +136,36 @@ - + - - $ nf-core subworkflows info bam_rseqc - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -╭─ Subworkflow: bam_rseqc  ────────────────────────────────────────────────────────────────────────╮ -│ 🌐 Repository: https://github.com/nf-core/modules.git                                            │ -│ 📖 Description: Subworkflow to run multiple commands in the RSeqC package                        │ -╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ -[..truncated..] - readduplication_rscript  (file)    │script to reproduce the plot       │                      *.R -╶────────────────────────────────────┼───────────────────────────────────┼─────────────────────────╴ - tin_txt  (file)                    │TXT file containing tin.py results │                    *.txt -                                     │summary                            │ -╶────────────────────────────────────┼───────────────────────────────────┼─────────────────────────╴ - versions  (file)                   │File containing software versions  │             versions.yml -                                     ╵                                   ╵                           - - 💻  Installation command: nf-core subworkflows install bam_rseqc - + + $ nf-core subworkflows info bam_rseqc + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +╭─ Subworkflow: bam_rseqc  ────────────────────────────────────────────────────────────────────────╮ +│ 🌐 Repository: https://github.com/nf-core/modules.git                                            │ +│ 📖 Description: Subworkflow to run multiple commands in the RSeqC package                        │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ +[..truncated..] + readduplication_rscript  (file)    │script to reproduce the plot       │                      *.R +╶────────────────────────────────────┼───────────────────────────────────┼─────────────────────────╴ + tin_txt  (file)                    │TXT file containing tin.py results │                    *.txt +                                     │summary                            │ +╶────────────────────────────────────┼───────────────────────────────────┼─────────────────────────╴ + versions  (file)                   │File containing software versions  │             versions.yml +                                     ╵                                   ╵                           + + 💻  Installation command: nf-core subworkflows install bam_rseqc + diff --git a/docs/images/nf-core-subworkflows-install.svg b/docs/images/nf-core-subworkflows-install.svg index 84c9fe6ac9..8c86c3a7e4 100644 --- a/docs/images/nf-core-subworkflows-install.svg +++ b/docs/images/nf-core-subworkflows-install.svg @@ -1,4 +1,4 @@ - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + - + - + - - $ nf-core subworkflows install bam_rseqc - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Installing 'bam_rseqc' + + $ nf-core subworkflows install bam_rseqc + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Installing 'bam_rseqc' +INFO     Use the following statement to include this subworkflow:                                    + + include { BAM_RSEQC } from '../subworkflows/nf-core/bam_rseqc/main'                                 + diff --git a/docs/images/nf-core-subworkflows-lint.svg b/docs/images/nf-core-subworkflows-lint.svg index 3199189c16..7e827661ac 100644 --- a/docs/images/nf-core-subworkflows-lint.svg +++ b/docs/images/nf-core-subworkflows-lint.svg @@ -19,239 +19,239 @@ font-weight: 700; } - .terminal-785643940-matrix { + .terminal-3511810563-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-785643940-title { + .terminal-3511810563-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-785643940-r1 { fill: #c5c8c6 } -.terminal-785643940-r2 { fill: #98a84b } -.terminal-785643940-r3 { fill: #9a9b99 } -.terminal-785643940-r4 { fill: #608ab1 } -.terminal-785643940-r5 { fill: #d0b344 } -.terminal-785643940-r6 { fill: #d0b344;font-weight: bold } -.terminal-785643940-r7 { fill: #8d7b39 } -.terminal-785643940-r8 { fill: #68a0b3;font-weight: bold } -.terminal-785643940-r9 { fill: #d0b344;font-style: italic; } -.terminal-785643940-r10 { fill: #c5c8c6;font-weight: bold } -.terminal-785643940-r11 { fill: #98a84b;font-weight: bold } -.terminal-785643940-r12 { fill: #cc555a } + .terminal-3511810563-r1 { fill: #c5c8c6 } +.terminal-3511810563-r2 { fill: #98a84b } +.terminal-3511810563-r3 { fill: #9a9b99 } +.terminal-3511810563-r4 { fill: #608ab1 } +.terminal-3511810563-r5 { fill: #d0b344 } +.terminal-3511810563-r6 { fill: #d0b344;font-weight: bold } +.terminal-3511810563-r7 { fill: #8d7b39 } +.terminal-3511810563-r8 { fill: #68a0b3;font-weight: bold } +.terminal-3511810563-r9 { fill: #d0b344;font-style: italic; } +.terminal-3511810563-r10 { fill: #c5c8c6;font-weight: bold } +.terminal-3511810563-r11 { fill: #98a84b;font-weight: bold } +.terminal-3511810563-r12 { fill: #cc555a } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -263,78 +263,78 @@ - + - - $ nf-core subworkflows lint bam_stats_samtools - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Linting modules repo: '.' -INFO     Linting subworkflow: 'bam_stats_samtools' - -╭─[!] 14 Subworkflow Test Warnings───────────────────────────────────────────────────────────────╮ -                     ╷                                     ╷                                       -Subworkflow name   File path                          Test message                         -╶────────────────────┼─────────────────────────────────────┼─────────────────────────────────────╴ -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf.test//Add  -all required assertions to verify  -the test output. -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf.testAdd  -tags for all modules used within  -this subworkflow. Example: -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf.testChange  -the test name preferably indicating  -the test-data and file-format used -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf.testOnce  -you have added the required tests,  -please run the following command to  -build this file: -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf.testdefine  -inputs of the workflow here.  -Example: -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf -subworkflow SHOULD import at least  -two modules -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nfIf in doubt  -look at other nf-core/subworkflows  -to see how we are doing things! :) -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nfedit emitted -channels -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nfedit input  -(take) channels -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nfsubstitute  -modules here for the modules of your -subworkflow -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in meta.yml#Add a  -description of the subworkflow and  -list keywords -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in meta.yml#Add a list -of the modules and/or subworkflows  -used in the subworkflow -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in meta.yml#List all  -of the channels used as input with a -description and their structure -bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in meta.yml#List all  -of the channels used as output with  -a descriptions and their structure -                     ╵                                     ╵                                       -╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭───────────────────────╮ -LINT RESULTS SUMMARY -├───────────────────────┤ -[✔]  42 Tests Passed  -[!]  14 Test Warnings -[✗]   0 Tests Failed  -╰───────────────────────╯ + + $ nf-core subworkflows lint bam_stats_samtools + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Linting modules repo: '.' +INFO     Linting subworkflow: 'bam_stats_samtools' + +╭─[!] 14 Subworkflow Test Warnings───────────────────────────────────────────────────────────────╮ +                     ╷                                     ╷                                       +Subworkflow name   File path                          Test message                         +╶────────────────────┼─────────────────────────────────────┼─────────────────────────────────────╴ +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf.test//Add  +all required assertions to verify  +the test output. +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf.testAdd  +tags for all modules used within  +this subworkflow. Example: +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf.testChange  +the test name preferably indicating  +the test-data and file-format used +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf.testOnce  +you have added the required tests,  +please run the following command to  +build this file: +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf.testdefine  +inputs of the workflow here.  +Example: +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nf +subworkflow SHOULD import at least  +two modules +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nfIf in doubt  +look at other nf-core/subworkflows  +to see how we are doing things! :) +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nfedit emitted +channels +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nfedit input  +(take) channels +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in main.nfsubstitute  +modules here for the modules of your +subworkflow +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in meta.yml#Add a  +description of the subworkflow and  +list keywords +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in meta.yml#Add a list +of the modules and/or subworkflows  +used in the subworkflow +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in meta.yml#List all  +of the channels used as input with a +description and their structure +bam_stats_samtools subworkflows/nf-core/bam_stats_sam…TODO string in meta.yml#List all  +of the channels used as output with  +a descriptions and their structure +                     ╵                                     ╵                                       +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭───────────────────────╮ +LINT RESULTS SUMMARY +├───────────────────────┤ +[✔]  42 Tests Passed  +[!]  14 Test Warnings +[✗]   0 Tests Failed  +╰───────────────────────╯ diff --git a/docs/images/nf-core-subworkflows-list-local.svg b/docs/images/nf-core-subworkflows-list-local.svg index 04a21b7708..6bec883e1f 100644 --- a/docs/images/nf-core-subworkflows-list-local.svg +++ b/docs/images/nf-core-subworkflows-list-local.svg @@ -19,108 +19,108 @@ font-weight: 700; } - .terminal-2970876245-matrix { + .terminal-2930702375-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-2970876245-title { + .terminal-2930702375-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-2970876245-r1 { fill: #c5c8c6 } -.terminal-2970876245-r2 { fill: #98a84b } -.terminal-2970876245-r3 { fill: #9a9b99 } -.terminal-2970876245-r4 { fill: #608ab1 } -.terminal-2970876245-r5 { fill: #d0b344 } -.terminal-2970876245-r6 { fill: #c5c8c6;font-weight: bold } -.terminal-2970876245-r7 { fill: #868887;font-style: italic; } + .terminal-2930702375-r1 { fill: #c5c8c6 } +.terminal-2930702375-r2 { fill: #98a84b } +.terminal-2930702375-r3 { fill: #9a9b99 } +.terminal-2930702375-r4 { fill: #608ab1 } +.terminal-2930702375-r5 { fill: #d0b344 } +.terminal-2930702375-r6 { fill: #c5c8c6;font-weight: bold } +.terminal-2930702375-r7 { fill: #868887;font-style: italic; } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -132,36 +132,36 @@ - + - - $ nf-core subworkflows list local - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Subworkflows installed in '.':                                                              - -self.repo_type='pipeline' -┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓ -Subworkflow Name   Repository        Version SHA        Message           Date       -┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩ -│ utils_nextflow_pip… │ https://github.co… │ cd08c91373cd00a732… │ nicer assertions   │ 2024-01-19 │ -│                     │                    │                     │ in utils           │            │ -│                     │                    │                     │ subworkflows       │            │ -│                     │                    │                     │ (#4779)            │            │ -│ utils_nfcore_pipel… │ https://github.co… │ 262b17ed2aad591039… │ Update             │ 2024-02-12 │ -│                     │                    │                     │ utils-nfcore-pipe… │            │ -│                     │                    │                     │ add multiqc report │            │ -│                     │                    │                     │ to completion      │            │ -[..truncated..] + + $ nf-core subworkflows list local + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Subworkflows installed in '.':                                                              + +self.repo_type='pipeline' +┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓ +Subworkflow Name   Repository        Version SHA        Message           Date       +┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩ +│ utils_nextflow_pip… │ https://github.co… │ 5caf7640a9ef1d18d7… │ remove             │ 2024-02-28 │ +│                     │                    │                     │ params.outdir from │            │ +│                     │                    │                     │ modules and        │            │ +│                     │                    │                     │ subworfklows tests │            │ +│                     │                    │                     │ (#5007)            │            │ +│ utils_nfcore_pipel… │ https://github.co… │ 5caf7640a9ef1d18d7… │ remove             │ 2024-02-28 │ +│                     │                    │                     │ params.outdir from │            │ +│                     │                    │                     │ modules and        │            │ +[..truncated..] diff --git a/docs/images/nf-core-subworkflows-list-remote.svg b/docs/images/nf-core-subworkflows-list-remote.svg index 28754bea25..704c2e9a45 100644 --- a/docs/images/nf-core-subworkflows-list-remote.svg +++ b/docs/images/nf-core-subworkflows-list-remote.svg @@ -19,109 +19,109 @@ font-weight: 700; } - .terminal-3053865645-matrix { + .terminal-2294237964-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3053865645-title { + .terminal-2294237964-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3053865645-r1 { fill: #c5c8c6 } -.terminal-3053865645-r2 { fill: #98a84b } -.terminal-3053865645-r3 { fill: #9a9b99 } -.terminal-3053865645-r4 { fill: #608ab1 } -.terminal-3053865645-r5 { fill: #d0b344 } -.terminal-3053865645-r6 { fill: #1984e9;text-decoration: underline; } -.terminal-3053865645-r7 { fill: #c5c8c6;font-weight: bold } -.terminal-3053865645-r8 { fill: #868887;font-style: italic; } + .terminal-2294237964-r1 { fill: #c5c8c6 } +.terminal-2294237964-r2 { fill: #98a84b } +.terminal-2294237964-r3 { fill: #9a9b99 } +.terminal-2294237964-r4 { fill: #608ab1 } +.terminal-2294237964-r5 { fill: #d0b344 } +.terminal-2294237964-r6 { fill: #1984e9;text-decoration: underline; } +.terminal-2294237964-r7 { fill: #c5c8c6;font-weight: bold } +.terminal-2294237964-r8 { fill: #868887;font-style: italic; } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -133,36 +133,36 @@ - + - - $ nf-core subworkflows list remote - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Subworkflows available from https://github.com/nf-core/modules.git(master):                - -┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ -Subworkflow Name                              -┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ -│ bam_cnv_wisecondorx                           │ -│ bam_create_som_pon_gatk                       │ -│ bam_dedup_stats_samtools_umitools             │ -│ bam_docounts_contamination_angsd              │ -│ bam_markduplicates_picard                     │ -│ bam_markduplicates_samtools                   │ -│ bam_ngscheckmate                              │ -│ bam_qc_picard                                 │ -│ bam_rseqc                                     │ -[..truncated..] + + $ nf-core subworkflows list remote + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Subworkflows available from https://github.com/nf-core/modules.git(master):                + +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +Subworkflow Name                              +┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ +│ bam_cnv_wisecondorx                           │ +│ bam_create_som_pon_gatk                       │ +│ bam_dedup_stats_samtools_umitools             │ +│ bam_docounts_contamination_angsd              │ +│ bam_markduplicates_picard                     │ +│ bam_markduplicates_samtools                   │ +│ bam_ngscheckmate                              │ +│ bam_qc_picard                                 │ +│ bam_rseqc                                     │ +[..truncated..] diff --git a/docs/images/nf-core-subworkflows-remove.svg b/docs/images/nf-core-subworkflows-remove.svg index 91bce3c2ef..42c576f4c5 100644 --- a/docs/images/nf-core-subworkflows-remove.svg +++ b/docs/images/nf-core-subworkflows-remove.svg @@ -1,4 +1,4 @@ - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + - + - + - - $ nf-core subworkflows remove bam_rseqc - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Removed files for 'rseqc/bamstat' and its dependencies 'rseqc/bamstat'.                     -INFO     Removed files for 'rseqc/inferexperiment' and its dependencies 'rseqc/inferexperiment'.     -INFO     Removed files for 'rseqc/innerdistance' and its dependencies 'rseqc/innerdistance'.         -INFO     Removed files for 'rseqc/junctionannotation' and its dependencies                           -'rseqc/junctionannotation'.                                                                 -INFO     Removed files for 'rseqc/junctionsaturation' and its dependencies                           -'rseqc/junctionsaturation'.                                                                 -INFO     Removed files for 'rseqc/readdistribution' and its dependencies 'rseqc/readdistribution'.   -INFO     Removed files for 'bam_rseqc' and its dependencies 'bam_rseqc, rseqc_bamstat,  -rseqc_inferexperiment, rseqc_innerdistance, rseqc_junctionannotation,  -rseqc_junctionsaturation, rseqc_readdistribution'.                                          + + $ nf-core subworkflows remove bam_rseqc + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Removed files for 'rseqc/bamstat' and its dependencies 'rseqc/bamstat'.                     +INFO     Removed files for 'rseqc/inferexperiment' and its dependencies 'rseqc/inferexperiment'.     +INFO     Removed files for 'rseqc/innerdistance' and its dependencies 'rseqc/innerdistance'.         +INFO     Removed files for 'rseqc/junctionannotation' and its dependencies                           +'rseqc/junctionannotation'.                                                                 +INFO     Removed files for 'rseqc/junctionsaturation' and its dependencies                           +'rseqc/junctionsaturation'.                                                                 +INFO     Removed files for 'rseqc/readdistribution' and its dependencies 'rseqc/readdistribution'.   +INFO     Removed files for 'rseqc/readduplication' and its dependencies 'rseqc/readduplication'.     +INFO     Removed files for 'rseqc/tin' and its dependencies 'rseqc/tin'.                             +INFO     Removed files for 'bam_rseqc' and its dependencies 'bam_rseqc, rseqc_bamstat,  +rseqc_inferexperiment, rseqc_innerdistance, rseqc_junctionannotation,  +rseqc_junctionsaturation, rseqc_readdistribution, rseqc_readduplication, rseqc_tin'.        diff --git a/docs/images/nf-core-subworkflows-test.svg b/docs/images/nf-core-subworkflows-test.svg index f4261d37f5..9cda6beda6 100644 --- a/docs/images/nf-core-subworkflows-test.svg +++ b/docs/images/nf-core-subworkflows-test.svg @@ -19,64 +19,64 @@ font-weight: 700; } - .terminal-3894408202-matrix { + .terminal-1767175273-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-3894408202-title { + .terminal-1767175273-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-3894408202-r1 { fill: #c5c8c6 } -.terminal-3894408202-r2 { fill: #98a84b } -.terminal-3894408202-r3 { fill: #9a9b99 } -.terminal-3894408202-r4 { fill: #608ab1 } -.terminal-3894408202-r5 { fill: #d0b344 } + .terminal-1767175273-r1 { fill: #c5c8c6 } +.terminal-1767175273-r2 { fill: #98a84b } +.terminal-1767175273-r3 { fill: #9a9b99 } +.terminal-1767175273-r4 { fill: #608ab1 } +.terminal-1767175273-r5 { fill: #d0b344 } - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -88,22 +88,22 @@ - + - - $ nf-core subworkflows test bam_rseqc --no-prompts - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -INFO     Generating nf-test snapshot                                                                 + + $ nf-core subworkflows test bam_rseqc --no-prompts + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO     Generating nf-test snapshot                                                                 diff --git a/docs/images/nf-core-subworkflows-update.svg b/docs/images/nf-core-subworkflows-update.svg index 64919a7e3d..3398899b7e 100644 --- a/docs/images/nf-core-subworkflows-update.svg +++ b/docs/images/nf-core-subworkflows-update.svg @@ -1,4 +1,4 @@ - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + - + - + - - $ nf-core subworkflows update --all --no-preview - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - - -ERROR   'rseqc/readduplication' + + $ nf-core subworkflows update --all --no-preview + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + + +INFO    'subworkflows/nf-core/bam_rseqc' is already up to date                                      +INFO    'subworkflows/nf-core/utils_nextflow_pipeline' is already up to date                        +INFO    'subworkflows/nf-core/utils_nfcore_pipeline' is already up to date                          +INFO    'subworkflows/nf-core/utils_nfvalidation_plugin' is already up to date                      +INFO     Updates complete ✨                                                                         diff --git a/docs/images/nf-core-sync.svg b/docs/images/nf-core-sync.svg index 1b2917e5db..b2c6d734fc 100644 --- a/docs/images/nf-core-sync.svg +++ b/docs/images/nf-core-sync.svg @@ -19,91 +19,91 @@ font-weight: 700; } - .terminal-1194172937-matrix { + .terminal-559850088-matrix { font-family: Fira Code, monospace; font-size: 20px; line-height: 24.4px; font-variant-east-asian: full-width; } - .terminal-1194172937-title { + .terminal-559850088-title { font-size: 18px; font-weight: bold; font-family: arial; } - .terminal-1194172937-r1 { fill: #c5c8c6 } -.terminal-1194172937-r2 { fill: #98a84b } -.terminal-1194172937-r3 { fill: #9a9b99 } -.terminal-1194172937-r4 { fill: #608ab1 } -.terminal-1194172937-r5 { fill: #d0b344 } -.terminal-1194172937-r6 { fill: #cc555a } -.terminal-1194172937-r7 { fill: #98729f } -.terminal-1194172937-r8 { fill: #ff2c7a } + .terminal-559850088-r1 { fill: #c5c8c6 } +.terminal-559850088-r2 { fill: #98a84b } +.terminal-559850088-r3 { fill: #9a9b99 } +.terminal-559850088-r4 { fill: #608ab1 } +.terminal-559850088-r5 { fill: #d0b344 } +.terminal-559850088-r6 { fill: #cc555a } +.terminal-559850088-r7 { fill: #98729f } +.terminal-559850088-r8 { fill: #ff2c7a } - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -115,30 +115,30 @@ - + - - $ nf-core sync - -                                          ,--./,-. -          ___     __   __   __   ___     /,-._.--~\ -    |\ | |__  __ /  ` /  \ |__) |__         }  { -    | \| |       \__, \__/ |  \ |___     \`-._,-`-, -                                          `._,._,' - -    nf-core/tools version 2.13 - https://nf-co.re - - -WARNING  Could not find GitHub authentication token. Some API requests may fail.                     -INFO     Pipeline directory: /home/runner/work/tools/tools/tmp/nf-core-nextbigthing -INFO     Original pipeline repository branch is 'master' -INFO     Deleting all files in 'TEMPLATE' branch                                                     -INFO     Making a new template pipeline using pipeline variables                                     -INFO     Committed changes to 'TEMPLATE' branch                                                      -INFO     Checking out original branch: 'master' -INFO     Now try to merge the updates in to your pipeline:                                           -           cd /home/runner/work/tools/tools/tmp/nf-core-nextbigthing -           git merge TEMPLATE                                                                        + + $ nf-core sync + +                                          ,--./,-. +          ___     __   __   __   ___     /,-._.--~\ +    |\ | |__  __ /  ` /  \ |__) |__         }  { +    | \| |       \__, \__/ |  \ |___     \`-._,-`-, +                                          `._,._,' + +    nf-core/tools version 2.13.1 - https://nf-co.re + + +WARNING  Could not find GitHub authentication token. Some API requests may fail.                     +INFO     Pipeline directory: /home/runner/work/tools/tools/tmp/nf-core-nextbigthing +INFO     Original pipeline repository branch is 'master' +INFO     Deleting all files in 'TEMPLATE' branch                                                     +INFO     Making a new template pipeline using pipeline variables                                     +INFO     Committed changes to 'TEMPLATE' branch                                                      +INFO     Checking out original branch: 'master' +INFO     Now try to merge the updates in to your pipeline:                                           +           cd /home/runner/work/tools/tools/tmp/nf-core-nextbigthing +           git merge TEMPLATE