diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index 325bc15..0920eb1 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -75,7 +75,7 @@ jobs: fail-fast: false matrix: shard: ${{ fromJson(needs.nf-test-changes.outputs.shard) }} - profile: [conda, docker, singularity] + profile: [docker, singularity] # TODO: add Conda profile back when conda tests are fixed isMain: - ${{ github.base_ref == 'master' || github.base_ref == 'main' }} # Exclude conda and singularity on dev @@ -100,6 +100,7 @@ jobs: uses: ./.github/actions/nf-test env: NFT_WORKDIR: ${{ env.NFT_WORKDIR }} + NFT_USING_CONDA: ${{ matrix.profile == 'conda' }} with: profile: ${{ matrix.profile }} shard: ${{ matrix.shard }} diff --git a/README.md b/README.md index 282fc2d..c6c0aa3 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,10 @@ Steps 3 and 4 can be skipped with `--skip_merge`. > [!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. +:::warning +Due to an nf-test issue outside our control, the current version of the pipeline is not tested with Conda. Most functionality should work with Conda, but we cannot guarantee it. We will rectify this issue as soon as possible. +::: + First, prepare a samplesheet with your input data that looks as follows: ```csv title="samplesheet_fasta.csv" diff --git a/modules.json b/modules.json index 8c7864b..0eadc97 100644 --- a/modules.json +++ b/modules.json @@ -12,12 +12,12 @@ }, "csvtk/concat": { "branch": "master", - "git_sha": "cfe2a24902bfdfe8132f11461ffda92d257f9f09", + "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", "installed_by": ["modules"] }, "csvtk/join": { "branch": "master", - "git_sha": "614abbf126f287a3068dc86997b2e1b6a93abe20", + "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", "installed_by": ["modules"] }, "diamond/cluster": { diff --git a/modules/local/plot_orthologs.nf b/modules/local/plot_orthologs.nf index 566115c..23ffc43 100644 --- a/modules/local/plot_orthologs.nf +++ b/modules/local/plot_orthologs.nf @@ -4,8 +4,8 @@ process PLOT_ORTHOLOGS { conda "conda-forge::r-tidyverse=2.0.0 conda-forge::r-reshape2=1.4.4 conda-forge::r-ggvenndiagram=1.5.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'oras://community.wave.seqera.io/library/r-ggvenndiagram_r-reshape2_r-tidyverse:3941632557872dac' : - 'community.wave.seqera.io/library/r-ggvenndiagram_r-reshape2_r-tidyverse:6ab82708ae578c26' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/24/241121c567b6ac13fb664276916cc15e5b21b773612e30debf1de3cafe64fd97/data' : + 'community.wave.seqera.io/library/r-ggvenndiagram_r-reshape2_r-tidyverse:b2486480b5e4dea4' }" input: tuple val(meta), path(score_table) diff --git a/modules/local/stats2csv.nf b/modules/local/stats2csv.nf index 68211a3..2d22e05 100644 --- a/modules/local/stats2csv.nf +++ b/modules/local/stats2csv.nf @@ -4,8 +4,8 @@ process STATS2CSV { conda "conda-forge::python=3.11.0 conda-forge::pyyaml=5.4.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-deac90960ddeb4d14fb31faf92c0652d613b3327:10b46d090d02e9e22e206db80d14e994267520c3-0' : - 'biocontainers/mulled-v2-deac90960ddeb4d14fb31faf92c0652d613b3327:10b46d090d02e9e22e206db80d14e994267520c3-0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/0d/0d2b6ac1ed316a98eca861b5fbb6d52e11fd960e331a4f356e1dff8e7b544e2a/data' : + 'community.wave.seqera.io/library/python_pyyaml:1d8dd531b5ad400c' }" input: tuple val(meta), path(stats) diff --git a/modules/nf-core/csvtk/concat/environment.yml b/modules/nf-core/csvtk/concat/environment.yml index ac58390..52d488d 100644 --- a/modules/nf-core/csvtk/concat/environment.yml +++ b/modules/nf-core/csvtk/concat/environment.yml @@ -1,9 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json -name: "csvtk_concat" channels: - - conda-forge - bioconda - - defaults + - conda-forge dependencies: - - "bioconda::csvtk=0.30.0" + - bioconda::csvtk=0.31.0 diff --git a/modules/nf-core/csvtk/concat/main.nf b/modules/nf-core/csvtk/concat/main.nf index 741ed55..9f17a9b 100644 --- a/modules/nf-core/csvtk/concat/main.nf +++ b/modules/nf-core/csvtk/concat/main.nf @@ -4,11 +4,11 @@ process CSVTK_CONCAT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/csvtk:0.30.0--h9ee0642_0' : - 'biocontainers/csvtk:0.30.0--h9ee0642_0' }" + 'https://depot.galaxyproject.org/singularity/csvtk:0.31.0--h9ee0642_0' : + 'biocontainers/csvtk:0.31.0--h9ee0642_0' }" input: - tuple val(meta), path(csv) + tuple val(meta), path(csv, name: 'inputs/csv*/*') val in_format val out_format diff --git a/modules/nf-core/csvtk/concat/meta.yml b/modules/nf-core/csvtk/concat/meta.yml index 5f53229..27ffc1c 100644 --- a/modules/nf-core/csvtk/concat/meta.yml +++ b/modules/nf-core/csvtk/concat/meta.yml @@ -11,38 +11,41 @@ tools: documentation: http://bioinf.shenwei.me/csvtk tool_dev_url: https://github.com/shenwei356/csvtk licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - csv: - type: file - description: CSV/TSV formatted files - pattern: "*.{csv,tsv}" - - in_format: - type: string - description: Input format (csv, tab, or a delimiting character) - pattern: "*" - - out_format: - type: string - description: Output format (csv, tab, or a delimiting character) - pattern: "*" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - csv: + type: file + description: CSV/TSV formatted files + pattern: "*.{csv,tsv}" + - - in_format: + type: string + description: Input format (csv, tab, or a delimiting character) + pattern: "*" + - - out_format: + type: string + description: Output format (csv, tab, or a delimiting character) + pattern: "*" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "version.yml" - csv: - type: file - description: Concatenated CSV/TSV file - pattern: "*.{csv,tsv}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.${out_extension}: + type: file + description: Concatenated CSV/TSV file + pattern: "*.{csv,tsv}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "version.yml" authors: - "@rpetit3" maintainers: diff --git a/modules/nf-core/csvtk/concat/tests/main.nf.test b/modules/nf-core/csvtk/concat/tests/main.nf.test index 13f2014..b6c1a58 100644 --- a/modules/nf-core/csvtk/concat/tests/main.nf.test +++ b/modules/nf-core/csvtk/concat/tests/main.nf.test @@ -17,9 +17,12 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - [ file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_hybrid.csv", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_long.csv", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_short.csv", checkIfExists: true) ] + [ + file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_hybrid.csv", checkIfExists: true), + file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_long.csv", checkIfExists: true), + file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_short.csv", checkIfExists: true), + file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_short.csv", checkIfExists: true) + ] ] input[1] = "tsv" input[2] = "csv" @@ -45,9 +48,11 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - [ file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_hybrid.csv", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_long.csv", checkIfExists: true), - file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_short.csv", checkIfExists: true) ] + [ + file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_hybrid.csv", checkIfExists: true), + file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_long.csv", checkIfExists: true), + file("https://github.com/nf-core/test-datasets/raw/bacass/bacass_short.csv", checkIfExists: true) + ] ] input[1] = "tsv" input[2] = "csv" @@ -64,4 +69,4 @@ nextflow_process { } -} +} \ No newline at end of file diff --git a/modules/nf-core/csvtk/concat/tests/main.nf.test.snap b/modules/nf-core/csvtk/concat/tests/main.nf.test.snap index 777114b..254d34a 100644 --- a/modules/nf-core/csvtk/concat/tests/main.nf.test.snap +++ b/modules/nf-core/csvtk/concat/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] ], "1": [ - "versions.yml:md5,c04e6be6df50305cd689a92aacec947b" + "versions.yml:md5,c203a84cc5b289951b70302549dcf08d" ], "csv": [ [ @@ -22,11 +22,15 @@ ] ], "versions": [ - "versions.yml:md5,c04e6be6df50305cd689a92aacec947b" + "versions.yml:md5,c203a84cc5b289951b70302549dcf08d" ] } ], - "timestamp": "2024-05-17T12:43:26.787254" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-01-08T04:46:46.133640633" }, "tsv - concat - csv": { "content": [ @@ -36,25 +40,29 @@ { "id": "test" }, - "test.csv:md5,917fe5d857f04b58e0f49c384d167cec" + "test.csv:md5,bb0ed52999b6b24297bcefb3c29f0a5c" ] ], "1": [ - "versions.yml:md5,c04e6be6df50305cd689a92aacec947b" + "versions.yml:md5,c203a84cc5b289951b70302549dcf08d" ], "csv": [ [ { "id": "test" }, - "test.csv:md5,917fe5d857f04b58e0f49c384d167cec" + "test.csv:md5,bb0ed52999b6b24297bcefb3c29f0a5c" ] ], "versions": [ - "versions.yml:md5,c04e6be6df50305cd689a92aacec947b" + "versions.yml:md5,c203a84cc5b289951b70302549dcf08d" ] } ], - "timestamp": "2024-05-17T12:43:17.930902" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-01-08T04:46:31.419386462" } } \ No newline at end of file diff --git a/modules/nf-core/csvtk/concat/tests/tags.yml b/modules/nf-core/csvtk/concat/tests/tags.yml deleted file mode 100644 index 0d10e7c..0000000 --- a/modules/nf-core/csvtk/concat/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -csvtk/concat: - - "modules/nf-core/csvtk/concat/**" diff --git a/modules/nf-core/csvtk/join/environment.yml b/modules/nf-core/csvtk/join/environment.yml index 5b6c646..47679f1 100644 --- a/modules/nf-core/csvtk/join/environment.yml +++ b/modules/nf-core/csvtk/join/environment.yml @@ -1,7 +1,8 @@ -name: csvtk_join +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - - conda-forge - bioconda - - defaults + - conda-forge + dependencies: - - bioconda::csvtk=0.30.0 + - bioconda::csvtk=0.31.0 diff --git a/modules/nf-core/csvtk/join/main.nf b/modules/nf-core/csvtk/join/main.nf index 5f3afee..0bd6b2a 100644 --- a/modules/nf-core/csvtk/join/main.nf +++ b/modules/nf-core/csvtk/join/main.nf @@ -4,8 +4,8 @@ process CSVTK_JOIN { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/csvtk:0.30.0--h9ee0642_0': - 'biocontainers/csvtk:0.30.0--h9ee0642_0' }" + 'https://depot.galaxyproject.org/singularity/csvtk:0.31.0--h9ee0642_0': + 'biocontainers/csvtk:0.31.0--h9ee0642_0' }" input: tuple val(meta), path(csv) diff --git a/modules/nf-core/csvtk/join/meta.yml b/modules/nf-core/csvtk/join/meta.yml index a75ec40..d8671b1 100644 --- a/modules/nf-core/csvtk/join/meta.yml +++ b/modules/nf-core/csvtk/join/meta.yml @@ -1,5 +1,6 @@ name: csvtk_join -description: Join two or more CSV (or TSV) tables by selected fields into a single table +description: Join two or more CSV (or TSV) tables by selected fields into a single + table keywords: - join - tsv @@ -11,30 +12,33 @@ tools: documentation: http://bioinf.shenwei.me/csvtk tool_dev_url: https://github.com/shenwei356/csvtk licence: ["MIT"] + identifier: "" input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - csv: - type: file - description: CSV/TSV formatted files - pattern: "*.{csv,tsv}" + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - csv: + type: file + description: CSV/TSV formatted files + pattern: "*.{csv,tsv}" output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "version.yml" - csv: - type: file - description: Joined CSV/TSV file - pattern: "*.{csv,tsv}" + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - ${prefix}.${out_extension}: + type: file + description: Joined CSV/TSV file + pattern: "*.{csv,tsv}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "version.yml" authors: - "@anoronh4" maintainers: diff --git a/modules/nf-core/csvtk/join/tests/main.nf.test.snap b/modules/nf-core/csvtk/join/tests/main.nf.test.snap index b124788..8ba7b86 100644 --- a/modules/nf-core/csvtk/join/tests/main.nf.test.snap +++ b/modules/nf-core/csvtk/join/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] ], "1": [ - "versions.yml:md5,e76147e4eca968d23543e7007522f1d3" + "versions.yml:md5,b80d80628bb39bba336cff32fe502aac" ], "csv": [ [ @@ -22,11 +22,15 @@ ] ], "versions": [ - "versions.yml:md5,e76147e4eca968d23543e7007522f1d3" + "versions.yml:md5,b80d80628bb39bba336cff32fe502aac" ] } ], - "timestamp": "2024-05-21T15:45:44.045434" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-01-02T06:18:42.09571517" }, "join - csv - stub": { "content": [ @@ -40,7 +44,7 @@ ] ], "1": [ - "versions.yml:md5,e76147e4eca968d23543e7007522f1d3" + "versions.yml:md5,b80d80628bb39bba336cff32fe502aac" ], "csv": [ [ @@ -51,10 +55,14 @@ ] ], "versions": [ - "versions.yml:md5,e76147e4eca968d23543e7007522f1d3" + "versions.yml:md5,b80d80628bb39bba336cff32fe502aac" ] } ], - "timestamp": "2024-05-21T15:45:55.59201" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-01-02T06:19:00.2453934" } } \ No newline at end of file diff --git a/modules/nf-core/csvtk/join/tests/tags.yml b/modules/nf-core/csvtk/join/tests/tags.yml deleted file mode 100644 index 6c3a0fa..0000000 --- a/modules/nf-core/csvtk/join/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -csvtk/join: - - "modules/nf-core/csvtk/join/**" diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index f1e5a8d..a3bdb87 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -23,7 +23,7 @@ "@type": "Dataset", "creativeWorkStatus": "Stable", "datePublished": "2025-03-27T15:46:06+00:00", - "description": "

\n \n \n \"nf-core/reportho\"\n \n

\n\n[![GitHub Actions CI Status](https://github.com/nf-core/reportho/actions/workflows/ci.yml/badge.svg)](https://github.com/nf-core/reportho/actions/workflows/ci.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/reportho/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/reportho/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/reportho/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.11574565-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.11574565)\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/nf-core/reportho)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23reportho-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/reportho)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nf-core/reportho** is a bioinformatics pipeline that compares and summarizes orthology predictions for one or a set of query proteins. For each query (or its closest annotated homolog), it fetches ortholog lists from public databases, identifies synonymous identifiers based on sequences, calculates the agreement of the obtained predictions (pairwise and global) and finally generates a consensus list of orthologs with the desired level of confidence. Additionally, it generates a clean, human-readable report of the results.\n\n\n\n![nf-core-reportho tube map](docs/images/reportho_tube_map.svg?raw=true \"nf-core-reportho tube map\")\n\n1. **Obtain Query Information**: identification of Uniprot ID and taxon ID for the query (or its closest homolog if the fasta file is used as input instead of the Uniprot ID).\n2. **Fetch Orthologs**: fetching of ortholog predictions from public databases, either through API or from local snapshot.\n\nSteps 3 and 4 can be skipped with `--skip_merge`.\n\n3. **Fetch Sequences**: fetching of sequences of identified orthologs.\n4. **Merge Synonymous Identifiers**: identification of synonymous identifiers based on sequence identity.\n5. **Compare and Assemble**: calculation of agreement statistics, creation of ortholog lists, selection of the consensus list.\n6. **Generate Report**: human-readable HTML report generation.\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\nFirst, prepare a samplesheet with your input data that looks as follows:\n\n```csv title=\"samplesheet_fasta.csv\"\nid,fasta\nBicD2,data/bicd2.fasta\nHBB,data/hbb.fasta\n```\n\nor if you know the UniProt ID of the protein you can provide it directly:\n\n```csv title=\"samplesheet.csv\"\nid,query\nBicD2,Q8TD16\nHBB,P68871\n```\n\n> [!NOTE]\n> If you provide both a FASTA file and a UniProt ID only the latter will be used.\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run nf-core/reportho \\\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\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/reportho/usage) and the [parameter documentation](https://nf-co.re/reportho/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/reportho/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the\n[output documentation](https://nf-co.re/reportho/output).\n\n## Report image\n\nThe code to create the image producing the pipeline report is available under [this](https://github.com/itrujnara/orthologs-report) GitHub repository.\n\n## Credits\n\nnf-core/reportho was originally written by Igor Trujnara ([@itrujnara](https://github.com/itrujnara)).\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- Luisa Santus ([@luisas](https://github.com/luisas))\n- Alessio Vignoli ([@alessiovignoli](https://github.com/alessiovignoli))\n- Jose Espinosa-Carrasco ([@JoseEspinosa](https://github.com/JoseEspinosa))\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#reportho` channel](https://nfcore.slack.com/channels/reportho) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\nIf you use nf-core/reportho for your analysis, please cite it using the following doi: [10.5281/zenodo.11574565](https://doi.org/10.5281/zenodo.11574565)\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\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", + "description": "

\n \n \n \"nf-core/reportho\"\n \n

\n\n[![GitHub Actions CI Status](https://github.com/nf-core/reportho/actions/workflows/ci.yml/badge.svg)](https://github.com/nf-core/reportho/actions/workflows/ci.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/reportho/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/reportho/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/reportho/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.11574565-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.11574565)\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/nf-core/reportho)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23reportho-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/reportho)[![Follow on Bluesky](https://img.shields.io/badge/bluesky-%40nf__core-1185fe?labelColor=000000&logo=bluesky)](https://bsky.app/profile/nf-co.re)[![Follow on Mastodon](https://img.shields.io/badge/mastodon-nf__core-6364ff?labelColor=FFFFFF&logo=mastodon)](https://mstdn.science/@nf_core)[![Watch on YouTube](http://img.shields.io/badge/youtube-nf--core-FF0000?labelColor=000000&logo=youtube)](https://www.youtube.com/c/nf-core)\n\n## Introduction\n\n**nf-core/reportho** is a bioinformatics pipeline that compares and summarizes orthology predictions for one or a set of query proteins. For each query (or its closest annotated homolog), it fetches ortholog lists from public databases, identifies synonymous identifiers based on sequences, calculates the agreement of the obtained predictions (pairwise and global) and finally generates a consensus list of orthologs with the desired level of confidence. Additionally, it generates a clean, human-readable report of the results.\n\n\n\n![nf-core-reportho tube map](docs/images/reportho_tube_map.svg?raw=true \"nf-core-reportho tube map\")\n\n1. **Obtain Query Information**: identification of Uniprot ID and taxon ID for the query (or its closest homolog if the fasta file is used as input instead of the Uniprot ID).\n2. **Fetch Orthologs**: fetching of ortholog predictions from public databases, either through API or from local snapshot.\n\nSteps 3 and 4 can be skipped with `--skip_merge`.\n\n3. **Fetch Sequences**: fetching of sequences of identified orthologs.\n4. **Merge Synonymous Identifiers**: identification of synonymous identifiers based on sequence identity.\n5. **Compare and Assemble**: calculation of agreement statistics, creation of ortholog lists, selection of the consensus list.\n6. **Generate Report**: human-readable HTML report generation.\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:::warning\nDue to an nf-test issue outside our control, the current version of the pipeline is not tested with Conda. Most functionality should work with Conda, but we cannot guarantee it. We will rectify this issue as soon as possible.\n:::\n\nFirst, prepare a samplesheet with your input data that looks as follows:\n\n```csv title=\"samplesheet_fasta.csv\"\nid,fasta\nBicD2,data/bicd2.fasta\nHBB,data/hbb.fasta\n```\n\nor if you know the UniProt ID of the protein you can provide it directly:\n\n```csv title=\"samplesheet.csv\"\nid,query\nBicD2,Q8TD16\nHBB,P68871\n```\n\n> [!NOTE]\n> If you provide both a FASTA file and a UniProt ID only the latter will be used.\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run nf-core/reportho \\\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\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/reportho/usage) and the [parameter documentation](https://nf-co.re/reportho/parameters).\n\n## Pipeline output\n\nTo see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/reportho/results) tab on the nf-core website pipeline page.\nFor more details about the output files and reports, please refer to the\n[output documentation](https://nf-co.re/reportho/output).\n\n## Report image\n\nThe code to create the image producing the pipeline report is available under [this](https://github.com/itrujnara/orthologs-report) GitHub repository.\n\n## Credits\n\nnf-core/reportho was originally written by Igor Trujnara ([@itrujnara](https://github.com/itrujnara)).\n\nWe thank the following people for their extensive assistance in the development of this pipeline:\n\n- Luisa Santus ([@luisas](https://github.com/luisas))\n- Alessio Vignoli ([@alessiovignoli](https://github.com/alessiovignoli))\n- Jose Espinosa-Carrasco ([@JoseEspinosa](https://github.com/JoseEspinosa))\n\n## Contributions and Support\n\nIf you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md).\n\nFor further information or help, don't hesitate to get in touch on the [Slack `#reportho` channel](https://nfcore.slack.com/channels/reportho) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\nIf you use nf-core/reportho for your analysis, please cite it using the following doi: [10.5281/zenodo.11574565](https://doi.org/10.5281/zenodo.11574565)\n\nAn extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file.\n\nYou can cite the `nf-core` publication as follows:\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" diff --git a/tests/.nftignore b/tests/.nftignore index 19698f2..3a31a8f 100644 --- a/tests/.nftignore +++ b/tests/.nftignore @@ -21,4 +21,4 @@ pipeline_info/*.{html,json,txt,yml} **/multiqc_sample_*.txt **/*.pdf **/*.svg -pipeline_info/* +pipeline_info/** diff --git a/tests/default.nf.test b/tests/default.nf.test index b73c8dc..d294b84 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -15,9 +15,10 @@ 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}']) + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}', 'report', 'report/**']) // stable_path: All files in ${params.outdir}/ with stable content def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( { assert workflow.success}, { assert snapshot( @@ -25,11 +26,11 @@ nextflow_pipeline { workflow.trace.succeeded().size(), // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions removeNextflowVersion("$outputDir/pipeline_info/nf_core_reportho_software_mqc_versions.yml"), - // All stable path name, with a relative path + // All report stable path name, with a relative path stable_name, - // All files with stable contents + // All report files with stable contents stable_path - ).match() } + ).match() } ) } } @@ -47,9 +48,10 @@ 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}']) + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}', 'report', 'report/**']) // stable_path: All files in ${params.outdir}/ with stable content def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( { assert workflow.success}, { assert snapshot( @@ -57,9 +59,9 @@ nextflow_pipeline { workflow.trace.succeeded().size(), // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions removeNextflowVersion("$outputDir/pipeline_info/nf_core_reportho_software_mqc_versions.yml"), - // All stable path name, with a relative path + // All report stable path name, with a relative path stable_name, - // All files with stable contents + // All report files with stable contents stable_path ).match() } ) diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 99058ef..9f1f0ae 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -34,10 +34,10 @@ "Python": "3.11.0" }, "MERGE_CSV": { - "csvtk": "0.30.0" + "csvtk": "0.31.0" }, "MERGE_HITS": { - "csvtk": "0.30.0" + "csvtk": "0.31.0" }, "SPLIT_ID_FORMAT": { "Python": "3.12.9" @@ -73,10 +73,10 @@ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.10.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2025-03-28T11:32:19.67177" + "timestamp": "2025-07-03T11:13:27.950978341" }, "Params: default": { "content": [ @@ -153,7 +153,7 @@ "pigz": "2.3.4" }, "MERGE_CSV": { - "csvtk": "0.30.0" + "csvtk": "0.31.0" }, "MERGE_DIAMOND": { "pigz": "2.3.4" @@ -162,16 +162,16 @@ "gawk": "5.3.0" }, "MERGE_HITS": { - "csvtk": "0.30.0" + "csvtk": "0.31.0" }, "MERGE_MERGE": { - "csvtk": "0.30.0" + "csvtk": "0.31.0" }, "MERGE_STATS": { - "csvtk": "0.30.0" + "csvtk": "0.31.0" }, "PLOT_ORTHOLOGS": { - "r-base": "4.3.3" + "r-base": "4.4.3" }, "POSTPROCESS_DIAMOND": { "gawk": "5.3.0" @@ -186,7 +186,7 @@ "awk": "5.3.1" }, "STATS2CSV": { - "Python": "3.9.6", + "Python": "3.11.0", "PyYAML": "5.4.1" }, "WRITE_SEQINFO": { @@ -231,41 +231,6 @@ "multiqc/multiqc_report.html", "pipeline_info", "pipeline_info/nf_core_reportho_software_mqc_versions.yml", - "report", - "report/BicD2", - "report/BicD2/clusters.csv", - "report/BicD2/filtered_hits.txt", - "report/BicD2/id.txt", - "report/BicD2/index.html", - "report/BicD2/jaccard.png", - "report/BicD2/merge_stats.csv", - "report/BicD2/nf-core-logo-square.png", - "report/BicD2/orthostats.yml", - "report/BicD2/params.yml", - "report/BicD2/run.sh", - "report/BicD2/score_table.csv", - "report/BicD2/seq_hits.txt", - "report/BicD2/seq_misses.txt", - "report/BicD2/supports.png", - "report/BicD2/taxid.txt", - "report/BicD2/venn.png", - "report/HBB", - "report/HBB/clusters.csv", - "report/HBB/filtered_hits.txt", - "report/HBB/id.txt", - "report/HBB/index.html", - "report/HBB/jaccard.png", - "report/HBB/merge_stats.csv", - "report/HBB/nf-core-logo-square.png", - "report/HBB/orthostats.yml", - "report/HBB/params.yml", - "report/HBB/run.sh", - "report/HBB/score_table.csv", - "report/HBB/seq_hits.txt", - "report/HBB/seq_misses.txt", - "report/HBB/supports.png", - "report/HBB/taxid.txt", - "report/HBB/venn.png", "score", "score/BicD2", "score/BicD2/BicD2_score_table.csv", @@ -312,6 +277,6 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-06-17T16:45:45.139534134" + "timestamp": "2025-07-03T10:47:06.531877403" } } \ No newline at end of file diff --git a/tests/offline.nf.test b/tests/offline.nf.test index bd5df12..91e3b24 100644 --- a/tests/offline.nf.test +++ b/tests/offline.nf.test @@ -30,9 +30,10 @@ 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}']) + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}', 'report/**']) // stable_path: All files in ${params.outdir}/ with stable content def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( { assert workflow.success}, { assert snapshot( @@ -40,9 +41,9 @@ nextflow_pipeline { workflow.trace.succeeded().size(), // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions removeNextflowVersion("$outputDir/pipeline_info/nf_core_reportho_software_mqc_versions.yml"), - // All stable path name, with a relative path + // All report stable path name, with a relative path stable_name, - // All files with stable contents + // All report files with stable contents stable_path ).match() } ) @@ -57,14 +58,30 @@ nextflow_pipeline { params { input = "${projectDir}/assets/samplesheet.csv" outdir = "$outputDir" + + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/reportho/testdata/' + + offline_run = true + local_databases = true + oma_path = pipelines_testdata_base_path + 'databases/oma-mini.txt.gz' + oma_uniprot_path = pipelines_testdata_base_path + 'databases/oma-uniprot-mini.txt.gz' + oma_ensembl_path = pipelines_testdata_base_path + 'databases/oma-ensembl-mini.txt.gz' + oma_refseq_path = pipelines_testdata_base_path + 'databases/oma-refseq-mini.txt.gz' + panther_path = pipelines_testdata_base_path + 'databases/AllOrthologs-mini.txt' + eggnog_path = pipelines_testdata_base_path + 'databases/1_members-mini.tsv.gz' + eggnog_idmap_path = pipelines_testdata_base_path + 'databases/latest.Eukaryota-mini.tsv.gz' + skip_merge = true + min_score = 2 + skip_downstream = true } } 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}']) + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}', 'report/**']) // stable_path: All files in ${params.outdir}/ with stable content def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( { assert workflow.success}, { assert snapshot( @@ -72,9 +89,9 @@ nextflow_pipeline { workflow.trace.succeeded().size(), // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions removeNextflowVersion("$outputDir/pipeline_info/nf_core_reportho_software_mqc_versions.yml"), - // All stable path name, with a relative path + // All report stable path name, with a relative path stable_name, - // All files with stable contents + // All report files with stable contents stable_path ).match() } ) diff --git a/tests/offline.nf.test.snap b/tests/offline.nf.test.snap index a779cf1..27a12e6 100644 --- a/tests/offline.nf.test.snap +++ b/tests/offline.nf.test.snap @@ -6,44 +6,45 @@ "DUMP_PARAMS": { "cat": 8.3 }, - "FETCH_ENSEMBL_IDMAP": { - "Python": "3.12.9", - "Python Requests": "2.32.3" - }, - "FETCH_INSPECTOR_GROUP_ONLINE": { - "Python": "3.11.0", - "Python Requests": "2.31.0", - "OrthoInspector Database": "Eukaryota2023" + "FETCH_EGGNOG_GROUP_LOCAL": { + "python": "3.12.3", + "ripgrep": "14.1.0" }, - "FETCH_OMA_GROUP_ONLINE": { - "Python": "3.11.0", - "Python Requests": "2.31.0", - "OMA Database": "All.Jul2024", - "OMA API": 1.1 + "FETCH_OMA_GROUP_LOCAL": { + "python": "3.12.3", + "ripgrep": "14.1.0" }, - "FETCH_PANTHER_GROUP_ONLINE": { - "Python": "3.11.0", - "Python Requests": "2.31.0", - "Panther Database": null + "FETCH_PANTHER_GROUP_LOCAL": { + "python": "3.12.3", + "ripgrep": "14.1.0" }, - "FETCH_UNIPROT_SEQUENCES": { - "Python": "3.11.0", - "Python Requests": "2.31.0" + "FILTER_HITS": { + "Python": "Python 3.11.0" }, "MAKE_HITS_TABLE": { "Python": "3.11.0" }, + "MAKE_SCORE_TABLE": { + "Python": "3.11.0" + }, + "MAKE_STATS": { + "Python": "3.11.0" + }, "MERGE_CSV": { - "csvtk": "0.30.0" + "csvtk": "0.31.0" }, "MERGE_HITS": { - "csvtk": "0.30.0" + "csvtk": "0.31.0" }, - "SPLIT_ID_FORMAT": { - "Python": "3.12.9" + "MERGE_STATS": { + "csvtk": "0.31.0" + }, + "PLOT_ORTHOLOGS": { + "r-base": "4.4.3" }, - "SPLIT_TAXIDS": { - "awk": "5.3.1" + "STATS2CSV": { + "Python": "3.11.0", + "PyYAML": "5.4.1" }, "WRITE_SEQINFO": { "Python": "3.11.0", @@ -61,22 +62,36 @@ "pipeline_info", "pipeline_info/nf_core_reportho_software_mqc_versions.yml", "score", + "score/BicD2", + "score/BicD2/BicD2_score_table.csv", + "score/BicD2/plots", + "score/BicD2/plots/BicD2_jaccard_dark.png", + "score/BicD2/plots/BicD2_jaccard_light.png", + "score/BicD2/plots/BicD2_supports_dark.png", + "score/BicD2/plots/BicD2_supports_light.png", + "score/BicD2/plots/BicD2_venn_dark.png", + "score/BicD2/plots/BicD2_venn_light.png", + "score/HBB", + "score/HBB/HBB_score_table.csv", + "score/HBB/plots", + "score/HBB/plots/HBB_jaccard_dark.png", + "score/HBB/plots/HBB_jaccard_light.png", + "score/HBB/plots/HBB_supports_dark.png", + "score/HBB/plots/HBB_supports_light.png", + "score/HBB/plots/HBB_venn_dark.png", + "score/HBB/plots/HBB_venn_light.png", "score/aggregated_hits.csv", - "sequences", - "sequences/BicD2", - "sequences/BicD2/BicD2_orthologs.txt", - "sequences/HBB", - "sequences/HBB/HBB_orthologs.txt" + "score/aggregated_stats.csv" ], [ ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.10.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2025-04-12T15:55:48.401748" + "timestamp": "2025-07-03T11:17:15.771676925" }, "Params: default": { "content": [ @@ -110,19 +125,19 @@ "Python": "3.11.0" }, "MERGE_CSV": { - "csvtk": "0.30.0" + "csvtk": "0.31.0" }, "MERGE_HITS": { - "csvtk": "0.30.0" + "csvtk": "0.31.0" }, "MERGE_STATS": { - "csvtk": "0.30.0" + "csvtk": "0.31.0" }, "PLOT_ORTHOLOGS": { - "r-base": "4.3.3" + "r-base": "4.4.3" }, "STATS2CSV": { - "Python": "3.9.6", + "Python": "3.11.0", "PyYAML": "5.4.1" }, "WRITE_SEQINFO": { @@ -186,6 +201,6 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-06-16T15:35:09.692317789" + "timestamp": "2025-07-03T11:15:23.657842333" } } \ No newline at end of file diff --git a/workflows/reportho.nf b/workflows/reportho.nf index 43bb0c5..ac269de 100644 --- a/workflows/reportho.nf +++ b/workflows/reportho.nf @@ -106,7 +106,14 @@ workflow REPORTHO { ch_multiqc_files = ch_multiqc_files.mix(SCORE_ORTHOLOGS.out.aggregated_hits.map {it[1]}) ch_multiqc_files = ch_multiqc_files.mix(SCORE_ORTHOLOGS.out.aggregated_merge.map {it[1]}) - if(!params.skip_report) { + if(workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() != 0) { + log.warn( + "The conda/mamba profile is used, so the report will not be generated. " + + "Please use the 'skip_report' parameter to skip this warning." + ) + } + + if(!params.skip_report && workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() == 0) { REPORT ( params.use_centroid, params.min_score,