From 2ce4ac8a74607954eae58b95eebcb081012282f7 Mon Sep 17 00:00:00 2001 From: Usman Rashid Date: Tue, 15 Jul 2025 08:49:41 +1200 Subject: [PATCH 01/12] Template update for nf-core/tools version 3.3.2 --- .github/actions/nf-test/action.yml | 4 -- .github/workflows/linting.yml | 2 +- .github/workflows/linting_comment.yml | 2 +- .github/workflows/nf-test.yml | 39 ++++++++++--------- .nf-core.yml | 7 +++- .pre-commit-config.yaml | 2 +- README.md | 6 +-- assets/schema_input.json | 4 +- conf/base.config | 1 + nextflow.config | 5 +-- nf-test.config | 2 +- ro-crate-metadata.json | 35 ++++++++--------- .../tests/nextflow.config | 2 +- tests/default.nf.test | 2 +- tests/nextflow.config | 6 ++- 15 files changed, 60 insertions(+), 59 deletions(-) diff --git a/.github/actions/nf-test/action.yml b/.github/actions/nf-test/action.yml index 243e7823..bf44d961 100644 --- a/.github/actions/nf-test/action.yml +++ b/.github/actions/nf-test/action.yml @@ -54,13 +54,9 @@ runs: conda-solver: libmamba conda-remove-defaults: true - # TODO Skip failing conda tests and document their failures - # https://github.com/nf-core/modules/issues/7017 - name: Run nf-test shell: bash env: - NFT_DIFF: ${{ env.NFT_DIFF }} - NFT_DIFF_ARGS: ${{ env.NFT_DIFF_ARGS }} NFT_WORKDIR: ${{ env.NFT_WORKDIR }} run: | nf-test test \ diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index f2d7d1dd..8b0f88c3 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - - name: Set up Python 3.12 + - name: Set up Python 3.13 uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 with: python-version: "3.13" diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml index 7e8050fb..d43797d9 100644 --- a/.github/workflows/linting_comment.yml +++ b/.github/workflows/linting_comment.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download lint results - uses: dawidd6/action-download-artifact@4c1e823582f43b179e2cbb49c3eade4e41f992e2 # v10 + uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11 with: workflow: linting.yml workflow_conclusion: completed diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index d62fd655..593c9360 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -1,12 +1,5 @@ name: Run nf-test on: - push: - paths-ignore: - - "docs/**" - - "**/meta.yml" - - "**/*.md" - - "**/*.png" - - "**/*.svg" pull_request: paths-ignore: - "docs/**" @@ -83,7 +76,7 @@ jobs: - isMain: false profile: "singularity" NXF_VER: - - "24.04.2" + - "24.10.5" - "latest-everything" env: NXF_ANSI_LOG: false @@ -95,22 +88,38 @@ jobs: fetch-depth: 0 - name: Run nf-test + id: run_nf_test uses: ./.github/actions/nf-test + continue-on-error: ${{ matrix.NXF_VER == 'latest-everything' }} env: - NFT_DIFF: ${{ env.NFT_DIFF }} - NFT_DIFF_ARGS: ${{ env.NFT_DIFF_ARGS }} NFT_WORKDIR: ${{ env.NFT_WORKDIR }} with: profile: ${{ matrix.profile }} shard: ${{ matrix.shard }} total_shards: ${{ env.TOTAL_SHARDS }} + + - name: Report test status + if: ${{ always() }} + run: | + if [[ "${{ steps.run_nf_test.outcome }}" == "failure" ]]; then + echo "::error::Test with ${{ matrix.NXF_VER }} failed" + # Add to workflow summary + echo "## ❌ Test failed: ${{ matrix.profile }} | ${{ matrix.NXF_VER }} | Shard ${{ matrix.shard }}/${{ env.TOTAL_SHARDS }}" >> $GITHUB_STEP_SUMMARY + if [[ "${{ matrix.NXF_VER }}" == "latest-everything" ]]; then + echo "::warning::Test with latest-everything failed but will not cause workflow failure. Please check if the error is expected or if it needs fixing." + fi + if [[ "${{ matrix.NXF_VER }}" != "latest-everything" ]]; then + exit 1 + fi + fi + confirm-pass: needs: [nf-test] if: always() runs-on: # use GitHub runners - "ubuntu-latest" steps: - - name: One or more tests failed + - name: One or more tests failed (excluding latest-everything) if: ${{ contains(needs.*.result, 'failure') }} run: exit 1 @@ -129,11 +138,3 @@ jobs: echo "DEBUG: toJSON(needs) = ${{ toJSON(needs) }}" echo "DEBUG: toJSON(needs.*.result) = ${{ toJSON(needs.*.result) }}" echo "::endgroup::" - - - name: Clean Workspace # Purge the workspace in case it's running on a self-hosted runner - if: always() - run: | - ls -la ./ - rm -rf ./* || true - rm -rf ./.??* || true - ls -la ./ diff --git a/.nf-core.yml b/.nf-core.yml index f7e6aa9b..66f90bbb 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,4 +1,5 @@ lint: + actions_nf_test: false files_exist: - conf/igenomes.config - conf/igenomes_ignored.config @@ -10,6 +11,7 @@ lint: - .github/ISSUE_TEMPLATE/config.yml - .github/workflows/awstest.yml - .github/workflows/awsfulltest.yml + - tests/default.nf.test files_unchanged: - LICENSE - .gitignore @@ -26,8 +28,11 @@ lint: - validation.help.afterText - validation.summary.beforeText - validation.summary.afterText + nf_test_content: + - tests/default.nf.test + - tests/nextflow.config template_strings: false -nf_core_version: 3.3.1 +nf_core_version: 3.3.2 repository_type: pipeline template: author: Usman Rashid, Ken Smith, Ross Crowhurst, Chen Wu, Marcus Davy diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9d0b248d..bb41beec 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ repos: hooks: - id: prettier additional_dependencies: - - prettier@3.5.0 + - prettier@3.6.2 - repo: https://github.com/pre-commit/pre-commit-hooks rev: v5.0.0 hooks: diff --git a/README.md b/README.md index bd34799c..91eee0f5 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # plant-food-research-open/assemblyqc -[![GitHub Actions CI Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/ci.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/ci.yml) +[![GitHub Actions CI Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml) [![GitHub Actions Linting Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml)[![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_tests-nf--test-337ab7.svg)](https://www.nf-test.com) -[![Nextflow](https://img.shields.io/badge/version-%E2%89%A524.04.2-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/) -[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.3.1-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.3.1) +[![Nextflow](https://img.shields.io/badge/version-%E2%89%A524.10.5-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/) +[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.3.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.3.2) [![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/) diff --git a/assets/schema_input.json b/assets/schema_input.json index 82c757f3..9f46b284 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -17,14 +17,14 @@ "type": "string", "format": "file-path", "exists": true, - "pattern": "^\\S+\\.f(ast)?q\\.gz$", + "pattern": "^([\\S\\s]*\\/)?[^\\s\\/]+\\.f(ast)?q\\.gz$", "errorMessage": "FastQ file for reads 1 must be provided, cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" }, "fastq_2": { "type": "string", "format": "file-path", "exists": true, - "pattern": "^\\S+\\.f(ast)?q\\.gz$", + "pattern": "^([\\S\\s]*\\/)?[^\\s\\/]+\\.f(ast)?q\\.gz$", "errorMessage": "FastQ file for reads 2 cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" } }, diff --git a/conf/base.config b/conf/base.config index 5287c54d..733b6919 100644 --- a/conf/base.config +++ b/conf/base.config @@ -61,5 +61,6 @@ process { } withLabel: process_gpu { ext.use_gpu = { workflow.profile.contains('gpu') } + accelerator = { workflow.profile.contains('gpu') ? 1 : null } } } diff --git a/nextflow.config b/nextflow.config index 18f7e836..f9513546 100644 --- a/nextflow.config +++ b/nextflow.config @@ -222,7 +222,6 @@ dag { manifest { name = 'plant-food-research-open/assemblyqc' - author = """Usman Rashid, Ken Smith, Ross Crowhurst, Chen Wu, Marcus Davy""" // The author field is deprecated from Nextflow version 24.10.0, use contributors instead contributors = [ // TODO nf-core: Update the field with the details of the contributors to your pipeline. New with Nextflow version 24.10.0 [ @@ -270,14 +269,14 @@ manifest { description = """A NextFlow pipeline which evaluates assembly quality with multiple QC tools and presents the results in a unified html report.""" mainScript = 'main.nf' defaultBranch = 'master' - nextflowVersion = '!>=24.04.2' + nextflowVersion = '!>=24.10.5' version = '3.0.0dev' doi = '' } // Nextflow plugins plugins { - id 'nf-schema@2.3.0' // Validation of pipeline parameters and creation of an input channel from a sample sheet + id 'nf-schema@2.4.2' // Validation of pipeline parameters and creation of an input channel from a sample sheet } validation { diff --git a/nf-test.config b/nf-test.config index 889df760..3a1fff59 100644 --- a/nf-test.config +++ b/nf-test.config @@ -9,7 +9,7 @@ config { configFile "tests/nextflow.config" // ignore tests coming from the nf-core/modules repo - ignore 'modules/nf-core/**/*', 'subworkflows/nf-core/**/*' + ignore 'modules/nf-core/**/tests/*', 'subworkflows/nf-core/**/tests/*' // run all test with defined profile(s) from the main nextflow.config profile "test" diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 4234959b..87e64a76 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -22,8 +22,8 @@ "@id": "./", "@type": "Dataset", "creativeWorkStatus": "InProgress", - "datePublished": "2025-06-10T03:02:12+00:00", - "description": "# plant-food-research-open/assemblyqc\n\n[![GitHub Actions CI Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/ci.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/ci.yml)\n[![GitHub Actions Linting Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A524.04.2-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.3.1-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.3.1)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/plant-food-research-open/assemblyqc)\n\n## Introduction\n\n**plant-food-research-open/assemblyqc** is a bioinformatics pipeline that ...\n\n\n\n\n\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\n\n\nNow, you can run the pipeline using:\n\n\n\n```bash\nnextflow run plant-food-research-open/assemblyqc \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\n## Credits\n\nplant-food-research-open/assemblyqc was originally written by Usman Rashid, Ken Smith, Ross Crowhurst, Chen Wu, Marcus Davy.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\n## Citations\n\n\n\n\n\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nThis pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/main/LICENSE).\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", + "datePublished": "2025-07-14T20:49:34+00:00", + "description": "# plant-food-research-open/assemblyqc\n\n[![GitHub Actions CI Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A524.10.5-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.3.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.3.2)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/plant-food-research-open/assemblyqc)\n\n## Introduction\n\n**plant-food-research-open/assemblyqc** is a bioinformatics pipeline that ...\n\n\n\n\n\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\n\n\nNow, you can run the pipeline using:\n\n\n\n```bash\nnextflow run plant-food-research-open/assemblyqc \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\n## Credits\n\nplant-food-research-open/assemblyqc was originally written by Usman Rashid, Ken Smith, Ross Crowhurst, Chen Wu, Marcus Davy.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\n## Citations\n\n\n\n\n\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nThis pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/main/LICENSE).\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", "hasPart": [ { "@id": "main.nf" @@ -87,7 +87,7 @@ }, "mentions": [ { - "@id": "#8abc3cf2-2bf8-4289-a512-3c29f89e5cf8" + "@id": "#202d1862-6fda-41c2-842d-bfcdab6a5032" } ], "name": "plant-food-research-open/assemblyqc" @@ -116,14 +116,14 @@ ], "creator": [ { - "@id": "#usman@smme.edu.pk" + "@id": "#hrakws@aklppf31.pfr.co.nz" }, { - "@id": "#hrakws@aklppf31.pfr.co.nz" + "@id": "#usman@smme.edu.pk" } ], "dateCreated": "", - "dateModified": "2025-06-10T15:02:12Z", + "dateModified": "2025-07-15T08:49:34Z", "dct:conformsTo": "https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE/", "keywords": [ "nf-core", @@ -135,9 +135,6 @@ "maintainer": [ { "@id": "#usman@smme.edu.pk" - }, - { - "@id": "#hrakws@aklppf31.pfr.co.nz" } ], "name": [ @@ -167,14 +164,14 @@ "url": { "@id": "https://www.nextflow.io/" }, - "version": "!>=24.04.2" + "version": "!>=24.10.5" }, { - "@id": "#8abc3cf2-2bf8-4289-a512-3c29f89e5cf8", + "@id": "#202d1862-6fda-41c2-842d-bfcdab6a5032", "@type": "TestSuite", "instance": [ { - "@id": "#1484175d-4ab0-4be2-8a98-523a8c53560e" + "@id": "#3cf6e8ae-d635-4361-8403-0ea61c667441" } ], "mainEntity": { @@ -183,7 +180,7 @@ "name": "Test suite for plant-food-research-open/assemblyqc" }, { - "@id": "#1484175d-4ab0-4be2-8a98-523a8c53560e", + "@id": "#3cf6e8ae-d635-4361-8403-0ea61c667441", "@type": "TestInstance", "name": "GitHub Actions workflow for testing plant-food-research-open/assemblyqc", "resource": "repos/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml", @@ -291,17 +288,17 @@ "name": "nf-core", "url": "https://nf-co.re/" }, - { - "@id": "#usman@smme.edu.pk", - "@type": "Person", - "email": "usman@smme.edu.pk", - "name": "Usman Rashid" - }, { "@id": "#hrakws@aklppf31.pfr.co.nz", "@type": "Person", "email": "hrakws@aklppf31.pfr.co.nz", "name": "Ken Smith" + }, + { + "@id": "#usman@smme.edu.pk", + "@type": "Person", + "email": "usman@smme.edu.pk", + "name": "Usman Rashid" } ] } \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config index 0907ac58..09ef842a 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config @@ -1,5 +1,5 @@ plugins { - id "nf-schema@2.1.0" + id "nf-schema@2.4.2" } validation { diff --git a/tests/default.nf.test b/tests/default.nf.test index 61f1e9ee..d64f07b7 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -23,7 +23,7 @@ nextflow_pipeline { // Number of successful tasks workflow.trace.succeeded().size(), // pipeline versions.yml file for multiqc from which Nextflow version is removed because we test pipelines on multiple Nextflow versions - removeNextflowVersion("$outputDir/pipeline_info/nf_core_assemblyqc_software_mqc_versions.yml"), + removeNextflowVersion("$outputDir/pipeline_info/assemblyqc_software_mqc_versions.yml"), // All stable path name, with a relative path stable_name, // All files with stable contents diff --git a/tests/nextflow.config b/tests/nextflow.config index 8a83fbb5..3da4fc2e 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -6,7 +6,9 @@ // TODO nf-core: Specify any additional parameters here // Or any resources requirements -params.modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' -params.pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/assemblyqc' +params { + modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/assemblyqc' +} aws.client.anonymous = true // fixes S3 access issues on self-hosted runners From 2d9497d43b179ee56ba36c0fda793210d59e7cdf Mon Sep 17 00:00:00 2001 From: Usman Rashid Date: Tue, 14 Oct 2025 10:30:50 +1300 Subject: [PATCH 02/12] [GH-315] Patched synteny crash due to Syri failure --- .nf-core.yml | 2 +- CHANGELOG.md | 11 ++ CITATION.cff | 2 +- nextflow.config | 2 +- ro-crate-metadata.json | 43 ++++---- subworkflows/local/fasta_synteny.nf | 61 ++++++---- tests/hic/main.nf.test.snap | 4 +- tests/invalid/main.nf.test.snap | 2 +- tests/mapback/main.nf.test.snap | 2 +- tests/minimal/main.nf.test.snap | 2 +- tests/noltr/main.nf.test.snap | 2 +- tests/orthofinder/main.nf.test.snap | 2 +- tests/stub/main.nf.test.snap | 2 +- .../packageSyriOutputsForPlotSR.nf.test | 104 ++++++++++++++++++ .../packageSyriOutputsForPlotSR.nf.test.snap | 70 ++++++++++++ tests/tiny/main.nf.test.snap | 2 +- 16 files changed, 257 insertions(+), 56 deletions(-) create mode 100644 tests/synteny/packageSyriOutputsForPlotSR.nf.test create mode 100644 tests/synteny/packageSyriOutputsForPlotSR.nf.test.snap diff --git a/.nf-core.yml b/.nf-core.yml index b12594c3..dab1ae0a 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -48,4 +48,4 @@ template: - igenomes - multiqc - fastqc - version: 3.0.0 + version: 3.0.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 9832ebf0..d196d1f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v3.0.1 - [14-Oct-2025] + +### `Fixed` + +1. Fixed an issue in Synteny workflow which caused a pipeline crash when Syri failed for one of the synteny combinations [#315](https://github.com/Plant-Food-Research-Open/assemblyqc/issues/315) + +### `Dependencies` + +1. Nextflow!>=24.10.5 +2. nf-schema@2.4.2 + ## v3.0.0 - [22-Sep-2025] ### `Added` diff --git a/CITATION.cff b/CITATION.cff index 007244e3..e8602fe2 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -25,7 +25,7 @@ authors: - family-names: "Deng" given-names: "Cecilia" title: "AssemblyQC: A Nextflow pipeline for reproducible reporting of assembly quality" -version: 3.0.0 +version: 3.0.1 date-released: 2024-07-30 url: "https://github.com/Plant-Food-Research-Open/assemblyqc" doi: 10.1093/bioinformatics/btae477 diff --git a/nextflow.config b/nextflow.config index 7fee3d5d..0b3d5861 100644 --- a/nextflow.config +++ b/nextflow.config @@ -329,7 +329,7 @@ manifest { mainScript = 'main.nf' defaultBranch = 'main' nextflowVersion = '!>=24.10.5' - version = '3.0.0' + version = '3.0.1' doi = 'https://doi.org/10.1093/bioinformatics/btae477' } diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 62453cbd..1c55c2ec 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -21,8 +21,8 @@ { "@id": "./", "@type": "Dataset", - "creativeWorkStatus": "InProgress", - "datePublished": "2025-09-22T00:29:39+00:00", + "creativeWorkStatus": "Stable", + "datePublished": "2025-10-12T21:50:53+00:00", "description": "# plant-food-research-open/assemblyqc\n\n[![GitHub Actions CI Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml)\n[![Cite Article](http://img.shields.io/badge/DOI-10.1093/bioinformatics/btae477-1073c8?labelColor=000000)](https://doi.org/10.1093/bioinformatics/btae477)\n\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A524.10.5-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.3.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.3.2)\n\n[![run with conda \u274c](http://img.shields.io/badge/run%20with-conda%20\u274c-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/plant-food-research-open/assemblyqc)\n\n## Introduction\n\n**plant-food-research-open/assemblyqc** is a [Nextflow](https://www.nextflow.io/docs/latest/index.html) pipeline which evaluates assembly quality with multiple QC tools and presents the results in a unified html report. The tools are shown in the [Pipeline Flowchart](#pipeline-flowchart) and their references are listed in [CITATIONS.md](./CITATIONS.md). The pipeline includes skip flags to disable execution of various tools.\n\n## Pipeline Flowchart\n\n

\n\n- `Assembly`\n - [fa-lint](https://github.com/GallVp/fa-lint) + [SeqKit rmdup](https://github.com/shenwei356/seqkit): FASTA validation\n - [assemblathon_stats](https://github.com/PlantandFoodResearch/assemblathon2-analysis/blob/a93cba25d847434f7eadc04e63b58c567c46a56d/assemblathon_stats.pl), [gfastats](https://github.com/vgl-hub/gfastats): Assembly statistics\n - [NCBI FCS-adaptor](https://github.com/ncbi/fcs): Adaptor contamination pass/fail\n - [NCBI FCS-GX](https://github.com/ncbi/fcs): Foreign organism contamination pass/fail\n - [tidk](https://github.com/tolkit/telomeric-identifier): Telomere repeat identification\n - [BUSCO](https://gitlab.com/ezlab/busco): Gene-space completeness estimation\n - [LAI](https://github.com/oushujun/LTR_retriever/blob/master/LAI): Continuity of repetitive sequences\n - [Kraken 2](https://github.com/DerrickWood/kraken2), [Krona](https://github.com/marbl/Krona): Taxonomy classification\n - `Alignment and visualisation of HiC data`\n - [sra-tools](https://github.com/ncbi/sra-tools): HiC data download from SRA or use of local FASTQ files\n - [fastp](https://github.com/OpenGene/fastp), [FastQC](https://github.com/s-andrews/FastQC): Read QC and trimming\n - [SeqKit sort](https://github.com/shenwei356/seqkit): Alphanumeric sorting of FASTA by sequence ID\n - [HapHiC refsort](https://github.com/zengxiaofei/HapHiC): Reference-based sorting of FASTA\n - [bwa-mem](https://github.com/lh3/bwa): HiC read alignment\n - [samblaster](https://github.com/GregoryFaust/samblaster): Duplicate marking\n - [hic_qc](https://github.com/phasegenomics/hic_qc): HiC read and alignment statistics\n - [YaHS juicer pre](https://github.com/c-zhou/yahs): BAM to juicer conversion\n - [hictk load/zoomify](https://github.com/paulsengroup/hictk): `.hic` file creation\n - [juicebox.js](https://github.com/igvteam/juicebox.js): HiC contact map visualisation\n - `K-mer completeness, consensus quality and phasing assessment`\n - [sra-tools](https://github.com/ncbi/sra-tools): Assembly, maternal and paternal data download from SRA or use of local FASTQ files\n - [Merqury hapmers](https://github.com/marbl/merqury/blob/master/trio/hapmers.sh): Hapmer generation if parental data is available\n - [Merqury](https://github.com/marbl/merqury): Completeness, consensus quality and phasing assessment\n - `Synteny analysis`\n - [MUMmer](https://github.com/mummer4/mummer) \u2192 [Circos](http://circos.ca/documentation/) + [dotplot](https://plotly.com): One-to-all and all-to-all synteny analysis at the contig level\n - [Minimap2](https://github.com/lh3/minimap2) \u2192 [Syri](https://github.com/schneebergerlab/syri)/[Plotsr](https://github.com/schneebergerlab/plotsr): One-to-one synteny analysis at the chromosome level\n - `Mapback profile from alignment of long-read data, GC content and variant detection`\n - [Winnowmap](https://github.com/marbl/Winnowmap): Align long-read data\n - [paftools sam2paf](https://github.com/lh3/minimap2): Convert SAM to PAF\n - [T2T-Polish pafToCovClippedWig](https://github.com/arangrhie/T2T-Polish): Convert PAF to coverage Wig\n - [bedtools nuc](https://bedtools.readthedocs.io/en/latest/): Compute GC content\n - [Clair3](https://github.com/HKU-BAL/Clair3): Variant detection\n- `Annotation`\n - [GenomeTools gt gff3validator](https://genometools.org/tools/gt_gff3validator.html) + [FASTA/GFF correspondence](subworkflows/gallvp/gff3_gt_gff3_gff3validator_stat/main.nf): GFF3 validation\n - [GenomeTools gt stat](https://genometools.org/tools/gt_stat.html): Annotation statistics\n - [GffRead](https://github.com/gpertea/gffread), [BUSCO](https://gitlab.com/ezlab/busco): Gene-space completeness estimation in annotation proteins\n - [OrthoFinder](https://github.com/davidemms/OrthoFinder): Phylogenetic orthology inference for comparative genomics\n\n## Usage\n\nRefer to [usage](./docs/usage.md), [parameters](./docs/parameters.md) and [output](./docs/output.md) documents for details.\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\nPrepare an `assemblysheet.csv` file with following columns representing target assemblies and associated meta-data.\n\n- `tag:` A unique tag which represents the target assembly throughout the pipeline and in the final report\n- `fasta:` FASTA file\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run plant-food-research-open/assemblyqc \\\n -revision \\\n -profile \\\n --input assemblysheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\n### Plant&Food Users\n\nDownload the pipeline to your `/workspace/$USER` folder. Change the parameters defined in the [pfr/params.json](./pfr/params.json) file. Submit the pipeline to SLURM for execution.\n\n```bash\nsbatch ./pfr_assemblyqc\n```\n\n## Credits\n\nplant-food-research-open/assemblyqc was originally written by Usman Rashid ([@gallvp](https://github.com/gallvp)) and Ken Smith ([@hzlnutspread](https://github.com/hzlnutspread)).\n\nRoss Crowhurst ([@rosscrowhurst](https://github.com/rosscrowhurst)), Chen Wu ([@christinawu2008](https://github.com/christinawu2008)) and Marcus Davy ([@mdavy86](https://github.com/mdavy86)) generously contributed their QC scripts.\n\nMahesh Binzer-Panchal ([@mahesh-panchal](https://github.com/mahesh-panchal)) and Simon Pearce ([@SPPearce](https://github.com/SPPearce)) helped port the pipeline modules and sub-workflows to [nf-core](https://nf-co.re) schema.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- [Cecilia Deng](https://github.com/CeciliaDeng)\n- [Ignacio Carvajal](https://github.com/ignacio3437)\n- [Jason Shiller](https://github.com/jasonshiller)\n- [Sarah Bailey](https://github.com/SarahBailey1998)\n- [Susan Thomson](https://github.com/cflsjt)\n- [Ting-Hsuan Chen](https://github.com/ting-hsuan-chen)\n\nThe pipeline uses nf-core modules contributed by following authors:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\n## Citations\n\nIf you use plant-food-research-open/assemblyqc for your analysis, please cite it as:\n\n> **AssemblyQC: A Nextflow pipeline for reproducible reporting of assembly quality.**\n>\n> Usman Rashid, Chen Wu, Jason Shiller, Ken Smith, Ross Crowhurst, Marcus Davy, Ting-Hsuan Chen, Ignacio Carvajal, Sarah Bailey, Susan Thomson & Cecilia H Deng.\n>\n> _Bioinformatics_. 2024 July 30. doi: [10.1093/bioinformatics/btae477](https://doi.org/10.1093/bioinformatics/btae477).\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nThis pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/main/LICENSE).\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", "hasPart": [ { @@ -102,7 +102,7 @@ }, "mentions": [ { - "@id": "#6068a637-d0e8-4615-a5c9-68701748950b" + "@id": "#a2a83118-1b86-43f1-804f-730e839d2bc5" } ], "name": "plant-food-research-open/assemblyqc" @@ -131,14 +131,17 @@ ], "creator": [ { - "@id": "#usman@smme.edu.pk" + "@id": "#hrakws@aklppf31.pfr.co.nz" }, { - "@id": "#hrakws@aklppf31.pfr.co.nz" + "@id": "#usman@smme.edu.pk" } ], - "dateCreated": "", - "dateModified": "2025-09-22T12:29:39Z", + "dateCreated": [ + "", + "2025-09-24T09:25:59Z" + ], + "dateModified": "2025-10-13T10:50:53Z", "dct:conformsTo": "https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE/", "keywords": [ "nf-core", @@ -149,10 +152,10 @@ ], "maintainer": [ { - "@id": "#usman@smme.edu.pk" + "@id": "#hrakws@aklppf31.pfr.co.nz" }, { - "@id": "#hrakws@aklppf31.pfr.co.nz" + "@id": "#usman@smme.edu.pk" } ], "name": [ @@ -166,10 +169,10 @@ }, "url": [ "https://github.com/plant-food-research-open/assemblyqc", - "https://nf-co.re/plant-food-research-open/assemblyqc/dev/" + "https://nf-co.re/plant-food-research-open/assemblyqc/3.0.1/" ], "version": [ - "3.0.0" + "3.0.1" ] }, { @@ -185,11 +188,11 @@ "version": "!>=24.10.5" }, { - "@id": "#6068a637-d0e8-4615-a5c9-68701748950b", + "@id": "#a2a83118-1b86-43f1-804f-730e839d2bc5", "@type": "TestSuite", "instance": [ { - "@id": "#233e21c6-dec3-4d79-95be-2c71b303aed2" + "@id": "#4723b4a1-7aaf-425a-80ac-00f54c0f4f20" } ], "mainEntity": { @@ -198,7 +201,7 @@ "name": "Test suite for plant-food-research-open/assemblyqc" }, { - "@id": "#233e21c6-dec3-4d79-95be-2c71b303aed2", + "@id": "#4723b4a1-7aaf-425a-80ac-00f54c0f4f20", "@type": "TestInstance", "name": "GitHub Actions workflow for testing plant-food-research-open/assemblyqc", "resource": "repos/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml", @@ -331,17 +334,17 @@ "name": "nf-core", "url": "https://nf-co.re/" }, - { - "@id": "#usman@smme.edu.pk", - "@type": "Person", - "email": "usman@smme.edu.pk", - "name": "Usman Rashid" - }, { "@id": "#hrakws@aklppf31.pfr.co.nz", "@type": "Person", "email": "hrakws@aklppf31.pfr.co.nz", "name": "Ken Smith" + }, + { + "@id": "#usman@smme.edu.pk", + "@type": "Person", + "email": "usman@smme.edu.pk", + "name": "Usman Rashid" } ] } \ No newline at end of file diff --git a/subworkflows/local/fasta_synteny.nf b/subworkflows/local/fasta_synteny.nf index eee94f8e..86587735 100644 --- a/subworkflows/local/fasta_synteny.nf +++ b/subworkflows/local/fasta_synteny.nf @@ -341,30 +341,7 @@ workflow FASTA_SYNTENY { ] } | groupTuple - | map { meta, syri, fastas -> - def fasta_list = fastas.flatten() - def syri_tags = syri.collect { it.name.replace('syri.out', '').split(/\.on\./).toList() }.flatten().unique() - def proposed_order = plotsr_assembly_order ? plotsr_assembly_order.tokenize(' ') : syri_tags.sort(false) { it.toUpperCase() } - - def available_tags = [] - proposed_order.each { tag -> if ( tag in syri_tags ) available_tags << tag } - - def ordered_fa = [] - available_tags.each { tag -> ordered_fa << ( fasta_list.find { it.baseName == "${tag}.plotsr" } ) } - - def ordered_syri_tags = [] - available_tags.eachWithIndex { tag, index -> if ( index > 0 ) { ordered_syri_tags << "${tag}.on.${available_tags[index-1]}" } } - - def ordered_syri = [] - ordered_syri_tags.each { tag -> ordered_syri << ( syri.find { it.baseName == "${tag}syri" } ) } - - [ - meta, - ordered_syri, - ordered_fa, - "#file\tname\n" + ordered_fa.collect { it.baseName.replace('.plotsr', '') }.join('\n') - ] - } + | map { meta, syri, fastas -> packageSyriOutputsForPlotSR ( meta, syri, fastas, plotsr_assembly_order ) } PLOTSR( ch_plotsr_inputs.map { meta, syri, _fastas, _txt -> [ meta, syri ] }, @@ -430,3 +407,39 @@ def extractBundleTag(filePath) { error "Error: Failed to parse the sequence tag from file name: ${filePath.getName()}" } } + +def packageSyriOutputsForPlotSR(meta, syri, fastas, plotsr_assembly_order) { + def fasta_list = fastas.flatten() + + // Iteration 1: Find available Syri tags from Syri outputs and order Syri.out files by their tags alphabetically or + // in accordance with the order listed in `plotsr_assembly_order` + def syri_tags = syri.collect { it.name.replace('syri.out', '').split(/\.on\./).toList() }.flatten().unique() + def proposed_order = plotsr_assembly_order ? plotsr_assembly_order.tokenize(' ') : syri_tags.sort(false) { it.toUpperCase() } + + def available_tags = [] + proposed_order.each { tag -> if ( tag in syri_tags ) available_tags << tag } + + def ordered_syri_tags = [] + available_tags.eachWithIndex { tag, index -> if ( index > 0 ) { ordered_syri_tags << "${tag}.on.${available_tags[index-1]}" } } + + def ordered_syri = [] + ordered_syri_tags.each { tag -> ordered_syri << ( syri.find { it.baseName == "${tag}syri" } ) } + ordered_syri = ordered_syri.findAll { it != null } + + // Iteration 2: Find available Syri tags from filtered `ordered_syri` to ensure that only those tags are + // retained for which there is at least one Syri file + syri_tags = ordered_syri.collect { it.name.replace('syri.out', '').split(/\.on\./).toList() }.flatten().unique() + proposed_order = plotsr_assembly_order ? plotsr_assembly_order.tokenize(' ') : syri_tags.sort(false) { it.toUpperCase() } + available_tags = [] + proposed_order.each { tag -> if ( tag in syri_tags ) available_tags << tag } + + def ordered_fa = [] + available_tags.each { tag -> ordered_fa << ( fasta_list.find { it.baseName == "${tag}.plotsr" } ) } + + [ + meta, + ordered_syri, + ordered_fa, + "#file\tname\n" + ordered_fa.collect { it.baseName.replace('.plotsr', '') }.join('\n') + ] +} diff --git a/tests/hic/main.nf.test.snap b/tests/hic/main.nf.test.snap index 966c4cea..05188ac4 100644 --- a/tests/hic/main.nf.test.snap +++ b/tests/hic/main.nf.test.snap @@ -63,7 +63,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.0" + "plant-food-research-open/assemblyqc": "v3.0.1" }, "YAHS_JUICERPRE": { "yahs": "1.2.2" @@ -169,7 +169,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.0" + "plant-food-research-open/assemblyqc": "v3.0.1" }, "YAHS_JUICERPRE": { "yahs": "1.2.2" diff --git a/tests/invalid/main.nf.test.snap b/tests/invalid/main.nf.test.snap index e67c83df..c13e9a39 100644 --- a/tests/invalid/main.nf.test.snap +++ b/tests/invalid/main.nf.test.snap @@ -35,7 +35,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.0" + "plant-food-research-open/assemblyqc": "v3.0.1" } }, "stable paths": [ diff --git a/tests/mapback/main.nf.test.snap b/tests/mapback/main.nf.test.snap index 72e74256..e84f2860 100644 --- a/tests/mapback/main.nf.test.snap +++ b/tests/mapback/main.nf.test.snap @@ -51,7 +51,7 @@ "samtools": "1.16.1" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.0" + "plant-food-research-open/assemblyqc": "v3.0.1" } }, "stable paths": [ diff --git a/tests/minimal/main.nf.test.snap b/tests/minimal/main.nf.test.snap index 89d06036..49c6cc8e 100644 --- a/tests/minimal/main.nf.test.snap +++ b/tests/minimal/main.nf.test.snap @@ -35,7 +35,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.0" + "plant-food-research-open/assemblyqc": "v3.0.1" } }, "stable paths": [ diff --git a/tests/noltr/main.nf.test.snap b/tests/noltr/main.nf.test.snap index f05ed523..cf151f14 100644 --- a/tests/noltr/main.nf.test.snap +++ b/tests/noltr/main.nf.test.snap @@ -50,7 +50,7 @@ "seqkit": "v2.9.0" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.0" + "plant-food-research-open/assemblyqc": "v3.0.1" } }, "stable paths": [ diff --git a/tests/orthofinder/main.nf.test.snap b/tests/orthofinder/main.nf.test.snap index 07d799d3..83c8ef28 100644 --- a/tests/orthofinder/main.nf.test.snap +++ b/tests/orthofinder/main.nf.test.snap @@ -41,7 +41,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.0" + "plant-food-research-open/assemblyqc": "v3.0.1" } }, "stable paths": [ diff --git a/tests/stub/main.nf.test.snap b/tests/stub/main.nf.test.snap index 5be653fa..e5aa4ab4 100644 --- a/tests/stub/main.nf.test.snap +++ b/tests/stub/main.nf.test.snap @@ -228,7 +228,7 @@ "untar": 1.34 }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.0" + "plant-food-research-open/assemblyqc": "v3.0.1" }, "YAHS_JUICERPRE": { "yahs": "1.2.2" diff --git a/tests/synteny/packageSyriOutputsForPlotSR.nf.test b/tests/synteny/packageSyriOutputsForPlotSR.nf.test new file mode 100644 index 00000000..7d1e0c3f --- /dev/null +++ b/tests/synteny/packageSyriOutputsForPlotSR.nf.test @@ -0,0 +1,104 @@ +nextflow_function { + + name "packageSyriOutputsForPlotSR" + script "../../subworkflows/local/fasta_synteny.nf" + function "packageSyriOutputsForPlotSR" + + test("FI1 - JAD - TT_2021a") { + when { + function { + """ + input[0] = [ id: 'plotsr' ] + input[1] = [ file('JAD.on.FI1syri.out') ] + input[2] = [ + [ file('JAD.plotsr.fasta'), file('FI1.plotsr.fasta') ] + ] + input[3] = null + """ + } + } + + then { + assert function.success + assert function.result + assert snapshot ( + function.result[0], + function.result[1].collect { file(it).name }, + function.result[2].collect { file(it).name }, + function.result[3], + ).match() + } + } + + test("gddh13_v1p1 - FujiA - FujiB - PbDS - PcKFL") { + when { + function { + """ + input[0] = [ id: 'plotsr' ] + input[1] = [ + file('FujiA.on.gddh13_v1p1syri.out'), file('FujiB.on.FujiAsyri.out'), file('PcKFL.on.PbDSsyri.out') + ] + input[2] = [ + [ + file('FujiA.plotsr.fasta'), file('gddh13_v1p1.plotsr.fasta') + ], + [ + file('FujiB.plotsr.fasta'), file('FujiA.plotsr.fasta') + ], + [ + file('PcKFL.plotsr.fasta'), file('PbDS.plotsr.fasta') + ] + ] + input[3] = 'gddh13_v1p1 FujiA FujiB PbDS PcKFL' + """ + } + } + + then { + assert function.success + assert function.result + assert snapshot ( + function.result[0], + function.result[1].collect { file(it).name }, + function.result[2].collect { file(it).name }, + function.result[3], + ).match() + } + } + + test("gddh13_v1p1 - FujiA - FujiB - PbDS - PcKFL - null") { + when { + function { + """ + input[0] = [ id: 'plotsr' ] + input[1] = [ + file('FujiA.on.gddh13_v1p1syri.out'), file('FujiB.on.FujiAsyri.out'), file('PcKFL.on.PbDSsyri.out') + ] + input[2] = [ + [ + file('FujiA.plotsr.fasta'), file('gddh13_v1p1.plotsr.fasta') + ], + [ + file('FujiB.plotsr.fasta'), file('FujiA.plotsr.fasta') + ], + [ + file('PcKFL.plotsr.fasta'), file('PbDS.plotsr.fasta') + ] + ] + input[3] = null + """ + } + } + + then { + assert function.success + assert function.result + assert snapshot ( + function.result[0], + function.result[1].collect { file(it).name }, + function.result[2].collect { file(it).name }, + function.result[3], + ).match() + } + } +} diff --git a/tests/synteny/packageSyriOutputsForPlotSR.nf.test.snap b/tests/synteny/packageSyriOutputsForPlotSR.nf.test.snap new file mode 100644 index 00000000..e92680c0 --- /dev/null +++ b/tests/synteny/packageSyriOutputsForPlotSR.nf.test.snap @@ -0,0 +1,70 @@ +{ + "gddh13_v1p1 - FujiA - FujiB - PbDS - PcKFL - null": { + "content": [ + { + "id": "plotsr" + }, + [ + "FujiB.on.FujiAsyri.out", + "PcKFL.on.PbDSsyri.out" + ], + [ + "FujiA.plotsr.fasta", + "FujiB.plotsr.fasta", + "PbDS.plotsr.fasta", + "PcKFL.plotsr.fasta" + ], + "#file\tname\nFujiA\nFujiB\nPbDS\nPcKFL" + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.8" + }, + "timestamp": "2025-10-14T10:22:05.548465" + }, + "gddh13_v1p1 - FujiA - FujiB - PbDS - PcKFL": { + "content": [ + { + "id": "plotsr" + }, + [ + "FujiA.on.gddh13_v1p1syri.out", + "FujiB.on.FujiAsyri.out", + "PcKFL.on.PbDSsyri.out" + ], + [ + "gddh13_v1p1.plotsr.fasta", + "FujiA.plotsr.fasta", + "FujiB.plotsr.fasta", + "PbDS.plotsr.fasta", + "PcKFL.plotsr.fasta" + ], + "#file\tname\ngddh13_v1p1\nFujiA\nFujiB\nPbDS\nPcKFL" + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.8" + }, + "timestamp": "2025-10-14T10:21:10.168812" + }, + "FI1 - JAD - TT_2021a": { + "content": [ + { + "id": "plotsr" + }, + [ + "JAD.on.FI1syri.out" + ], + [ + "FI1.plotsr.fasta", + "JAD.plotsr.fasta" + ], + "#file\tname\nFI1\nJAD" + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "25.04.8" + }, + "timestamp": "2025-10-13T11:51:10.498346" + } +} \ No newline at end of file diff --git a/tests/tiny/main.nf.test.snap b/tests/tiny/main.nf.test.snap index 404bb90b..074b588a 100644 --- a/tests/tiny/main.nf.test.snap +++ b/tests/tiny/main.nf.test.snap @@ -29,7 +29,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.0" + "plant-food-research-open/assemblyqc": "v3.0.1" } }, "stable paths": [ From 658f506a1e0aa3a4c461123d3b5b45d351ecc6e0 Mon Sep 17 00:00:00 2001 From: Usman Rashid Date: Tue, 14 Oct 2025 11:07:52 +1300 Subject: [PATCH 03/12] Added disk cleaner to GHA and fixed GH-317 --- .github/actions/nf-test/action.yml | 34 +++++++++++++++++++ CHANGELOG.md | 5 +++ .../utils_nfcore_assemblyqc_pipeline/main.nf | 7 +++- 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/.github/actions/nf-test/action.yml b/.github/actions/nf-test/action.yml index bf44d961..8bf659fe 100644 --- a/.github/actions/nf-test/action.yml +++ b/.github/actions/nf-test/action.yml @@ -54,6 +54,40 @@ runs: conda-solver: libmamba conda-remove-defaults: true + - name: Check if disk cleanup is needed + id: disk-cleanup-check + shell: bash + env: + NFT_WORKDIR: ${{ env.NFT_WORKDIR }} + run: | + nf-test test \ + --profile=+${{ inputs.profile }} \ + $(if [ -n "${{ inputs.tags }}" ]; then echo "--tag ${{ inputs.tags }}"; fi) \ + --ci \ + --changed-since HEAD^ \ + --verbose \ + --shard ${{ inputs.shard }}/${{ inputs.total_shards }} \ + --dry-run \ + &> nf-test.log + + if grep -q 'full - stub' nf-test.log; then + echo "cleanup=YES" >> $GITHUB_OUTPUT + else + echo "cleanup=NO" >> $GITHUB_OUTPUT + fi + + - name: Disk space cleanup + if: steps.disk-cleanup-check.outputs.cleanup == 'YES' + uses: jlumbroso/free-disk-space@v1.3.1 + with: + tool-cache: false + android: true + dotnet: false + haskell: false + large-packages: false + docker-images: false + swap-storage: false + - name: Run nf-test shell: bash env: diff --git a/CHANGELOG.md b/CHANGELOG.md index d196d1f0..75939286 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## v3.0.1 - [14-Oct-2025] +### `Added` + +1. Added disk cleanup to nf-test GitHub CI action to avoid the runner running out of disk space for `full - stub` runs + ### `Fixed` 1. Fixed an issue in Synteny workflow which caused a pipeline crash when Syri failed for one of the synteny combinations [#315](https://github.com/Plant-Food-Research-Open/assemblyqc/issues/315) +2. Fixed an issue which cause parameter validation to fail for `hic_map_combinations` when `hic` parameter was set to `null` [#317](https://github.com/Plant-Food-Research-Open/assemblyqc/issues/317) ### `Dependencies` diff --git a/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf b/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf index 97feb4ca..924a31b2 100644 --- a/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf @@ -77,7 +77,12 @@ workflow PIPELINE_INITIALISATION { ch_input_validated = ch_input | map { row -> row[0] } | collect - | map { tags -> validateInputTags( tags, params.hic_map_combinations ) } + | map { tags -> + validateInputTags( + tags, + params.hic ? params.hic_map_combinations : null + ) + } | combine ( ch_input.map { row -> [ row ] } ) | map { _result, row -> row } From d6b50a0811916064bb4448f41698abd370fe145f Mon Sep 17 00:00:00 2001 From: Usman Rashid Date: Tue, 14 Oct 2025 11:31:14 +1300 Subject: [PATCH 04/12] Fixed branch protection rule --- .github/workflows/branch.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index 450da3af..c3890eae 100644 --- a/.github/workflows/branch.yml +++ b/.github/workflows/branch.yml @@ -11,11 +11,11 @@ jobs: test: runs-on: ubuntu-latest steps: - # PRs to the nf-core repo main/master branch are only ok if coming from the nf-core repo `dev` or any `patch` branches + # PRs to the nf-core repo main/master branch are only ok if coming from the nf-core repo `dev` or any `patch` or `fix` branches - name: Check PRs if: github.repository == 'Plant-Food-Research-Open/assemblyqc' run: | - { [[ ${{ github.event.pull_request.head.repo.full_name }} == Plant-Food-Research-Open/assemblyqc ]] && [[ $GITHUB_HEAD_REF == "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]] + { [[ ${{ github.event.pull_request.head.repo.full_name }} == Plant-Food-Research-Open/assemblyqc ]] && [[ $GITHUB_HEAD_REF == "dev" ]]; } || [[ "${GITHUB_HEAD_REF%%/*}" == "patch" ]] || [[ "${GITHUB_HEAD_REF%%/*}" == "fix" ]] # If the above check failed, post a comment on the PR explaining the failure # NOTE - this doesn't currently work if the PR is coming from a fork, due to limitations in GitHub actions secrets From c640bc5ee373b189b80025c8f8e599be98d7578a Mon Sep 17 00:00:00 2001 From: Usman Rashid Date: Fri, 17 Oct 2025 12:17:17 +1300 Subject: [PATCH 05/12] Now skipping all Plotsr combinations including and after the failed one --- subworkflows/local/fasta_synteny.nf | 18 +++++++- .../packageSyriOutputsForPlotSR.nf.test | 26 +++++++++++ .../packageSyriOutputsForPlotSR.nf.test.snap | 46 ++++++++++++------- 3 files changed, 73 insertions(+), 17 deletions(-) diff --git a/subworkflows/local/fasta_synteny.nf b/subworkflows/local/fasta_synteny.nf index 86587735..56c4181d 100644 --- a/subworkflows/local/fasta_synteny.nf +++ b/subworkflows/local/fasta_synteny.nf @@ -419,12 +419,28 @@ def packageSyriOutputsForPlotSR(meta, syri, fastas, plotsr_assembly_order) { def available_tags = [] proposed_order.each { tag -> if ( tag in syri_tags ) available_tags << tag } + if ( proposed_order.size() != available_tags.size() ) { + log.warn ( + "Plotsr combinations involving ${proposed_order - available_tags} will be skipped" + + " as Syri failed to find synteny for their combinations." + ) + } + def ordered_syri_tags = [] available_tags.eachWithIndex { tag, index -> if ( index > 0 ) { ordered_syri_tags << "${tag}.on.${available_tags[index-1]}" } } def ordered_syri = [] ordered_syri_tags.each { tag -> ordered_syri << ( syri.find { it.baseName == "${tag}syri" } ) } - ordered_syri = ordered_syri.findAll { it != null } + def first_null_tag_idx = ordered_syri.findIndexOf { it == null } + + // Remove all Syri files for combinations at and after the first null as Plotsr cannot handle skipped combinations + if ( first_null_tag_idx >= 0 ) { + ordered_syri = ordered_syri[0.. Date: Thu, 23 Jul 2026 09:15:53 +1200 Subject: [PATCH 06/12] Bumped pipeline version to 3.1.0 --- .nf-core.yml | 5 ++-- CHANGELOG.md | 2 ++ CITATION.cff | 2 +- nextflow.config | 2 +- ro-crate-metadata.json | 46 ++++++----------------------- tests/hic/main.nf.test.snap | 4 +-- tests/invalid/main.nf.test.snap | 2 +- tests/mapback/main.nf.test.snap | 2 +- tests/minimal/main.nf.test.snap | 2 +- tests/noltr/main.nf.test.snap | 2 +- tests/orthofinder/main.nf.test.snap | 2 +- tests/stub/main.nf.test.snap | 2 +- tests/tiny/main.nf.test.snap | 2 +- 13 files changed, 24 insertions(+), 51 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index dab1ae0a..2adf81a4 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -37,8 +37,7 @@ nf_core_version: 3.3.2 repository_type: pipeline template: author: Usman Rashid, Ken Smith, Ross Crowhurst, Chen Wu, Marcus Davy - description: A NextFlow pipeline which evaluates assembly quality with multiple - QC tools and presents the results in a unified html report. + description: A NextFlow pipeline which evaluates assembly quality with multiple QC tools and presents the results in a unified html report. force: false is_nfcore: false name: assemblyqc @@ -48,4 +47,4 @@ template: - igenomes - multiqc - fastqc - version: 3.0.1 + version: 3.1.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 75939286..ee0b9cc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v3.1.0 - [23-July-2026] + ## v3.0.1 - [14-Oct-2025] ### `Added` diff --git a/CITATION.cff b/CITATION.cff index e8602fe2..ccdde987 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -25,7 +25,7 @@ authors: - family-names: "Deng" given-names: "Cecilia" title: "AssemblyQC: A Nextflow pipeline for reproducible reporting of assembly quality" -version: 3.0.1 +version: 3.1.0 date-released: 2024-07-30 url: "https://github.com/Plant-Food-Research-Open/assemblyqc" doi: 10.1093/bioinformatics/btae477 diff --git a/nextflow.config b/nextflow.config index 0b3d5861..79779284 100644 --- a/nextflow.config +++ b/nextflow.config @@ -329,7 +329,7 @@ manifest { mainScript = 'main.nf' defaultBranch = 'main' nextflowVersion = '!>=24.10.5' - version = '3.0.1' + version = '3.1.0' doi = 'https://doi.org/10.1093/bioinformatics/btae477' } diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 1c55c2ec..a9e90c5c 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -22,7 +22,7 @@ "@id": "./", "@type": "Dataset", "creativeWorkStatus": "Stable", - "datePublished": "2025-10-12T21:50:53+00:00", + "datePublished": "2026-07-22T21:13:54+00:00", "description": "# plant-food-research-open/assemblyqc\n\n[![GitHub Actions CI Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml)\n[![Cite Article](http://img.shields.io/badge/DOI-10.1093/bioinformatics/btae477-1073c8?labelColor=000000)](https://doi.org/10.1093/bioinformatics/btae477)\n\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A524.10.5-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.3.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.3.2)\n\n[![run with conda \u274c](http://img.shields.io/badge/run%20with-conda%20\u274c-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/plant-food-research-open/assemblyqc)\n\n## Introduction\n\n**plant-food-research-open/assemblyqc** is a [Nextflow](https://www.nextflow.io/docs/latest/index.html) pipeline which evaluates assembly quality with multiple QC tools and presents the results in a unified html report. The tools are shown in the [Pipeline Flowchart](#pipeline-flowchart) and their references are listed in [CITATIONS.md](./CITATIONS.md). The pipeline includes skip flags to disable execution of various tools.\n\n## Pipeline Flowchart\n\n

\n\n- `Assembly`\n - [fa-lint](https://github.com/GallVp/fa-lint) + [SeqKit rmdup](https://github.com/shenwei356/seqkit): FASTA validation\n - [assemblathon_stats](https://github.com/PlantandFoodResearch/assemblathon2-analysis/blob/a93cba25d847434f7eadc04e63b58c567c46a56d/assemblathon_stats.pl), [gfastats](https://github.com/vgl-hub/gfastats): Assembly statistics\n - [NCBI FCS-adaptor](https://github.com/ncbi/fcs): Adaptor contamination pass/fail\n - [NCBI FCS-GX](https://github.com/ncbi/fcs): Foreign organism contamination pass/fail\n - [tidk](https://github.com/tolkit/telomeric-identifier): Telomere repeat identification\n - [BUSCO](https://gitlab.com/ezlab/busco): Gene-space completeness estimation\n - [LAI](https://github.com/oushujun/LTR_retriever/blob/master/LAI): Continuity of repetitive sequences\n - [Kraken 2](https://github.com/DerrickWood/kraken2), [Krona](https://github.com/marbl/Krona): Taxonomy classification\n - `Alignment and visualisation of HiC data`\n - [sra-tools](https://github.com/ncbi/sra-tools): HiC data download from SRA or use of local FASTQ files\n - [fastp](https://github.com/OpenGene/fastp), [FastQC](https://github.com/s-andrews/FastQC): Read QC and trimming\n - [SeqKit sort](https://github.com/shenwei356/seqkit): Alphanumeric sorting of FASTA by sequence ID\n - [HapHiC refsort](https://github.com/zengxiaofei/HapHiC): Reference-based sorting of FASTA\n - [bwa-mem](https://github.com/lh3/bwa): HiC read alignment\n - [samblaster](https://github.com/GregoryFaust/samblaster): Duplicate marking\n - [hic_qc](https://github.com/phasegenomics/hic_qc): HiC read and alignment statistics\n - [YaHS juicer pre](https://github.com/c-zhou/yahs): BAM to juicer conversion\n - [hictk load/zoomify](https://github.com/paulsengroup/hictk): `.hic` file creation\n - [juicebox.js](https://github.com/igvteam/juicebox.js): HiC contact map visualisation\n - `K-mer completeness, consensus quality and phasing assessment`\n - [sra-tools](https://github.com/ncbi/sra-tools): Assembly, maternal and paternal data download from SRA or use of local FASTQ files\n - [Merqury hapmers](https://github.com/marbl/merqury/blob/master/trio/hapmers.sh): Hapmer generation if parental data is available\n - [Merqury](https://github.com/marbl/merqury): Completeness, consensus quality and phasing assessment\n - `Synteny analysis`\n - [MUMmer](https://github.com/mummer4/mummer) \u2192 [Circos](http://circos.ca/documentation/) + [dotplot](https://plotly.com): One-to-all and all-to-all synteny analysis at the contig level\n - [Minimap2](https://github.com/lh3/minimap2) \u2192 [Syri](https://github.com/schneebergerlab/syri)/[Plotsr](https://github.com/schneebergerlab/plotsr): One-to-one synteny analysis at the chromosome level\n - `Mapback profile from alignment of long-read data, GC content and variant detection`\n - [Winnowmap](https://github.com/marbl/Winnowmap): Align long-read data\n - [paftools sam2paf](https://github.com/lh3/minimap2): Convert SAM to PAF\n - [T2T-Polish pafToCovClippedWig](https://github.com/arangrhie/T2T-Polish): Convert PAF to coverage Wig\n - [bedtools nuc](https://bedtools.readthedocs.io/en/latest/): Compute GC content\n - [Clair3](https://github.com/HKU-BAL/Clair3): Variant detection\n- `Annotation`\n - [GenomeTools gt gff3validator](https://genometools.org/tools/gt_gff3validator.html) + [FASTA/GFF correspondence](subworkflows/gallvp/gff3_gt_gff3_gff3validator_stat/main.nf): GFF3 validation\n - [GenomeTools gt stat](https://genometools.org/tools/gt_stat.html): Annotation statistics\n - [GffRead](https://github.com/gpertea/gffread), [BUSCO](https://gitlab.com/ezlab/busco): Gene-space completeness estimation in annotation proteins\n - [OrthoFinder](https://github.com/davidemms/OrthoFinder): Phylogenetic orthology inference for comparative genomics\n\n## Usage\n\nRefer to [usage](./docs/usage.md), [parameters](./docs/parameters.md) and [output](./docs/output.md) documents for details.\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\nPrepare an `assemblysheet.csv` file with following columns representing target assemblies and associated meta-data.\n\n- `tag:` A unique tag which represents the target assembly throughout the pipeline and in the final report\n- `fasta:` FASTA file\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run plant-food-research-open/assemblyqc \\\n -revision \\\n -profile \\\n --input assemblysheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\n### Plant&Food Users\n\nDownload the pipeline to your `/workspace/$USER` folder. Change the parameters defined in the [pfr/params.json](./pfr/params.json) file. Submit the pipeline to SLURM for execution.\n\n```bash\nsbatch ./pfr_assemblyqc\n```\n\n## Credits\n\nplant-food-research-open/assemblyqc was originally written by Usman Rashid ([@gallvp](https://github.com/gallvp)) and Ken Smith ([@hzlnutspread](https://github.com/hzlnutspread)).\n\nRoss Crowhurst ([@rosscrowhurst](https://github.com/rosscrowhurst)), Chen Wu ([@christinawu2008](https://github.com/christinawu2008)) and Marcus Davy ([@mdavy86](https://github.com/mdavy86)) generously contributed their QC scripts.\n\nMahesh Binzer-Panchal ([@mahesh-panchal](https://github.com/mahesh-panchal)) and Simon Pearce ([@SPPearce](https://github.com/SPPearce)) helped port the pipeline modules and sub-workflows to [nf-core](https://nf-co.re) schema.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- [Cecilia Deng](https://github.com/CeciliaDeng)\n- [Ignacio Carvajal](https://github.com/ignacio3437)\n- [Jason Shiller](https://github.com/jasonshiller)\n- [Sarah Bailey](https://github.com/SarahBailey1998)\n- [Susan Thomson](https://github.com/cflsjt)\n- [Ting-Hsuan Chen](https://github.com/ting-hsuan-chen)\n\nThe pipeline uses nf-core modules contributed by following authors:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\n## Citations\n\nIf you use plant-food-research-open/assemblyqc for your analysis, please cite it as:\n\n> **AssemblyQC: A Nextflow pipeline for reproducible reporting of assembly quality.**\n>\n> Usman Rashid, Chen Wu, Jason Shiller, Ken Smith, Ross Crowhurst, Marcus Davy, Ting-Hsuan Chen, Ignacio Carvajal, Sarah Bailey, Susan Thomson & Cecilia H Deng.\n>\n> _Bioinformatics_. 2024 July 30. doi: [10.1093/bioinformatics/btae477](https://doi.org/10.1093/bioinformatics/btae477).\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nThis pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/main/LICENSE).\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", "hasPart": [ { @@ -102,7 +102,7 @@ }, "mentions": [ { - "@id": "#a2a83118-1b86-43f1-804f-730e839d2bc5" + "@id": "#7c6527f6-6d0c-4296-a73e-4eaa5d9fd69f" } ], "name": "plant-food-research-open/assemblyqc" @@ -129,19 +129,11 @@ "SoftwareSourceCode", "ComputationalWorkflow" ], - "creator": [ - { - "@id": "#hrakws@aklppf31.pfr.co.nz" - }, - { - "@id": "#usman@smme.edu.pk" - } - ], "dateCreated": [ "", - "2025-09-24T09:25:59Z" + "2025-11-10T12:07:49Z" ], - "dateModified": "2025-10-13T10:50:53Z", + "dateModified": "2026-07-23T09:13:54Z", "dct:conformsTo": "https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE/", "keywords": [ "nf-core", @@ -150,14 +142,6 @@ "license": [ "MIT" ], - "maintainer": [ - { - "@id": "#hrakws@aklppf31.pfr.co.nz" - }, - { - "@id": "#usman@smme.edu.pk" - } - ], "name": [ "plant-food-research-open/assemblyqc" ], @@ -169,10 +153,10 @@ }, "url": [ "https://github.com/plant-food-research-open/assemblyqc", - "https://nf-co.re/plant-food-research-open/assemblyqc/3.0.1/" + "https://nf-co.re/plant-food-research-open/assemblyqc/3.1.0/" ], "version": [ - "3.0.1" + "3.1.0" ] }, { @@ -188,11 +172,11 @@ "version": "!>=24.10.5" }, { - "@id": "#a2a83118-1b86-43f1-804f-730e839d2bc5", + "@id": "#7c6527f6-6d0c-4296-a73e-4eaa5d9fd69f", "@type": "TestSuite", "instance": [ { - "@id": "#4723b4a1-7aaf-425a-80ac-00f54c0f4f20" + "@id": "#0dfe762c-c37a-4323-bc78-79b8b89159ea" } ], "mainEntity": { @@ -201,7 +185,7 @@ "name": "Test suite for plant-food-research-open/assemblyqc" }, { - "@id": "#4723b4a1-7aaf-425a-80ac-00f54c0f4f20", + "@id": "#0dfe762c-c37a-4323-bc78-79b8b89159ea", "@type": "TestInstance", "name": "GitHub Actions workflow for testing plant-food-research-open/assemblyqc", "resource": "repos/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml", @@ -333,18 +317,6 @@ "@type": "Organization", "name": "nf-core", "url": "https://nf-co.re/" - }, - { - "@id": "#hrakws@aklppf31.pfr.co.nz", - "@type": "Person", - "email": "hrakws@aklppf31.pfr.co.nz", - "name": "Ken Smith" - }, - { - "@id": "#usman@smme.edu.pk", - "@type": "Person", - "email": "usman@smme.edu.pk", - "name": "Usman Rashid" } ] } \ No newline at end of file diff --git a/tests/hic/main.nf.test.snap b/tests/hic/main.nf.test.snap index 05188ac4..3fed8561 100644 --- a/tests/hic/main.nf.test.snap +++ b/tests/hic/main.nf.test.snap @@ -63,7 +63,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.1" + "plant-food-research-open/assemblyqc": "v3.1.0" }, "YAHS_JUICERPRE": { "yahs": "1.2.2" @@ -169,7 +169,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.1" + "plant-food-research-open/assemblyqc": "v3.1.0" }, "YAHS_JUICERPRE": { "yahs": "1.2.2" diff --git a/tests/invalid/main.nf.test.snap b/tests/invalid/main.nf.test.snap index c13e9a39..534579bb 100644 --- a/tests/invalid/main.nf.test.snap +++ b/tests/invalid/main.nf.test.snap @@ -35,7 +35,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.1" + "plant-food-research-open/assemblyqc": "v3.1.0" } }, "stable paths": [ diff --git a/tests/mapback/main.nf.test.snap b/tests/mapback/main.nf.test.snap index e84f2860..66b97f14 100644 --- a/tests/mapback/main.nf.test.snap +++ b/tests/mapback/main.nf.test.snap @@ -51,7 +51,7 @@ "samtools": "1.16.1" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.1" + "plant-food-research-open/assemblyqc": "v3.1.0" } }, "stable paths": [ diff --git a/tests/minimal/main.nf.test.snap b/tests/minimal/main.nf.test.snap index 49c6cc8e..cf40ab77 100644 --- a/tests/minimal/main.nf.test.snap +++ b/tests/minimal/main.nf.test.snap @@ -35,7 +35,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.1" + "plant-food-research-open/assemblyqc": "v3.1.0" } }, "stable paths": [ diff --git a/tests/noltr/main.nf.test.snap b/tests/noltr/main.nf.test.snap index cf151f14..6d9a94d1 100644 --- a/tests/noltr/main.nf.test.snap +++ b/tests/noltr/main.nf.test.snap @@ -50,7 +50,7 @@ "seqkit": "v2.9.0" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.1" + "plant-food-research-open/assemblyqc": "v3.1.0" } }, "stable paths": [ diff --git a/tests/orthofinder/main.nf.test.snap b/tests/orthofinder/main.nf.test.snap index 83c8ef28..41f8db76 100644 --- a/tests/orthofinder/main.nf.test.snap +++ b/tests/orthofinder/main.nf.test.snap @@ -41,7 +41,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.1" + "plant-food-research-open/assemblyqc": "v3.1.0" } }, "stable paths": [ diff --git a/tests/stub/main.nf.test.snap b/tests/stub/main.nf.test.snap index e5aa4ab4..a3916ea8 100644 --- a/tests/stub/main.nf.test.snap +++ b/tests/stub/main.nf.test.snap @@ -228,7 +228,7 @@ "untar": 1.34 }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.1" + "plant-food-research-open/assemblyqc": "v3.1.0" }, "YAHS_JUICERPRE": { "yahs": "1.2.2" diff --git a/tests/tiny/main.nf.test.snap b/tests/tiny/main.nf.test.snap index 074b588a..9c071336 100644 --- a/tests/tiny/main.nf.test.snap +++ b/tests/tiny/main.nf.test.snap @@ -29,7 +29,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.0.1" + "plant-food-research-open/assemblyqc": "v3.1.0" } }, "stable paths": [ From 0135c5f1e27e746155198775b23febbaef299267 Mon Sep 17 00:00:00 2001 From: Usman Rashid Date: Thu, 23 Jul 2026 09:16:53 +1200 Subject: [PATCH 07/12] Template update for nf-core/tools version 4.0.2 --- .devcontainer/devcontainer.json | 29 ++-- .devcontainer/setup.sh | 13 ++ .github/CONTRIBUTING.md | 116 ------------- .github/ISSUE_TEMPLATE/config.yml | 7 + .github/PULL_REQUEST_TEMPLATE.md | 4 +- .github/actions/get-shards/action.yml | 2 +- .github/actions/nf-test/action.yml | 14 +- .github/workflows/branch.yml | 2 +- .github/workflows/clean-up.yml | 2 +- .github/workflows/download_pipeline.yml | 18 +- .github/workflows/fix_linting.yml | 32 ++-- .github/workflows/linting.yml | 36 ++-- .github/workflows/linting_comment.yml | 4 +- .github/workflows/nf-test.yml | 9 +- .../workflows/template-version-comment.yml | 6 +- .gitignore | 1 + .gitpod.yml | 10 -- .nf-core.yml | 5 +- .pre-commit-config.yaml | 18 +- .prettierignore | 5 +- CHANGELOG.md | 2 +- README.md | 13 +- assets/adaptivecard.json | 67 -------- assets/schema_input.json | 2 +- assets/slackreport.json | 34 ---- conf/base.config | 2 +- docs/CONTRIBUTING.md | 162 ++++++++++++++++++ docs/usage.md | 10 +- main.nf | 9 +- modules.json | 6 +- nextflow.config | 49 +++--- nextflow_schema.json | 21 ++- nf-test.config | 26 ++- ro-crate-metadata.json | 73 +++++--- .../utils_nfcore_assemblyqc_pipeline/main.nf | 35 ++-- .../utils_nextflow_pipeline/tests/tags.yml | 2 - .../nf-core/utils_nfcore_pipeline/main.nf | 68 +------- .../utils_nfcore_pipeline/tests/main.nf.test | 29 ++++ .../tests/main.nf.test.snap | 19 ++ .../utils_nfcore_pipeline/tests/tags.yml | 2 - .../nf-core/utils_nfschema_plugin/main.nf | 41 ++++- .../utils_nfschema_plugin/tests/main.nf.test | 56 ++++++ .../tests/nextflow.config | 4 +- tests/default.nf.test | 16 +- tests/nextflow.config | 2 +- workflows/assemblyqc.nf | 31 +++- 46 files changed, 611 insertions(+), 503 deletions(-) create mode 100755 .devcontainer/setup.sh delete mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .gitpod.yml delete mode 100644 assets/adaptivecard.json delete mode 100644 assets/slackreport.json create mode 100644 docs/CONTRIBUTING.md delete mode 100644 subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test create mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test.snap delete mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b290e090..237c9ed0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,20 +1,21 @@ { + "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.schema.json", "name": "nfcore", - "image": "nfcore/gitpod:latest", - "remoteUser": "gitpod", - "runArgs": ["--privileged"], + "image": "nfcore/devcontainer:latest", - // Configure tool-specific properties. - "customizations": { - // Configure properties specific to VS Code. - "vscode": { - // Set *default* container specific settings.json values on container create. - "settings": { - "python.defaultInterpreterPath": "/opt/conda/bin/python" - }, + "remoteUser": "root", + "privileged": true, - // Add the IDs of extensions you want installed when the container is created. - "extensions": ["ms-python.python", "ms-python.vscode-pylance", "nf-core.nf-core-extensionpack"] - } + "remoteEnv": { + // Workspace path on the host for mounting with docker-outside-of-docker + "LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}" + }, + + "onCreateCommand": "./.devcontainer/setup.sh", + + "hostRequirements": { + "cpus": 4, + "memory": "16gb", + "storage": "32gb" } } diff --git a/.devcontainer/setup.sh b/.devcontainer/setup.sh new file mode 100755 index 00000000..332a7495 --- /dev/null +++ b/.devcontainer/setup.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +# Customise the terminal command prompt +echo "export PROMPT_DIRTRIM=2" >> $HOME/.bashrc +echo "export PS1='\[\e[3;36m\]\w ->\[\e[0m\\] '" >> $HOME/.bashrc +export PROMPT_DIRTRIM=2 +export PS1='\[\e[3;36m\]\w ->\[\e[0m\\] ' + +# Update Nextflow +nextflow self-update + +# Update welcome message +echo "Welcome to the plant-food-research-open/assemblyqc devcontainer!" > /usr/local/etc/vscode-dev-containers/first-run-notice.txt diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index eda3fd2d..00000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,116 +0,0 @@ -# `plant-food-research-open/assemblyqc`: Contributing Guidelines - -Hi there! -Many thanks for taking an interest in improving plant-food-research-open/assemblyqc. - -We try to manage the required tasks for plant-food-research-open/assemblyqc using GitHub issues, you probably came to this page when creating one. -Please use the pre-filled template to save time. - -However, don't be put off by this template - other more general issues and suggestions are welcome! -Contributions to the code are even more welcome ;) - -## Contribution workflow - -If you'd like to write some code for plant-food-research-open/assemblyqc, the standard workflow is as follows: - -1. Check that there isn't already an issue about your idea in the [plant-food-research-open/assemblyqc issues](https://github.com/plant-food-research-open/assemblyqc/issues) to avoid duplicating work. If there isn't one already, please create one so that others know you're working on this -2. [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the [plant-food-research-open/assemblyqc repository](https://github.com/plant-food-research-open/assemblyqc) to your GitHub account -3. Make the necessary changes / additions within your forked repository following [Pipeline conventions](#pipeline-contribution-conventions) -4. Use `nf-core pipelines schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10). -5. Submit a Pull Request against the `dev` branch and wait for the code to be reviewed and merged - -If you're not used to this workflow with git, you can start with some [docs from GitHub](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests) or even their [excellent `git` resources](https://try.github.io/). - -## Tests - -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 -``` - -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. - -There are typically two types of tests that run: - -### Lint tests - -`nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all pipelines must adhere to. -To enforce these and ensure that all pipelines stay in sync, we have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core pipelines lint ` command. - -If any failures or warnings are encountered, please follow the listed URL for more documentation. - -### Pipeline tests - -Each `nf-core` pipeline should be set up with a minimal set of test-data. -`GitHub Actions` then runs the pipeline on this data to ensure that it exits successfully. -If there are any failures then the automated tests fail. -These tests are run both with the latest available version of `Nextflow` and also the minimum required version that is stated in the pipeline code. - -## Patch - -:warning: Only in the unlikely and regretful event of a release happening with a bug. - -- On your own fork, make a new branch `patch` based on `upstream/main` or `upstream/master`. -- Fix the bug, and bump version (X.Y.Z+1). -- Open a pull-request from `patch` to `main`/`master` with the changes. - -## Pipeline contribution conventions - -To make the `plant-food-research-open/assemblyqc` code and processing logic more understandable for new contributors and to ensure quality, we semi-standardise the way the code and other contributions are written. - -### Adding a new step - -If you wish to contribute a new step, please use the following coding standards: - -1. Define the corresponding input channel into your new process from the expected previous process channel. -2. Write the process block (see below). -3. Define the output channel if needed (see below). -4. Add any new parameters to `nextflow.config` with a default (see below). -5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core pipelines schema build` tool). -6. Add sanity checks and validation for all relevant parameters. -7. Perform local tests to validate that the new code works as expected. -8. If applicable, add a new test in the `tests` directory. - -### Default values - -Parameters should be initialised / defined with default values within the `params` scope in `nextflow.config`. - -Once there, use `nf-core pipelines schema build` to add to `nextflow_schema.json`. - -### Default processes resource requirements - -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/main/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.cpus}` and `${task.memory}` variables in the `script:` block. - -### Naming schemes - -Please use the following naming schemes, to make it easy to understand what is going where. - -- initial process channel: `ch_output_from_` -- intermediate and terminal channels: `ch__for_` - -### Nextflow version bumping - -If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core pipelines bump-version --nextflow . [min-nf-version]` - -### Images and figures - -For overview images and other documents we follow the nf-core [style guidelines and examples](https://nf-co.re/developers/design_guidelines). - -## GitHub Codespaces - -This repo includes a devcontainer configuration which will create a GitHub Codespaces for Nextflow development! This is an online developer environment that runs in your browser, complete with VSCode and a terminal. - -To get started: - -- Open the repo in [Codespaces](https://github.com/plant-food-research-open/assemblyqc/codespaces) -- Tools installed - - nf-core - - Nextflow - -Devcontainer specs: - -- [DevContainer config](.devcontainer/devcontainer.json) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..f2947f84 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,7 @@ +contact_links: + - name: Join nf-core + url: https://nf-co.re/join + about: Please join the nf-core community here + - name: "Slack #assemblyqc channel" + url: https://nfcore.slack.com/channels/assemblyqc + about: Discussion about the plant-food-research-open/assemblyqc pipeline diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a70d5a05..b7b5a5ed 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -8,14 +8,14 @@ These are the most common things requested on pull requests (PRs). Remember that PRs should be made against the dev branch, unless you're preparing a pipeline release. -Learn more about contributing: [CONTRIBUTING.md](https://github.com/plant-food-research-open/assemblyqc/tree/master/.github/CONTRIBUTING.md) +Learn more about contributing: [CONTRIBUTING.md](https://github.com/plant-food-research-open/assemblyqc/tree/main/docs/CONTRIBUTING.md) --> ## PR checklist - [ ] This comment contains a description of changes (with reason). - [ ] If you've fixed a bug or added code that should be tested, add tests! -- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/plant-food-research-open/assemblyqc/tree/master/.github/CONTRIBUTING.md) +- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/plant-food-research-open/assemblyqc/tree/main/docs/CONTRIBUTING.md) - [ ] Make sure your code lints (`nf-core pipelines lint`). - [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). - [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). diff --git a/.github/actions/get-shards/action.yml b/.github/actions/get-shards/action.yml index 34085279..e2833ee9 100644 --- a/.github/actions/get-shards/action.yml +++ b/.github/actions/get-shards/action.yml @@ -21,7 +21,7 @@ runs: using: "composite" steps: - name: Install nf-test - uses: nf-core/setup-nf-test@v1 + uses: nf-core/setup-nf-test@4069fbbaabe94c08faba4ad261bfa88225ba133f # v2 with: version: ${{ env.NFT_VER }} - name: Get number of shards diff --git a/.github/actions/nf-test/action.yml b/.github/actions/nf-test/action.yml index bf44d961..ad686e8e 100644 --- a/.github/actions/nf-test/action.yml +++ b/.github/actions/nf-test/action.yml @@ -20,24 +20,24 @@ runs: using: "composite" steps: - name: Setup Nextflow - uses: nf-core/setup-nextflow@v2 + uses: nf-core/setup-nextflow@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3 with: version: "${{ env.NXF_VERSION }}" - name: Set up Python - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: - python-version: "3.13" + python-version: "3.14" - name: Install nf-test - uses: nf-core/setup-nf-test@v1 + uses: nf-core/setup-nf-test@4069fbbaabe94c08faba4ad261bfa88225ba133f # v2 with: version: "${{ env.NFT_VER }}" install-pdiff: true - name: Setup apptainer if: contains(inputs.profile, 'singularity') - uses: eWaterCycle/setup-apptainer@main + uses: eWaterCycle/setup-apptainer@3f706d898c9db585b1d741b4692e66755f3a1b40 # v2 - name: Set up Singularity if: contains(inputs.profile, 'singularity') @@ -48,10 +48,12 @@ runs: - name: Conda setup if: contains(inputs.profile, 'conda') - uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3 + uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4 with: auto-update-conda: true conda-solver: libmamba + channels: conda-forge + channel-priority: strict conda-remove-defaults: true - name: Run nf-test diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index 747ac93a..2cb7b875 100644 --- a/.github/workflows/branch.yml +++ b/.github/workflows/branch.yml @@ -21,7 +21,7 @@ jobs: # NOTE - this doesn't currently work if the PR is coming from a fork, due to limitations in GitHub actions secrets - name: Post PR comment if: failure() - uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 + uses: mshick/add-pr-comment@8e4927817251f1ff60c001f04568532b38e0b4a0 # v3 with: message: | ## This PR is against the `${{github.event.pull_request.base.ref}}` branch :x: diff --git a/.github/workflows/clean-up.yml b/.github/workflows/clean-up.yml index ac030fd5..172de6f3 100644 --- a/.github/workflows/clean-up.yml +++ b/.github/workflows/clean-up.yml @@ -10,7 +10,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9 + - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10 with: stale-issue-message: "This issue has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment otherwise this issue will be closed in 20 days." stale-pr-message: "This PR has been tagged as awaiting-changes or awaiting-feedback by an nf-core contributor. Remove stale label or add a comment if it is still useful." diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml index 999bcc38..a7bf4fc2 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -38,15 +38,18 @@ jobs: runs-on: ubuntu-latest needs: configure steps: + - name: Check out pipeline code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - name: Install Nextflow - uses: nf-core/setup-nextflow@v2 + uses: nf-core/setup-nextflow@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3 - name: Disk space cleanup uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: - python-version: "3.13" + python-version: "3.14" architecture: "x64" - name: Setup Apptainer @@ -54,10 +57,15 @@ jobs: with: apptainer-version: 1.3.4 + - name: Read .nf-core.yml + id: read_yml + run: | + echo "nf_core_version=$(yq '.nf_core_version' ${{ github.workspace }}/.nf-core.yml)" >> "$GITHUB_OUTPUT" + - name: Install dependencies run: | python -m pip install --upgrade pip - pip install git+https://github.com/nf-core/tools.git@dev + pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} - name: Make a cache directory for the container images run: | @@ -127,7 +135,7 @@ jobs: fi - name: Upload Nextflow logfile for debugging purposes - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: nextflow_logfile.txt path: .nextflow.log* diff --git a/.github/workflows/fix_linting.yml b/.github/workflows/fix_linting.yml index d9f4f1df..71d50339 100644 --- a/.github/workflows/fix_linting.yml +++ b/.github/workflows/fix_linting.yml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: # Use the @nf-core-bot token to check out so we can push later - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: token: ${{ secrets.nf_core_bot_auth_token }} # indication that the linting is being fixed - name: React on comment - uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5 with: comment-id: ${{ github.event.comment.id }} reactions: eyes @@ -31,30 +31,26 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }} - # Install and run pre-commit - - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 - with: - python-version: "3.13" - - - name: Install pre-commit - run: pip install pre-commit + - name: Install Nextflow + uses: nf-core/setup-nextflow@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3 - - name: Run pre-commit - id: pre-commit - run: pre-commit run --all-files + # Install and run prek + - name: Run prek + id: prek + uses: j178/prek-action@6ad80277337ad479fe43bd70701c3f7f8aa74db3 # v2 continue-on-error: true # indication that the linting has finished - name: react if linting finished succesfully - if: steps.pre-commit.outcome == 'success' - uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + if: steps.prek.outcome == 'success' + uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5 with: comment-id: ${{ github.event.comment.id }} reactions: "+1" - name: Commit & push changes id: commit-and-push - if: steps.pre-commit.outcome == 'failure' + if: steps.prek.outcome == 'failure' run: | git config user.email "core@nf-co.re" git config user.name "nf-core-bot" @@ -67,21 +63,21 @@ jobs: - name: react if linting errors were fixed id: react-if-fixed if: steps.commit-and-push.outcome == 'success' - uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5 with: comment-id: ${{ github.event.comment.id }} reactions: hooray - name: react if linting errors were not fixed if: steps.commit-and-push.outcome == 'failure' - uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5 with: comment-id: ${{ github.event.comment.id }} reactions: confused - name: react if linting errors were not fixed if: steps.commit-and-push.outcome == 'failure' - uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5 with: issue-number: ${{ github.event.issue.number }} body: | diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 8b0f88c3..8738ffc9 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -11,33 +11,31 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - name: Set up Python 3.13 - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 - with: - python-version: "3.13" - - - name: Install pre-commit - run: pip install pre-commit + - name: Install Nextflow + uses: nf-core/setup-nextflow@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3 - - name: Run pre-commit - run: pre-commit run --all-files + - name: Run prek + uses: j178/prek-action@6ad80277337ad479fe43bd70701c3f7f8aa74db3 # v2 nf-core: runs-on: ubuntu-latest steps: - name: Check out pipeline code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Install Nextflow - uses: nf-core/setup-nextflow@v2 + uses: nf-core/setup-nextflow@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3 - - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: - python-version: "3.13" + python-version: "3.14" architecture: "x64" + - name: Setup uv + uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 + - name: read .nf-core.yml uses: pietrobolcato/action-read-yaml@9f13718d61111b69f30ab4ac683e67a56d254e1d # 1.1.0 id: read_yml @@ -45,12 +43,10 @@ jobs: config: ${{ github.workspace }}/.nf-core.yml - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} + run: uv tool install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} - name: Run nf-core pipelines lint - if: ${{ github.base_ref != 'master' }} + if: ${{ github.base_ref != 'master' || github.base_ref != 'main' }} env: GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -58,7 +54,7 @@ jobs: run: nf-core -l lint_log.txt pipelines lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md - name: Run nf-core pipelines lint --release - if: ${{ github.base_ref == 'master' }} + if: ${{ github.base_ref == 'master' || github.base_ref == 'main' }} env: GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -71,7 +67,7 @@ jobs: - name: Upload linting log file artifact if: ${{ always() }} - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: linting-logs path: | diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml index d43797d9..5b0c24f7 100644 --- a/.github/workflows/linting_comment.yml +++ b/.github/workflows/linting_comment.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download lint results - uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11 + uses: dawidd6/action-download-artifact@b6e2e70617bc3265edd6dab6c906732b2f1ae151 # v21 with: workflow: linting.yml workflow_conclusion: completed @@ -21,7 +21,7 @@ jobs: run: echo "pr_number=$(cat linting-logs/PR_number.txt)" >> $GITHUB_OUTPUT - name: Post PR comment - uses: marocchino/sticky-pull-request-comment@52423e01640425a022ef5fd42c6fb5f633a02728 # v2 + uses: marocchino/sticky-pull-request-comment@70d2764d1a7d5d9560b100cbea0077fc8f633987 # v3 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} number: ${{ steps.pr_number.outputs.pr_number }} diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index 593c9360..3a48a15b 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -18,7 +18,7 @@ concurrency: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NFT_VER: "0.9.2" + NFT_VER: "0.9.4" NFT_WORKDIR: "~" NXF_ANSI_LOG: false NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/.singularity @@ -39,7 +39,7 @@ jobs: rm -rf ./* || true rm -rf ./.??* || true ls -la ./ - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: fetch-depth: 0 @@ -76,14 +76,14 @@ jobs: - isMain: false profile: "singularity" NXF_VER: - - "24.10.5" + - "25.10.4" - "latest-everything" env: NXF_ANSI_LOG: false TOTAL_SHARDS: ${{ needs.nf-test-changes.outputs.total_shards }} steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: fetch-depth: 0 @@ -93,6 +93,7 @@ jobs: continue-on-error: ${{ matrix.NXF_VER == 'latest-everything' }} env: NFT_WORKDIR: ${{ env.NFT_WORKDIR }} + NXF_VERSION: ${{ matrix.NXF_VER }} with: profile: ${{ matrix.profile }} shard: ${{ matrix.shard }} diff --git a/.github/workflows/template-version-comment.yml b/.github/workflows/template-version-comment.yml index beb5c77f..ea30827e 100644 --- a/.github/workflows/template-version-comment.yml +++ b/.github/workflows/template-version-comment.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out pipeline code - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: ref: ${{ github.event.pull_request.head.sha }} @@ -29,7 +29,7 @@ jobs: run: echo "OUTPUT=$(pip list --outdated | grep nf-core)" >> ${GITHUB_ENV} - name: Post nf-core template version comment - uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 + uses: mshick/add-pr-comment@8e4927817251f1ff60c001f04568532b38e0b4a0 # v3 if: | contains(env.OUTPUT, 'nf-core') with: @@ -42,5 +42,5 @@ jobs: > Your pipeline is using an old version of the nf-core template: ${{ steps.read_yml.outputs['nf_core_version'] }}. > Please update your pipeline to the latest version. > - > For more documentation on how to update your pipeline, please see the [nf-core documentation](https://github.com/nf-core/tools?tab=readme-ov-file#sync-a-pipeline-with-the-template) and [Synchronisation documentation](https://nf-co.re/docs/contributing/sync). + > For more documentation on how to update your pipeline, please see the [Synchronisation documentation](https://nf-co.re/docs/developing/template-syncs/overview). # diff --git a/.gitignore b/.gitignore index a42ce016..cc2b1a77 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ testing/ testing* *.pyc null/ +.lineage/ diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 83599f63..00000000 --- a/.gitpod.yml +++ /dev/null @@ -1,10 +0,0 @@ -image: nfcore/gitpod:latest -tasks: - - name: Update Nextflow and setup pre-commit - command: | - pre-commit install --install-hooks - nextflow self-update - -vscode: - extensions: - - nf-core.nf-core-extensionpack # https://github.com/nf-core/vscode-extensionpack diff --git a/.nf-core.yml b/.nf-core.yml index 66f90bbb..b1a4bd94 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -20,6 +20,7 @@ lint: - .github/workflows/branch.yml - .github/workflows/linting.yml - docs/README.md + included_configs: false multiqc_config: false nextflow_config: - manifest.name @@ -32,7 +33,7 @@ lint: - tests/default.nf.test - tests/nextflow.config template_strings: false -nf_core_version: 3.3.2 +nf_core_version: 4.0.2 repository_type: pipeline template: author: Usman Rashid, Ken Smith, Ross Crowhurst, Chen Wu, Marcus Davy @@ -47,4 +48,4 @@ template: - igenomes - multiqc - fastqc - version: 3.0.0dev + version: 3.1.0 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bb41beec..f51e1a28 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,24 +4,30 @@ repos: hooks: - id: prettier additional_dependencies: - - prettier@3.6.2 + - prettier@3.8.3 - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v5.0.0 + rev: v6.0.0 hooks: - id: trailing-whitespace args: [--markdown-linebreak-ext=md] exclude: | (?x)^( .*ro-crate-metadata.json$| - modules/nf-core/.*| - subworkflows/nf-core/.*| + modules/(?!local/).*| + subworkflows/(?!local/).*| .*\.snap$ )$ - id: end-of-file-fixer exclude: | (?x)^( .*ro-crate-metadata.json$| - modules/nf-core/.*| - subworkflows/nf-core/.*| + modules/(?!local/).*| + subworkflows/(?!local/).*| .*\.snap$ )$ + - repo: https://github.com/seqeralabs/nf-lint-pre-commit + rev: v0.3.0 + hooks: + - id: nextflow-lint + files: '\.nf$|nextflow\.config$' + args: ["-output", "json"] diff --git a/.prettierignore b/.prettierignore index edd29f01..63cde500 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,4 @@ email_template.html -adaptivecard.json -slackreport.json .nextflow* work/ data/ @@ -10,4 +8,7 @@ testing/ testing* *.pyc bin/ +.nf-test/ ro-crate-metadata.json +modules/nf-core/ +subworkflows/nf-core/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 1acdb5bc..1676fc2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v3.0.0dev - [date] +## v3.1.0 - [date] Initial release of plant-food-research-open/assemblyqc, created with the [nf-core](https://nf-co.re/) template. diff --git a/README.md b/README.md index 91eee0f5..773e5550 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ # plant-food-research-open/assemblyqc +[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/plant-food-research-open/assemblyqc) [![GitHub Actions CI Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml) [![GitHub Actions Linting Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml)[![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_tests-nf--test-337ab7.svg)](https://www.nf-test.com) -[![Nextflow](https://img.shields.io/badge/version-%E2%89%A524.10.5-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/) -[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.3.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.3.2) +[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.10.4-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/) +[![nf-core template version](https://img.shields.io/badge/nf--core_template-4.0.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/4.0.2) [![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/) @@ -22,13 +23,13 @@ --> + workflows use the "tube map" design for that. See https://nf-co.re/docs/community/brand/workflow-schematics#examples for examples. --> ## Usage > [!NOTE] -> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data. +> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/get_started/environment_setup/overview) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/get_started/run-your-first-pipeline) with `-profile test` before running the workflow on actual data. diff --git a/docs/usage.md b/docs/usage.md index 3c77bc54..195b2d3c 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -74,7 +74,7 @@ If you wish to repeatedly use the same parameters for multiple runs, rather than Pipeline settings can be provided in a `yaml` or `json` file via `-params-file `. > [!WARNING] -> Do not use `-c ` to specify parameters as this will result in errors. Custom config files specified with `-c` must only be used for [tuning process resource specifications](https://nf-co.re/docs/usage/configuration#tuning-workflow-resources), other infrastructural tweaks (such as output directories), or module arguments (args). +> Do not use `-c ` to specify parameters as this will result in errors. Custom config files specified with `-c` must only be used for [tuning process resource specifications](https://nf-co.re/docs/running/run-pipelines#configuring-pipelines), other infrastructural tweaks (such as output directories), or module arguments (args). The above pipeline run specified with a params file in yaml format: @@ -146,7 +146,7 @@ If `-profile` is not specified, the pipeline will run locally and expect all sof - `shifter` - A generic configuration profile to be used with [Shifter](https://nersc.gitlab.io/development/shifter/how-to-use/) - `charliecloud` - - A generic configuration profile to be used with [Charliecloud](https://hpc.github.io/charliecloud/) + - A generic configuration profile to be used with [Charliecloud](https://charliecloud.io/) - `apptainer` - A generic configuration profile to be used with [Apptainer](https://apptainer.org/) - `wave` @@ -170,19 +170,19 @@ Specify the path to a specific config file (this is a core Nextflow command). Se Whilst the default requirements set within the pipeline will hopefully work for most people and with most input data, you may find that you want to customise the compute resources that the pipeline requests. Each step in the pipeline has a default set of requirements for number of CPUs, memory and time. For most of the pipeline steps, if the job exits with any of the error codes specified [here](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/conf/base.config#L18) it will automatically be resubmitted with higher resources request (2 x original, then 3 x original). If it still fails after the third attempt then the pipeline execution is stopped. -To change the resource requests, please see the [max resources](https://nf-co.re/docs/usage/configuration#max-resources) and [tuning workflow resources](https://nf-co.re/docs/usage/configuration#tuning-workflow-resources) section of the nf-core website. +To change the resource requests, please see the [max resources](https://nf-co.re/docs/running/configuration/nextflow-for-your-system#set-max-resources) and [customise process resources](https://nf-co.re/docs/running/configuration/nextflow-for-your-system#customize-process-resources) section of the nf-core website. ### Custom Containers In some cases, you may wish to change the container or conda environment used by a pipeline steps for a particular tool. By default, nf-core pipelines use containers and software from the [biocontainers](https://biocontainers.pro/) or [bioconda](https://bioconda.github.io/) projects. However, in some cases the pipeline specified version maybe out of date. -To use a different container from the default container or conda environment specified in a pipeline, please see the [updating tool versions](https://nf-co.re/docs/usage/configuration#updating-tool-versions) section of the nf-core website. +To use a different container from the default container or conda environment specified in a pipeline, please see the [updating tool versions](https://nf-co.re/docs/running/configuration/nextflow-for-your-system#update-tool-versions) section of the nf-core website. ### Custom Tool Arguments A pipeline might not always support every possible argument or option of a particular tool used in pipeline. Fortunately, nf-core pipelines provide some freedom to users to insert additional parameters that the pipeline does not include by default. -To learn how to provide additional arguments to a particular tool of the pipeline, please see the [customising tool arguments](https://nf-co.re/docs/usage/configuration#customising-tool-arguments) section of the nf-core website. +To learn how to provide additional arguments to a particular tool of the pipeline, please see the [customising tool arguments](https://nf-co.re/docs/running/configuration/nextflow-for-your-system#modifying-tool-arguments) section of the nf-core website. ### nf-core/configs diff --git a/main.nf b/main.nf index 964aa725..b2ef0492 100644 --- a/main.nf +++ b/main.nf @@ -36,7 +36,8 @@ workflow PLANTFOODRESEARCHOPEN_ASSEMBLYQC { // WORKFLOW: Run pipeline // ASSEMBLYQC ( - samplesheet + samplesheet, + params.outdir, ) } /* @@ -57,7 +58,10 @@ workflow { params.monochrome_logs, args, params.outdir, - params.input + params.input, + params.help, + params.help_full, + params.show_hidden ) // @@ -75,7 +79,6 @@ workflow { params.plaintext_email, params.outdir, params.monochrome_logs, - params.hook_url, ) } diff --git a/modules.json b/modules.json index b438d2d9..de55ddfa 100644 --- a/modules.json +++ b/modules.json @@ -10,17 +10,17 @@ "nf-core": { "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "c2b22d85f30a706a3073387f30380704fcae013b", + "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "51ae5406a030d4da1e49e4dab49756844fdd6c7a", + "git_sha": "a3fb7351b1fdb2b1de282b765816bbea190e86a8", "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { "branch": "master", - "git_sha": "2fd2cd6d0e7b273747f32e465fdc6bcc3ae0814e", + "git_sha": "fdc08b8b1ae74f56686ce21f7ea11ad11990ce57", "installed_by": ["subworkflows"] } } diff --git a/nextflow.config b/nextflow.config index f9513546..590ed25e 100644 --- a/nextflow.config +++ b/nextflow.config @@ -20,13 +20,14 @@ params { email_on_fail = null plaintext_email = false monochrome_logs = false - hook_url = null help = false help_full = false show_hidden = false version = false pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/' - trace_report_suffix = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss')// Config options + trace_report_suffix = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss') + + // Config options config_profile_name = null config_profile_description = null @@ -39,6 +40,10 @@ params { validate_params = true } +// Backwards compatibility for publishDir syntax +outputDir = params.outdir +workflow.output.mode = params.publish_dir_mode + // Load base.config by default for all pipelines includeConfig 'conf/base.config' @@ -79,7 +84,18 @@ profiles { apptainer.enabled = false docker.runOptions = '-u $(id -u):$(id -g)' } - arm { + arm64 { + process.arch = 'arm64' + // TODO https://github.com/nf-core/modules/issues/6694 + // For now if you're using arm64 you have to use wave for the sake of the maintainers + // wave profile + apptainer.ociAutoPull = true + singularity.ociAutoPull = true + wave.enabled = true + wave.freeze = true + wave.strategy = 'conda,container' + } + emulate_amd64 { docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' } singularity { @@ -136,18 +152,6 @@ profiles { wave.freeze = true wave.strategy = 'conda,container' } - gitpod { - executor.name = 'local' - executor.cpus = 4 - executor.memory = 8.GB - process { - resourceLimits = [ - memory: 8.GB, - cpus : 4, - time : 1.h - ] - } - } gpu { docker.runOptions = '-u $(id -u):$(id -g) --gpus all' apptainer.runOptions = '--nv' @@ -268,27 +272,20 @@ manifest { homePage = 'https://github.com/plant-food-research-open/assemblyqc' description = """A NextFlow pipeline which evaluates assembly quality with multiple QC tools and presents the results in a unified html report.""" mainScript = 'main.nf' - defaultBranch = 'master' - nextflowVersion = '!>=24.10.5' - version = '3.0.0dev' + defaultBranch = 'main' + nextflowVersion = '!>=25.10.4' + version = '3.1.0' doi = '' } // Nextflow plugins plugins { - id 'nf-schema@2.4.2' // Validation of pipeline parameters and creation of an input channel from a sample sheet + id 'nf-schema@2.5.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet } validation { defaultIgnoreParams = ["genomes"] monochromeLogs = params.monochrome_logs - help { - enabled = true - command = "nextflow run plant-food-research-open/assemblyqc -profile --input samplesheet.csv --outdir " - fullParameter = "help_full" - showHiddenParameter = "show_hidden" - } } - // Load modules.config for DSL2 module specific options includeConfig 'conf/modules.config' diff --git a/nextflow_schema.json b/nextflow_schema.json index acecf82d..42c80eef 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/master/nextflow_schema.json", + "$id": "https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/main/nextflow_schema.json", "title": "plant-food-research-open/assemblyqc pipeline parameters", "description": "A NextFlow pipeline which evaluates assembly quality with multiple QC tools and presents the results in a unified html report.", "type": "object", @@ -128,13 +128,6 @@ "fa_icon": "fas fa-palette", "hidden": true }, - "hook_url": { - "type": "string", - "description": "Incoming hook URL for messaging service", - "fa_icon": "fas fa-people-group", - "help_text": "Incoming hook URL for messaging service. Currently, MS Teams and Slack are supported.", - "hidden": true - }, "validate_params": { "type": "boolean", "description": "Boolean whether to validate parameters against the schema at runtime", @@ -154,6 +147,18 @@ "fa_icon": "far calendar", "description": "Suffix to add to the trace report filename. Default is the date and time in the format yyyy-MM-dd_HH-mm-ss.", "hidden": true + }, + "help": { + "type": ["boolean", "string"], + "description": "Display the help message." + }, + "help_full": { + "type": "boolean", + "description": "Display the full detailed help message." + }, + "show_hidden": { + "type": "boolean", + "description": "Display hidden parameters in the help message (only works when --help or --help_full are provided)." } } } diff --git a/nf-test.config b/nf-test.config index 3a1fff59..f7aaeb4a 100644 --- a/nf-test.config +++ b/nf-test.config @@ -1,21 +1,35 @@ config { // location for all nf-test tests - testsDir "." + testsDir = "." // nf-test directory including temporary files for each test - workDir System.getenv("NFT_WORKDIR") ?: ".nf-test" + workDir = System.getenv("NFT_WORKDIR") ?: ".nf-test" // location of an optional nextflow.config file specific for executing tests - configFile "tests/nextflow.config" + configFile = "tests/nextflow.config" // ignore tests coming from the nf-core/modules repo - ignore 'modules/nf-core/**/tests/*', 'subworkflows/nf-core/**/tests/*' + ignore = [ + 'modules/nf-core/**/tests/*', + 'subworkflows/nf-core/**/tests/*', + ] // run all test with defined profile(s) from the main nextflow.config - profile "test" + profile = "test" // list of filenames or patterns that should be trigger a full test run - triggers 'nextflow.config', 'nf-test.config', 'conf/test.config', 'tests/nextflow.config', 'tests/.nftignore' + triggers = [ + '.github/actions/nf-test/action.yml', + '.github/workflows/nf-test.yml', + 'assets/schema_input.json', + 'bin/*', + 'conf/test.config', + 'nextflow.config', + 'nextflow_schema.json', + 'nf-test.config', + 'tests/.nftignore', + 'tests/nextflow.config', + ] // load the necessary plugins plugins { diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 87e64a76..56c757b2 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -21,9 +21,9 @@ { "@id": "./", "@type": "Dataset", - "creativeWorkStatus": "InProgress", - "datePublished": "2025-07-14T20:49:34+00:00", - "description": "# plant-food-research-open/assemblyqc\n\n[![GitHub Actions CI Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A524.10.5-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.3.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.3.2)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/plant-food-research-open/assemblyqc)\n\n## Introduction\n\n**plant-food-research-open/assemblyqc** is a bioinformatics pipeline that ...\n\n\n\n\n\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data.\n\n\n\nNow, you can run the pipeline using:\n\n\n\n```bash\nnextflow run plant-food-research-open/assemblyqc \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files).\n\n## Credits\n\nplant-food-research-open/assemblyqc was originally written by Usman Rashid, Ken Smith, Ross Crowhurst, Chen Wu, Marcus Davy.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\n## Citations\n\n\n\n\n\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nThis pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/main/LICENSE).\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", + "creativeWorkStatus": "Stable", + "datePublished": "2026-07-22T21:16:21+00:00", + "description": "# plant-food-research-open/assemblyqc\n\n[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/plant-food-research-open/assemblyqc)\n[![GitHub Actions CI Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml/badge.svg)](https://github.com/plant-food-research-open/assemblyqc/actions/workflows/linting.yml)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX)\n[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)\n\n[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.10.4-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)\n[![nf-core template version](https://img.shields.io/badge/nf--core_template-4.0.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/4.0.2)\n[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)\n[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)\n[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)\n[![Launch on Seqera Platform](https://img.shields.io/badge/Launch%20%F0%9F%9A%80-Seqera%20Platform-%234256e7)](https://cloud.seqera.io/launch?pipeline=https://github.com/plant-food-research-open/assemblyqc)\n\n## Introduction\n\n**plant-food-research-open/assemblyqc** is a bioinformatics pipeline that ...\n\n\n\n\n\n\n## Usage\n\n> [!NOTE]\n> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/get_started/environment_setup/overview) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/get_started/run-your-first-pipeline) with `-profile test` before running the workflow on actual data.\n\n\n\nNow, you can run the pipeline using:\n\n\n\n```bash\nnextflow run plant-food-research-open/assemblyqc \\\n -profile \\\n --input samplesheet.csv \\\n --outdir \n```\n\n> [!WARNING]\n> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/running/run-pipelines#using-parameter-files).\n\n## Credits\n\nplant-food-research-open/assemblyqc was originally written by Usman Rashid, Ken Smith, Ross Crowhurst, Chen Wu, Marcus Davy.\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](docs/CONTRIBUTING.md).\n\n## Citations\n\n\n\n\n\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nThis pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/main/LICENSE).\n\n> **The nf-core framework for community-curated bioinformatics pipelines.**\n>\n> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen.\n>\n> _Nat Biotechnol._ 2020 Feb 13. doi: [10.1038/s41587-020-0439-x](https://dx.doi.org/10.1038/s41587-020-0439-x).\n", "hasPart": [ { "@id": "main.nf" @@ -31,6 +31,9 @@ { "@id": "assets/" }, + { + "@id": "bin/" + }, { "@id": "conf/" }, @@ -87,7 +90,7 @@ }, "mentions": [ { - "@id": "#202d1862-6fda-41c2-842d-bfcdab6a5032" + "@id": "#a07989b9-28c2-4b30-a725-41313d239b1c" } ], "name": "plant-food-research-open/assemblyqc" @@ -114,16 +117,25 @@ "SoftwareSourceCode", "ComputationalWorkflow" ], - "creator": [ + "contributor": [ + { + "@id": "#e779d185-1135-4952-aa53-d5cc9a4773c5" + }, + { + "@id": "#c8699c85-d2b9-42c9-a5ac-9b9f3e01bed3" + }, + { + "@id": "https://orcid.org/0000-0003-0608-2134" + }, { - "@id": "#hrakws@aklppf31.pfr.co.nz" + "@id": "#8362f2ce-b479-43e6-bac9-317c7e33a81c" }, { - "@id": "#usman@smme.edu.pk" + "@id": "https://orcid.org/0000-0003-0427-4925" } ], "dateCreated": "", - "dateModified": "2025-07-15T08:49:34Z", + "dateModified": "2026-07-23T09:16:21Z", "dct:conformsTo": "https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE/", "keywords": [ "nf-core", @@ -132,11 +144,6 @@ "license": [ "MIT" ], - "maintainer": [ - { - "@id": "#usman@smme.edu.pk" - } - ], "name": [ "plant-food-research-open/assemblyqc" ], @@ -148,10 +155,10 @@ }, "url": [ "https://github.com/plant-food-research-open/assemblyqc", - "https://nf-co.re/plant-food-research-open/assemblyqc/dev/" + "https://nf-co.re/plant-food-research-open/assemblyqc/3.1.0/" ], "version": [ - "3.0.0dev" + "3.1.0" ] }, { @@ -164,14 +171,14 @@ "url": { "@id": "https://www.nextflow.io/" }, - "version": "!>=24.10.5" + "version": "!>=25.10.4" }, { - "@id": "#202d1862-6fda-41c2-842d-bfcdab6a5032", + "@id": "#a07989b9-28c2-4b30-a725-41313d239b1c", "@type": "TestSuite", "instance": [ { - "@id": "#3cf6e8ae-d635-4361-8403-0ea61c667441" + "@id": "#3b806465-1229-44f9-bab4-6d7e56d3630c" } ], "mainEntity": { @@ -180,7 +187,7 @@ "name": "Test suite for plant-food-research-open/assemblyqc" }, { - "@id": "#3cf6e8ae-d635-4361-8403-0ea61c667441", + "@id": "#3b806465-1229-44f9-bab4-6d7e56d3630c", "@type": "TestInstance", "name": "GitHub Actions workflow for testing plant-food-research-open/assemblyqc", "resource": "repos/plant-food-research-open/assemblyqc/actions/workflows/nf-test.yml", @@ -202,6 +209,11 @@ "@type": "Dataset", "description": "Additional files" }, + { + "@id": "bin/", + "@type": "Dataset", + "description": "Scripts that must be callable from a pipeline process" + }, { "@id": "conf/", "@type": "Dataset", @@ -289,16 +301,31 @@ "url": "https://nf-co.re/" }, { - "@id": "#hrakws@aklppf31.pfr.co.nz", + "@id": "#e779d185-1135-4952-aa53-d5cc9a4773c5", + "@type": "Person", + "email": "usman@smme.edu.pk", + "name": "Usman Rashid" + }, + { + "@id": "#c8699c85-d2b9-42c9-a5ac-9b9f3e01bed3", "@type": "Person", "email": "hrakws@aklppf31.pfr.co.nz", "name": "Ken Smith" }, { - "@id": "#usman@smme.edu.pk", + "@id": "https://orcid.org/0000-0003-0608-2134", "@type": "Person", - "email": "usman@smme.edu.pk", - "name": "Usman Rashid" + "name": "Ross Crowhurst" + }, + { + "@id": "#8362f2ce-b479-43e6-bac9-317c7e33a81c", + "@type": "Person", + "name": "Chen Wu" + }, + { + "@id": "https://orcid.org/0000-0003-0427-4925", + "@type": "Person", + "name": "Marcus Davy" } ] } \ No newline at end of file diff --git a/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf b/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf index 149076d4..758120d5 100644 --- a/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_assemblyqc_pipeline/main.nf @@ -11,9 +11,9 @@ include { UTILS_NFSCHEMA_PLUGIN } from '../../nf-core/utils_nfschema_plugin' include { paramsSummaryMap } from 'plugin/nf-schema' include { samplesheetToList } from 'plugin/nf-schema' +include { paramsHelp } from 'plugin/nf-schema' include { completionEmail } from '../../nf-core/utils_nfcore_pipeline' include { completionSummary } from '../../nf-core/utils_nfcore_pipeline' -include { imNotification } from '../../nf-core/utils_nfcore_pipeline' include { UTILS_NFCORE_PIPELINE } from '../../nf-core/utils_nfcore_pipeline' include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' @@ -32,10 +32,13 @@ workflow PIPELINE_INITIALISATION { nextflow_cli_args // array: List of positional nextflow CLI args outdir // string: The output directory where the results will be saved input // string: Path to input samplesheet + help // boolean: Display help message and exit + help_full // boolean: Show the full help message + show_hidden // boolean: Show hidden parameters in the help message main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // Print version and exit if required and dump pipeline parameters to JSON file @@ -50,10 +53,25 @@ workflow PIPELINE_INITIALISATION { // // Validate parameters and generate parameter summary to stdout // + + def before_text = "" + def after_text = "" + if (monochrome_logs) { + before_text = before_text.replaceAll(/\033\[[0-9;]*m/, '') + } + + command = "nextflow run ${workflow.manifest.name} -profile --input samplesheet.csv --outdir " + UTILS_NFSCHEMA_PLUGIN ( workflow, validate_params, - null + null, + help, + help_full, + show_hidden, + before_text, + after_text, + command ) // @@ -67,8 +85,8 @@ workflow PIPELINE_INITIALISATION { // Create channel from input file provided through params.input // - Channel - .fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) + channel + .fromList(samplesheetToList(input, "${projectDir}/assets/schema_input.json")) .map { meta, fastq_1, fastq_2 -> if (!fastq_2) { @@ -106,7 +124,6 @@ workflow PIPELINE_COMPLETION { plaintext_email // boolean: Send plain-text email instead of HTML outdir // path: Path to output directory where results will be published monochrome_logs // boolean: Disable ANSI colour codes in log output - hook_url // string: hook URL for notifications main: summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") @@ -128,13 +145,11 @@ workflow PIPELINE_COMPLETION { } completionSummary(monochrome_logs) - if (hook_url) { - imNotification(summary_params, hook_url) - } + } workflow.onError { - log.error "Pipeline failed. Please refer to troubleshooting docs: https://nf-co.re/docs/usage/troubleshooting" + log.error "Pipeline failed. Please refer to troubleshooting docs for common issues: https://nf-co.re/docs/running/troubleshooting" } } diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml b/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml deleted file mode 100644 index f8476112..00000000 --- a/subworkflows/nf-core/utils_nextflow_pipeline/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/utils_nextflow_pipeline: - - subworkflows/nf-core/utils_nextflow_pipeline/** diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index bfd25876..afca5439 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -17,7 +17,7 @@ workflow UTILS_NFCORE_PIPELINE { checkProfileProvided(nextflow_cli_args) emit: - valid_config + valid_config = valid_config } /* @@ -98,7 +98,7 @@ def workflowVersionToYAML() { // Get channel of software versions used in pipeline in YAML format // def softwareVersionsToYAML(ch_versions) { - return ch_versions.unique().map { version -> processVersionsFromYAML(version) }.unique().mix(Channel.of(workflowVersionToYAML())) + return ch_versions.unique().map { version -> processVersionsFromYAML(version) }.unique().mix(channel.of(workflowVersionToYAML())) } // @@ -353,67 +353,3 @@ def completionSummary(monochrome_logs=true) { log.info("-${colors.purple}[${workflow.manifest.name}]${colors.red} Pipeline completed with errors${colors.reset}-") } } - -// -// Construct and send a notification to a web server as JSON e.g. Microsoft Teams and Slack -// -def imNotification(summary_params, hook_url) { - def summary = [:] - summary_params - .keySet() - .sort() - .each { group -> - summary << summary_params[group] - } - - def misc_fields = [:] - misc_fields['start'] = workflow.start - misc_fields['complete'] = workflow.complete - misc_fields['scriptfile'] = workflow.scriptFile - misc_fields['scriptid'] = workflow.scriptId - if (workflow.repository) { - misc_fields['repository'] = workflow.repository - } - if (workflow.commitId) { - misc_fields['commitid'] = workflow.commitId - } - if (workflow.revision) { - misc_fields['revision'] = workflow.revision - } - misc_fields['nxf_version'] = workflow.nextflow.version - misc_fields['nxf_build'] = workflow.nextflow.build - misc_fields['nxf_timestamp'] = workflow.nextflow.timestamp - - def msg_fields = [:] - msg_fields['version'] = getWorkflowVersion() - msg_fields['runName'] = workflow.runName - msg_fields['success'] = workflow.success - msg_fields['dateComplete'] = workflow.complete - msg_fields['duration'] = workflow.duration - msg_fields['exitStatus'] = workflow.exitStatus - msg_fields['errorMessage'] = (workflow.errorMessage ?: 'None') - msg_fields['errorReport'] = (workflow.errorReport ?: 'None') - msg_fields['commandLine'] = workflow.commandLine.replaceFirst(/ +--hook_url +[^ ]+/, "") - msg_fields['projectDir'] = workflow.projectDir - msg_fields['summary'] = summary << misc_fields - - // Render the JSON template - def engine = new groovy.text.GStringTemplateEngine() - // Different JSON depending on the service provider - // Defaults to "Adaptive Cards" (https://adaptivecards.io), except Slack which has its own format - def json_path = hook_url.contains("hooks.slack.com") ? "slackreport.json" : "adaptivecard.json" - def hf = new File("${workflow.projectDir}/assets/${json_path}") - def json_template = engine.createTemplate(hf).make(msg_fields) - def json_message = json_template.toString() - - // POST - def post = new URL(hook_url).openConnection() - post.setRequestMethod("POST") - post.setDoOutput(true) - post.setRequestProperty("Content-Type", "application/json") - post.getOutputStream().write(json_message.getBytes("UTF-8")) - def postRC = post.getResponseCode() - if (!postRC.equals(200)) { - log.warn(post.getErrorStream().getText()) - } -} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test new file mode 100644 index 00000000..8940d32d --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test @@ -0,0 +1,29 @@ +nextflow_workflow { + + name "Test Workflow UTILS_NFCORE_PIPELINE" + script "../main.nf" + config "subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config" + workflow "UTILS_NFCORE_PIPELINE" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "utils_nfcore_pipeline" + tag "subworkflows/utils_nfcore_pipeline" + + test("Should run without failures") { + + when { + workflow { + """ + input[0] = [] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out).match() } + ) + } + } +} diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test.snap b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test.snap new file mode 100644 index 00000000..859d1030 --- /dev/null +++ b/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test.snap @@ -0,0 +1,19 @@ +{ + "Should run without failures": { + "content": [ + { + "0": [ + true + ], + "valid_config": [ + true + ] + } + ], + "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/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml b/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml deleted file mode 100644 index ac8523c9..00000000 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/utils_nfcore_pipeline: - - subworkflows/nf-core/utils_nfcore_pipeline/** diff --git a/subworkflows/nf-core/utils_nfschema_plugin/main.nf b/subworkflows/nf-core/utils_nfschema_plugin/main.nf index 4994303e..1df8b76f 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/main.nf +++ b/subworkflows/nf-core/utils_nfschema_plugin/main.nf @@ -4,6 +4,7 @@ include { paramsSummaryLog } from 'plugin/nf-schema' include { validateParameters } from 'plugin/nf-schema' +include { paramsHelp } from 'plugin/nf-schema' workflow UTILS_NFSCHEMA_PLUGIN { @@ -15,32 +16,58 @@ workflow UTILS_NFSCHEMA_PLUGIN { // when this input is empty it will automatically use the configured schema or // "${projectDir}/nextflow_schema.json" as default. This input should not be empty // for meta pipelines + help // boolean: show help message + help_full // boolean: show full help message + show_hidden // boolean: show hidden parameters in help message + before_text // string: text to show before the help message and parameters summary + after_text // string: text to show after the help message and parameters summary + command // string: an example command of the pipeline main: + if(help || help_full) { + help_options = [ + beforeText: before_text, + afterText: after_text, + command: command, + showHidden: show_hidden, + fullHelp: help_full, + ] + if(parameters_schema) { + help_options << [parametersSchema: parameters_schema] + } + log.info paramsHelp( + help_options, + (params.help instanceof String && params.help != "true") ? params.help : "", + ) + exit 0 + } + // // Print parameter summary to stdout. This will display the parameters // that differ from the default given in the JSON schema // + + summary_options = [:] if(parameters_schema) { - log.info paramsSummaryLog(input_workflow, parameters_schema:parameters_schema) - } else { - log.info paramsSummaryLog(input_workflow) + summary_options << [parametersSchema: parameters_schema] } + log.info before_text + log.info paramsSummaryLog(summary_options, input_workflow) + log.info after_text // // Validate the parameters using nextflow_schema.json or the schema // given via the validation.parametersSchema configuration option // if(validate_params) { + validateOptions = [:] if(parameters_schema) { - validateParameters(parameters_schema:parameters_schema) - } else { - validateParameters() + validateOptions << [parametersSchema: parameters_schema] } + validateParameters(validateOptions) } emit: dummy_emit = true } - diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test index 8fb30164..c977917a 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test @@ -25,6 +25,12 @@ nextflow_workflow { input[0] = workflow input[1] = validate_params input[2] = "" + input[3] = false + input[4] = false + input[5] = false + input[6] = "" + input[7] = "" + input[8] = "" """ } } @@ -51,6 +57,12 @@ nextflow_workflow { input[0] = workflow input[1] = validate_params input[2] = "" + input[3] = false + input[4] = false + input[5] = false + input[6] = "" + input[7] = "" + input[8] = "" """ } } @@ -77,6 +89,12 @@ nextflow_workflow { input[0] = workflow input[1] = validate_params input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + input[3] = false + input[4] = false + input[5] = false + input[6] = "" + input[7] = "" + input[8] = "" """ } } @@ -103,6 +121,12 @@ nextflow_workflow { input[0] = workflow input[1] = validate_params input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + input[3] = false + input[4] = false + input[5] = false + input[6] = "" + input[7] = "" + input[8] = "" """ } } @@ -114,4 +138,36 @@ nextflow_workflow { ) } } + + test("Should create a help message") { + + when { + + params { + test_data = '' + outdir = null + } + + workflow { + """ + validate_params = true + input[0] = workflow + input[1] = validate_params + input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + input[3] = true + input[4] = false + input[5] = false + input[6] = "Before" + input[7] = "After" + input[8] = "nextflow run test/test" + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } } diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config index 09ef842a..f6537cc3 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config @@ -1,8 +1,8 @@ plugins { - id "nf-schema@2.4.2" + id "nf-schema@2.6.1" } validation { parametersSchema = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" monochromeLogs = true -} \ No newline at end of file +} diff --git a/tests/default.nf.test b/tests/default.nf.test index d64f07b7..cb757d04 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -13,21 +13,19 @@ nextflow_pipeline { } then { - // stable_name: All files + folders in ${params.outdir}/ with a stable name - def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) - // stable_path: All files in ${params.outdir}/ with stable content - def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + // stable_path: All files + folders in ${params.outdir}/ with a stable path (including file name) + def stable_path = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_content: All files in ${params.outdir}/ with stable content + def stable_content = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assert workflow.success assertAll( - { assert workflow.success}, { assert snapshot( - // Number of successful tasks - workflow.trace.succeeded().size(), // pipeline versions.yml file for multiqc from which Nextflow version is removed because we test pipelines on multiple Nextflow versions removeNextflowVersion("$outputDir/pipeline_info/assemblyqc_software_mqc_versions.yml"), // All stable path name, with a relative path - stable_name, + stable_path, // All files with stable contents - stable_path + stable_content ).match() } ) } diff --git a/tests/nextflow.config b/tests/nextflow.config index 3da4fc2e..f8da8632 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -8,7 +8,7 @@ // Or any resources requirements params { modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/' - pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/assemblyqc' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/assemblyqc/' } aws.client.anonymous = true // fixes S3 access issues on self-hosted runners diff --git a/workflows/assemblyqc.nf b/workflows/assemblyqc.nf index a023f3f2..db67f93b 100644 --- a/workflows/assemblyqc.nf +++ b/workflows/assemblyqc.nf @@ -17,25 +17,42 @@ workflow ASSEMBLYQC { take: ch_samplesheet // channel: samplesheet read in from --input + outdir + main: - ch_versions = Channel.empty() + def ch_versions = channel.empty() // // Collate and save software versions // - softwareVersionsToYAML(ch_versions) + def topic_versions = channel.topic("versions") + .distinct() + .branch { entry -> + versions_file: entry instanceof Path + versions_tuple: true + } + + def topic_versions_string = topic_versions.versions_tuple + .map { process, tool, version -> + [ process[process.lastIndexOf(':')+1..-1], " ${tool}: ${version}" ] + } + .groupTuple(by:0) + .map { process, tool_versions -> + tool_versions.unique().sort() + "${process}:\n${tool_versions.join('\n')}" + } + + def ch_collated_versions = softwareVersionsToYAML(ch_versions.mix(topic_versions.versions_file)) + .mix(topic_versions_string) .collectFile( - storeDir: "${params.outdir}/pipeline_info", + storeDir: "${outdir}/pipeline_info", name: 'assemblyqc_software_' + 'versions.yml', sort: true, newLine: true - ).set { ch_collated_versions } - - + ) emit: versions = ch_versions // channel: [ path(versions.yml) ] - } /* From 8cb006549f4784e1eb81cf3c111848131d0e86ec Mon Sep 17 00:00:00 2001 From: Usman Rashid Date: Thu, 23 Jul 2026 09:18:23 +1200 Subject: [PATCH 08/12] Fixed version --- .nf-core.yml | 2 +- CHANGELOG.md | 2 +- CITATION.cff | 2 +- nextflow.config | 2 +- ro-crate-metadata.json | 4 ++-- tests/hic/main.nf.test.snap | 4 ++-- tests/invalid/main.nf.test.snap | 2 +- tests/mapback/main.nf.test.snap | 2 +- tests/minimal/main.nf.test.snap | 2 +- tests/noltr/main.nf.test.snap | 2 +- tests/orthofinder/main.nf.test.snap | 2 +- tests/stub/main.nf.test.snap | 2 +- tests/tiny/main.nf.test.snap | 2 +- 13 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index 2adf81a4..15dcd957 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -47,4 +47,4 @@ template: - igenomes - multiqc - fastqc - version: 3.1.0 + version: 3.1.0dev diff --git a/CHANGELOG.md b/CHANGELOG.md index ee0b9cc2..cb620d49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v3.1.0 - [23-July-2026] +## v3.1.0dev - [23-July-2026] ## v3.0.1 - [14-Oct-2025] diff --git a/CITATION.cff b/CITATION.cff index ccdde987..e1849a81 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -25,7 +25,7 @@ authors: - family-names: "Deng" given-names: "Cecilia" title: "AssemblyQC: A Nextflow pipeline for reproducible reporting of assembly quality" -version: 3.1.0 +version: 3.1.0dev date-released: 2024-07-30 url: "https://github.com/Plant-Food-Research-Open/assemblyqc" doi: 10.1093/bioinformatics/btae477 diff --git a/nextflow.config b/nextflow.config index 79779284..bbfd955c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -329,7 +329,7 @@ manifest { mainScript = 'main.nf' defaultBranch = 'main' nextflowVersion = '!>=24.10.5' - version = '3.1.0' + version = '3.1.0dev' doi = 'https://doi.org/10.1093/bioinformatics/btae477' } diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index a9e90c5c..dfd048f0 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -153,10 +153,10 @@ }, "url": [ "https://github.com/plant-food-research-open/assemblyqc", - "https://nf-co.re/plant-food-research-open/assemblyqc/3.1.0/" + "https://nf-co.re/plant-food-research-open/assemblyqc/3.1.0dev/" ], "version": [ - "3.1.0" + "3.1.0dev" ] }, { diff --git a/tests/hic/main.nf.test.snap b/tests/hic/main.nf.test.snap index 3fed8561..bb06f9c0 100644 --- a/tests/hic/main.nf.test.snap +++ b/tests/hic/main.nf.test.snap @@ -63,7 +63,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.1.0" + "plant-food-research-open/assemblyqc": "v3.1.0dev" }, "YAHS_JUICERPRE": { "yahs": "1.2.2" @@ -169,7 +169,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.1.0" + "plant-food-research-open/assemblyqc": "v3.1.0dev" }, "YAHS_JUICERPRE": { "yahs": "1.2.2" diff --git a/tests/invalid/main.nf.test.snap b/tests/invalid/main.nf.test.snap index 534579bb..bbd69278 100644 --- a/tests/invalid/main.nf.test.snap +++ b/tests/invalid/main.nf.test.snap @@ -35,7 +35,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.1.0" + "plant-food-research-open/assemblyqc": "v3.1.0dev" } }, "stable paths": [ diff --git a/tests/mapback/main.nf.test.snap b/tests/mapback/main.nf.test.snap index 66b97f14..e97a9aae 100644 --- a/tests/mapback/main.nf.test.snap +++ b/tests/mapback/main.nf.test.snap @@ -51,7 +51,7 @@ "samtools": "1.16.1" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.1.0" + "plant-food-research-open/assemblyqc": "v3.1.0dev" } }, "stable paths": [ diff --git a/tests/minimal/main.nf.test.snap b/tests/minimal/main.nf.test.snap index cf40ab77..e58e8850 100644 --- a/tests/minimal/main.nf.test.snap +++ b/tests/minimal/main.nf.test.snap @@ -35,7 +35,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.1.0" + "plant-food-research-open/assemblyqc": "v3.1.0dev" } }, "stable paths": [ diff --git a/tests/noltr/main.nf.test.snap b/tests/noltr/main.nf.test.snap index 6d9a94d1..1a36e275 100644 --- a/tests/noltr/main.nf.test.snap +++ b/tests/noltr/main.nf.test.snap @@ -50,7 +50,7 @@ "seqkit": "v2.9.0" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.1.0" + "plant-food-research-open/assemblyqc": "v3.1.0dev" } }, "stable paths": [ diff --git a/tests/orthofinder/main.nf.test.snap b/tests/orthofinder/main.nf.test.snap index 41f8db76..51f77523 100644 --- a/tests/orthofinder/main.nf.test.snap +++ b/tests/orthofinder/main.nf.test.snap @@ -41,7 +41,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.1.0" + "plant-food-research-open/assemblyqc": "v3.1.0dev" } }, "stable paths": [ diff --git a/tests/stub/main.nf.test.snap b/tests/stub/main.nf.test.snap index a3916ea8..d9e6bb96 100644 --- a/tests/stub/main.nf.test.snap +++ b/tests/stub/main.nf.test.snap @@ -228,7 +228,7 @@ "untar": 1.34 }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.1.0" + "plant-food-research-open/assemblyqc": "v3.1.0dev" }, "YAHS_JUICERPRE": { "yahs": "1.2.2" diff --git a/tests/tiny/main.nf.test.snap b/tests/tiny/main.nf.test.snap index 9c071336..c9a07c4b 100644 --- a/tests/tiny/main.nf.test.snap +++ b/tests/tiny/main.nf.test.snap @@ -29,7 +29,7 @@ "pigz": "2.3.4" }, "Workflow": { - "plant-food-research-open/assemblyqc": "v3.1.0" + "plant-food-research-open/assemblyqc": "v3.1.0dev" } }, "stable paths": [ From 1b9ebbd785670091fc87f31f0acc89724741a5a4 Mon Sep 17 00:00:00 2001 From: Usman Rashid Date: Thu, 23 Jul 2026 10:01:20 +1200 Subject: [PATCH 09/12] Bumped max shards to 21 --- .github/workflows/nf-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index 644a1818..034aa89a 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -47,7 +47,7 @@ jobs: env: NFT_VER: ${{ env.NFT_VER }} with: - max_shards: 7 + max_shards: 21 - name: debug run: | From 1adf7008e898c2c2488b9d444faf724e8c509e68 Mon Sep 17 00:00:00 2001 From: Usman Rashid Date: Fri, 24 Jul 2026 08:53:56 +1200 Subject: [PATCH 10/12] Moved NCBI FTP paths to GitHub --- assets/assemblysheet.csv | 2 +- assets/assemblysheetv2.csv | 2 +- assets/xrefsheet.csv | 4 ++-- tests/invalid/assemblysheet.csv | 4 ++-- tests/noltr/assemblysheet.csv | 2 +- tests/orthofinder/assemblysheet.csv | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/assets/assemblysheet.csv b/assets/assemblysheet.csv index 06b8a783..fed031bc 100644 --- a/assets/assemblysheet.csv +++ b/assets/assemblysheet.csv @@ -1,2 +1,2 @@ tag,fasta,gff3,monoploid_ids,synteny_labels -FI1,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/003/814/445/GCA_003814445.1_ASM381444v1/GCA_003814445.1_ASM381444v1_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/003/814/445/GCA_003814445.1_ASM381444v1/GCA_003814445.1_ASM381444v1_genomic.gff.gz,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/FI1.monoploid.seqs.txt,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/FI1.seq.labels.tsv +FI1,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCA_003814445.1_ASM381444v1_genomic.fna.gz,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCA_003814445.1_ASM381444v1_genomic.gff.gz,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/FI1.monoploid.seqs.txt,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/FI1.seq.labels.tsv diff --git a/assets/assemblysheetv2.csv b/assets/assemblysheetv2.csv index 505e312c..f25014e4 100644 --- a/assets/assemblysheetv2.csv +++ b/assets/assemblysheetv2.csv @@ -1,2 +1,2 @@ tag,fasta,gff3,monoploid_ids,synteny_labels,reads_1 -FI1,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/003/814/445/GCA_003814445.1_ASM381444v1/GCA_003814445.1_ASM381444v1_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/003/814/445/GCA_003814445.1_ASM381444v1/GCA_003814445.1_ASM381444v1_genomic.gff.gz,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/FI1.monoploid.seqs.txt,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/FI1.seq.labels.tsv,SRR8238189 +FI1,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCA_003814445.1_ASM381444v1_genomic.fna.gz,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCA_003814445.1_ASM381444v1_genomic.gff.gz,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/FI1.monoploid.seqs.txt,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/FI1.seq.labels.tsv,SRR8238189 diff --git a/assets/xrefsheet.csv b/assets/xrefsheet.csv index e945d3e4..87adec4c 100644 --- a/assets/xrefsheet.csv +++ b/assets/xrefsheet.csv @@ -1,3 +1,3 @@ tag,fasta,synteny_labels -TT_2021a,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/021/950/295/GCA_021950295.1_ASM2195029v1/GCA_021950295.1_ASM2195029v1_genomic.fna.gz,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/TT_2021a.seq.labels.tsv -JAD,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/016/859/245/GCA_016859245.1_ASM1685924v1/GCA_016859245.1_ASM1685924v1_genomic.fna.gz,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/JAD.seq.labels.tsv +TT_2021a,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCA_021950295.1_ASM2195029v1_genomic.fna.gz,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/TT_2021a.seq.labels.tsv +JAD,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCA_016859245.1_ASM1685924v1_genomic.fna.gz,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/dev/tests/stub/JAD.seq.labels.tsv diff --git a/tests/invalid/assemblysheet.csv b/tests/invalid/assemblysheet.csv index d9b6ba62..062258d9 100644 --- a/tests/invalid/assemblysheet.csv +++ b/tests/invalid/assemblysheet.csv @@ -1,6 +1,6 @@ tag,fasta,gff3 -FI1,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/003/814/445/GCA_003814445.1_ASM381444v1/GCA_003814445.1_ASM381444v1_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/003/814/445/GCA_003814445.1_ASM381444v1/GCA_003814445.1_ASM381444v1_genomic.gff.gz -TT_2021a,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/021/950/295/GCA_021950295.1_ASM2195029v1/GCA_021950295.1_ASM2195029v1_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/003/814/445/GCA_003814445.1_ASM381444v1/GCA_003814445.1_ASM381444v1_genomic.gff.gz +FI1,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCA_003814445.1_ASM381444v1_genomic.fna.gz,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCA_003814445.1_ASM381444v1_genomic.gff.gz +TT_2021a,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCA_021950295.1_ASM2195029v1_genomic.fna.gz,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCA_003814445.1_ASM381444v1_genomic.gff.gz MISC,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/5c5aa00a120e18979105aed0aad271ff836e0b02/tests/invalid/invalid.fsa.gz DUPSEQ,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/5c5aa00a120e18979105aed0aad271ff836e0b02/tests/invalid/dupseq.fsa.gz ALL_NSs,https://raw.githubusercontent.com/plant-food-research-open/assemblyqc/5c5aa00a120e18979105aed0aad271ff836e0b02/tests/invalid/all_Ns.fa.gz diff --git a/tests/noltr/assemblysheet.csv b/tests/noltr/assemblysheet.csv index 9769e377..141c8861 100644 --- a/tests/noltr/assemblysheet.csv +++ b/tests/noltr/assemblysheet.csv @@ -1,3 +1,3 @@ tag,fasta sarscov2,https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/genome/genome.fasta -FI1,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/003/814/445/GCA_003814445.1_ASM381444v1/GCA_003814445.1_ASM381444v1_genomic.fna.gz +FI1,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCA_003814445.1_ASM381444v1_genomic.fna.gz diff --git a/tests/orthofinder/assemblysheet.csv b/tests/orthofinder/assemblysheet.csv index 64892681..0eb33671 100644 --- a/tests/orthofinder/assemblysheet.csv +++ b/tests/orthofinder/assemblysheet.csv @@ -2,4 +2,4 @@ tag,fasta,gff3 agalactiae,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/063/605/GCF_000063605.1_ASM6360v1/GCF_000063605.1_ASM6360v1_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/063/605/GCF_000063605.1_ASM6360v1/GCF_000063605.1_ASM6360v1_genomic.gff.gz gallisepticum,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/900/476/085/GCF_900476085.1_50569_G01/GCF_900476085.1_50569_G01_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/900/476/085/GCF_900476085.1_50569_G01/GCF_900476085.1_50569_G01_genomic.gff.gz genitalium,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/027/325/GCF_000027325.1_ASM2732v1/GCF_000027325.1_ASM2732v1_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/027/325/GCF_000027325.1_ASM2732v1/GCF_000027325.1_ASM2732v1_genomic.gff.gz -hyopneumoniae,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/008/205/GCF_000008205.1_ASM820v1/GCF_000008205.1_ASM820v1_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/008/205/GCF_000008205.1_ASM820v1/GCF_000008205.1_ASM820v1_genomic.gff.gz +hyopneumoniae,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCF_000008205.1_ASM820v1_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/008/205/GCF_000008205.1_ASM820v1/GCF_000008205.1_ASM820v1_genomic.gff.gz From c340ef5cdc2c7881e92649e5cb6609359f88fc74 Mon Sep 17 00:00:00 2001 From: Usman Rashid Date: Fri, 24 Jul 2026 08:57:50 +1200 Subject: [PATCH 11/12] Updated NCBI FTP paths --- tests/orthofinder/assemblysheet.csv | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/orthofinder/assemblysheet.csv b/tests/orthofinder/assemblysheet.csv index 0eb33671..cee455d3 100644 --- a/tests/orthofinder/assemblysheet.csv +++ b/tests/orthofinder/assemblysheet.csv @@ -1,5 +1,5 @@ tag,fasta,gff3 -agalactiae,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/063/605/GCF_000063605.1_ASM6360v1/GCF_000063605.1_ASM6360v1_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/063/605/GCF_000063605.1_ASM6360v1/GCF_000063605.1_ASM6360v1_genomic.gff.gz -gallisepticum,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/900/476/085/GCF_900476085.1_50569_G01/GCF_900476085.1_50569_G01_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/900/476/085/GCF_900476085.1_50569_G01/GCF_900476085.1_50569_G01_genomic.gff.gz -genitalium,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/027/325/GCF_000027325.1_ASM2732v1/GCF_000027325.1_ASM2732v1_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/027/325/GCF_000027325.1_ASM2732v1/GCF_000027325.1_ASM2732v1_genomic.gff.gz -hyopneumoniae,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCF_000008205.1_ASM820v1_genomic.fna.gz,https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/008/205/GCF_000008205.1_ASM820v1/GCF_000008205.1_ASM820v1_genomic.gff.gz +agalactiae,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCF_000063605.1_ASM6360v1_genomic.fna.gz,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCF_000063605.1_ASM6360v1_genomic.gff.gz +gallisepticum,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCF_900476085.1_50569_G01_genomic.fna.gz,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCF_900476085.1_50569_G01_genomic.gff.gz +genitalium,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCF_000027325.1_ASM2732v1_genomic.fna.gz,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCF_000027325.1_ASM2732v1_genomic.gff.gz +hyopneumoniae,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCF_000008205.1_ASM820v1_genomic.fna.gz,https://raw.githubusercontent.com/Plant-Food-Research-Open/assemblyqc/refs/heads/ncbi/ftp/tests/ncbi_ftp/GCF_000008205.1_ASM820v1_genomic.gff.gz From b0b4e04d1a3fc9f667e93a30c80e45ce822cf804 Mon Sep 17 00:00:00 2001 From: Usman Rashid Date: Fri, 24 Jul 2026 10:36:51 +1200 Subject: [PATCH 12/12] Updated params doc and snapshot --- docs/parameters.md | 22 +++++++++++++--------- tests/orthofinder/main.nf.test.snap | 12 ++++++------ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/docs/parameters.md b/docs/parameters.md index 29ec4763..dbb67549 100644 --- a/docs/parameters.md +++ b/docs/parameters.md @@ -138,12 +138,16 @@ Parameters used to describe centralised config profiles. These should not be edi Less common options for the pipeline, typically set in a config file. -| Parameter | Description | Type | Default | Required | Hidden | -| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | --------- | ------- | -------- | ------ | -| `version` | Display version and exit. | `boolean` | | | True | -| `publish_dir_mode` | Method used to save pipeline results to output directory. (accepted: `symlink`\|`rellink`\|`link`\|`copy`\|`copyNoFollow`\|`move`) | `string` | copy | | True | -| `email_on_fail` | Email address for completion summary, only when pipeline fails. | `string` | | | True | -| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | -| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | -| `hook_url` | Incoming hook URL for messaging service | `string` | | | True | -| `trace_report_suffix` | Suffix to add to the trace report filename. Default is the date and time in the format yyyy-MM-dd_HH-mm-ss. | `string` | | | True | +| Parameter | Description | Type | Default | Required | Hidden | +| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | -------------------------------------------------------- | -------- | ------ | +| `version` | Display version and exit. | `boolean` | | | True | +| `publish_dir_mode` | Method used to save pipeline results to output directory. (accepted: `symlink`\|`rellink`\|`link`\|`copy`\|`copyNoFollow`\|`move`) | `string` | copy | | True | +| `email_on_fail` | Email address for completion summary, only when pipeline fails. | `string` | | | True | +| `plaintext_email` | Send plain-text email instead of HTML. | `boolean` | | | True | +| `monochrome_logs` | Do not use coloured log outputs. | `boolean` | | | True | +| `validate_params` | Boolean whether to validate parameters against the schema at runtime | `boolean` | True | | True | +| `pipelines_testdata_base_path` | Base URL or local path to location of pipeline test dataset files | `string` | https://raw.githubusercontent.com/nf-core/test-datasets/ | | True | +| `trace_report_suffix` | Suffix to add to the trace report filename. Default is the date and time in the format yyyy-MM-dd_HH-mm-ss. | `string` | | | True | +| `help` | Display the help message. | `['boolean', 'string']` | | | | +| `help_full` | Display the full detailed help message. | `boolean` | | | | +| `show_hidden` | Display hidden parameters in the help message (only works when --help or --help_full are provided). | `boolean` | | | | diff --git a/tests/orthofinder/main.nf.test.snap b/tests/orthofinder/main.nf.test.snap index 51f77523..30d11b89 100644 --- a/tests/orthofinder/main.nf.test.snap +++ b/tests/orthofinder/main.nf.test.snap @@ -49,9 +49,9 @@ "gallisepticum_stats.csv:md5,cedd23a5778c76bf17053f5a0aa6eaf8", "genitalium_stats.csv:md5,04ef67d681fba6ca05df4171f888424a", "hyopneumoniae_stats.csv:md5,d59081ff1b5bb0e9f1be494b8463f3b8", - "agalactiae.gt.stat.yml:md5,6e8df307ea8bb5b668e105e8722ed959", - "gallisepticum.gt.stat.yml:md5,5bea6691c162699489d1b4f2a9864f4f", - "genitalium.gt.stat.yml:md5,042580254bc79383c07d2a461c8bf347", + "agalactiae.gt.stat.yml:md5,63c0935d08d5b0aabd45ce3987bf3f67", + "gallisepticum.gt.stat.yml:md5,5f22785cac256acf09eb3aeb1f649eed", + "genitalium.gt.stat.yml:md5,e8bb4d24bee4cecd9de60cf9e979f0f2", "hyopneumoniae.gt.stat.yml:md5,8601d416b9ffbe1d230c5b3ee29387de" ], "orthofinder stats": [ @@ -75,9 +75,9 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" + "nf-test": "0.9.3", + "nextflow": "25.10.4" }, - "timestamp": "2025-07-17T22:43:41.196887617" + "timestamp": "2026-07-24T10:36:19.389269" } } \ No newline at end of file