From a2594dfe86787fa102cd1ad3a6518fba426e92c3 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Thu, 20 Nov 2025 09:32:20 +0000 Subject: [PATCH 1/4] Template update for nf-core/tools version 3.5.1 --- .github/workflows/awsfulltest.yml | 2 +- .github/workflows/awstest.yml | 2 +- .github/workflows/download_pipeline.yml | 2 +- .github/workflows/fix_linting.yml | 2 +- .github/workflows/linting.yml | 6 +-- .github/workflows/nf-test.yml | 4 +- .github/workflows/release-announcements.yml | 9 ++--- .../workflows/template-version-comment.yml | 2 +- .nf-core.yml | 3 +- .prettierignore | 2 + README.md | 4 +- modules.json | 4 +- modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 4 +- .../nf-core/multiqc/tests/main.nf.test.snap | 24 ++++++------ nextflow.config | 2 - ro-crate-metadata.json | 14 +++---- .../utils_nfcore_spatialxe_pipeline/main.nf | 6 +-- .../nf-core/utils_nfcore_pipeline/main.nf | 2 +- workflows/spatialxe.nf | 38 ++++++++++++++----- 20 files changed, 75 insertions(+), 59 deletions(-) diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index d45b8ecf..78fdaf9d 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -40,7 +40,7 @@ jobs: } profiles: test_full - - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 with: name: Seqera Platform debug log file path: | diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml index 566a8d9b..47dfba52 100644 --- a/.github/workflows/awstest.yml +++ b/.github/workflows/awstest.yml @@ -25,7 +25,7 @@ jobs: } profiles: test - - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 with: name: Seqera Platform debug log file path: | diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml index 6d94bcbf..45884ff9 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -127,7 +127,7 @@ jobs: fi - name: Upload Nextflow logfile for debugging purposes - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 with: name: nextflow_logfile.txt path: .nextflow.log* diff --git a/.github/workflows/fix_linting.yml b/.github/workflows/fix_linting.yml index 5a1c68cf..8394ba2f 100644 --- a/.github/workflows/fix_linting.yml +++ b/.github/workflows/fix_linting.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: # Use the @nf-core-bot token to check out so we can push later - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: token: ${{ secrets.nf_core_bot_auth_token }} diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 30e66026..7a527a34 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -11,7 +11,7 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - name: Set up Python 3.14 uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 @@ -28,7 +28,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out pipeline code - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - name: Install Nextflow uses: nf-core/setup-nextflow@v2 @@ -71,7 +71,7 @@ jobs: - name: Upload linting log file artifact if: ${{ always() }} - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 with: name: linting-logs path: | diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index e20bf6d0..c98d76ec 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -40,7 +40,7 @@ jobs: rm -rf ./* || true rm -rf ./.??* || true ls -la ./ - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: fetch-depth: 0 @@ -85,7 +85,7 @@ jobs: TOTAL_SHARDS: ${{ needs.nf-test-changes.outputs.total_shards }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: fetch-depth: 0 diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml index e64cebd6..431d3d44 100644 --- a/.github/workflows/release-announcements.yml +++ b/.github/workflows/release-announcements.yml @@ -15,10 +15,9 @@ jobs: echo "topics=$(curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .topics[]' | awk '{print "#"$0}' | tr '\n' ' ')" | sed 's/-//g' >> $GITHUB_OUTPUT - name: get description - id: get_topics + id: get_description run: | - echo "description=$(curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .description' >> $GITHUB_OUTPUT - + echo "description=$(curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .description')" >> $GITHUB_OUTPUT - uses: rzr/fediverse-action@master with: access-token: ${{ secrets.MASTODON_ACCESS_TOKEN }} @@ -27,9 +26,7 @@ jobs: # https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#release message: | Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}! - - ${{ steps.get_topics.outputs.description }} - + ${{ steps.get_description.outputs.description }} Please see the changelog: ${{ github.event.release.html_url }} ${{ steps.get_topics.outputs.topics }} #nfcore #openscience #nextflow #bioinformatics diff --git a/.github/workflows/template-version-comment.yml b/.github/workflows/template-version-comment.yml index c5988af9..e8560fc7 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: ref: ${{ github.event.pull_request.head.sha }} diff --git a/.nf-core.yml b/.nf-core.yml index b916095a..79809cf6 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -7,7 +7,8 @@ lint: - assets/nf-core-spatialxe_logo_light.png - docs/images/nf-core-spatialxe_logo_dark.png - docs/images/nf-core-spatialxe_logo_light.png -nf_core_version: 3.4.1 + - .github/PULL_REQUEST_TEMPLATE.md +nf_core_version: 3.5.1 repository_type: pipeline template: author: Sameesh Kher, Florian Heyl diff --git a/.prettierignore b/.prettierignore index 2255e3e3..dd749d43 100644 --- a/.prettierignore +++ b/.prettierignore @@ -12,3 +12,5 @@ testing* bin/ .nf-test/ ro-crate-metadata.json +modules/nf-core/ +subworkflows/nf-core/ diff --git a/README.md b/README.md index f2386926..09cb2108 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,13 @@ -[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new/nf-core/spatialxe) +[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/spatialxe) [![GitHub Actions CI Status](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml) [![GitHub Actions Linting Status](https://github.com/nf-core/spatialxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialxe/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/spatialxe/results)[![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%A525.04.0-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.4.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.4.1) +[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.5.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.5.1) [![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/modules.json b/modules.json index 100427cf..f5682e24 100644 --- a/modules.json +++ b/modules.json @@ -12,7 +12,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "e10b76ca0c66213581bec2833e30d31f239dec0b", + "git_sha": "af27af1be706e6a2bb8fe454175b0cdf77f47b49", "installed_by": ["modules"] } } @@ -26,7 +26,7 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "05954dab2ff481bcb999f24455da29a5828af08d", + "git_sha": "271e7fc14eb1320364416d996fb077421f3faed2", "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index dd513cbd..d02016a0 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::multiqc=1.31 + - bioconda::multiqc=1.32 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 5288f5cc..c1158fb0 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -3,8 +3,8 @@ process MULTIQC { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/ef/eff0eafe78d5f3b65a6639265a16b89fdca88d06d18894f90fcdb50142004329/data' : - 'community.wave.seqera.io/library/multiqc:1.31--1efbafd542a23882' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c6c120d559d7ee04c7442b61ad7cf5a9e8970be5feefb37d68eeaa60c1034eb/data' : + 'community.wave.seqera.io/library/multiqc:1.32--d58f60e4deb769bf' }" input: path multiqc_files, stageAs: "?/*" diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index 17881d15..a88bafd6 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "multiqc_versions_single": { "content": [ [ - "versions.yml:md5,8968b114a3e20756d8af2b80713bcc4f" + "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" + "nf-test": "0.9.3", + "nextflow": "24.10.4" }, - "timestamp": "2025-09-08T20:57:36.139055243" + "timestamp": "2025-10-27T13:33:24.356715" }, "multiqc_stub": { "content": [ @@ -17,25 +17,25 @@ "multiqc_report.html", "multiqc_data", "multiqc_plots", - "versions.yml:md5,8968b114a3e20756d8af2b80713bcc4f" + "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" + "nf-test": "0.9.3", + "nextflow": "24.10.4" }, - "timestamp": "2025-09-08T20:59:15.142230631" + "timestamp": "2025-10-27T13:34:11.103619" }, "multiqc_versions_config": { "content": [ [ - "versions.yml:md5,8968b114a3e20756d8af2b80713bcc4f" + "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.04.6" + "nf-test": "0.9.3", + "nextflow": "24.10.4" }, - "timestamp": "2025-09-08T20:58:29.629087066" + "timestamp": "2025-10-27T13:34:04.615233" } } \ No newline at end of file diff --git a/nextflow.config b/nextflow.config index b131a86d..b9c8f64f 100644 --- a/nextflow.config +++ b/nextflow.config @@ -170,8 +170,6 @@ profiles { test_full { includeConfig 'conf/test_full.config' } } -// Set AWS client to anonymous when using the default igenomes_base -aws.client.anonymous = !params.igenomes_ignore && params.igenomes_base?.startsWith('s3://ngi-igenomes/igenomes/') ?: false // Load nf-core custom profiles from different institutions // If params.custom_config_base is set AND either the NXF_OFFLINE environment variable is not set or params.custom_config_base is a local path, the nfcore_custom.config file from the specified base path is included. diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index d10d3c54..fd557197 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -22,8 +22,8 @@ "@id": "./", "@type": "Dataset", "creativeWorkStatus": "InProgress", - "datePublished": "2025-10-16T13:39:03+00:00", - "description": "

\n \n \n \"nf-core/spatialxe\"\n \n

\n\n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new/nf-core/spatialxe)\n[![GitHub Actions CI Status](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/spatialxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialxe/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/spatialxe/results)[![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.04.0-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.4.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.4.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/spatialxe)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23spatialxe-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/spatialxe)[![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/spatialxe** is a bioinformatics pipeline that ...\n\n\n\n\n1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/))\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 nf-core/spatialxe \\\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/spatialxe/usage) and the [parameter documentation](https://nf-co.re/spatialxe/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/spatialxe/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/spatialxe/output).\n\n## Credits\n\nnf-core/spatialxe was originally written by Sameesh Kher, Florian Heyl.\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\nFor further information or help, don't hesitate to get in touch on the [Slack `#spatialxe` channel](https://nfcore.slack.com/channels/spatialxe) (you can join with [this invite](https://nf-co.re/join/slack)).\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\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", + "datePublished": "2025-11-20T09:32:15+00:00", + "description": "

\n \n \n \"nf-core/spatialxe\"\n \n

\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/nf-core/spatialxe)\n[![GitHub Actions CI Status](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/spatialxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialxe/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/spatialxe/results)[![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.04.0-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.5.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.5.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/spatialxe)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23spatialxe-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/spatialxe)[![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/spatialxe** is a bioinformatics pipeline that ...\n\n\n\n\n1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/))\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 nf-core/spatialxe \\\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/spatialxe/usage) and the [parameter documentation](https://nf-co.re/spatialxe/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/spatialxe/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/spatialxe/output).\n\n## Credits\n\nnf-core/spatialxe was originally written by Sameesh Kher, Florian Heyl.\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\nFor further information or help, don't hesitate to get in touch on the [Slack `#spatialxe` channel](https://nfcore.slack.com/channels/spatialxe) (you can join with [this invite](https://nf-co.re/join/slack)).\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\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" @@ -99,7 +99,7 @@ }, "mentions": [ { - "@id": "#caf41f1d-dd5a-4285-b696-7160443f0131" + "@id": "#ee2c0a4f-0aee-4f4b-9e9d-044fdc833c27" } ], "name": "nf-core/spatialxe" @@ -123,7 +123,7 @@ "@id": "main.nf", "@type": ["File", "SoftwareSourceCode", "ComputationalWorkflow"], "dateCreated": "", - "dateModified": "2025-10-16T13:39:03Z", + "dateModified": "2025-11-20T09:32:15Z", "dct:conformsTo": "https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE/", "keywords": [ "nf-core", @@ -160,11 +160,11 @@ "version": "!>=25.04.0" }, { - "@id": "#caf41f1d-dd5a-4285-b696-7160443f0131", + "@id": "#ee2c0a4f-0aee-4f4b-9e9d-044fdc833c27", "@type": "TestSuite", "instance": [ { - "@id": "#90d899e6-968c-4be9-87db-a2595ede39d4" + "@id": "#ec41083f-c8e9-4bd2-818d-5be534486d2b" } ], "mainEntity": { @@ -173,7 +173,7 @@ "name": "Test suite for nf-core/spatialxe" }, { - "@id": "#90d899e6-968c-4be9-87db-a2595ede39d4", + "@id": "#ec41083f-c8e9-4bd2-818d-5be534486d2b", "@type": "TestInstance", "name": "GitHub Actions workflow for testing nf-core/spatialxe", "resource": "repos/nf-core/spatialxe/actions/workflows/nf-test.yml", diff --git a/subworkflows/local/utils_nfcore_spatialxe_pipeline/main.nf b/subworkflows/local/utils_nfcore_spatialxe_pipeline/main.nf index b3b6bdb9..4e8dde6f 100644 --- a/subworkflows/local/utils_nfcore_spatialxe_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_spatialxe_pipeline/main.nf @@ -39,7 +39,7 @@ workflow PIPELINE_INITIALISATION { main: - ch_versions = Channel.empty() + ch_versions = channel.empty() // // Print version and exit if required and dump pipeline parameters to JSON file @@ -64,7 +64,7 @@ workflow PIPELINE_INITIALISATION { \033[0;35m nf-core/spatialxe ${workflow.manifest.version}\033[0m -\033[2m----------------------------------------------------\033[0m- """ - after_text = """${workflow.manifest.doi ? "\n* The pipeline\n" : ""}${workflow.manifest.doi.tokenize(",").collect { " https://doi.org/${it.trim().replace('https://doi.org/','')}"}.join("\n")}${workflow.manifest.doi ? "\n" : ""} + after_text = """${workflow.manifest.doi ? "\n* The pipeline\n" : ""}${workflow.manifest.doi.tokenize(",").collect { doi -> " https://doi.org/${doi.trim().replace('https://doi.org/','')}"}.join("\n")}${workflow.manifest.doi ? "\n" : ""} * The nf-core framework https://doi.org/10.1038/s41587-020-0439-x @@ -101,7 +101,7 @@ workflow PIPELINE_INITIALISATION { // Create channel from input file provided through params.input // - Channel + channel .fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) .map { meta, fastq_1, fastq_2 -> diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index bfd25876..2f30e9a4 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -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())) } // diff --git a/workflows/spatialxe.nf b/workflows/spatialxe.nf index d6cfb66f..957483fd 100644 --- a/workflows/spatialxe.nf +++ b/workflows/spatialxe.nf @@ -22,8 +22,8 @@ workflow SPATIALXE { ch_samplesheet // channel: samplesheet read in from --input main: - ch_versions = Channel.empty() - ch_multiqc_files = Channel.empty() + ch_versions = channel.empty() + ch_multiqc_files = channel.empty() // // MODULE: Run FastQC // @@ -36,7 +36,25 @@ workflow SPATIALXE { // // 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')}" + } + + softwareVersionsToYAML(ch_versions.mix(topic_versions.versions_file)) + .mix(topic_versions_string) .collectFile( storeDir: "${params.outdir}/pipeline_info", name: 'nf_core_' + 'spatialxe_software_' + 'mqc_' + 'versions.yml', @@ -48,24 +66,24 @@ workflow SPATIALXE { // // MODULE: MultiQC // - ch_multiqc_config = Channel.fromPath( + ch_multiqc_config = channel.fromPath( "$projectDir/assets/multiqc_config.yml", checkIfExists: true) ch_multiqc_custom_config = params.multiqc_config ? - Channel.fromPath(params.multiqc_config, checkIfExists: true) : - Channel.empty() + channel.fromPath(params.multiqc_config, checkIfExists: true) : + channel.empty() ch_multiqc_logo = params.multiqc_logo ? - Channel.fromPath(params.multiqc_logo, checkIfExists: true) : - Channel.empty() + channel.fromPath(params.multiqc_logo, checkIfExists: true) : + channel.empty() summary_params = paramsSummaryMap( workflow, parameters_schema: "nextflow_schema.json") - ch_workflow_summary = Channel.value(paramsSummaryMultiqc(summary_params)) + ch_workflow_summary = channel.value(paramsSummaryMultiqc(summary_params)) ch_multiqc_files = ch_multiqc_files.mix( ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) ch_multiqc_custom_methods_description = params.multiqc_methods_description ? file(params.multiqc_methods_description, checkIfExists: true) : file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) - ch_methods_description = Channel.value( + ch_methods_description = channel.value( methodsDescriptionText(ch_multiqc_custom_methods_description)) ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) From 2ef69a3d3e47d4c1f684ae86f70f61624fb80a05 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Thu, 30 Apr 2026 13:33:31 +0000 Subject: [PATCH 2/4] Template update for nf-core/tools version 4.0.2 --- .devcontainer/devcontainer.json | 1 + .github/CONTRIBUTING.md | 125 -- .github/PULL_REQUEST_TEMPLATE.md | 4 +- .github/actions/get-shards/action.yml | 2 +- .github/actions/nf-test/action.yml | 10 +- .github/workflows/awsfulltest.yml | 25 +- .github/workflows/awstest.yml | 4 +- .github/workflows/branch.yml | 2 +- .github/workflows/clean-up.yml | 2 +- .github/workflows/download_pipeline.yml | 16 +- .github/workflows/fix_linting.yml | 22 +- .github/workflows/linting.yml | 34 +- .github/workflows/linting_comment.yml | 4 +- .github/workflows/nf-test.yml | 8 +- .github/workflows/release-announcements.yml | 4 +- .../workflows/template-version-comment.yml | 6 +- .gitignore | 1 + .nf-core.yml | 4 +- .pre-commit-config.yaml | 16 +- .prettierignore | 2 - CHANGELOG.md | 2 +- README.md | 12 +- assets/adaptivecard.json | 67 - assets/multiqc_config.yml | 4 +- assets/slackreport.json | 34 - conf/base.config | 2 +- conf/containers_conda_lock_files_amd64.config | 2 + conf/containers_conda_lock_files_arm64.config | 2 + conf/containers_docker_amd64.config | 2 + conf/containers_docker_arm64.config | 2 + .../containers_singularity_https_amd64.config | 2 + .../containers_singularity_https_arm64.config | 2 + conf/containers_singularity_oras_amd64.config | 2 + conf/containers_singularity_oras_arm64.config | 2 + docs/CONTRIBUTING.md | 185 ++ docs/usage.md | 8 +- main.nf | 7 +- modules.json | 8 +- .../linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt | 822 +++++++++ .../linux_arm64-bd-e455e32f745abe68_1.txt | 769 ++++++++ modules/nf-core/fastqc/main.nf | 43 +- modules/nf-core/fastqc/meta.yml | 51 +- modules/nf-core/fastqc/tests/main.nf.test | 12 +- .../nf-core/fastqc/tests/main.nf.test.snap | 228 ++- .../linux_amd64-bd-c1f4a7982b743963_1.txt | 1552 +++++++++++++++++ .../linux_amd64-bd-db7c73dae76bc9e6_1.txt | 126 ++ .../linux_arm64-bd-40bf3b435e89dc22_1.txt | 1502 ++++++++++++++++ .../linux_arm64-bd-d167b8012595a136_1.txt | 125 ++ modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 51 +- modules/nf-core/multiqc/meta.yml | 165 +- .../multiqc/tests/custom_prefix.config | 5 + modules/nf-core/multiqc/tests/main.nf.test | 191 +- .../nf-core/multiqc/tests/main.nf.test.snap | 435 ++++- modules/nf-core/multiqc/tests/nextflow.config | 1 + nextflow.config | 10 +- nextflow_schema.json | 8 - nf-test.config | 26 +- ro-crate-metadata.json | 44 +- .../utils_nfcore_spatialxe_pipeline/main.nf | 17 +- .../nf-core/utils_nfcore_pipeline/main.nf | 66 +- .../utils_nfcore_pipeline/tests/main.nf.test | 29 + .../tests/main.nf.test.snap | 19 + .../nf-core/utils_nfschema_plugin/main.nf | 3 +- .../tests/nextflow.config | 2 +- tests/default.nf.test | 14 +- tests/nextflow.config | 2 +- workflows/spatialxe.nf | 84 +- 68 files changed, 6294 insertions(+), 747 deletions(-) delete mode 100644 .github/CONTRIBUTING.md delete mode 100644 assets/adaptivecard.json delete mode 100644 assets/slackreport.json create mode 100644 conf/containers_conda_lock_files_amd64.config create mode 100644 conf/containers_conda_lock_files_arm64.config create mode 100644 conf/containers_docker_amd64.config create mode 100644 conf/containers_docker_arm64.config create mode 100644 conf/containers_singularity_https_amd64.config create mode 100644 conf/containers_singularity_https_arm64.config create mode 100644 conf/containers_singularity_oras_amd64.config create mode 100644 conf/containers_singularity_oras_arm64.config create mode 100644 docs/CONTRIBUTING.md create mode 100644 modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt create mode 100644 modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt create mode 100644 modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt create mode 100644 modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt create mode 100644 modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt create mode 100644 modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt create mode 100644 modules/nf-core/multiqc/tests/custom_prefix.config 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 diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 97c8c97f..237c9ed0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,4 +1,5 @@ { + "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.schema.json", "name": "nfcore", "image": "nfcore/devcontainer:latest", diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index 6264525d..00000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,125 +0,0 @@ -# `nf-core/spatialxe`: Contributing Guidelines - -Hi there! -Many thanks for taking an interest in improving nf-core/spatialxe. - -We try to manage the required tasks for nf-core/spatialxe 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 ;) - -> [!NOTE] -> If you need help using or modifying nf-core/spatialxe then the best place to ask is on the nf-core Slack [#spatialxe](https://nfcore.slack.com/channels/spatialxe) channel ([join our Slack here](https://nf-co.re/join/slack)). - -## Contribution workflow - -If you'd like to write some code for nf-core/spatialxe, the standard workflow is as follows: - -1. Check that there isn't already an issue about your idea in the [nf-core/spatialxe issues](https://github.com/nf-core/spatialxe/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 [nf-core/spatialxe repository](https://github.com/nf-core/spatialxe) 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. - -## Getting help - -For further information/help, please consult the [nf-core/spatialxe documentation](https://nf-co.re/spatialxe/usage) and don't hesitate to get in touch on the nf-core Slack [#spatialxe](https://nfcore.slack.com/channels/spatialxe) channel ([join our Slack here](https://nf-co.re/join/slack)). - -## Pipeline contribution conventions - -To make the `nf-core/spatialxe` 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. -9. Update MultiQC config `assets/multiqc_config.yml` so relevant suffixes, file name clean up and module plots are in the appropriate order. If applicable, add a [MultiQC](https://https://multiqc.info/) module. -10. Add a description of the output files and if relevant any appropriate images from the MultiQC report to `docs/output.md`. - -### 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/nf-core/spatialxe/codespaces) -- Tools installed - - nf-core - - Nextflow - -Devcontainer specs: - -- [DevContainer config](.devcontainer/devcontainer.json) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 22dd1e1c..6a378da4 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/nf-core/spatialxe/tree/master/.github/CONTRIBUTING.md) +Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/spatialxe/tree/master/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/nf-core/spatialxe/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/nf-core/spatialxe/tree/master/docs/CONTRIBUTING.md) - [ ] If necessary, also make a PR on the nf-core/spatialxe _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core pipelines lint`). - [ ] Ensure the test suite passes (`nextflow run . -profile 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 3b9724c7..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@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: 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,7 +48,7 @@ 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 diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index 78fdaf9d..5eb53aee 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -23,7 +23,7 @@ jobs: echo "revision=${{ (github.event_name == 'workflow_dispatch' || github.event_name == 'release') && github.sha || 'dev' }}" >> "$GITHUB_OUTPUT" - name: Launch workflow via Seqera Platform - uses: seqeralabs/action-tower-launch@v2 + uses: seqeralabs/action-tower-launch@51565b514bff1827cf34620de25d0055759f1fc9 # v2 # TODO nf-core: You can customise AWS full pipeline tests as required # Add full size test data (but still relatively small datasets for few samples) # on the `test_full.config` test runs with only one set of parameters @@ -33,14 +33,33 @@ jobs: compute_env: ${{ vars.TOWER_COMPUTE_ENV }} revision: ${{ steps.revision.outputs.revision }} workdir: s3://${{ vars.AWS_S3_BUCKET }}/work/spatialxe/work-${{ steps.revision.outputs.revision }} + nextflow_config: | + plugins { + id 'nf-slack@0.5.0' + } + slack { + enabled = true + bot { + token = '${{ secrets.NFSLACK_BOT_TOKEN }}' + channel = 'spatialxe' + } + onStart { + enabled = false + } + onComplete { + message = ':white_check_mark: *spatialxe/test_full* completed successfully! :tada:' + } + onError { + message = ':x: *spatialxe/test_full* failed :crying_cat_face:' + } + } parameters: | { - "hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}", "outdir": "s3://${{ vars.AWS_S3_BUCKET }}/spatialxe/results-${{ steps.revision.outputs.revision }}" } profiles: test_full - - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: Seqera Platform debug log file path: | diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml index 47dfba52..632a6a5e 100644 --- a/.github/workflows/awstest.yml +++ b/.github/workflows/awstest.yml @@ -12,7 +12,7 @@ jobs: steps: # Launch workflow using Seqera Platform CLI tool action - name: Launch workflow via Seqera Platform - uses: seqeralabs/action-tower-launch@v2 + uses: seqeralabs/action-tower-launch@51565b514bff1827cf34620de25d0055759f1fc9 # v2 with: workspace_id: ${{ vars.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} @@ -25,7 +25,7 @@ jobs: } profiles: test - - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 + - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: Seqera Platform debug log file path: | diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index 4f79e0f9..873c6700 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 6adb0fff..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@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10 + - 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 45884ff9..a7bf4fc2 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -38,13 +38,16 @@ 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@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: python-version: "3.14" architecture: "x64" @@ -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 + 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@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 + 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 8394ba2f..e9c90ca8 100644 --- a/.github/workflows/fix_linting.yml +++ b/.github/workflows/fix_linting.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: # Use the @nf-core-bot token to check out so we can push later - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: token: ${{ secrets.nf_core_bot_auth_token }} @@ -31,22 +31,18 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }} - # Install and run pre-commit - - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 - with: - python-version: "3.14" - - - 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' + if: steps.prek.outcome == 'success' uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5 with: comment-id: ${{ github.event.comment.id }} @@ -54,7 +50,7 @@ jobs: - 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" diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 7a527a34..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@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - - name: Set up Python 3.14 - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 - with: - python-version: "3.14" - - - 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@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 + 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@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 + - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 with: 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@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 + 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 e6e9bc26..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@773744901bac0e8cbb5a0dc842800d45e9b2b405 # 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 c98d76ec..efd72d65 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.3" + NFT_VER: "0.9.4" NFT_WORKDIR: "~" NXF_ANSI_LOG: false NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/.singularity @@ -40,7 +40,7 @@ jobs: rm -rf ./* || true rm -rf ./.??* || true ls -la ./ - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: fetch-depth: 0 @@ -78,14 +78,14 @@ jobs: - isMain: false profile: "singularity" NXF_VER: - - "25.04.0" + - "25.10.4" - "latest-everything" env: NXF_ANSI_LOG: false TOTAL_SHARDS: ${{ needs.nf-test-changes.outputs.total_shards }} steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 with: fetch-depth: 0 diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml index 431d3d44..78d5dbe0 100644 --- a/.github/workflows/release-announcements.yml +++ b/.github/workflows/release-announcements.yml @@ -18,7 +18,7 @@ jobs: id: get_description run: | echo "description=$(curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .description')" >> $GITHUB_OUTPUT - - uses: rzr/fediverse-action@master + - uses: rzr/fediverse-action@563159eb8d45f70ab6aaba36ed55cd037e51f441 # master with: access-token: ${{ secrets.MASTODON_ACCESS_TOKEN }} host: "mstdn.science" # custom host if not "mastodon.social" (default) @@ -34,7 +34,7 @@ jobs: bsky-post: runs-on: ubuntu-latest steps: - - uses: zentered/bluesky-post-action@6461056ea355ea43b977e149f7bf76aaa572e5e8 # v0.3.0 + - uses: zentered/bluesky-post-action@5a91cc2ad10a304a4e96c16182dbe4918710bcf6 # v0.4.0 with: post: | Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}! diff --git a/.github/workflows/template-version-comment.yml b/.github/workflows/template-version-comment.yml index e8560fc7..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@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 + 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/.nf-core.yml b/.nf-core.yml index 79809cf6..ae563bd5 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -8,7 +8,7 @@ lint: - docs/images/nf-core-spatialxe_logo_dark.png - docs/images/nf-core-spatialxe_logo_light.png - .github/PULL_REQUEST_TEMPLATE.md -nf_core_version: 3.5.1 +nf_core_version: 4.0.2 repository_type: pipeline template: author: Sameesh Kher, Florian Heyl @@ -18,4 +18,4 @@ template: name: spatialxe org: nf-core outdir: . - version: 1.0dev + version: 1.0.0 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d06777a8..f51e1a28 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ repos: hooks: - id: prettier additional_dependencies: - - prettier@3.6.2 + - prettier@3.8.3 - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: @@ -13,15 +13,21 @@ repos: 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 dd749d43..63cde500 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,4 @@ email_template.html -adaptivecard.json -slackreport.json .nextflow* work/ data/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 86cab63a..9f0d1258 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). -## v1.0dev - [date] +## v1.0.0 - [date] Initial release of nf-core/spatialxe, created with the [nf-core](https://nf-co.re/) template. diff --git a/README.md b/README.md index 09cb2108..f3f2cbde 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ [![GitHub Actions Linting Status](https://github.com/nf-core/spatialxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialxe/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/spatialxe/results)[![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%A525.04.0-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.5.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.5.1) +[![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/) @@ -30,13 +30,13 @@ --> + workflows use the "tube map" design for that. See https://nf-co.re/docs/community/brand/workflow-schematics#examples for examples. --> 1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) ## 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 10742d8b..9050ce93 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -76,7 +76,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: @@ -173,19 +173,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 a44ae785..0ed1167a 100644 --- a/main.nf +++ b/main.nf @@ -51,7 +51,11 @@ workflow NFCORE_SPATIALXE { // WORKFLOW: Run pipeline // SPATIALXE ( - samplesheet + samplesheet, + params.multiqc_config, + params.multiqc_logo, + params.multiqc_methods_description, + params.outdir, ) emit: multiqc_report = SPATIALXE.out.multiqc_report // channel: /path/to/multiqc_report.html @@ -95,7 +99,6 @@ workflow { params.plaintext_email, params.outdir, params.monochrome_logs, - params.hook_url, NFCORE_SPATIALXE.out.multiqc_report ) } diff --git a/modules.json b/modules.json index f5682e24..09082eaf 100644 --- a/modules.json +++ b/modules.json @@ -7,12 +7,12 @@ "nf-core": { "fastqc": { "branch": "master", - "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", + "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", "installed_by": ["modules"] }, "multiqc": { "branch": "master", - "git_sha": "af27af1be706e6a2bb8fe454175b0cdf77f47b49", + "git_sha": "008f9d3e61209bf995edac3ba531f54e269e1215", "installed_by": ["modules"] } } @@ -26,12 +26,12 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "271e7fc14eb1320364416d996fb077421f3faed2", + "git_sha": "a3fb7351b1fdb2b1de282b765816bbea190e86a8", "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { "branch": "master", - "git_sha": "4b406a74dc0449c0401ed87d5bfff4252fd277fd", + "git_sha": "fdc08b8b1ae74f56686ce21f7ea11ad11990ce57", "installed_by": ["subworkflows"] } } diff --git a/modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt b/modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt new file mode 100644 index 00000000..7770ccd5 --- /dev/null +++ b/modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt @@ -0,0 +1,822 @@ + +version: 6 +environments: +default: +channels: +- url: https://conda.anaconda.org/conda-forge/ +- url: https://conda.anaconda.org/bioconda/ +- url: https://conda.anaconda.org/bioconda/ +options: +pypi-prerelease-mode: if-necessary-or-explicit +packages: +linux-64: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda +- conda: https://conda.anaconda.org/bioconda/noarch/fastqc-0.12.1-hdfd78af_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-13.2.1-h6083320_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjdk-25.0.2-ha668962_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda +build_number: 20 +sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 +md5: a9f577daf3de00bca7c3c76c0ecbd1de +depends: +- __glibc >=2.17,<3.0.a0 +- libgomp >=7.5.0 +constrains: +- openmp_impl <0.0a0 +license: BSD-3-Clause +license_family: BSD +size: 28948 +timestamp: 1770939786096 +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda +sha256: d88aa7ae766cf584e180996e92fef2aa7d8e0a0a5ab1d4d49c32390c1b5fff31 +md5: dcdc58c15961dbf17a0621312b01f5cb +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: LGPL-2.1-or-later +license_family: GPL +size: 584660 +timestamp: 1768327524772 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda +sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 +md5: d2ffd7602c02f2b316fd921d39876885 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: bzip2-1.0.6 +license_family: BSD +size: 260182 +timestamp: 1771350215188 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda +sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc +md5: 4492fd26db29495f0ba23f146cd5638d +depends: +- __unix +license: ISC +size: 147413 +timestamp: 1772006283803 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda +sha256: 06525fa0c4e4f56e771a3b986d0fdf0f0fc5a3270830ee47e127a5105bde1b9a +md5: bb6c4808bfa69d6f7f6b07e5846ced37 +depends: +- __glibc >=2.17,<3.0.a0 +- fontconfig >=2.15.0,<3.0a0 +- fonts-conda-ecosystem +- icu >=78.1,<79.0a0 +- libexpat >=2.7.3,<3.0a0 +- libfreetype >=2.14.1 +- libfreetype6 >=2.14.1 +- libgcc >=14 +- libglib >=2.86.3,<3.0a0 +- libpng >=1.6.53,<1.7.0a0 +- libstdcxx >=14 +- libxcb >=1.17.0,<2.0a0 +- libzlib >=1.3.1,<2.0a0 +- pixman >=0.46.4,<1.0a0 +- xorg-libice >=1.1.2,<2.0a0 +- xorg-libsm >=1.2.6,<2.0a0 +- xorg-libx11 >=1.8.12,<2.0a0 +- xorg-libxext >=1.3.6,<2.0a0 +- xorg-libxrender >=0.9.12,<0.10.0a0 +license: LGPL-2.1-only or MPL-1.1 +size: 989514 +timestamp: 1766415934926 +- conda: https://conda.anaconda.org/bioconda/noarch/fastqc-0.12.1-hdfd78af_0.tar.bz2 +sha256: 7cc26225d590540ae95cd24940ff42f2da7479dd4cd22ae9ab9298665d06790c +md5: c9f6a4b12229f7331f79c9a00dd6e240 +depends: +- font-ttf-dejavu-sans-mono +- fontconfig +- openjdk >=8.0.144 +- perl +license: GPL >=3 +size: 11664291 +timestamp: 1677946722445 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b +md5: 0c96522c6bdaed4b1566d11387caaf45 +license: BSD-3-Clause +license_family: BSD +size: 397370 +timestamp: 1566932522327 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c +md5: 34893075a5c9e55cdafac56607368fc6 +license: OFL-1.1 +license_family: Other +size: 96530 +timestamp: 1620479909603 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 +md5: 4d59c254e01d9cde7957100457e2d5fb +license: OFL-1.1 +license_family: Other +size: 700814 +timestamp: 1620479612257 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 +md5: 49023d73832ef61042f6a237cb2687e7 +license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 +license_family: Other +size: 1620504 +timestamp: 1727511233259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda +sha256: aa4a44dba97151221100a637c7f4bde619567afade9c0265f8e1c8eed8d7bd8c +md5: 867127763fbe935bab59815b6e0b7b5c +depends: +- __glibc >=2.17,<3.0.a0 +- libexpat >=2.7.4,<3.0a0 +- libfreetype >=2.14.1 +- libfreetype6 >=2.14.1 +- libgcc >=14 +- libuuid >=2.41.3,<3.0a0 +- libzlib >=1.3.1,<2.0a0 +license: MIT +license_family: MIT +size: 270705 +timestamp: 1771382710863 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 +sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 +md5: fee5683a3f04bd15cbd8318b096a27ab +depends: +- fonts-conda-forge +license: BSD-3-Clause +license_family: BSD +size: 3667 +timestamp: 1566974674465 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda +sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 +md5: a7970cd949a077b7cb9696379d338681 +depends: +- font-ttf-ubuntu +- font-ttf-inconsolata +- font-ttf-dejavu-sans-mono +- font-ttf-source-code-pro +license: BSD-3-Clause +license_family: BSD +size: 4059 +timestamp: 1762351264405 +- conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda +sha256: aac402a8298f0c0cc528664249170372ef6b37ac39fdc92b40601a6aed1e32ff +md5: 3bf7b9fd5a7136126e0234db4b87c8b6 +depends: +- libgcc-ng >=12 +license: MIT +license_family: MIT +size: 77248 +timestamp: 1712692454246 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda +sha256: 25ba37da5c39697a77fce2c9a15e48cf0a84f1464ad2aafbe53d8357a9f6cc8c +md5: 2cd94587f3a401ae05e03a6caf09539d +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libstdcxx >=14 +license: LGPL-2.0-or-later +license_family: LGPL +size: 99596 +timestamp: 1755102025473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-13.2.1-h6083320_0.conda +sha256: 477f2c553f72165020d3c56740ba354be916c2f0b76fd9f535e83d698277d5ec +md5: 14470902326beee192e33719a2e8bb7f +depends: +- __glibc >=2.17,<3.0.a0 +- cairo >=1.18.4,<2.0a0 +- graphite2 >=1.3.14,<2.0a0 +- icu >=78.3,<79.0a0 +- libexpat >=2.7.4,<3.0a0 +- libfreetype >=2.14.2 +- libfreetype6 >=2.14.2 +- libgcc >=14 +- libglib >=2.86.4,<3.0a0 +- libstdcxx >=14 +- libzlib >=1.3.2,<2.0a0 +license: MIT +license_family: MIT +size: 2384060 +timestamp: 1774276284520 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda +sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a +md5: c80d8a3b84358cb967fa81e7075fbc8a +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libstdcxx >=14 +license: MIT +license_family: MIT +size: 12723451 +timestamp: 1773822285671 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda +sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 +md5: b38117a3c920364aff79f870c984b4a3 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +license: LGPL-2.1-or-later +size: 134088 +timestamp: 1754905959823 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda +sha256: 3e307628ca3527448dd1cb14ad7bb9d04d1d28c7d4c5f97ba196ae984571dd25 +md5: fb53fb07ce46a575c5d004bbc96032c2 +depends: +- __glibc >=2.17,<3.0.a0 +- keyutils >=1.6.3,<2.0a0 +- libedit >=3.1.20250104,<3.2.0a0 +- libedit >=3.1.20250104,<4.0a0 +- libgcc >=14 +- libstdcxx >=14 +- openssl >=3.5.5,<4.0a0 +license: MIT +license_family: MIT +size: 1386730 +timestamp: 1769769569681 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda +sha256: 836ec4b895352110335b9fdcfa83a8dcdbe6c5fb7c06c4929130600caea91c0a +md5: 6f2e2c8f58160147c4d1c6f4c14cbac4 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libjpeg-turbo >=3.1.2,<4.0a0 +- libtiff >=4.7.1,<4.8.0a0 +license: MIT +license_family: MIT +size: 249959 +timestamp: 1768184673131 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda +sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1 +md5: a752488c68f2e7c456bcbd8f16eec275 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libstdcxx >=14 +license: Apache-2.0 +license_family: Apache +size: 261513 +timestamp: 1773113328888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda +sha256: 205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c +md5: 49c553b47ff679a6a1e9fc80b9c5a2d4 +depends: +- __glibc >=2.17,<3.0.a0 +- krb5 >=1.22.2,<1.23.0a0 +- libgcc >=14 +- libstdcxx >=14 +- libzlib >=1.3.1,<2.0a0 +license: Apache-2.0 +license_family: Apache +size: 4518030 +timestamp: 1770902209173 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda +sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 +md5: 6c77a605a7a689d17d4819c0f8ac9a00 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: MIT +license_family: MIT +size: 73490 +timestamp: 1761979956660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda +sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 +md5: c277e0a4d549b03ac1e9d6cbbe3d017b +depends: +- ncurses +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +- ncurses >=6.5,<7.0a0 +license: BSD-2-Clause +license_family: BSD +size: 134676 +timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda +sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5 +md5: e7f7ce06ec24cfcfb9e36d28cf82ba57 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +constrains: +- expat 2.7.4.* +license: MIT +license_family: MIT +size: 76798 +timestamp: 1771259418166 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda +sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 +md5: a360c33a5abe61c07959e449fa1453eb +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: MIT +license_family: MIT +size: 58592 +timestamp: 1769456073053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda +sha256: 38f014a7129e644636e46064ecd6b1945e729c2140e21d75bb476af39e692db2 +md5: e289f3d17880e44b633ba911d57a321b +depends: +- libfreetype6 >=2.14.3 +license: GPL-2.0-only OR FTL +size: 8049 +timestamp: 1774298163029 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda +sha256: 16f020f96da79db1863fcdd8f2b8f4f7d52f177dd4c58601e38e9182e91adf1d +md5: fb16b4b69e3f1dcfe79d80db8fd0c55d +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libpng >=1.6.55,<1.7.0a0 +- libzlib >=1.3.2,<2.0a0 +constrains: +- freetype >=2.14.3 +license: GPL-2.0-only OR FTL +size: 384575 +timestamp: 1774298162622 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda +sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 +md5: 0aa00f03f9e39fb9876085dee11a85d4 +depends: +- __glibc >=2.17,<3.0.a0 +- _openmp_mutex >=4.5 +constrains: +- libgcc-ng ==15.2.0=*_18 +- libgomp 15.2.0 he0feb66_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 1041788 +timestamp: 1771378212382 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda +sha256: e318a711400f536c81123e753d4c797a821021fb38970cebfb3f454126016893 +md5: d5e96b1ed75ca01906b3d2469b4ce493 +depends: +- libgcc 15.2.0 he0feb66_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 27526 +timestamp: 1771378224552 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda +sha256: a27e44168a1240b15659888ce0d9b938ed4bdb49e9ea68a7c1ff27bcea8b55ce +md5: bb26456332b07f68bf3b7622ed71c0da +depends: +- __glibc >=2.17,<3.0.a0 +- libffi >=3.5.2,<3.6.0a0 +- libgcc >=14 +- libiconv >=1.18,<2.0a0 +- libzlib >=1.3.1,<2.0a0 +- pcre2 >=10.47,<10.48.0a0 +constrains: +- glib 2.86.4 *_1 +license: LGPL-2.1-or-later +size: 4398701 +timestamp: 1771863239578 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda +sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 +md5: 239c5e9546c38a1e884d69effcf4c882 +depends: +- __glibc >=2.17,<3.0.a0 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 603262 +timestamp: 1771378117851 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda +sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f +md5: 915f5995e94f60e9a4826e0b0920ee88 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: LGPL-2.1-only +size: 790176 +timestamp: 1754908768807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda +sha256: cc9aba923eea0af8e30e0f94f2ad7156e2984d80d1e8e7fe6be5a1f257f0eb32 +md5: 8397539e3a0bbd1695584fb4f927485a +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +constrains: +- jpeg <0.0.0a +license: IJG AND BSD-3-Clause AND Zlib +size: 633710 +timestamp: 1762094827865 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda +sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb +md5: c7c83eecbb72d88b940c249af56c8b17 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +constrains: +- xz 5.8.2.* +license: 0BSD +size: 113207 +timestamp: 1768752626120 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda +sha256: 36ade759122cdf0f16e2a2562a19746d96cf9c863ffaa812f2f5071ebbe9c03c +md5: 5f13ffc7d30ffec87864e678df9957b4 +depends: +- libgcc >=14 +- __glibc >=2.17,<3.0.a0 +- libzlib >=1.3.1,<2.0a0 +license: zlib-acknowledgement +size: 317669 +timestamp: 1770691470744 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda +sha256: 78668020064fdaa27e9ab65cd2997e2c837b564ab26ce3bf0e58a2ce1a525c6e +md5: 1b08cd684f34175e4514474793d44bcb +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc 15.2.0 he0feb66_18 +constrains: +- libstdcxx-ng ==15.2.0=*_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 5852330 +timestamp: 1771378262446 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda +sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0 +md5: cd5a90476766d53e901500df9215e927 +depends: +- __glibc >=2.17,<3.0.a0 +- lerc >=4.0.0,<5.0a0 +- libdeflate >=1.25,<1.26.0a0 +- libgcc >=14 +- libjpeg-turbo >=3.1.0,<4.0a0 +- liblzma >=5.8.1,<6.0a0 +- libstdcxx >=14 +- libwebp-base >=1.6.0,<2.0a0 +- libzlib >=1.3.1,<2.0a0 +- zstd >=1.5.7,<1.6.0a0 +license: HPND +size: 435273 +timestamp: 1762022005702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda +sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee +md5: db409b7c1720428638e7c0d509d3e1b5 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: BSD-3-Clause +license_family: BSD +size: 40311 +timestamp: 1766271528534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda +sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b +md5: aea31d2e5b1091feca96fcfe945c3cf9 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +constrains: +- libwebp 1.6.0 +license: BSD-3-Clause +license_family: BSD +size: 429011 +timestamp: 1752159441324 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda +sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa +md5: 92ed62436b625154323d40d5f2f11dd7 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +- pthread-stubs +- xorg-libxau >=1.0.11,<2.0a0 +- xorg-libxdmcp +license: MIT +license_family: MIT +size: 395888 +timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda +sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c +md5: 5aa797f8787fe7a17d1b0821485b5adc +depends: +- libgcc-ng >=12 +license: LGPL-2.1-or-later +size: 100393 +timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda +sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 +md5: d87ff7921124eccd67248aa483c23fec +depends: +- __glibc >=2.17,<3.0.a0 +constrains: +- zlib 1.3.2 *_2 +license: Zlib +license_family: Other +size: 63629 +timestamp: 1774072609062 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda +sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 +md5: 47e340acb35de30501a76c7c799c41d7 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +license: X11 AND BSD-3-Clause +size: 891641 +timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjdk-25.0.2-ha668962_0.conda +sha256: 3825a4c84676a8a5cc23b397a2911e4efa4a805daf2af764153bd904e142ec41 +md5: a41092b0177362dbe5eb2a18501e86c0 +depends: +- xorg-libx11 +- xorg-libxext +- xorg-libxi +- xorg-libxrender +- xorg-libxtst +- libstdcxx >=14 +- libgcc >=14 +- __glibc >=2.17,<3.0.a0 +- libfreetype >=2.14.1 +- libfreetype6 >=2.14.1 +- xorg-libxrender >=0.9.12,<0.10.0a0 +- libjpeg-turbo >=3.1.2,<4.0a0 +- giflib >=5.2.2,<5.3.0a0 +- xorg-libxrandr >=1.5.5,<2.0a0 +- harfbuzz >=12.3.2 +- fontconfig >=2.17.1,<3.0a0 +- fonts-conda-ecosystem +- xorg-libxtst >=1.2.5,<2.0a0 +- xorg-libxi >=1.8.2,<2.0a0 +- lcms2 >=2.18,<3.0a0 +- alsa-lib >=1.2.15.3,<1.3.0a0 +- libpng >=1.6.55,<1.7.0a0 +- xorg-libxt >=1.3.1,<2.0a0 +- libzlib >=1.3.1,<2.0a0 +- xorg-libxext >=1.3.7,<2.0a0 +- xorg-libx11 >=1.8.13,<2.0a0 +- libcups >=2.3.3,<2.4.0a0 +license: GPL-2.0-or-later WITH Classpath-exception-2.0 +license_family: GPL +size: 122465031 +timestamp: 1771443671180 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda +sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c +md5: f61eb8cd60ff9057122a3d338b99c00f +depends: +- __glibc >=2.17,<3.0.a0 +- ca-certificates +- libgcc >=14 +license: Apache-2.0 +license_family: Apache +size: 3164551 +timestamp: 1769555830639 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda +sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff +md5: 7a3bff861a6583f1889021facefc08b1 +depends: +- __glibc >=2.17,<3.0.a0 +- bzip2 >=1.0.8,<2.0a0 +- libgcc >=14 +- libzlib >=1.3.1,<2.0a0 +license: BSD-3-Clause +license_family: BSD +size: 1222481 +timestamp: 1763655398280 +- conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda +build_number: 7 +sha256: 9ec32b6936b0e37bcb0ed34f22ec3116e75b3c0964f9f50ecea5f58734ed6ce9 +md5: f2cfec9406850991f4e3d960cc9e3321 +depends: +- libgcc-ng >=12 +- libxcrypt >=4.4.36 +license: GPL-1.0-or-later OR Artistic-1.0-Perl +size: 13344463 +timestamp: 1703310653947 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda +sha256: 43d37bc9ca3b257c5dd7bf76a8426addbdec381f6786ff441dc90b1a49143b6a +md5: c01af13bdc553d1a8fbfff6e8db075f0 +depends: +- libgcc >=14 +- libstdcxx >=14 +- libgcc >=14 +- __glibc >=2.17,<3.0.a0 +license: MIT +license_family: MIT +size: 450960 +timestamp: 1754665235234 +- conda: https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda +sha256: 4ce2e1ee31a6217998f78c31ce7dc0a3e0557d9238b51d49dd20c52d467a126d +md5: f2c23a77b25efcad57d377b34bd84941 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- ncurses >=6.5,<7.0a0 +license: GPL-2.0-or-later AND LGPL-2.0-or-later +license_family: GPL +size: 593603 +timestamp: 1769710381284 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda +sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 +md5: b3c17d95b5a10c6e64a21fa17573e70e +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +license: MIT +license_family: MIT +size: 8252 +timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda +sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b +md5: fb901ff28063514abb6046c9ec2c4a45 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +license: MIT +license_family: MIT +size: 58628 +timestamp: 1734227592886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda +sha256: 277841c43a39f738927145930ff963c5ce4c4dacf66637a3d95d802a64173250 +md5: 1c74ff8c35dcadf952a16f752ca5aa49 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +- libuuid >=2.38.1,<3.0a0 +- xorg-libice >=1.1.2,<2.0a0 +license: MIT +license_family: MIT +size: 27590 +timestamp: 1741896361728 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda +sha256: 516d4060139dbb4de49a4dcdc6317a9353fb39ebd47789c14e6fe52de0deee42 +md5: 861fb6ccbc677bb9a9fb2468430b9c6a +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libxcb >=1.17.0,<2.0a0 +license: MIT +license_family: MIT +size: 839652 +timestamp: 1770819209719 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda +sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b +md5: b2895afaf55bf96a8c8282a2e47a5de0 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: MIT +license_family: MIT +size: 15321 +timestamp: 1762976464266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda +sha256: 25d255fb2eef929d21ff660a0c687d38a6d2ccfbcbf0cc6aa738b12af6e9d142 +md5: 1dafce8548e38671bea82e3f5c6ce22f +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: MIT +license_family: MIT +size: 20591 +timestamp: 1762976546182 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda +sha256: 79c60fc6acfd3d713d6340d3b4e296836a0f8c51602327b32794625826bd052f +md5: 34e54f03dfea3e7a2dcf1453a85f1085 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- xorg-libx11 >=1.8.12,<2.0a0 +license: MIT +license_family: MIT +size: 50326 +timestamp: 1769445253162 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda +sha256: 83c4c99d60b8784a611351220452a0a85b080668188dce5dfa394b723d7b64f4 +md5: ba231da7fccf9ea1e768caf5c7099b84 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- xorg-libx11 >=1.8.12,<2.0a0 +license: MIT +license_family: MIT +size: 20071 +timestamp: 1759282564045 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda +sha256: 1a724b47d98d7880f26da40e45f01728e7638e6ec69f35a3e11f92acd05f9e7a +md5: 17dcc85db3c7886650b8908b183d6876 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +- xorg-libx11 >=1.8.10,<2.0a0 +- xorg-libxext >=1.3.6,<2.0a0 +- xorg-libxfixes >=6.0.1,<7.0a0 +license: MIT +license_family: MIT +size: 47179 +timestamp: 1727799254088 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda +sha256: 80ed047a5cb30632c3dc5804c7716131d767089f65877813d4ae855ee5c9d343 +md5: e192019153591938acf7322b6459d36e +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- xorg-libx11 >=1.8.12,<2.0a0 +- xorg-libxext >=1.3.6,<2.0a0 +- xorg-libxrender >=0.9.12,<0.10.0a0 +license: MIT +license_family: MIT +size: 30456 +timestamp: 1769445263457 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda +sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 +md5: 96d57aba173e878a2089d5638016dc5e +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +- xorg-libx11 >=1.8.10,<2.0a0 +license: MIT +license_family: MIT +size: 33005 +timestamp: 1734229037766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda +sha256: a8afba4a55b7b530eb5c8ad89737d60d60bc151a03fbef7a2182461256953f0e +md5: 279b0de5f6ba95457190a1c459a64e31 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +- xorg-libice >=1.1.1,<2.0a0 +- xorg-libsm >=1.2.4,<2.0a0 +- xorg-libx11 >=1.8.10,<2.0a0 +license: MIT +license_family: MIT +size: 379686 +timestamp: 1731860547604 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda +sha256: 752fdaac5d58ed863bbf685bb6f98092fe1a488ea8ebb7ed7b606ccfce08637a +md5: 7bbe9a0cc0df0ac5f5a8ad6d6a11af2f +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +- xorg-libx11 >=1.8.10,<2.0a0 +- xorg-libxext >=1.3.6,<2.0a0 +- xorg-libxi >=1.7.10,<2.0a0 +license: MIT +license_family: MIT +size: 32808 +timestamp: 1727964811275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda +sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 +md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 +depends: +- __glibc >=2.17,<3.0.a0 +- libzlib >=1.3.1,<2.0a0 +license: BSD-3-Clause +license_family: BSD +size: 601375 +timestamp: 1764777111296 diff --git a/modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt b/modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt new file mode 100644 index 00000000..cdc434ca --- /dev/null +++ b/modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt @@ -0,0 +1,769 @@ + +version: 6 +environments: +default: +channels: +- url: https://conda.anaconda.org/conda-forge/ +- url: https://conda.anaconda.org/bioconda/ +- url: https://conda.anaconda.org/bioconda/ +options: +pypi-prerelease-mode: if-necessary-or-explicit +packages: +linux-aarch64: +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.15.3-he30d5cf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h0b6afd8_1.conda +- conda: https://conda.anaconda.org/bioconda/noarch/fastqc-0.12.1-hdfd78af_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.14-hfae3067_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-13.2.1-h1134a53_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.86.4-hf53f6bf_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.55-h1abf092_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjdk-25.0.2-h488f50d_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.47-hf841c20_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/perl-5.32.1-7_h31becfc_perl5.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.6-h0808dbd_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.13-h63a1b12_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.7-he30d5cf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.2-he30d5cf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxi-1.8.2-h57736b2_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrandr-1.5.5-he30d5cf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxt-1.3.1-h57736b2_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxtst-1.2.5-h57736b2_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda +build_number: 20 +sha256: a2527b1d81792a0ccd2c05850960df119c2b6d8f5fdec97f2db7d25dc23b1068 +md5: 468fd3bb9e1f671d36c2cbc677e56f1d +depends: +- libgomp >=7.5.0 +constrains: +- openmp_impl <0.0a0 +license: BSD-3-Clause +license_family: BSD +size: 28926 +timestamp: 1770939656741 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.15.3-he30d5cf_0.conda +sha256: ea2233e2db9908c2e5f29d3ca420a546b4583253f4f70abb5494cdd676866d42 +md5: 4a98cbc4ade694520227402ff8880630 +depends: +- libgcc >=14 +license: LGPL-2.1-or-later +license_family: GPL +size: 615729 +timestamp: 1768327548407 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda +sha256: b3495077889dde6bb370938e7db82be545c73e8589696ad0843a32221520ad4c +md5: 840d8fc0d7b3209be93080bc20e07f2d +depends: +- libgcc >=14 +license: bzip2-1.0.6 +license_family: BSD +size: 192412 +timestamp: 1771350241232 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda +sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc +md5: 4492fd26db29495f0ba23f146cd5638d +depends: +- __unix +license: ISC +size: 147413 +timestamp: 1772006283803 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h0b6afd8_1.conda +sha256: 675db823f3d6fb6bf747fab3b0170ba99b269a07cf6df1e49fff2f9972be9cd1 +md5: 043c13ed3a18396994be9b4fab6572ad +depends: +- fontconfig >=2.15.0,<3.0a0 +- fonts-conda-ecosystem +- icu >=78.1,<79.0a0 +- libexpat >=2.7.3,<3.0a0 +- libfreetype >=2.14.1 +- libfreetype6 >=2.14.1 +- libgcc >=14 +- libglib >=2.86.3,<3.0a0 +- libpng >=1.6.53,<1.7.0a0 +- libstdcxx >=14 +- libxcb >=1.17.0,<2.0a0 +- libzlib >=1.3.1,<2.0a0 +- pixman >=0.46.4,<1.0a0 +- xorg-libice >=1.1.2,<2.0a0 +- xorg-libsm >=1.2.6,<2.0a0 +- xorg-libx11 >=1.8.12,<2.0a0 +- xorg-libxext >=1.3.6,<2.0a0 +- xorg-libxrender >=0.9.12,<0.10.0a0 +license: LGPL-2.1-only or MPL-1.1 +size: 927045 +timestamp: 1766416003626 +- conda: https://conda.anaconda.org/bioconda/noarch/fastqc-0.12.1-hdfd78af_0.tar.bz2 +sha256: 7cc26225d590540ae95cd24940ff42f2da7479dd4cd22ae9ab9298665d06790c +md5: c9f6a4b12229f7331f79c9a00dd6e240 +depends: +- font-ttf-dejavu-sans-mono +- fontconfig +- openjdk >=8.0.144 +- perl +license: GPL >=3 +size: 11664291 +timestamp: 1677946722445 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b +md5: 0c96522c6bdaed4b1566d11387caaf45 +license: BSD-3-Clause +license_family: BSD +size: 397370 +timestamp: 1566932522327 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c +md5: 34893075a5c9e55cdafac56607368fc6 +license: OFL-1.1 +license_family: Other +size: 96530 +timestamp: 1620479909603 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 +md5: 4d59c254e01d9cde7957100457e2d5fb +license: OFL-1.1 +license_family: Other +size: 700814 +timestamp: 1620479612257 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 +md5: 49023d73832ef61042f6a237cb2687e7 +license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 +license_family: Other +size: 1620504 +timestamp: 1727511233259 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda +sha256: 835aff8615dd8d8fff377679710ce81b8a2c47b6404e21a92fb349fda193a15c +md5: 0fed1ff55f4938a65907f3ecf62609db +depends: +- libexpat >=2.7.4,<3.0a0 +- libfreetype >=2.14.1 +- libfreetype6 >=2.14.1 +- libgcc >=14 +- libuuid >=2.41.3,<3.0a0 +- libzlib >=1.3.1,<2.0a0 +license: MIT +license_family: MIT +size: 279044 +timestamp: 1771382728182 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 +sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 +md5: fee5683a3f04bd15cbd8318b096a27ab +depends: +- fonts-conda-forge +license: BSD-3-Clause +license_family: BSD +size: 3667 +timestamp: 1566974674465 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda +sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 +md5: a7970cd949a077b7cb9696379d338681 +depends: +- font-ttf-ubuntu +- font-ttf-inconsolata +- font-ttf-dejavu-sans-mono +- font-ttf-source-code-pro +license: BSD-3-Clause +license_family: BSD +size: 4059 +timestamp: 1762351264405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda +sha256: a79dc3bd54c4fb1f249942ee2d5b601a76ecf9614774a4cff9af49adfa458db2 +md5: 2f809afaf0ba1ea4135dce158169efac +depends: +- libgcc-ng >=12 +license: MIT +license_family: MIT +size: 82124 +timestamp: 1712692444545 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.14-hfae3067_2.conda +sha256: c9b1781fe329e0b77c5addd741e58600f50bef39321cae75eba72f2f381374b7 +md5: 4aa540e9541cc9d6581ab23ff2043f13 +depends: +- libgcc >=14 +- libstdcxx >=14 +license: LGPL-2.0-or-later +license_family: LGPL +size: 102400 +timestamp: 1755102000043 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-13.2.1-h1134a53_0.conda +sha256: e22f485fddaaea3ff4b6cae98e0197b9dccd2ed2770337ad6ff38a92afe04e59 +md5: 05d65a2cf410adc331c9ea61f59f1013 +depends: +- cairo >=1.18.4,<2.0a0 +- graphite2 >=1.3.14,<2.0a0 +- icu >=78.3,<79.0a0 +- libexpat >=2.7.4,<3.0a0 +- libfreetype >=2.14.2 +- libfreetype6 >=2.14.2 +- libgcc >=14 +- libglib >=2.86.4,<3.0a0 +- libstdcxx >=14 +- libzlib >=1.3.2,<2.0a0 +license: MIT +license_family: MIT +size: 2345732 +timestamp: 1774281448329 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda +sha256: 49ba6aed2c6b482bb0ba41078057555d29764299bc947b990708617712ef6406 +md5: 546da38c2fa9efacf203e2ad3f987c59 +depends: +- libgcc >=14 +- libstdcxx >=14 +license: MIT +license_family: MIT +size: 12837286 +timestamp: 1773822650615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda +sha256: 5ce830ca274b67de11a7075430a72020c1fb7d486161a82839be15c2b84e9988 +md5: e7df0aab10b9cbb73ab2a467ebfaf8c7 +depends: +- libgcc >=13 +license: LGPL-2.1-or-later +size: 129048 +timestamp: 1754906002667 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda +sha256: b53999d888dda53c506b264e8c02b5f5c8e022c781eda0718f007339e6bc90ba +md5: d9ca108bd680ea86a963104b6b3e95ca +depends: +- keyutils >=1.6.3,<2.0a0 +- libedit >=3.1.20250104,<3.2.0a0 +- libedit >=3.1.20250104,<4.0a0 +- libgcc >=14 +- libstdcxx >=14 +- openssl >=3.5.5,<4.0a0 +license: MIT +license_family: MIT +size: 1517436 +timestamp: 1769773395215 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda +sha256: 379ef5e91a587137391a6149755d0e929f1a007d2dcb211318ac670a46c8596f +md5: bb960f01525b5e001608afef9d47b79c +depends: +- libgcc >=14 +- libjpeg-turbo >=3.1.2,<4.0a0 +- libtiff >=4.7.1,<4.8.0a0 +license: MIT +license_family: MIT +size: 293039 +timestamp: 1768184778398 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda +sha256: 8957fd460c1c132c8031f65fd5f56ec3807fd71b7cab2c5e2b0937b13404ab36 +md5: d13423b06447113a90b5b1366d4da171 +depends: +- libgcc >=14 +- libstdcxx >=14 +license: Apache-2.0 +license_family: Apache +size: 240444 +timestamp: 1773114901155 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda +sha256: 41b04f995c9f63af8c4065a35931e46cbc2fdd6b9bf7e4c19f90d53cbb2bc8e5 +md5: 67828c963b17db7dc989fe5d509ef04a +depends: +- krb5 >=1.22.2,<1.23.0a0 +- libgcc >=14 +- libstdcxx >=14 +- libzlib >=1.3.1,<2.0a0 +license: Apache-2.0 +license_family: Apache +size: 4553739 +timestamp: 1770903929794 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda +sha256: 48814b73bd462da6eed2e697e30c060ae16af21e9fbed30d64feaf0aad9da392 +md5: a9138815598fe6b91a1d6782ca657b0c +depends: +- libgcc >=14 +license: MIT +license_family: MIT +size: 71117 +timestamp: 1761979776756 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda +sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 +md5: fb640d776fc92b682a14e001980825b1 +depends: +- ncurses +- libgcc >=13 +- ncurses >=6.5,<7.0a0 +license: BSD-2-Clause +license_family: BSD +size: 148125 +timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda +sha256: 995ce3ad96d0f4b5ed6296b051a0d7b6377718f325bc0e792fbb96b0e369dad7 +md5: 57f3b3da02a50a1be2a6fe847515417d +depends: +- libgcc >=14 +constrains: +- expat 2.7.4.* +license: MIT +license_family: MIT +size: 76564 +timestamp: 1771259530958 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda +sha256: 3df4c539449aabc3443bbe8c492c01d401eea894603087fca2917aa4e1c2dea9 +md5: 2f364feefb6a7c00423e80dcb12db62a +depends: +- libgcc >=14 +license: MIT +license_family: MIT +size: 55952 +timestamp: 1769456078358 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda +sha256: 752e4f66283d7deb4c6fd47d88df644d8daa2aaa825a54f3bf350a625190192a +md5: a229e22d4d8814a07702b0919d8e6701 +depends: +- libfreetype6 >=2.14.3 +license: GPL-2.0-only OR FTL +size: 8125 +timestamp: 1774301094057 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda +sha256: 8e6b27fe4eec4c2fa7b7769a21973734c8dba1de80086fb0213e58375ac09f4c +md5: b99ed99e42dafb27889483b3098cace7 +depends: +- libgcc >=14 +- libpng >=1.6.55,<1.7.0a0 +- libzlib >=1.3.2,<2.0a0 +constrains: +- freetype >=2.14.3 +license: GPL-2.0-only OR FTL +size: 422941 +timestamp: 1774301093473 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda +sha256: 43df385bedc1cab11993c4369e1f3b04b4ca5d0ea16cba6a0e7f18dbc129fcc9 +md5: 552567ea2b61e3a3035759b2fdb3f9a6 +depends: +- _openmp_mutex >=4.5 +constrains: +- libgcc-ng ==15.2.0=*_18 +- libgomp 15.2.0 h8acb6b2_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 622900 +timestamp: 1771378128706 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda +sha256: 83bb0415f59634dccfa8335d4163d1f6db00a27b36666736f9842b650b92cf2f +md5: 4feebd0fbf61075a1a9c2e9b3936c257 +depends: +- libgcc 15.2.0 h8acb6b2_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 27568 +timestamp: 1771378136019 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.86.4-hf53f6bf_1.conda +sha256: afc503dbd04a5bf2709aa9d8318a03a8c4edb389f661ff280c3494bfef4341ec +md5: 4ac4372fc4d7f20630a91314cdac8afd +depends: +- libffi >=3.5.2,<3.6.0a0 +- libgcc >=14 +- libiconv >=1.18,<2.0a0 +- libzlib >=1.3.1,<2.0a0 +- pcre2 >=10.47,<10.48.0a0 +constrains: +- glib 2.86.4 *_1 +license: LGPL-2.1-or-later +size: 4512186 +timestamp: 1771863220969 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda +sha256: fc716f11a6a8525e27a5d332ef6a689210b0d2a4dd1133edc0f530659aa9faa6 +md5: 4faa39bf919939602e594253bd673958 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 588060 +timestamp: 1771378040807 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda +sha256: 1473451cd282b48d24515795a595801c9b65b567fe399d7e12d50b2d6cdb04d9 +md5: 5a86bf847b9b926f3a4f203339748d78 +depends: +- libgcc >=14 +license: LGPL-2.1-only +size: 791226 +timestamp: 1754910975665 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda +sha256: 84064c7c53a64291a585d7215fe95ec42df74203a5bf7615d33d49a3b0f08bb6 +md5: 5109d7f837a3dfdf5c60f60e311b041f +depends: +- libgcc >=14 +constrains: +- jpeg <0.0.0a +license: IJG AND BSD-3-Clause AND Zlib +size: 691818 +timestamp: 1762094728337 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda +sha256: 843c46e20519651a3e357a8928352b16c5b94f4cd3d5481acc48be2e93e8f6a3 +md5: 96944e3c92386a12755b94619bae0b35 +depends: +- libgcc >=14 +constrains: +- xz 5.8.2.* +license: 0BSD +size: 125916 +timestamp: 1768754941722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.55-h1abf092_0.conda +sha256: c7378c6b79de4d571d00ad1caf0a4c19d43c9c94077a761abb6ead44d891f907 +md5: be4088903b94ea297975689b3c3aeb27 +depends: +- libgcc >=14 +- libzlib >=1.3.1,<2.0a0 +license: zlib-acknowledgement +size: 340156 +timestamp: 1770691477245 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda +sha256: 31fdb9ffafad106a213192d8319b9f810e05abca9c5436b60e507afb35a6bc40 +md5: f56573d05e3b735cb03efeb64a15f388 +depends: +- libgcc 15.2.0 h8acb6b2_18 +constrains: +- libstdcxx-ng ==15.2.0=*_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 5541411 +timestamp: 1771378162499 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda +sha256: 7ff79470db39e803e21b8185bc8f19c460666d5557b1378d1b1e857d929c6b39 +md5: 8c6fd84f9c87ac00636007c6131e457d +depends: +- lerc >=4.0.0,<5.0a0 +- libdeflate >=1.25,<1.26.0a0 +- libgcc >=14 +- libjpeg-turbo >=3.1.0,<4.0a0 +- liblzma >=5.8.1,<6.0a0 +- libstdcxx >=14 +- libwebp-base >=1.6.0,<2.0a0 +- libzlib >=1.3.1,<2.0a0 +- zstd >=1.5.7,<1.6.0a0 +license: HPND +size: 488407 +timestamp: 1762022048105 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda +sha256: c37a8e89b700646f3252608f8368e7eb8e2a44886b92776e57ad7601fc402a11 +md5: cf2861212053d05f27ec49c3784ff8bb +depends: +- libgcc >=14 +license: BSD-3-Clause +license_family: BSD +size: 43453 +timestamp: 1766271546875 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda +sha256: b03700a1f741554e8e5712f9b06dd67e76f5301292958cd3cb1ac8c6fdd9ed25 +md5: 24e92d0942c799db387f5c9d7b81f1af +depends: +- libgcc >=14 +constrains: +- libwebp 1.6.0 +license: BSD-3-Clause +license_family: BSD +size: 359496 +timestamp: 1752160685488 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda +sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b +md5: cd14ee5cca2464a425b1dbfc24d90db2 +depends: +- libgcc >=13 +- pthread-stubs +- xorg-libxau >=1.0.11,<2.0a0 +- xorg-libxdmcp +license: MIT +license_family: MIT +size: 397493 +timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda +sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f +md5: b4df5d7d4b63579d081fd3a4cf99740e +depends: +- libgcc-ng >=12 +license: LGPL-2.1-or-later +size: 114269 +timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda +sha256: eb111e32e5a7313a5bf799c7fb2419051fa2fe7eff74769fac8d5a448b309f7f +md5: 502006882cf5461adced436e410046d1 +constrains: +- zlib 1.3.2 *_2 +license: Zlib +license_family: Other +size: 69833 +timestamp: 1774072605429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda +sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 +md5: 182afabe009dc78d8b73100255ee6868 +depends: +- libgcc >=13 +license: X11 AND BSD-3-Clause +size: 926034 +timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjdk-25.0.2-h488f50d_0.conda +sha256: 6fd2c872b275fa5d42a61a4b6dc28a819cde29f9048adb547363597432e0720e +md5: 27fdd5d67e235c20d23b2d66406497d3 +depends: +- xorg-libx11 +- xorg-libxext +- xorg-libxi +- xorg-libxrender +- xorg-libxtst +- libstdcxx >=14 +- libgcc >=14 +- libzlib >=1.3.1,<2.0a0 +- xorg-libxtst >=1.2.5,<2.0a0 +- libpng >=1.6.55,<1.7.0a0 +- alsa-lib >=1.2.15.3,<1.3.0a0 +- xorg-libx11 >=1.8.13,<2.0a0 +- xorg-libxi >=1.8.2,<2.0a0 +- xorg-libxrandr >=1.5.5,<2.0a0 +- lcms2 >=2.18,<3.0a0 +- xorg-libxrender >=0.9.12,<0.10.0a0 +- libcups >=2.3.3,<2.4.0a0 +- libfreetype >=2.14.1 +- libfreetype6 >=2.14.1 +- harfbuzz >=12.3.2 +- xorg-libxext >=1.3.7,<2.0a0 +- giflib >=5.2.2,<5.3.0a0 +- xorg-libxt >=1.3.1,<2.0a0 +- libjpeg-turbo >=3.1.2,<4.0a0 +- fontconfig >=2.17.1,<3.0a0 +- fonts-conda-ecosystem +license: GPL-2.0-or-later WITH Classpath-exception-2.0 +license_family: GPL +size: 106988620 +timestamp: 1771443741031 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda +sha256: 7f8048c0e75b2620254218d72b4ae7f14136f1981c5eb555ef61645a9344505f +md5: 25f5885f11e8b1f075bccf4a2da91c60 +depends: +- ca-certificates +- libgcc >=14 +license: Apache-2.0 +license_family: Apache +size: 3692030 +timestamp: 1769557678657 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.47-hf841c20_0.conda +sha256: 04df2cee95feba440387f33f878e9f655521e69f4be33a0cd637f07d3d81f0f9 +md5: 1a30c42e32ca0ea216bd0bfe6f842f0b +depends: +- bzip2 >=1.0.8,<2.0a0 +- libgcc >=14 +- libzlib >=1.3.1,<2.0a0 +license: BSD-3-Clause +license_family: BSD +size: 1166552 +timestamp: 1763655534263 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/perl-5.32.1-7_h31becfc_perl5.conda +build_number: 7 +sha256: d78296134263b5bf476cad838ded65451e7162db756f9997c5d06b08122572ed +md5: 17d019cb2a6c72073c344e98e40dfd61 +depends: +- libgcc-ng >=12 +- libxcrypt >=4.4.36 +license: GPL-1.0-or-later OR Artistic-1.0-Perl +size: 13338804 +timestamp: 1703310557094 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_1.conda +sha256: e6b0846a998f2263629cfeac7bca73565c35af13251969f45d385db537a514e4 +md5: 1587081d537bd4ae77d1c0635d465ba5 +depends: +- libgcc >=14 +- libstdcxx >=14 +- libgcc >=14 +license: MIT +license_family: MIT +size: 357913 +timestamp: 1754665583353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda +sha256: e9cbcbc94e151ada3d6dc365380aaaf591f65012c16d9a2abaea4b9b90adc402 +md5: ab7288cc39545556d1bc5e71ab2df9a9 +depends: +- libgcc >=14 +- ncurses >=6.5,<7.0a0 +license: GPL-2.0-or-later AND LGPL-2.0-or-later +license_family: GPL +size: 636733 +timestamp: 1769712412683 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda +sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba +md5: bb5a90c93e3bac3d5690acf76b4a6386 +depends: +- libgcc >=13 +license: MIT +license_family: MIT +size: 8342 +timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda +sha256: a2ba1864403c7eb4194dacbfe2777acf3d596feae43aada8d1b478617ce45031 +md5: c8d8ec3e00cd0fd8a231789b91a7c5b7 +depends: +- libgcc >=13 +license: MIT +license_family: MIT +size: 60433 +timestamp: 1734229908988 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.6-h0808dbd_0.conda +sha256: b86a819cd16f90c01d9d81892155126d01555a20dabd5f3091da59d6309afd0a +md5: 2d1409c50882819cb1af2de82e2b7208 +depends: +- libgcc >=13 +- libuuid >=2.38.1,<3.0a0 +- xorg-libice >=1.1.2,<2.0a0 +license: MIT +license_family: MIT +size: 28701 +timestamp: 1741897678254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.13-h63a1b12_0.conda +sha256: cf886160e2ff580d77f7eb8ec1a77c41c2c5b05343e329bc35f0ddf40b8d92ab +md5: 22dd10425ef181e80e130db50675d615 +depends: +- libgcc >=14 +- libxcb >=1.17.0,<2.0a0 +license: MIT +license_family: MIT +size: 869058 +timestamp: 1770819244991 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda +sha256: e9f6e931feeb2f40e1fdbafe41d3b665f1ab6cb39c5880a1fcf9f79a3f3c84a5 +md5: 1c246e1105000c3660558459e2fd6d43 +depends: +- libgcc >=14 +license: MIT +license_family: MIT +size: 16317 +timestamp: 1762977521691 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda +sha256: 128d72f36bcc8d2b4cdbec07507542e437c7d67f677b7d77b71ed9eeac7d6df1 +md5: bff06dcde4a707339d66d45d96ceb2e2 +depends: +- libgcc >=14 +license: MIT +license_family: MIT +size: 21039 +timestamp: 1762979038025 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.7-he30d5cf_0.conda +sha256: db2188bc0d844d4e9747bac7f6c1d067e390bd769c5ad897c93f1df759dc5dba +md5: fb42b683034619915863d68dd9df03a3 +depends: +- libgcc >=14 +- xorg-libx11 >=1.8.12,<2.0a0 +license: MIT +license_family: MIT +size: 52409 +timestamp: 1769446753771 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.2-he30d5cf_0.conda +sha256: 8cb9c88e25c57e47419e98f04f9ef3154ad96b9f858c88c570c7b91216a64d0e +md5: e8b4056544341daf1d415eaeae7a040c +depends: +- libgcc >=14 +- xorg-libx11 >=1.8.12,<2.0a0 +license: MIT +license_family: MIT +size: 20704 +timestamp: 1759284028146 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxi-1.8.2-h57736b2_0.conda +sha256: 7b587407ecb9ccd2bbaf0fb94c5dbdde4d015346df063e9502dc0ce2b682fb5e +md5: eeee3bdb31c6acde2b81ad1b8c287087 +depends: +- libgcc >=13 +- xorg-libx11 >=1.8.9,<2.0a0 +- xorg-libxext >=1.3.6,<2.0a0 +- xorg-libxfixes >=6.0.1,<7.0a0 +license: MIT +license_family: MIT +size: 48197 +timestamp: 1727801059062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrandr-1.5.5-he30d5cf_0.conda +sha256: 9f5196665a8d72f4f119c40dcc4bafeb0b540b102cc7b8b299c2abf599e7919f +md5: 1f64c613f0b8d67e9fb0e165d898fb6b +depends: +- libgcc >=14 +- xorg-libx11 >=1.8.12,<2.0a0 +- xorg-libxext >=1.3.6,<2.0a0 +- xorg-libxrender >=0.9.12,<0.10.0a0 +license: MIT +license_family: MIT +size: 31122 +timestamp: 1769445286951 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda +sha256: ffd77ee860c9635a28cfda46163dcfe9224dc6248c62404c544ae6b564a0be1f +md5: ae2c2dd0e2d38d249887727db2af960e +depends: +- libgcc >=13 +- xorg-libx11 >=1.8.10,<2.0a0 +license: MIT +license_family: MIT +size: 33649 +timestamp: 1734229123157 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxt-1.3.1-h57736b2_0.conda +sha256: 7c109792b60720809a580612aba7f8eb2a0bd425b9fc078748a9d6ffc97cbfa8 +md5: a9e4852c8e0b68ee783e7240030b696f +depends: +- libgcc >=13 +- xorg-libice >=1.1.1,<2.0a0 +- xorg-libsm >=1.2.4,<2.0a0 +- xorg-libx11 >=1.8.9,<2.0a0 +license: MIT +license_family: MIT +size: 384752 +timestamp: 1731860572314 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxtst-1.2.5-h57736b2_3.conda +sha256: 6eaffce5a34fc0a16a21ddeaefb597e792a263b1b0c387c1ce46b0a967d558e1 +md5: c05698071b5c8e0da82a282085845860 +depends: +- libgcc >=13 +- xorg-libx11 >=1.8.9,<2.0a0 +- xorg-libxext >=1.3.6,<2.0a0 +- xorg-libxi >=1.7.10,<2.0a0 +license: MIT +license_family: MIT +size: 33786 +timestamp: 1727964907993 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda +sha256: 569990cf12e46f9df540275146da567d9c618c1e9c7a0bc9d9cfefadaed20b75 +md5: c3655f82dcea2aa179b291e7099c1fcc +depends: +- libzlib >=1.3.1,<2.0a0 +license: BSD-3-Clause +license_family: BSD +size: 614429 +timestamp: 1764777145593 diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 23e16634..10851264 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -1,37 +1,40 @@ process FASTQC { tag "${meta.id}" - label 'process_medium' + label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' : - 'biocontainers/fastqc:0.12.1--hdfd78af_0' }" + container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' + : 'quay.io/biocontainers/fastqc:0.12.1--hdfd78af_0'}" input: - tuple val(meta), path(reads) + tuple val(meta), path(reads, stageAs: '?/*') output: tuple val(meta), path("*.html"), emit: html - tuple val(meta), path("*.zip") , emit: zip - path "versions.yml" , emit: versions + tuple val(meta), path("*.zip"), emit: zip + tuple val("${task.process}"), val('fastqc'), eval('fastqc --version | sed "/FastQC v/!d; s/.*v//"'), emit: versions_fastqc, topic: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" // Make list of old name and new name pairs to use for renaming in the bash while loop - def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[ reads, "${prefix}.${reads.extension}" ]] : reads.withIndex().collect { entry, index -> [ entry, "${prefix}_${index + 1}.${entry.extension}" ] } - def rename_to = old_new_pairs*.join(' ').join(' ') - def renamed_files = old_new_pairs.collect{ _old_name, new_name -> new_name }.join(' ') + def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[reads, "${prefix}.${reads.extension}"]] : reads.withIndex().collect { entry, index -> [entry, "${prefix}_${index + 1}.${entry.extension}"] } + def rename_to = old_new_pairs*.join(' ').join(' ') + def renamed_files = old_new_pairs.collect { _old_name, new_name -> new_name }.join(' ') // The total amount of allocated RAM by FastQC is equal to the number of threads defined (--threads) time the amount of RAM defined (--memory) // https://github.com/s-andrews/FastQC/blob/1faeea0412093224d7f6a07f777fad60a5650795/fastqc#L211-L222 - // Dividing the task.memory by task.cpu allows to stick to requested amount of RAM in the label - def memory_in_mb = task.memory ? task.memory.toUnit('MB') / task.cpus : null + // Dividing the task.memory by task.cpus allows to stick to requested amount of RAM in the label + def memory_in_mb = task.memory + ? (task.memory.toUnit('MB') / task.cpus).intValue() + : null // FastQC memory value allowed range (100 - 10000) def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb) + def fastqc_memory_arg = fastqc_memory ? "--memory ${fastqc_memory}" : '' """ printf "%s %s\\n" ${rename_to} | while read old_name new_name; do @@ -41,13 +44,8 @@ process FASTQC { fastqc \\ ${args} \\ --threads ${task.cpus} \\ - --memory ${fastqc_memory} \\ + ${fastqc_memory_arg} \\ ${renamed_files} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) - END_VERSIONS """ stub: @@ -55,10 +53,5 @@ process FASTQC { """ touch ${prefix}.html touch ${prefix}.zip - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) - END_VERSIONS """ } diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml index c8d9d025..2f6cfef6 100644 --- a/modules/nf-core/fastqc/meta.yml +++ b/modules/nf-core/fastqc/meta.yml @@ -53,13 +53,28 @@ output: description: FastQC report archive pattern: "*_{fastqc.zip}" ontologies: [] + versions_fastqc: + - - ${task.process}: + type: string + description: The process the versions were collected from + - fastqc: + type: string + description: The tool name + - fastqc --version | sed "/FastQC v/!d; s/.*v//": + type: eval + description: The expression to obtain the version of the tool + +topics: versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML + - - ${task.process}: + type: string + description: The process the versions were collected from + - fastqc: + type: string + description: The tool name + - fastqc --version | sed "/FastQC v/!d; s/.*v//": + type: eval + description: The expression to obtain the version of the tool authors: - "@drpatelh" - "@grst" @@ -70,3 +85,27 @@ maintainers: - "@grst" - "@ewels" - "@FelixKrueger" +containers: + docker: + linux/arm64: + name: community.wave.seqera.io/library/fastqc:0.12.1--e455e32f745abe68 + build_id: bd-e455e32f745abe68_1 + scan_id: sc-f102f736465af88c_1 + linux/amd64: + name: community.wave.seqera.io/library/fastqc:0.12.1--5cb1a2fa2f18c7c2 + build_id: bd-5cb1a2fa2f18c7c2_1 + scan_id: sc-0c0466326b6b77d2_1 + singularity: + linux/amd64: + name: oras://community.wave.seqera.io/library/fastqc:0.12.1--5c4bd442468d75dd + build_id: bd-5c4bd442468d75dd_1 + https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/f2/f20b021476d1d87658820f971ebecc1e8cdbde0f338eb0d9cea2b0a8fc54a54b/data + linux/arm64: + name: oras://community.wave.seqera.io/library/fastqc:0.12.1--127a87fc06499035 + build_id: bd-127a87fc06499035_1 + https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/46/46daf2dad0169afd2ae047c3e50ed3776259f664bf07e5e06b045dc23449e994/data + conda: + linux/amd64: + lock_file: modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt + linux/arm64: + lock_file: modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index e9d79a07..66c44da9 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -30,7 +30,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } @@ -58,7 +58,7 @@ nextflow_process { { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } @@ -82,7 +82,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } @@ -106,7 +106,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } @@ -142,7 +142,7 @@ nextflow_process { { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } @@ -166,7 +166,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(process.out.versions).match() } + { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } ) } } diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap index d5db3092..c8ee120f 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,15 +1,21 @@ { "sarscov2 custom_prefix": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:16.374038" + "timestamp": "2025-10-28T16:39:14.518503" }, "sarscov2 single-end [fastq] - stub": { "content": [ @@ -33,7 +39,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -44,8 +54,12 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -59,10 +73,10 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:24.993809" + "timestamp": "2025-10-28T16:39:19.309008" }, "sarscov2 custom_prefix - stub": { "content": [ @@ -86,7 +100,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -97,8 +115,12 @@ "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -112,58 +134,82 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:03:10.93942" + "timestamp": "2025-10-28T16:39:44.94888" }, "sarscov2 interleaved [fastq]": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:01:42.355718" + "timestamp": "2025-10-28T16:38:45.168496" }, "sarscov2 paired-end [bam]": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:01:53.276274" + "timestamp": "2025-10-28T16:38:53.268919" }, "sarscov2 multiple [fastq]": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:05.527626" + "timestamp": "2025-10-28T16:39:05.050305" }, "sarscov2 paired-end [fastq]": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:01:31.188871" + "timestamp": "2025-10-28T16:38:37.2373" }, "sarscov2 paired-end [fastq] - stub": { "content": [ @@ -187,7 +233,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -198,8 +248,12 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -213,10 +267,10 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:34.273566" + "timestamp": "2025-10-28T16:39:24.450398" }, "sarscov2 multiple [fastq] - stub": { "content": [ @@ -240,7 +294,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -251,8 +309,12 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -266,22 +328,28 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:03:02.304411" + "timestamp": "2025-10-28T16:39:39.758762" }, "sarscov2 single-end [fastq]": { "content": [ - [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" - ] + { + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] + ] + } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:01:19.095607" + "timestamp": "2025-10-28T16:38:29.555068" }, "sarscov2 interleaved [fastq] - stub": { "content": [ @@ -305,7 +373,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -316,8 +388,12 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -331,10 +407,10 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:44.640184" + "timestamp": "2025-10-28T16:39:29.193136" }, "sarscov2 paired-end [bam] - stub": { "content": [ @@ -358,7 +434,11 @@ ] ], "2": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "html": [ [ @@ -369,8 +449,12 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions": [ - "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + "versions_fastqc": [ + [ + "FASTQC", + "fastqc", + "0.12.1" + ] ], "zip": [ [ @@ -384,9 +468,9 @@ } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" + "nf-test": "0.9.2", + "nextflow": "25.10.0" }, - "timestamp": "2024-07-22T11:02:53.550742" + "timestamp": "2025-10-28T16:39:34.144919" } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt b/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt new file mode 100644 index 00000000..76190304 --- /dev/null +++ b/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt @@ -0,0 +1,1552 @@ + +version: 6 +environments: +default: +channels: +- url: https://conda.anaconda.org/conda-forge/ +- url: https://conda.anaconda.org/bioconda/ +- url: https://conda.anaconda.org/bioconda/ +options: +pypi-prerelease-mode: if-necessary-or-explicit +packages: +linux-64: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.4-hecca717_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/kaleido-core-0.2.1-h3644ca4_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/mathjax-2.7.7-ha770c72_3.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.38-h29cc59b_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.118-h445c969_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py314h8ec4b1a_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.39.3-py310hffdcd12_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-compat-1.39.3-py310hbcd5346_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py314h2e6c369_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.2.28-py314h5bd0f2a_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py314h2e6c369_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.52.0-h04a0ce9_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.12.0-py314h67fec18_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda +build_number: 20 +sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 +md5: a9f577daf3de00bca7c3c76c0ecbd1de +depends: +- __glibc >=2.17,<3.0.a0 +- libgomp >=7.5.0 +constrains: +- openmp_impl <0.0a0 +license: BSD-3-Clause +license_family: BSD +size: 28948 +timestamp: 1770939786096 +- conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda +sha256: a3967b937b9abf0f2a99f3173fa4630293979bd1644709d89580e7c62a544661 +md5: aaa2a381ccc56eac91d63b6c1240312f +depends: +- cpython +- python-gil +license: MIT +license_family: MIT +size: 8191 +timestamp: 1744137672556 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda +sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 +md5: 2934f256a8acfe48f6ebb4fce6cde29c +depends: +- python >=3.9 +- typing-extensions >=4.0.0 +license: MIT +license_family: MIT +size: 18074 +timestamp: 1733247158254 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda +sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab +md5: c6b0543676ecb1fb2d7643941fe375f2 +depends: +- python >=3.10 +- python +license: MIT +license_family: MIT +size: 64927 +timestamp: 1773935801332 +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda +noarch: generic +sha256: c31ab719d256bc6f89926131e88ecd0f0c5d003fe8481852c6424f4ec6c7eb29 +md5: a2ac7763a9ac75055b68f325d3255265 +depends: +- python >=3.14 +license: BSD-3-Clause AND MIT AND EPL-2.0 +size: 7514 +timestamp: 1767044983590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda +sha256: 3ad3500bff54a781c29f16ce1b288b36606e2189d0b0ef2f67036554f47f12b0 +md5: 8910d2c46f7e7b519129f486e0fe927a +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libstdcxx >=14 +- python >=3.14,<3.15.0a0 +- python_abi 3.14.* *_cp314 +constrains: +- libbrotlicommon 1.2.0 hb03c661_1 +license: MIT +license_family: MIT +size: 367376 +timestamp: 1764017265553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda +sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 +md5: d2ffd7602c02f2b316fd921d39876885 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: bzip2-1.0.6 +license_family: BSD +size: 260182 +timestamp: 1771350215188 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda +sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc +md5: 4492fd26db29495f0ba23f146cd5638d +depends: +- __unix +license: ISC +size: 147413 +timestamp: 1772006283803 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda +sha256: a6b118fd1ed6099dc4fc03f9c492b88882a780fadaef4ed4f93dc70757713656 +md5: 765c4d97e877cdbbb88ff33152b86125 +depends: +- python >=3.10 +license: ISC +size: 151445 +timestamp: 1772001170301 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda +sha256: d86dfd428b2e3c364fa90e07437c8405d635aa4ef54b25ab51d9c712be4112a5 +md5: 49ee13eb9b8f44d63879c69b8a40a74b +depends: +- python >=3.10 +license: MIT +license_family: MIT +size: 58510 +timestamp: 1773660086450 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda +sha256: 38cfe1ee75b21a8361c8824f5544c3866f303af1762693a178266d7f198e8715 +md5: ea8a6c3256897cc31263de9f455e25d9 +depends: +- python >=3.10 +- __unix +- python +license: BSD-3-Clause +license_family: BSD +size: 97676 +timestamp: 1764518652276 +- conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda +sha256: 8021c76eeadbdd5784b881b165242db9449783e12ce26d6234060026fd6a8680 +md5: b866ff7007b934d564961066c8195983 +depends: +- humanfriendly >=9.1 +- python >=3.9 +license: MIT +license_family: MIT +size: 43758 +timestamp: 1733928076798 +- conda: https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda +sha256: 59c9e29800b483b390467f90e82b0da3a4fbf0612efe1c90813fca232780e160 +md5: 071cf7b0ce333c81718b054066c15102 +depends: +- networkx >=2.0 +- numpy +- python >=3.9 +license: BSD-3-Clause +license_family: BSD +size: 39326 +timestamp: 1735759976140 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda +noarch: generic +sha256: 91b06300879df746214f7363d6c27c2489c80732e46a369eb2afc234bcafb44c +md5: 3bb89e4f795e5414addaa531d6b1500a +depends: +- python >=3.14,<3.15.0a0 +- python_abi * *_cp314 +license: Python-2.0 +size: 50078 +timestamp: 1770674447292 +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.4-hecca717_0.conda +sha256: 0cc345e4dead417996ce9a1f088b28d858f03d113d43c1963d29194366dcce27 +md5: a0535741a4934b3e386051065c58761a +depends: +- __glibc >=2.17,<3.0.a0 +- libexpat 2.7.4 hecca717_0 +- libgcc >=14 +license: MIT +license_family: MIT +size: 145274 +timestamp: 1771259434699 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b +md5: 0c96522c6bdaed4b1566d11387caaf45 +license: BSD-3-Clause +license_family: BSD +size: 397370 +timestamp: 1566932522327 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c +md5: 34893075a5c9e55cdafac56607368fc6 +license: OFL-1.1 +license_family: Other +size: 96530 +timestamp: 1620479909603 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 +md5: 4d59c254e01d9cde7957100457e2d5fb +license: OFL-1.1 +license_family: Other +size: 700814 +timestamp: 1620479612257 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 +md5: 49023d73832ef61042f6a237cb2687e7 +license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 +license_family: Other +size: 1620504 +timestamp: 1727511233259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda +sha256: aa4a44dba97151221100a637c7f4bde619567afade9c0265f8e1c8eed8d7bd8c +md5: 867127763fbe935bab59815b6e0b7b5c +depends: +- __glibc >=2.17,<3.0.a0 +- libexpat >=2.7.4,<3.0a0 +- libfreetype >=2.14.1 +- libfreetype6 >=2.14.1 +- libgcc >=14 +- libuuid >=2.41.3,<3.0a0 +- libzlib >=1.3.1,<2.0a0 +license: MIT +license_family: MIT +size: 270705 +timestamp: 1771382710863 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda +sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 +md5: a7970cd949a077b7cb9696379d338681 +depends: +- font-ttf-ubuntu +- font-ttf-inconsolata +- font-ttf-dejavu-sans-mono +- font-ttf-source-code-pro +license: BSD-3-Clause +license_family: BSD +size: 4059 +timestamp: 1762351264405 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda +sha256: 84c64443368f84b600bfecc529a1194a3b14c3656ee2e832d15a20e0329b6da3 +md5: 164fc43f0b53b6e3a7bc7dce5e4f1dc9 +depends: +- python >=3.10 +- hyperframe >=6.1,<7 +- hpack >=4.1,<5 +- python +license: MIT +license_family: MIT +size: 95967 +timestamp: 1756364871835 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda +sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba +md5: 0a802cb9888dd14eeefc611f05c40b6e +depends: +- python >=3.9 +license: MIT +license_family: MIT +size: 30731 +timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda +sha256: fa2071da7fab758c669e78227e6094f6b3608228740808a6de5d6bce83d9e52d +md5: 7fe569c10905402ed47024fc481bb371 +depends: +- __unix +- python >=3.9 +license: MIT +license_family: MIT +size: 73563 +timestamp: 1733928021866 +- conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda +sha256: 6c4343b376d0b12a4c75ab992640970d36c933cad1fd924f6a1181fa91710e80 +md5: daddf757c3ecd6067b9af1df1f25d89e +depends: +- python >=3.10 +license: MIT +license_family: MIT +size: 67994 +timestamp: 1766267728652 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda +sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 +md5: 8e6923fc12f1fe8f8c4e5c9f343256ac +depends: +- python >=3.9 +license: MIT +license_family: MIT +size: 17397 +timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda +sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a +md5: c80d8a3b84358cb967fa81e7075fbc8a +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libstdcxx >=14 +license: MIT +license_family: MIT +size: 12723451 +timestamp: 1773822285671 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda +sha256: ae89d0299ada2a3162c2614a9d26557a92aa6a77120ce142f8e0109bbf0342b0 +md5: 53abe63df7e10a6ba605dc5f9f961d36 +depends: +- python >=3.10 +license: BSD-3-Clause +license_family: BSD +size: 50721 +timestamp: 1760286526795 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda +sha256: 82ab2a0d91ca1e7e63ab6a4939356667ef683905dea631bc2121aa534d347b16 +md5: 080594bf4493e6bae2607e65390c520a +depends: +- python >=3.10 +- zipp >=3.20 +- python +license: Apache-2.0 +license_family: APACHE +size: 34387 +timestamp: 1773931568510 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda +sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b +md5: 04558c96691bed63104678757beb4f8d +depends: +- markupsafe >=2.0 +- python >=3.10 +- python +license: BSD-3-Clause +license_family: BSD +size: 120685 +timestamp: 1764517220861 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda +sha256: db973a37d75db8e19b5f44bbbdaead0c68dde745407f281e2a7fe4db74ec51d7 +md5: ada41c863af263cc4c5fcbaff7c3e4dc +depends: +- attrs >=22.2.0 +- jsonschema-specifications >=2023.3.6 +- python >=3.10 +- referencing >=0.28.4 +- rpds-py >=0.25.0 +- python +license: MIT +license_family: MIT +size: 82356 +timestamp: 1767839954256 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda +sha256: 0a4f3b132f0faca10c89fdf3b60e15abb62ded6fa80aebfc007d05965192aa04 +md5: 439cd0f567d697b20a8f45cb70a1005a +depends: +- python >=3.10 +- referencing >=0.31.0 +- python +license: MIT +license_family: MIT +size: 19236 +timestamp: 1757335715225 +- conda: https://conda.anaconda.org/conda-forge/linux-64/kaleido-core-0.2.1-h3644ca4_0.tar.bz2 +sha256: 7f243680ca03eba7457b7a48f93a9440ba8181a8eac20a3eb5ef165ab6c96664 +md5: b3723b235b0758abaae8c82ce4d80146 +depends: +- __glibc >=2.17,<3.0.a0 +- expat >=2.2.10,<3.0.0a0 +- fontconfig +- fonts-conda-forge +- libgcc-ng >=9.3.0 +- mathjax 2.7.* +- nspr >=4.29,<5.0a0 +- nss >=3.62,<4.0a0 +- sqlite >=3.34.0,<4.0a0 +license: MIT +license_family: MIT +size: 62099926 +timestamp: 1615199463039 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda +sha256: 836ec4b895352110335b9fdcfa83a8dcdbe6c5fb7c06c4929130600caea91c0a +md5: 6f2e2c8f58160147c4d1c6f4c14cbac4 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libjpeg-turbo >=3.1.2,<4.0a0 +- libtiff >=4.7.1,<4.8.0a0 +license: MIT +license_family: MIT +size: 249959 +timestamp: 1768184673131 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda +sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c +md5: 18335a698559cdbcd86150a48bf54ba6 +depends: +- __glibc >=2.17,<3.0.a0 +- zstd >=1.5.7,<1.6.0a0 +constrains: +- binutils_impl_linux-64 2.45.1 +license: GPL-3.0-only +license_family: GPL +size: 728002 +timestamp: 1774197446916 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda +sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1 +md5: a752488c68f2e7c456bcbd8f16eec275 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libstdcxx >=14 +license: Apache-2.0 +license_family: Apache +size: 261513 +timestamp: 1773113328888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda +build_number: 5 +sha256: 18c72545080b86739352482ba14ba2c4815e19e26a7417ca21a95b76ec8da24c +md5: c160954f7418d7b6e87eaf05a8913fa9 +depends: +- libopenblas >=0.3.30,<0.3.31.0a0 +- libopenblas >=0.3.30,<1.0a0 +constrains: +- mkl <2026 +- liblapack 3.11.0 5*_openblas +- libcblas 3.11.0 5*_openblas +- blas 2.305 openblas +- liblapacke 3.11.0 5*_openblas +license: BSD-3-Clause +license_family: BSD +size: 18213 +timestamp: 1765818813880 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda +build_number: 5 +sha256: 0cbdcc67901e02dc17f1d19e1f9170610bd828100dc207de4d5b6b8ad1ae7ad8 +md5: 6636a2b6f1a87572df2970d3ebc87cc0 +depends: +- libblas 3.11.0 5_h4a7cf45_openblas +constrains: +- liblapacke 3.11.0 5*_openblas +- blas 2.305 openblas +- liblapack 3.11.0 5*_openblas +license: BSD-3-Clause +license_family: BSD +size: 18194 +timestamp: 1765818837135 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda +sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 +md5: 6c77a605a7a689d17d4819c0f8ac9a00 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: MIT +license_family: MIT +size: 73490 +timestamp: 1761979956660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda +sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5 +md5: e7f7ce06ec24cfcfb9e36d28cf82ba57 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +constrains: +- expat 2.7.4.* +license: MIT +license_family: MIT +size: 76798 +timestamp: 1771259418166 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda +sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 +md5: a360c33a5abe61c07959e449fa1453eb +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: MIT +license_family: MIT +size: 58592 +timestamp: 1769456073053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda +sha256: 38f014a7129e644636e46064ecd6b1945e729c2140e21d75bb476af39e692db2 +md5: e289f3d17880e44b633ba911d57a321b +depends: +- libfreetype6 >=2.14.3 +license: GPL-2.0-only OR FTL +size: 8049 +timestamp: 1774298163029 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda +sha256: 16f020f96da79db1863fcdd8f2b8f4f7d52f177dd4c58601e38e9182e91adf1d +md5: fb16b4b69e3f1dcfe79d80db8fd0c55d +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libpng >=1.6.55,<1.7.0a0 +- libzlib >=1.3.2,<2.0a0 +constrains: +- freetype >=2.14.3 +license: GPL-2.0-only OR FTL +size: 384575 +timestamp: 1774298162622 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda +sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 +md5: 0aa00f03f9e39fb9876085dee11a85d4 +depends: +- __glibc >=2.17,<3.0.a0 +- _openmp_mutex >=4.5 +constrains: +- libgcc-ng ==15.2.0=*_18 +- libgomp 15.2.0 he0feb66_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 1041788 +timestamp: 1771378212382 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda +sha256: e318a711400f536c81123e753d4c797a821021fb38970cebfb3f454126016893 +md5: d5e96b1ed75ca01906b3d2469b4ce493 +depends: +- libgcc 15.2.0 he0feb66_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 27526 +timestamp: 1771378224552 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda +sha256: d2c9fad338fd85e4487424865da8e74006ab2e2475bd788f624d7a39b2a72aee +md5: 9063115da5bc35fdc3e1002e69b9ef6e +depends: +- libgfortran5 15.2.0 h68bc16d_18 +constrains: +- libgfortran-ng ==15.2.0=*_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 27523 +timestamp: 1771378269450 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda +sha256: 539b57cf50ec85509a94ba9949b7e30717839e4d694bc94f30d41c9d34de2d12 +md5: 646855f357199a12f02a87382d429b75 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=15.2.0 +constrains: +- libgfortran 15.2.0 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 2482475 +timestamp: 1771378241063 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda +sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 +md5: 239c5e9546c38a1e884d69effcf4c882 +depends: +- __glibc >=2.17,<3.0.a0 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 603262 +timestamp: 1771378117851 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda +sha256: cc9aba923eea0af8e30e0f94f2ad7156e2984d80d1e8e7fe6be5a1f257f0eb32 +md5: 8397539e3a0bbd1695584fb4f927485a +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +constrains: +- jpeg <0.0.0a +license: IJG AND BSD-3-Clause AND Zlib +size: 633710 +timestamp: 1762094827865 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda +build_number: 5 +sha256: c723b6599fcd4c6c75dee728359ef418307280fa3e2ee376e14e85e5bbdda053 +md5: b38076eb5c8e40d0106beda6f95d7609 +depends: +- libblas 3.11.0 5_h4a7cf45_openblas +constrains: +- blas 2.305 openblas +- liblapacke 3.11.0 5*_openblas +- libcblas 3.11.0 5*_openblas +license: BSD-3-Clause +license_family: BSD +size: 18200 +timestamp: 1765818857876 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda +sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb +md5: c7c83eecbb72d88b940c249af56c8b17 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +constrains: +- xz 5.8.2.* +license: 0BSD +size: 113207 +timestamp: 1768752626120 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda +sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 +md5: 2c21e66f50753a083cbe6b80f38268fa +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: BSD-2-Clause +license_family: BSD +size: 92400 +timestamp: 1769482286018 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda +sha256: 199d79c237afb0d4780ccd2fbf829cea80743df60df4705202558675e07dd2c5 +md5: be43915efc66345cccb3c310b6ed0374 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libgfortran +- libgfortran5 >=14.3.0 +constrains: +- openblas >=0.3.30,<0.3.31.0a0 +license: BSD-3-Clause +license_family: BSD +size: 5927939 +timestamp: 1763114673331 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda +sha256: 36ade759122cdf0f16e2a2562a19746d96cf9c863ffaa812f2f5071ebbe9c03c +md5: 5f13ffc7d30ffec87864e678df9957b4 +depends: +- libgcc >=14 +- __glibc >=2.17,<3.0.a0 +- libzlib >=1.3.1,<2.0a0 +license: zlib-acknowledgement +size: 317669 +timestamp: 1770691470744 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda +sha256: d716847b7deca293d2e49ed1c8ab9e4b9e04b9d780aea49a97c26925b28a7993 +md5: fd893f6a3002a635b5e50ceb9dd2c0f4 +depends: +- __glibc >=2.17,<3.0.a0 +- icu >=78.2,<79.0a0 +- libgcc >=14 +- libzlib >=1.3.1,<2.0a0 +license: blessing +size: 951405 +timestamp: 1772818874251 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda +sha256: 78668020064fdaa27e9ab65cd2997e2c837b564ab26ce3bf0e58a2ce1a525c6e +md5: 1b08cd684f34175e4514474793d44bcb +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc 15.2.0 he0feb66_18 +constrains: +- libstdcxx-ng ==15.2.0=*_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 5852330 +timestamp: 1771378262446 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda +sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0 +md5: cd5a90476766d53e901500df9215e927 +depends: +- __glibc >=2.17,<3.0.a0 +- lerc >=4.0.0,<5.0a0 +- libdeflate >=1.25,<1.26.0a0 +- libgcc >=14 +- libjpeg-turbo >=3.1.0,<4.0a0 +- liblzma >=5.8.1,<6.0a0 +- libstdcxx >=14 +- libwebp-base >=1.6.0,<2.0a0 +- libzlib >=1.3.1,<2.0a0 +- zstd >=1.5.7,<1.6.0a0 +license: HPND +size: 435273 +timestamp: 1762022005702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda +sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee +md5: db409b7c1720428638e7c0d509d3e1b5 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: BSD-3-Clause +license_family: BSD +size: 40311 +timestamp: 1766271528534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda +sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b +md5: aea31d2e5b1091feca96fcfe945c3cf9 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +constrains: +- libwebp 1.6.0 +license: BSD-3-Clause +license_family: BSD +size: 429011 +timestamp: 1752159441324 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda +sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa +md5: 92ed62436b625154323d40d5f2f11dd7 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +- pthread-stubs +- xorg-libxau >=1.0.11,<2.0a0 +- xorg-libxdmcp +license: MIT +license_family: MIT +size: 395888 +timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda +sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 +md5: d87ff7921124eccd67248aa483c23fec +depends: +- __glibc >=2.17,<3.0.a0 +constrains: +- zlib 1.3.2 *_2 +license: Zlib +license_family: Other +size: 63629 +timestamp: 1774072609062 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda +sha256: 20e0892592a3e7c683e3d66df704a9425d731486a97c34fc56af4da1106b2b6b +md5: ba0a9221ce1063f31692c07370d062f3 +depends: +- importlib-metadata >=4.4 +- python >=3.10 +- python +license: BSD-3-Clause +license_family: BSD +size: 85893 +timestamp: 1770694658918 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda +sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e +md5: 5b5203189eb668f042ac2b0826244964 +depends: +- mdurl >=0.1,<1 +- python >=3.10 +license: MIT +license_family: MIT +size: 64736 +timestamp: 1754951288511 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda +sha256: c279be85b59a62d5c52f5dd9a4cd43ebd08933809a8416c22c3131595607d4cf +md5: 9a17c4307d23318476d7fbf0fedc0cde +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- python >=3.14,<3.15.0a0 +- python_abi 3.14.* *_cp314 +constrains: +- jinja2 >=3.0.0 +license: BSD-3-Clause +license_family: BSD +size: 27424 +timestamp: 1772445227915 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mathjax-2.7.7-ha770c72_3.tar.bz2 +sha256: 02fef69bde69db264a12f21386612262f545b6e3e68d8f1ccec19f3eaae58edf +md5: 86e69bd82c2a2c6fd29f5ab7e02b3691 +license: Apache-2.0 +license_family: Apache +size: 22281629 +timestamp: 1662784498331 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda +sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 +md5: 592132998493b3ff25fd7479396e8351 +depends: +- python >=3.9 +license: MIT +license_family: MIT +size: 14465 +timestamp: 1733255681319 +- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda +sha256: f005760b13093362fc9c997d603dd487de32ab2e821a3cbce52a42bcb8136517 +md5: 698a8a27c2b9d8a542c70cb47099a75e +depends: +- click +- coloredlogs +- humanize +- importlib-metadata +- jinja2 >=3.0.0 +- jsonschema +- markdown +- natsort +- numpy +- packaging +- pillow >=10.2.0 +- plotly >=5.18 +- polars-lts-cpu +- pyaml-env +- pydantic >=2.7.1 +- python >=3.8,!=3.14.1 +- python-dotenv +- python-kaleido 0.2.1 +- pyyaml >=4 +- requests +- rich >=10 +- rich-click +- spectra >=0.0.10 +- tiktoken +- tqdm +- typeguard +license: GPL-3.0-or-later +license_family: GPL3 +size: 4198799 +timestamp: 1765300743879 +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda +sha256: 541fd4390a0687228b8578247f1536a821d9261389a65585af9d1a6f2a14e1e0 +md5: 30bec5e8f4c3969e2b1bd407c5e52afb +depends: +- python >=3.10 +- python +license: MIT +size: 280459 +timestamp: 1774380620329 +- conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda +sha256: aeb1548eb72e4f198e72f19d242fb695b35add2ac7b2c00e0d83687052867680 +md5: e941e85e273121222580723010bd4fa2 +depends: +- python >=3.9 +- python +license: MIT +license_family: MIT +size: 39262 +timestamp: 1770905275632 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda +sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 +md5: 47e340acb35de30501a76c7c799c41d7 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +license: X11 AND BSD-3-Clause +size: 891641 +timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda +sha256: f6a82172afc50e54741f6f84527ef10424326611503c64e359e25a19a8e4c1c6 +md5: a2c1eeadae7a309daed9d62c96012a2b +depends: +- python >=3.11 +- python +constrains: +- numpy >=1.25 +- scipy >=1.11.2 +- matplotlib-base >=3.8 +- pandas >=2.0 +license: BSD-3-Clause +license_family: BSD +size: 1587439 +timestamp: 1765215107045 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.38-h29cc59b_0.conda +sha256: e3664264bd936c357523b55c71ed5a30263c6ba278d726a75b1eb112e6fb0b64 +md5: e235d5566c9cc8970eb2798dd4ecf62f +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libstdcxx >=14 +license: MPL-2.0 +license_family: MOZILLA +size: 228588 +timestamp: 1762348634537 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.118-h445c969_0.conda +sha256: 44dd98ffeac859d84a6dcba79a2096193a42fc10b29b28a5115687a680dd6aea +md5: 567fbeed956c200c1db5782a424e58ee +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libsqlite >=3.51.0,<4.0a0 +- libstdcxx >=14 +- libzlib >=1.3.1,<2.0a0 +- nspr >=4.38,<5.0a0 +license: MPL-2.0 +license_family: MOZILLA +size: 2057773 +timestamp: 1763485556350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda +sha256: f2ba8cb0d86a6461a6bcf0d315c80c7076083f72c6733c9290086640723f79ec +md5: 36f5b7eb328bdc204954a2225cf908e2 +depends: +- python +- libstdcxx >=14 +- libgcc >=14 +- __glibc >=2.17,<3.0.a0 +- python_abi 3.14.* *_cp314 +- libcblas >=3.9.0,<4.0a0 +- liblapack >=3.9.0,<4.0a0 +- libblas >=3.9.0,<4.0a0 +constrains: +- numpy-base <0a0 +license: BSD-3-Clause +license_family: BSD +size: 8927860 +timestamp: 1773839233468 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda +sha256: 3900f9f2dbbf4129cf3ad6acf4e4b6f7101390b53843591c53b00f034343bc4d +md5: 11b3379b191f63139e29c0d19dee24cd +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libpng >=1.6.50,<1.7.0a0 +- libstdcxx >=14 +- libtiff >=4.7.1,<4.8.0a0 +- libzlib >=1.3.1,<2.0a0 +license: BSD-2-Clause +license_family: BSD +size: 355400 +timestamp: 1758489294972 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda +sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c +md5: f61eb8cd60ff9057122a3d338b99c00f +depends: +- __glibc >=2.17,<3.0.a0 +- ca-certificates +- libgcc >=14 +license: Apache-2.0 +license_family: Apache +size: 3164551 +timestamp: 1769555830639 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda +sha256: c1fc0f953048f743385d31c468b4a678b3ad20caffdeaa94bed85ba63049fd58 +md5: b76541e68fea4d511b1ac46a28dcd2c6 +depends: +- python >=3.8 +- python +license: Apache-2.0 +license_family: APACHE +size: 72010 +timestamp: 1769093650580 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py314h8ec4b1a_0.conda +sha256: 9e6ec8f3213e8b7d64b0ad45f84c51a2c9eba4398efda31e196c9a56186133ee +md5: 79678378ae235e24b3aa83cee1b38207 +depends: +- python +- libgcc >=14 +- __glibc >=2.17,<3.0.a0 +- libwebp-base >=1.6.0,<2.0a0 +- zlib-ng >=2.3.3,<2.4.0a0 +- python_abi 3.14.* *_cp314 +- tk >=8.6.13,<8.7.0a0 +- libjpeg-turbo >=3.1.2,<4.0a0 +- libxcb >=1.17.0,<2.0a0 +- openjpeg >=2.5.4,<3.0a0 +- lcms2 >=2.18,<3.0a0 +- libtiff >=4.7.1,<4.8.0a0 +- libfreetype >=2.14.1 +- libfreetype6 >=2.14.1 +license: HPND +size: 1073026 +timestamp: 1770794002408 +- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda +sha256: c418d325359fc7a0074cea7f081ef1bce26e114d2da8a0154c5d27ecc87a08e7 +md5: 3e9427ee186846052e81fadde8ebe96a +depends: +- narwhals >=1.15.1 +- packaging +- python >=3.10 +constrains: +- ipywidgets >=7.6 +license: MIT +license_family: MIT +size: 5251872 +timestamp: 1772628857717 +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda +sha256: d332c2d5002fc440ae37ed9679ffc21b552f18d20232390005d1dd3bce0888d3 +md5: d5a4e013a30dd8dfde9ab39f45aaf9c1 +depends: +- polars-runtime-32 ==1.39.3 +- python >=3.10 +- python +constrains: +- numpy >=1.16.0 +- pyarrow >=7.0.0 +- fastexcel >=0.9 +- openpyxl >=3.0.0 +- xlsx2csv >=0.8.0 +- connectorx >=0.3.2 +- deltalake >=1.0.0 +- pyiceberg >=0.7.1 +- altair >=5.4.0 +- great_tables >=0.8.0 +- polars-runtime-32 ==1.39.3 +- polars-runtime-64 ==1.39.3 +- polars-runtime-compat ==1.39.3 +license: MIT +license_family: MIT +size: 533495 +timestamp: 1774207987966 +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda +sha256: e466fb31f67ba9bde18deafeb34263ca5eb25807f39ead0e9d753a8e82c4c4f4 +md5: ef0340e75068ac8ff96462749b5c98e7 +depends: +- polars >=1.34.0 +- polars-runtime-compat >=1.34.0 +license: MIT +license_family: MIT +size: 3902 +timestamp: 1760206808444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.39.3-py310hffdcd12_1.conda +noarch: python +sha256: 9744f8086bb0832998f5b01076f57ddc9efbe460e493b14303c3567dc4f401e7 +md5: f9327f9f2cfc4215f55b613e64afd3ba +depends: +- python +- libstdcxx >=14 +- libgcc >=14 +- __glibc >=2.17,<3.0.a0 +- _python_abi3_support 1.* +- cpython >=3.10 +constrains: +- __glibc >=2.17 +license: MIT +license_family: MIT +size: 37570276 +timestamp: 1774207987966 +- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-compat-1.39.3-py310hbcd5346_1.conda +noarch: python +sha256: bf0b932713f0f27924f42159c98426e0073bb6145ed796eaa4cec79ca05363c7 +md5: 4b9b312453eebd6fbdbbe2a88fa1b5c4 +depends: +- python +- libgcc >=14 +- libstdcxx >=14 +- __glibc >=2.17,<3.0.a0 +- _python_abi3_support 1.* +- cpython >=3.10 +constrains: +- __glibc >=2.17 +license: MIT +license_family: MIT +size: 37224264 +timestamp: 1774207985377 +- conda: https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda +sha256: 4ce2e1ee31a6217998f78c31ce7dc0a3e0557d9238b51d49dd20c52d467a126d +md5: f2c23a77b25efcad57d377b34bd84941 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- ncurses >=6.5,<7.0a0 +license: GPL-2.0-or-later AND LGPL-2.0-or-later +license_family: GPL +size: 593603 +timestamp: 1769710381284 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda +sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 +md5: b3c17d95b5a10c6e64a21fa17573e70e +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=13 +license: MIT +license_family: MIT +size: 8252 +timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda +sha256: 58994e0d2ea8584cb399546e6f6896d771995e6121d1a7b6a2c9948388358932 +md5: e17be1016bcc3516827b836cd3e4d9dc +depends: +- python >=3.9 +- pyyaml >=5.0,<=7.0 +license: MIT +license_family: MIT +size: 14645 +timestamp: 1736766960536 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda +sha256: 868569d9505b7fe246c880c11e2c44924d7613a8cdcc1f6ef85d5375e892f13d +md5: c3946ed24acdb28db1b5d63321dbca7d +depends: +- typing-inspection >=0.4.2 +- typing_extensions >=4.14.1 +- python >=3.10 +- typing-extensions >=4.6.1 +- annotated-types >=0.6.0 +- pydantic-core ==2.41.5 +- python +license: MIT +license_family: MIT +size: 340482 +timestamp: 1764434463101 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py314h2e6c369_1.conda +sha256: 7e0ae379796e28a429f8e48f2fe22a0f232979d65ec455e91f8dac689247d39f +md5: 432b0716a1dfac69b86aa38fdd59b7e6 +depends: +- python +- typing-extensions >=4.6.0,!=4.7.0 +- libgcc >=14 +- __glibc >=2.17,<3.0.a0 +- python_abi 3.14.* *_cp314 +constrains: +- __glibc >=2.17 +license: MIT +license_family: MIT +size: 1943088 +timestamp: 1762988995556 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda +sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a +md5: 6b6ece66ebcae2d5f326c77ef2c5a066 +depends: +- python >=3.9 +license: BSD-2-Clause +license_family: BSD +size: 889287 +timestamp: 1750615908735 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda +sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 +md5: 461219d1a5bd61342293efa2c0c90eac +depends: +- __unix +- python >=3.9 +license: BSD-3-Clause +license_family: BSD +size: 21085 +timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda +build_number: 101 +sha256: cb0628c5f1732f889f53a877484da98f5a0e0f47326622671396fb4f2b0cd6bd +md5: c014ad06e60441661737121d3eae8a60 +depends: +- __glibc >=2.17,<3.0.a0 +- bzip2 >=1.0.8,<2.0a0 +- ld_impl_linux-64 >=2.36.1 +- libexpat >=2.7.3,<3.0a0 +- libffi >=3.5.2,<3.6.0a0 +- libgcc >=14 +- liblzma >=5.8.2,<6.0a0 +- libmpdec >=4.0.0,<5.0a0 +- libsqlite >=3.51.2,<4.0a0 +- libuuid >=2.41.3,<3.0a0 +- libzlib >=1.3.1,<2.0a0 +- ncurses >=6.5,<7.0a0 +- openssl >=3.5.5,<4.0a0 +- python_abi 3.14.* *_cp314 +- readline >=8.3,<9.0a0 +- tk >=8.6.13,<8.7.0a0 +- tzdata +- zstd >=1.5.7,<1.6.0a0 +license: Python-2.0 +size: 36702440 +timestamp: 1770675584356 +python_site_packages_path: lib/python3.14/site-packages +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda +sha256: 74e417a768f59f02a242c25e7db0aa796627b5bc8c818863b57786072aeb85e5 +md5: 130584ad9f3a513cdd71b1fdc1244e9c +depends: +- python >=3.10 +license: BSD-3-Clause +license_family: BSD +size: 27848 +timestamp: 1772388605021 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda +sha256: 233aebd94c704ac112afefbb29cf4170b7bc606e22958906f2672081bc50638a +md5: 235765e4ea0d0301c75965985163b5a1 +depends: +- cpython 3.14.3.* +- python_abi * *_cp314 +license: Python-2.0 +size: 50062 +timestamp: 1770674497152 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 +sha256: e17bf63a30aec33432f1ead86e15e9febde9fc40a7f869c0e766be8d2db44170 +md5: 310259a5b03ff02289d7705f39e2b1d2 +depends: +- kaleido-core 0.2.1.* +- python >=3.5 +license: MIT +license_family: MIT +size: 18320 +timestamp: 1615204747600 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda +build_number: 8 +sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 +md5: 0539938c55b6b1a59b560e843ad864a4 +constrains: +- python 3.14.* *_cp314 +license: BSD-3-Clause +license_family: BSD +size: 6989 +timestamp: 1752805904792 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda +sha256: b318fb070c7a1f89980ef124b80a0b5ccf3928143708a85e0053cde0169c699d +md5: 2035f68f96be30dc60a5dfd7452c7941 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- python >=3.14,<3.15.0a0 +- python_abi 3.14.* *_cp314 +- yaml >=0.2.5,<0.3.0a0 +license: MIT +license_family: MIT +size: 202391 +timestamp: 1770223462836 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda +sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 +md5: d7d95fc8287ea7bf33e0e7116d2b95ec +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- ncurses >=6.5,<7.0a0 +license: GPL-3.0-only +license_family: GPL +size: 345073 +timestamp: 1765813471974 +- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda +sha256: 0577eedfb347ff94d0f2fa6c052c502989b028216996b45c7f21236f25864414 +md5: 870293df500ca7e18bedefa5838a22ab +depends: +- attrs >=22.2.0 +- python >=3.10 +- rpds-py >=0.7.0 +- typing_extensions >=4.4.0 +- python +license: MIT +license_family: MIT +size: 51788 +timestamp: 1760379115194 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.2.28-py314h5bd0f2a_0.conda +sha256: e085e336f1446f5263a3ec9747df8c719b6996753901181add50dc4fdd8bb2e8 +md5: 3c8b6a8c4d0ff5a264e9831eac4941f4 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- python >=3.14,<3.15.0a0 +- python_abi 3.14.* *_cp314 +license: Apache-2.0 AND CNRI-Python +license_family: PSF +size: 411924 +timestamp: 1772255161535 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda +sha256: 7813c38b79ae549504b2c57b3f33394cea4f2ad083f0994d2045c2e24cb538c5 +md5: c65df89a0b2e321045a9e01d1337b182 +depends: +- python >=3.10 +- certifi >=2017.4.17 +- charset-normalizer >=2,<4 +- idna >=2.5,<4 +- urllib3 >=1.21.1,<3 +- python +constrains: +- chardet >=3.0.2,<6 +license: Apache-2.0 +license_family: APACHE +size: 63602 +timestamp: 1766926974520 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda +sha256: b06ce84d6a10c266811a7d3adbfa1c11f13393b91cc6f8a5b468277d90be9590 +md5: 7a6289c50631d620652f5045a63eb573 +depends: +- markdown-it-py >=2.2.0 +- pygments >=2.13.0,<3.0.0 +- python >=3.10 +- typing_extensions >=4.0.0,<5.0.0 +- python +license: MIT +license_family: MIT +size: 208472 +timestamp: 1771572730357 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda +sha256: aa3fcb167321bae51998de2e94d199109c9024f25a5a063cb1c28d8f1af33436 +md5: 0c20a8ebcddb24a45da89d5e917e6cb9 +depends: +- python >=3.10 +- rich >=12 +- click >=8 +- typing-extensions >=4 +- __unix +- python +license: MIT +license_family: MIT +size: 64356 +timestamp: 1769850479089 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py314h2e6c369_0.conda +sha256: e53b0cbf3b324eaa03ca1fe1a688fdf4ab42cea9c25270b0a7307d8aaaa4f446 +md5: c1c368b5437b0d1a68f372ccf01cb133 +depends: +- python +- libgcc >=14 +- __glibc >=2.17,<3.0.a0 +- python_abi 3.14.* *_cp314 +constrains: +- __glibc >=2.17 +license: MIT +license_family: MIT +size: 376121 +timestamp: 1764543122774 +- conda: https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda +sha256: 7c65782d2511738e62c70462e89d65da4fa54d5a7e47c46667bcd27a59f81876 +md5: 472239e4eb7b5a84bb96b3ed7e3a596a +depends: +- colormath >=3.0.0 +- python >=3.9 +license: MIT +license_family: MIT +size: 22284 +timestamp: 1735770589188 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.52.0-h04a0ce9_0.conda +sha256: c9af81e7830d9c4b67a7f48e512d060df2676b29cac59e3b31f09dbfcee29c58 +md5: 7d9d7efe9541d4bb71b5934e8ee348ea +depends: +- __glibc >=2.17,<3.0.a0 +- icu >=78.2,<79.0a0 +- libgcc >=14 +- libsqlite 3.52.0 hf4e2dac_0 +- libzlib >=1.3.1,<2.0a0 +- ncurses >=6.5,<7.0a0 +- readline >=8.3,<9.0a0 +license: blessing +size: 203641 +timestamp: 1772818888368 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.12.0-py314h67fec18_3.conda +sha256: 7e395d67fd249d901beb1ae269057763c0d8c3ee5f7a348694bdb16d158a37d9 +md5: d705f9d8a1185a2b01cced191177a028 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libstdcxx >=14 +- python >=3.14,<3.15.0a0 +- python_abi 3.14.* *_cp314 +- regex >=2022.1.18 +- requests >=2.26.0 +constrains: +- __glibc >=2.17 +license: MIT +license_family: MIT +size: 939648 +timestamp: 1764028306357 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda +sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac +md5: cffd3bdd58090148f4cfcd831f4b26ab +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libzlib >=1.3.1,<2.0a0 +constrains: +- xorg-libx11 >=1.8.12,<2.0a0 +license: TCL +license_family: BSD +size: 3301196 +timestamp: 1769460227866 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda +sha256: 9ef8e47cf00e4d6dcc114eb32a1504cc18206300572ef14d76634ba29dfe1eb6 +md5: e5ce43272193b38c2e9037446c1d9206 +depends: +- python >=3.10 +- __unix +- python +license: MPL-2.0 and MIT +size: 94132 +timestamp: 1770153424136 +- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda +sha256: 39d8ae33c43cdb8f771373e149b0b4fae5a08960ac58dcca95b2f1642bb17448 +md5: 260af1b0a94f719de76b4e14094e9a3b +depends: +- importlib-metadata >=3.6 +- python >=3.10 +- typing-extensions >=4.10.0 +- typing_extensions >=4.14.0 +constrains: +- pytest >=7 +license: MIT +license_family: MIT +size: 36838 +timestamp: 1771532971545 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda +sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c +md5: edd329d7d3a4ab45dcf905899a7a6115 +depends: +- typing_extensions ==4.15.0 pyhcf101f3_0 +license: PSF-2.0 +license_family: PSF +size: 91383 +timestamp: 1756220668932 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda +sha256: 70db27de58a97aeb7ba7448366c9853f91b21137492e0b4430251a1870aa8ff4 +md5: a0a4a3035667fc34f29bfbd5c190baa6 +depends: +- python >=3.10 +- typing_extensions >=4.12.0 +license: MIT +license_family: MIT +size: 18923 +timestamp: 1764158430324 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda +sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 +md5: 0caa1af407ecff61170c9437a808404d +depends: +- python >=3.10 +- python +license: PSF-2.0 +license_family: PSF +size: 51692 +timestamp: 1756220668932 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda +sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c +md5: ad659d0a2b3e47e38d829aa8cad2d610 +license: LicenseRef-Public-Domain +size: 119135 +timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda +sha256: af641ca7ab0c64525a96fd9ad3081b0f5bcf5d1cbb091afb3f6ed5a9eee6111a +md5: 9272daa869e03efe68833e3dc7a02130 +depends: +- backports.zstd >=1.0.0 +- brotli-python >=1.2.0 +- h2 >=4,<5 +- pysocks >=1.5.6,<2.0,!=1.5.7 +- python >=3.10 +license: MIT +license_family: MIT +size: 103172 +timestamp: 1767817860341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda +sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b +md5: b2895afaf55bf96a8c8282a2e47a5de0 +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: MIT +license_family: MIT +size: 15321 +timestamp: 1762976464266 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda +sha256: 25d255fb2eef929d21ff660a0c687d38a6d2ccfbcbf0cc6aa738b12af6e9d142 +md5: 1dafce8548e38671bea82e3f5c6ce22f +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +license: MIT +license_family: MIT +size: 20591 +timestamp: 1762976546182 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda +sha256: 6d9ea2f731e284e9316d95fa61869fe7bbba33df7929f82693c121022810f4ad +md5: a77f85f77be52ff59391544bfe73390a +depends: +- libgcc >=14 +- __glibc >=2.17,<3.0.a0 +license: MIT +license_family: MIT +size: 85189 +timestamp: 1753484064210 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda +sha256: b4533f7d9efc976511a73ef7d4a2473406d7f4c750884be8e8620b0ce70f4dae +md5: 30cd29cb87d819caead4d55184c1d115 +depends: +- python >=3.10 +- python +license: MIT +license_family: MIT +size: 24194 +timestamp: 1764460141901 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda +sha256: ea4e50c465d70236408cb0bfe0115609fd14db1adcd8bd30d8918e0291f8a75f +md5: 2aadb0d17215603a82a2a6b0afd9a4cb +depends: +- __glibc >=2.17,<3.0.a0 +- libgcc >=14 +- libstdcxx >=14 +license: Zlib +license_family: Other +size: 122618 +timestamp: 1770167931827 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda +sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 +md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 +depends: +- __glibc >=2.17,<3.0.a0 +- libzlib >=1.3.1,<2.0a0 +license: BSD-3-Clause +license_family: BSD +size: 601375 +timestamp: 1764777111296 diff --git a/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt b/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt new file mode 100644 index 00000000..a55a4d49 --- /dev/null +++ b/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt @@ -0,0 +1,126 @@ + +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda#239c5e9546c38a1e884d69effcf4c882 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda#a9f577daf3de00bca7c3c76c0ecbd1de +https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda#0aa00f03f9e39fb9876085dee11a85d4 +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda#d2ffd7602c02f2b316fd921d39876885 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda#d87ff7921124eccd67248aa483c23fec +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda#4a13eeac0b5c8e5b8ab496e6c4ddd829 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda#18335a698559cdbcd86150a48bf54ba6 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.5-hecca717_0.conda#49f570f3bc4c874a06ea69b7225753af +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda#a360c33a5abe61c07959e449fa1453eb +https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda#b88d90cad08e6bc8ad540cb310a761fb +https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda#2c21e66f50753a083cbe6b80f38268fa +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda#1b08cd684f34175e4514474793d44bcb +https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda#c80d8a3b84358cb967fa81e7075fbc8a +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.0-hf4e2dac_0.conda#810d83373448da85c3f673fbcb7ad3a3 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42-h5347b49_0.conda#38ffe67b78c9d4de527be8315e5ada2c +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda#47e340acb35de30501a76c7c799c41d7 +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda#e18ad67cf881dcadee8b8d9e2f8e5f73 +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda#da1b85b6a87e141f5140bb9924cecab0 +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda#0539938c55b6b1a59b560e843ad864a4 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda#d7d95fc8287ea7bf33e0e7116d2b95ec +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda#cffd3bdd58090148f4cfcd831f4b26ab +https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda#ad659d0a2b3e47e38d829aa8cad2d610 +https://conda.anaconda.org/conda-forge/linux-64/python-3.14.4-habeac84_100_cp314.conda#a443f87920815d41bfe611296e507995 +https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.4-py314hd8ed1ab_100.conda#f111d4cfaf1fe9496f386bc98ae94452 +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.4-h4df99d1_100.conda#e4e60721757979d01d3964122f674959 +https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda#0caa1af407ecff61170c9437a808404d +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda#edd329d7d3a4ab45dcf905899a7a6115 +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda#c6b0543676ecb1fb2d7643941fe375f2 +https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda#a2ac7763a9ac75055b68f325d3255265 +https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda#8910d2c46f7e7b519129f486e0fe927a +https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda#929471569c93acefb30282a22060dcd5 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda#a9167b9571f3baa9d448faa2139d1089 +https://conda.anaconda.org/conda-forge/noarch/click-8.3.2-pyhc90fa1f_0.conda#4d18bc3af7cfcea97bd817164672a08c +https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 +https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda#b866ff7007b934d564961066c8195983 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda#a2c1eeadae7a309daed9d62c96012a2b +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda#646855f357199a12f02a87382d429b75 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda#9063115da5bc35fdc3e1002e69b9ef6e +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.32-pthreads_h94d23a6_0.conda#89d61bc91d3f39fda0ca10fcd3c68594 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h4a7cf45_openblas.conda#6d6d225559bfa6e2f3c90ee9c03d4e2e +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-6_h0358290_openblas.conda#36ae340a916635b97ac8a0655ace2a35 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h47877c9_openblas.conda#881d801569b201c2e753f03c84b85e15 +https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda#36f5b7eb328bdc204954a2225cf908e2 +https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda#071cf7b0ce333c81718b054066c15102 +https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.5-hecca717_0.conda#7de50d165039df32d38be74c1b34a910 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda#eba48a68a1a2b9d3c0d9511548db85db +https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda#fb16b4b69e3f1dcfe79d80db8fd0c55d +https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda#e289f3d17880e44b633ba911d57a321b +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda#867127763fbe935bab59815b6e0b7b5c +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda#a7970cd949a077b7cb9696379d338681 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac +https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda#164fc43f0b53b6e3a7bc7dce5e4f1dc9 +https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda#daddf757c3ecd6067b9af1df1f25d89e +https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda#fb7130c190f9b4ec91219840a05ba3ac +https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.1-pyhcf101f3_0.conda#e1c36c6121a7c9c76f2f148f1e83b983 +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda#080594bf4493e6bae2607e65390c520a +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda#9a17c4307d23318476d7fbf0fedc0cde +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda#04558c96691bed63104678757beb4f8d +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py314h2e6c369_0.conda#c1c368b5437b0d1a68f372ccf01cb133 +https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda#870293df500ca7e18bedefa5838a22ab +https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda#439cd0f567d697b20a8f45cb70a1005a +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda#ada41c863af263cc4c5fcbaff7c3e4dc +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda#d5e96b1ed75ca01906b3d2469b4ce493 +https://conda.anaconda.org/conda-forge/linux-64/mathjax-2.7.7-ha770c72_3.tar.bz2#86e69bd82c2a2c6fd29f5ab7e02b3691 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.38-h29cc59b_0.conda#e235d5566c9cc8970eb2798dd4ecf62f +https://conda.anaconda.org/conda-forge/linux-64/nss-3.118-h445c969_0.conda#567fbeed956c200c1db5782a424e58ee +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.0-h04a0ce9_0.conda#dc540e5bd5616d83a1ec46af8315ff98 +https://conda.anaconda.org/conda-forge/linux-64/kaleido-core-0.2.1-h3644ca4_0.tar.bz2#b3723b235b0758abaae8c82ce4d80146 +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda#6178c6f2fb254558238ef4e6c56fb782 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda#a752488c68f2e7c456bcbd8f16eec275 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda#6c77a605a7a689d17d4819c0f8ac9a00 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda#aea31d2e5b1091feca96fcfe945c3cf9 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda#cd5a90476766d53e901500df9215e927 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda#6f2e2c8f58160147c4d1c6f4c14cbac4 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda#b3c17d95b5a10c6e64a21fa17573e70e +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda#b2895afaf55bf96a8c8282a2e47a5de0 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda#1dafce8548e38671bea82e3f5c6ce22f +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda#92ed62436b625154323d40d5f2f11dd7 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda#ba0a9221ce1063f31692c07370d062f3 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda#5b5203189eb668f042ac2b0826244964 +https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda#e941e85e273121222580723010bd4fa2 +https://conda.anaconda.org/conda-forge/noarch/packaging-26.1-pyhc364b38_0.conda#b8ae38639d323d808da535fb71e31be8 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda#11b3379b191f63139e29c0d19dee24cd +https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda#2aadb0d17215603a82a2a6b0afd9a4cb +https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py314h8ec4b1a_0.conda#76c4757c0ec9d11f969e8eb44899307b +https://conda.anaconda.org/conda-forge/noarch/narwhals-2.20.0-pyhcf101f3_0.conda#6cac1a50359219d786453c6fef819f98 +https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda#3e9427ee186846052e81fadde8ebe96a +https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.40.0-py310hffdcd12_0.conda#8eacf9ff4d4e1ca1b52f8f3ba3e0c993 +https://conda.anaconda.org/conda-forge/noarch/polars-1.40.0-pyh58ad624_0.conda#fd16be490f5403adfbf27dd4901bbe34 +https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-compat-1.40.0-py310hbcd5346_0.conda#03a6899e17bb731c8e21b08212f1a64c +https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda#ef0340e75068ac8ff96462749b5c98e7 +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda#a77f85f77be52ff59391544bfe73390a +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda#2035f68f96be30dc60a5dfd7452c7941 +https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda#e17be1016bcc3516827b836cd3e4d9dc +https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.3-py314h2e6c369_0.conda#1f3fd537f929b8d3236f9f0f0e7f7a32 +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.3-pyhcf101f3_0.conda#f690e6f204efd2e5c06b57518a383d98 +https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda#130584ad9f3a513cdd71b1fdc1244e9c +https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2#310259a5b03ff02289d7705f39e2b1d2 +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac +https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda#9272daa869e03efe68833e3dc7a02130 +https://conda.anaconda.org/conda-forge/noarch/requests-2.33.1-pyhcf101f3_0.conda#10afbb4dbf06ff959ad25a92ccee6e59 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda#16c18772b340887160c79a6acc022db0 +https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda#0242025a3c804966bf71aa04eee82f66 +https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda#0c20a8ebcddb24a45da89d5e917e6cb9 +https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda#472239e4eb7b5a84bb96b3ed7e3a596a +https://conda.anaconda.org/conda-forge/linux-64/regex-2026.4.4-py314h5bd0f2a_0.conda#4ffb42385183c854564f1f9adcf80a63 +https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.12.0-py314h67fec18_3.conda#d705f9d8a1185a2b01cced191177a028 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda#e5ce43272193b38c2e9037446c1d9206 +https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda#260af1b0a94f719de76b4e14094e9a3b +https://conda.anaconda.org/bioconda/noarch/multiqc-1.34-pyhdfd78af_0.conda#a7111ab9a6a6146b40cbce16655ac873 +https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda#09a970fbf75e8ed1aa633827ded6aa4f +https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda#f2c23a77b25efcad57d377b34bd84941 diff --git a/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt b/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt new file mode 100644 index 00000000..a58231a0 --- /dev/null +++ b/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt @@ -0,0 +1,1502 @@ + +version: 6 +environments: +default: +channels: +- url: https://conda.anaconda.org/conda-forge/ +- url: https://conda.anaconda.org/bioconda/ +- url: https://conda.anaconda.org/bioconda/ +options: +pypi-prerelease-mode: if-necessary-or-explicit +packages: +linux-aarch64: +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py314h352cb57_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.7.4-hfae3067_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kaleido-core-0.2.1-he5a581e_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-5_haddc8a3_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-5_hd72aa62_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-5_h88aeb00_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.30-pthreads_h9d3fd7e_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.55-h1abf092_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py314hb76de3f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mathjax-2.7.7-h8af1aa0_3.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.38-h3ad9384_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nss-3.118-h544fa81_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.3-py314haac167e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.1.1-py314hac3e5ec_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-32-1.39.3-py310hff09b76_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-compat-1.39.3-py310hf00a4a2_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py314h451b6cc_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.3-hb06a95a_101_cp314.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py314h807365f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.2.28-py314h51f160d_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.30.0-py314h02b7a91_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.52.0-hf1c7be2_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.12.0-py314h6a36e60_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-ng-2.3.3-ha7cb516_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda +build_number: 20 +sha256: a2527b1d81792a0ccd2c05850960df119c2b6d8f5fdec97f2db7d25dc23b1068 +md5: 468fd3bb9e1f671d36c2cbc677e56f1d +depends: +- libgomp >=7.5.0 +constrains: +- openmp_impl <0.0a0 +license: BSD-3-Clause +license_family: BSD +size: 28926 +timestamp: 1770939656741 +- conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda +sha256: a3967b937b9abf0f2a99f3173fa4630293979bd1644709d89580e7c62a544661 +md5: aaa2a381ccc56eac91d63b6c1240312f +depends: +- cpython +- python-gil +license: MIT +license_family: MIT +size: 8191 +timestamp: 1744137672556 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda +sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 +md5: 2934f256a8acfe48f6ebb4fce6cde29c +depends: +- python >=3.9 +- typing-extensions >=4.0.0 +license: MIT +license_family: MIT +size: 18074 +timestamp: 1733247158254 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda +sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab +md5: c6b0543676ecb1fb2d7643941fe375f2 +depends: +- python >=3.10 +- python +license: MIT +license_family: MIT +size: 64927 +timestamp: 1773935801332 +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda +noarch: generic +sha256: c31ab719d256bc6f89926131e88ecd0f0c5d003fe8481852c6424f4ec6c7eb29 +md5: a2ac7763a9ac75055b68f325d3255265 +depends: +- python >=3.14 +license: BSD-3-Clause AND MIT AND EPL-2.0 +size: 7514 +timestamp: 1767044983590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py314h352cb57_1.conda +sha256: 5a5b0cdcd7ed89c6a8fb830924967f6314a2b71944bc1ebc2c105781ba97aa75 +md5: a1b5c571a0923a205d663d8678df4792 +depends: +- libgcc >=14 +- libstdcxx >=14 +- python >=3.14,<3.15.0a0 +- python >=3.14,<3.15.0a0 *_cp314 +- python_abi 3.14.* *_cp314 +constrains: +- libbrotlicommon 1.2.0 he30d5cf_1 +license: MIT +license_family: MIT +size: 373193 +timestamp: 1764017486851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda +sha256: b3495077889dde6bb370938e7db82be545c73e8589696ad0843a32221520ad4c +md5: 840d8fc0d7b3209be93080bc20e07f2d +depends: +- libgcc >=14 +license: bzip2-1.0.6 +license_family: BSD +size: 192412 +timestamp: 1771350241232 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda +sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc +md5: 4492fd26db29495f0ba23f146cd5638d +depends: +- __unix +license: ISC +size: 147413 +timestamp: 1772006283803 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda +sha256: a6b118fd1ed6099dc4fc03f9c492b88882a780fadaef4ed4f93dc70757713656 +md5: 765c4d97e877cdbbb88ff33152b86125 +depends: +- python >=3.10 +license: ISC +size: 151445 +timestamp: 1772001170301 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda +sha256: d86dfd428b2e3c364fa90e07437c8405d635aa4ef54b25ab51d9c712be4112a5 +md5: 49ee13eb9b8f44d63879c69b8a40a74b +depends: +- python >=3.10 +license: MIT +license_family: MIT +size: 58510 +timestamp: 1773660086450 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda +sha256: 38cfe1ee75b21a8361c8824f5544c3866f303af1762693a178266d7f198e8715 +md5: ea8a6c3256897cc31263de9f455e25d9 +depends: +- python >=3.10 +- __unix +- python +license: BSD-3-Clause +license_family: BSD +size: 97676 +timestamp: 1764518652276 +- conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda +sha256: 8021c76eeadbdd5784b881b165242db9449783e12ce26d6234060026fd6a8680 +md5: b866ff7007b934d564961066c8195983 +depends: +- humanfriendly >=9.1 +- python >=3.9 +license: MIT +license_family: MIT +size: 43758 +timestamp: 1733928076798 +- conda: https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda +sha256: 59c9e29800b483b390467f90e82b0da3a4fbf0612efe1c90813fca232780e160 +md5: 071cf7b0ce333c81718b054066c15102 +depends: +- networkx >=2.0 +- numpy +- python >=3.9 +license: BSD-3-Clause +license_family: BSD +size: 39326 +timestamp: 1735759976140 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda +noarch: generic +sha256: 91b06300879df746214f7363d6c27c2489c80732e46a369eb2afc234bcafb44c +md5: 3bb89e4f795e5414addaa531d6b1500a +depends: +- python >=3.14,<3.15.0a0 +- python_abi * *_cp314 +license: Python-2.0 +size: 50078 +timestamp: 1770674447292 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.7.4-hfae3067_0.conda +sha256: 5f087bef054c681edcaae84a8c2230585b938691e371ff92957a30707b7fcdf7 +md5: b304307db639831ad7caabd2eac6fca6 +depends: +- libexpat 2.7.4 hfae3067_0 +- libgcc >=14 +license: MIT +license_family: MIT +size: 137701 +timestamp: 1771259543650 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b +md5: 0c96522c6bdaed4b1566d11387caaf45 +license: BSD-3-Clause +license_family: BSD +size: 397370 +timestamp: 1566932522327 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c +md5: 34893075a5c9e55cdafac56607368fc6 +license: OFL-1.1 +license_family: Other +size: 96530 +timestamp: 1620479909603 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 +md5: 4d59c254e01d9cde7957100457e2d5fb +license: OFL-1.1 +license_family: Other +size: 700814 +timestamp: 1620479612257 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 +md5: 49023d73832ef61042f6a237cb2687e7 +license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 +license_family: Other +size: 1620504 +timestamp: 1727511233259 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda +sha256: 835aff8615dd8d8fff377679710ce81b8a2c47b6404e21a92fb349fda193a15c +md5: 0fed1ff55f4938a65907f3ecf62609db +depends: +- libexpat >=2.7.4,<3.0a0 +- libfreetype >=2.14.1 +- libfreetype6 >=2.14.1 +- libgcc >=14 +- libuuid >=2.41.3,<3.0a0 +- libzlib >=1.3.1,<2.0a0 +license: MIT +license_family: MIT +size: 279044 +timestamp: 1771382728182 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda +sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 +md5: a7970cd949a077b7cb9696379d338681 +depends: +- font-ttf-ubuntu +- font-ttf-inconsolata +- font-ttf-dejavu-sans-mono +- font-ttf-source-code-pro +license: BSD-3-Clause +license_family: BSD +size: 4059 +timestamp: 1762351264405 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda +sha256: 84c64443368f84b600bfecc529a1194a3b14c3656ee2e832d15a20e0329b6da3 +md5: 164fc43f0b53b6e3a7bc7dce5e4f1dc9 +depends: +- python >=3.10 +- hyperframe >=6.1,<7 +- hpack >=4.1,<5 +- python +license: MIT +license_family: MIT +size: 95967 +timestamp: 1756364871835 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda +sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba +md5: 0a802cb9888dd14eeefc611f05c40b6e +depends: +- python >=3.9 +license: MIT +license_family: MIT +size: 30731 +timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda +sha256: fa2071da7fab758c669e78227e6094f6b3608228740808a6de5d6bce83d9e52d +md5: 7fe569c10905402ed47024fc481bb371 +depends: +- __unix +- python >=3.9 +license: MIT +license_family: MIT +size: 73563 +timestamp: 1733928021866 +- conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda +sha256: 6c4343b376d0b12a4c75ab992640970d36c933cad1fd924f6a1181fa91710e80 +md5: daddf757c3ecd6067b9af1df1f25d89e +depends: +- python >=3.10 +license: MIT +license_family: MIT +size: 67994 +timestamp: 1766267728652 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda +sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 +md5: 8e6923fc12f1fe8f8c4e5c9f343256ac +depends: +- python >=3.9 +license: MIT +license_family: MIT +size: 17397 +timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda +sha256: 49ba6aed2c6b482bb0ba41078057555d29764299bc947b990708617712ef6406 +md5: 546da38c2fa9efacf203e2ad3f987c59 +depends: +- libgcc >=14 +- libstdcxx >=14 +license: MIT +license_family: MIT +size: 12837286 +timestamp: 1773822650615 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda +sha256: ae89d0299ada2a3162c2614a9d26557a92aa6a77120ce142f8e0109bbf0342b0 +md5: 53abe63df7e10a6ba605dc5f9f961d36 +depends: +- python >=3.10 +license: BSD-3-Clause +license_family: BSD +size: 50721 +timestamp: 1760286526795 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda +sha256: 82ab2a0d91ca1e7e63ab6a4939356667ef683905dea631bc2121aa534d347b16 +md5: 080594bf4493e6bae2607e65390c520a +depends: +- python >=3.10 +- zipp >=3.20 +- python +license: Apache-2.0 +license_family: APACHE +size: 34387 +timestamp: 1773931568510 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda +sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b +md5: 04558c96691bed63104678757beb4f8d +depends: +- markupsafe >=2.0 +- python >=3.10 +- python +license: BSD-3-Clause +license_family: BSD +size: 120685 +timestamp: 1764517220861 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda +sha256: db973a37d75db8e19b5f44bbbdaead0c68dde745407f281e2a7fe4db74ec51d7 +md5: ada41c863af263cc4c5fcbaff7c3e4dc +depends: +- attrs >=22.2.0 +- jsonschema-specifications >=2023.3.6 +- python >=3.10 +- referencing >=0.28.4 +- rpds-py >=0.25.0 +- python +license: MIT +license_family: MIT +size: 82356 +timestamp: 1767839954256 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda +sha256: 0a4f3b132f0faca10c89fdf3b60e15abb62ded6fa80aebfc007d05965192aa04 +md5: 439cd0f567d697b20a8f45cb70a1005a +depends: +- python >=3.10 +- referencing >=0.31.0 +- python +license: MIT +license_family: MIT +size: 19236 +timestamp: 1757335715225 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kaleido-core-0.2.1-he5a581e_0.tar.bz2 +sha256: d3c7f4797566e6f983d16c2a87063a18e4b2d819a66230190a21584d70042755 +md5: 4f0d284f5d11e04277b552eb1c172c7f +depends: +- __glibc >=2.17,<3.0.a0 +- expat >=2.2.10,<3.0.0a0 +- fontconfig +- fonts-conda-forge +- libgcc-ng >=9.3.0 +- mathjax 2.7.* +- nspr >=4.29,<5.0a0 +- nss >=3.62,<4.0a0 +- sqlite >=3.34.0,<4.0a0 +license: MIT +license_family: MIT +size: 65750397 +timestamp: 1615199465742 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda +sha256: 379ef5e91a587137391a6149755d0e929f1a007d2dcb211318ac670a46c8596f +md5: bb960f01525b5e001608afef9d47b79c +depends: +- libgcc >=14 +- libjpeg-turbo >=3.1.2,<4.0a0 +- libtiff >=4.7.1,<4.8.0a0 +license: MIT +license_family: MIT +size: 293039 +timestamp: 1768184778398 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda +sha256: 7abd913d81a9bf00abb699e8987966baa2065f5132e37e815f92d90fc6bba530 +md5: a21644fc4a83da26452a718dc9468d5f +depends: +- zstd >=1.5.7,<1.6.0a0 +constrains: +- binutils_impl_linux-aarch64 2.45.1 +license: GPL-3.0-only +license_family: GPL +size: 875596 +timestamp: 1774197520746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda +sha256: 8957fd460c1c132c8031f65fd5f56ec3807fd71b7cab2c5e2b0937b13404ab36 +md5: d13423b06447113a90b5b1366d4da171 +depends: +- libgcc >=14 +- libstdcxx >=14 +license: Apache-2.0 +license_family: Apache +size: 240444 +timestamp: 1773114901155 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-5_haddc8a3_openblas.conda +build_number: 5 +sha256: 700f3c03d0fba8e687a345404a45fbabe781c1cf92242382f62cef2948745ec4 +md5: 5afcea37a46f76ec1322943b3c4dfdc0 +depends: +- libopenblas >=0.3.30,<0.3.31.0a0 +- libopenblas >=0.3.30,<1.0a0 +constrains: +- mkl <2026 +- libcblas 3.11.0 5*_openblas +- liblapack 3.11.0 5*_openblas +- liblapacke 3.11.0 5*_openblas +- blas 2.305 openblas +license: BSD-3-Clause +license_family: BSD +size: 18369 +timestamp: 1765818610617 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-5_hd72aa62_openblas.conda +build_number: 5 +sha256: 3fad5c9de161dccb4e42c8b1ae8eccb33f4ed56bccbcced9cbb0956ae7869e61 +md5: 0b2f1143ae2d0aa4c991959d0daaf256 +depends: +- libblas 3.11.0 5_haddc8a3_openblas +constrains: +- liblapack 3.11.0 5*_openblas +- liblapacke 3.11.0 5*_openblas +- blas 2.305 openblas +license: BSD-3-Clause +license_family: BSD +size: 18371 +timestamp: 1765818618899 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda +sha256: 48814b73bd462da6eed2e697e30c060ae16af21e9fbed30d64feaf0aad9da392 +md5: a9138815598fe6b91a1d6782ca657b0c +depends: +- libgcc >=14 +license: MIT +license_family: MIT +size: 71117 +timestamp: 1761979776756 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda +sha256: 995ce3ad96d0f4b5ed6296b051a0d7b6377718f325bc0e792fbb96b0e369dad7 +md5: 57f3b3da02a50a1be2a6fe847515417d +depends: +- libgcc >=14 +constrains: +- expat 2.7.4.* +license: MIT +license_family: MIT +size: 76564 +timestamp: 1771259530958 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda +sha256: 3df4c539449aabc3443bbe8c492c01d401eea894603087fca2917aa4e1c2dea9 +md5: 2f364feefb6a7c00423e80dcb12db62a +depends: +- libgcc >=14 +license: MIT +license_family: MIT +size: 55952 +timestamp: 1769456078358 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda +sha256: 752e4f66283d7deb4c6fd47d88df644d8daa2aaa825a54f3bf350a625190192a +md5: a229e22d4d8814a07702b0919d8e6701 +depends: +- libfreetype6 >=2.14.3 +license: GPL-2.0-only OR FTL +size: 8125 +timestamp: 1774301094057 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda +sha256: 8e6b27fe4eec4c2fa7b7769a21973734c8dba1de80086fb0213e58375ac09f4c +md5: b99ed99e42dafb27889483b3098cace7 +depends: +- libgcc >=14 +- libpng >=1.6.55,<1.7.0a0 +- libzlib >=1.3.2,<2.0a0 +constrains: +- freetype >=2.14.3 +license: GPL-2.0-only OR FTL +size: 422941 +timestamp: 1774301093473 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda +sha256: 43df385bedc1cab11993c4369e1f3b04b4ca5d0ea16cba6a0e7f18dbc129fcc9 +md5: 552567ea2b61e3a3035759b2fdb3f9a6 +depends: +- _openmp_mutex >=4.5 +constrains: +- libgcc-ng ==15.2.0=*_18 +- libgomp 15.2.0 h8acb6b2_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 622900 +timestamp: 1771378128706 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda +sha256: 83bb0415f59634dccfa8335d4163d1f6db00a27b36666736f9842b650b92cf2f +md5: 4feebd0fbf61075a1a9c2e9b3936c257 +depends: +- libgcc 15.2.0 h8acb6b2_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 27568 +timestamp: 1771378136019 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_18.conda +sha256: 7dcd7dff2505d56fd5272a6e712ec912f50a46bf07dc6873a7e853694304e6e4 +md5: 41f261f5e4e2e8cbd236c2f1f15dae1b +depends: +- libgfortran5 15.2.0 h1b7bec0_18 +constrains: +- libgfortran-ng ==15.2.0=*_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 27587 +timestamp: 1771378169244 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_18.conda +sha256: 85347670dfb4a8d4c13cd7cae54138dcf2b1606b6bede42eef5507bf5f9660c6 +md5: 574d88ce3348331e962cfa5ed451b247 +depends: +- libgcc >=15.2.0 +constrains: +- libgfortran 15.2.0 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 1486341 +timestamp: 1771378148102 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda +sha256: fc716f11a6a8525e27a5d332ef6a689210b0d2a4dd1133edc0f530659aa9faa6 +md5: 4faa39bf919939602e594253bd673958 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 588060 +timestamp: 1771378040807 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda +sha256: 84064c7c53a64291a585d7215fe95ec42df74203a5bf7615d33d49a3b0f08bb6 +md5: 5109d7f837a3dfdf5c60f60e311b041f +depends: +- libgcc >=14 +constrains: +- jpeg <0.0.0a +license: IJG AND BSD-3-Clause AND Zlib +size: 691818 +timestamp: 1762094728337 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-5_h88aeb00_openblas.conda +build_number: 5 +sha256: 692222d186d3ffbc99eaf04b5b20181fd26aee1edec1106435a0a755c57cce86 +md5: 88d1e4133d1182522b403e9ba7435f04 +depends: +- libblas 3.11.0 5_haddc8a3_openblas +constrains: +- liblapacke 3.11.0 5*_openblas +- blas 2.305 openblas +- libcblas 3.11.0 5*_openblas +license: BSD-3-Clause +license_family: BSD +size: 18392 +timestamp: 1765818627104 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda +sha256: 843c46e20519651a3e357a8928352b16c5b94f4cd3d5481acc48be2e93e8f6a3 +md5: 96944e3c92386a12755b94619bae0b35 +depends: +- libgcc >=14 +constrains: +- xz 5.8.2.* +license: 0BSD +size: 125916 +timestamp: 1768754941722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda +sha256: 57c0dd12d506e84541c4e877898bd2a59cca141df493d34036f18b2751e0a453 +md5: 7b9813e885482e3ccb1fa212b86d7fd0 +depends: +- libgcc >=14 +license: BSD-2-Clause +license_family: BSD +size: 114056 +timestamp: 1769482343003 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.30-pthreads_h9d3fd7e_4.conda +sha256: 794a7270ea049ec931537874cd8d2de0ef4b3cef71c055cfd8b4be6d2f4228b0 +md5: 11d7d57b7bdd01da745bbf2b67020b2e +depends: +- libgcc >=14 +- libgfortran +- libgfortran5 >=14.3.0 +constrains: +- openblas >=0.3.30,<0.3.31.0a0 +license: BSD-3-Clause +license_family: BSD +size: 4959359 +timestamp: 1763114173544 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.55-h1abf092_0.conda +sha256: c7378c6b79de4d571d00ad1caf0a4c19d43c9c94077a761abb6ead44d891f907 +md5: be4088903b94ea297975689b3c3aeb27 +depends: +- libgcc >=14 +- libzlib >=1.3.1,<2.0a0 +license: zlib-acknowledgement +size: 340156 +timestamp: 1770691477245 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda +sha256: 1ddaf91b44fae83856276f4cb7ce544ffe41d4b55c1e346b504c6b45f19098d6 +md5: 77891484f18eca74b8ad83694da9815e +depends: +- icu >=78.2,<79.0a0 +- libgcc >=14 +- libzlib >=1.3.1,<2.0a0 +license: blessing +size: 952296 +timestamp: 1772818881550 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda +sha256: 31fdb9ffafad106a213192d8319b9f810e05abca9c5436b60e507afb35a6bc40 +md5: f56573d05e3b735cb03efeb64a15f388 +depends: +- libgcc 15.2.0 h8acb6b2_18 +constrains: +- libstdcxx-ng ==15.2.0=*_18 +license: GPL-3.0-only WITH GCC-exception-3.1 +license_family: GPL +size: 5541411 +timestamp: 1771378162499 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda +sha256: 7ff79470db39e803e21b8185bc8f19c460666d5557b1378d1b1e857d929c6b39 +md5: 8c6fd84f9c87ac00636007c6131e457d +depends: +- lerc >=4.0.0,<5.0a0 +- libdeflate >=1.25,<1.26.0a0 +- libgcc >=14 +- libjpeg-turbo >=3.1.0,<4.0a0 +- liblzma >=5.8.1,<6.0a0 +- libstdcxx >=14 +- libwebp-base >=1.6.0,<2.0a0 +- libzlib >=1.3.1,<2.0a0 +- zstd >=1.5.7,<1.6.0a0 +license: HPND +size: 488407 +timestamp: 1762022048105 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda +sha256: c37a8e89b700646f3252608f8368e7eb8e2a44886b92776e57ad7601fc402a11 +md5: cf2861212053d05f27ec49c3784ff8bb +depends: +- libgcc >=14 +license: BSD-3-Clause +license_family: BSD +size: 43453 +timestamp: 1766271546875 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda +sha256: b03700a1f741554e8e5712f9b06dd67e76f5301292958cd3cb1ac8c6fdd9ed25 +md5: 24e92d0942c799db387f5c9d7b81f1af +depends: +- libgcc >=14 +constrains: +- libwebp 1.6.0 +license: BSD-3-Clause +license_family: BSD +size: 359496 +timestamp: 1752160685488 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda +sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b +md5: cd14ee5cca2464a425b1dbfc24d90db2 +depends: +- libgcc >=13 +- pthread-stubs +- xorg-libxau >=1.0.11,<2.0a0 +- xorg-libxdmcp +license: MIT +license_family: MIT +size: 397493 +timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda +sha256: eb111e32e5a7313a5bf799c7fb2419051fa2fe7eff74769fac8d5a448b309f7f +md5: 502006882cf5461adced436e410046d1 +constrains: +- zlib 1.3.2 *_2 +license: Zlib +license_family: Other +size: 69833 +timestamp: 1774072605429 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda +sha256: 20e0892592a3e7c683e3d66df704a9425d731486a97c34fc56af4da1106b2b6b +md5: ba0a9221ce1063f31692c07370d062f3 +depends: +- importlib-metadata >=4.4 +- python >=3.10 +- python +license: BSD-3-Clause +license_family: BSD +size: 85893 +timestamp: 1770694658918 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda +sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e +md5: 5b5203189eb668f042ac2b0826244964 +depends: +- mdurl >=0.1,<1 +- python >=3.10 +license: MIT +license_family: MIT +size: 64736 +timestamp: 1754951288511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py314hb76de3f_1.conda +sha256: 383c188496d13a55658c06e61e7d4cdff2c9f9d5a0648769fca8250bece7e0ef +md5: e5de3c36dd548b35ff2a8aa49208dcb3 +depends: +- libgcc >=14 +- python >=3.14,<3.15.0a0 +- python_abi 3.14.* *_cp314 +constrains: +- jinja2 >=3.0.0 +license: BSD-3-Clause +license_family: BSD +size: 27913 +timestamp: 1772446407659 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mathjax-2.7.7-h8af1aa0_3.tar.bz2 +sha256: 8fd4c79d6eda3d4cba73783114305a53a154ada4d1e334d4e02cb3521429599b +md5: 7b08314a6867a9d5648a1c3265e9eb8e +license: Apache-2.0 +license_family: Apache +size: 22257008 +timestamp: 1662784555011 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda +sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 +md5: 592132998493b3ff25fd7479396e8351 +depends: +- python >=3.9 +license: MIT +license_family: MIT +size: 14465 +timestamp: 1733255681319 +- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda +sha256: f005760b13093362fc9c997d603dd487de32ab2e821a3cbce52a42bcb8136517 +md5: 698a8a27c2b9d8a542c70cb47099a75e +depends: +- click +- coloredlogs +- humanize +- importlib-metadata +- jinja2 >=3.0.0 +- jsonschema +- markdown +- natsort +- numpy +- packaging +- pillow >=10.2.0 +- plotly >=5.18 +- polars-lts-cpu +- pyaml-env +- pydantic >=2.7.1 +- python >=3.8,!=3.14.1 +- python-dotenv +- python-kaleido 0.2.1 +- pyyaml >=4 +- requests +- rich >=10 +- rich-click +- spectra >=0.0.10 +- tiktoken +- tqdm +- typeguard +license: GPL-3.0-or-later +license_family: GPL3 +size: 4198799 +timestamp: 1765300743879 +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda +sha256: 541fd4390a0687228b8578247f1536a821d9261389a65585af9d1a6f2a14e1e0 +md5: 30bec5e8f4c3969e2b1bd407c5e52afb +depends: +- python >=3.10 +- python +license: MIT +size: 280459 +timestamp: 1774380620329 +- conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda +sha256: aeb1548eb72e4f198e72f19d242fb695b35add2ac7b2c00e0d83687052867680 +md5: e941e85e273121222580723010bd4fa2 +depends: +- python >=3.9 +- python +license: MIT +license_family: MIT +size: 39262 +timestamp: 1770905275632 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda +sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 +md5: 182afabe009dc78d8b73100255ee6868 +depends: +- libgcc >=13 +license: X11 AND BSD-3-Clause +size: 926034 +timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda +sha256: f6a82172afc50e54741f6f84527ef10424326611503c64e359e25a19a8e4c1c6 +md5: a2c1eeadae7a309daed9d62c96012a2b +depends: +- python >=3.11 +- python +constrains: +- numpy >=1.25 +- scipy >=1.11.2 +- matplotlib-base >=3.8 +- pandas >=2.0 +license: BSD-3-Clause +license_family: BSD +size: 1587439 +timestamp: 1765215107045 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.38-h3ad9384_0.conda +sha256: 78a06e89285fef242e272998b292c1e621e3ee3dd4fba62ec014e503c7ec118f +md5: 6dd4f07147774bf720075a210f8026b9 +depends: +- libgcc >=14 +- libstdcxx >=14 +license: MPL-2.0 +license_family: MOZILLA +size: 235140 +timestamp: 1762350120355 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nss-3.118-h544fa81_0.conda +sha256: 48942696889367ffd448f8dccfc080fb7e130b9938a4a3b6b20ef8e6af856463 +md5: 4540f9570d12db2150f42ba036154552 +depends: +- libgcc >=14 +- libsqlite >=3.51.0,<4.0a0 +- libstdcxx >=14 +- libzlib >=1.3.1,<2.0a0 +- nspr >=4.38,<5.0a0 +license: MPL-2.0 +license_family: MOZILLA +size: 2061869 +timestamp: 1763490303490 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.3-py314haac167e_0.conda +sha256: a6d42fd88afc57c3b0a57b21a12eff7492dfc419bb61ee3f74e9ba6261dabc88 +md5: 25d896c331481145720a21e5145fad65 +depends: +- python +- libgcc >=14 +- python 3.14.* *_cp314 +- libstdcxx >=14 +- libcblas >=3.9.0,<4.0a0 +- liblapack >=3.9.0,<4.0a0 +- python_abi 3.14.* *_cp314 +- libblas >=3.9.0,<4.0a0 +constrains: +- numpy-base <0a0 +license: BSD-3-Clause +license_family: BSD +size: 8008045 +timestamp: 1773839355275 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda +sha256: bd1bc8bdde5e6c5cbac42d462b939694e40b59be6d0698f668515908640c77b8 +md5: cea962410e327262346d48d01f05936c +depends: +- libgcc >=14 +- libpng >=1.6.50,<1.7.0a0 +- libstdcxx >=14 +- libtiff >=4.7.1,<4.8.0a0 +- libzlib >=1.3.1,<2.0a0 +license: BSD-2-Clause +license_family: BSD +size: 392636 +timestamp: 1758489353577 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda +sha256: 7f8048c0e75b2620254218d72b4ae7f14136f1981c5eb555ef61645a9344505f +md5: 25f5885f11e8b1f075bccf4a2da91c60 +depends: +- ca-certificates +- libgcc >=14 +license: Apache-2.0 +license_family: Apache +size: 3692030 +timestamp: 1769557678657 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda +sha256: c1fc0f953048f743385d31c468b4a678b3ad20caffdeaa94bed85ba63049fd58 +md5: b76541e68fea4d511b1ac46a28dcd2c6 +depends: +- python >=3.8 +- python +license: Apache-2.0 +license_family: APACHE +size: 72010 +timestamp: 1769093650580 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.1.1-py314hac3e5ec_0.conda +sha256: 1ca2d1616baad9bccb7ebc425ef2dcd6cebe742fbe91edf226fb606ad371ca0f +md5: d3c959c7efe560b2d7da459d69121fe9 +depends: +- python +- python 3.14.* *_cp314 +- libgcc >=14 +- zlib-ng >=2.3.3,<2.4.0a0 +- libwebp-base >=1.6.0,<2.0a0 +- tk >=8.6.13,<8.7.0a0 +- libfreetype >=2.14.1 +- libfreetype6 >=2.14.1 +- libtiff >=4.7.1,<4.8.0a0 +- lcms2 >=2.18,<3.0a0 +- python_abi 3.14.* *_cp314 +- openjpeg >=2.5.4,<3.0a0 +- libjpeg-turbo >=3.1.2,<4.0a0 +- libxcb >=1.17.0,<2.0a0 +license: HPND +size: 1051828 +timestamp: 1770794010335 +- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda +sha256: c418d325359fc7a0074cea7f081ef1bce26e114d2da8a0154c5d27ecc87a08e7 +md5: 3e9427ee186846052e81fadde8ebe96a +depends: +- narwhals >=1.15.1 +- packaging +- python >=3.10 +constrains: +- ipywidgets >=7.6 +license: MIT +license_family: MIT +size: 5251872 +timestamp: 1772628857717 +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda +sha256: d332c2d5002fc440ae37ed9679ffc21b552f18d20232390005d1dd3bce0888d3 +md5: d5a4e013a30dd8dfde9ab39f45aaf9c1 +depends: +- polars-runtime-32 ==1.39.3 +- python >=3.10 +- python +constrains: +- numpy >=1.16.0 +- pyarrow >=7.0.0 +- fastexcel >=0.9 +- openpyxl >=3.0.0 +- xlsx2csv >=0.8.0 +- connectorx >=0.3.2 +- deltalake >=1.0.0 +- pyiceberg >=0.7.1 +- altair >=5.4.0 +- great_tables >=0.8.0 +- polars-runtime-32 ==1.39.3 +- polars-runtime-64 ==1.39.3 +- polars-runtime-compat ==1.39.3 +license: MIT +license_family: MIT +size: 533495 +timestamp: 1774207987966 +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda +sha256: e466fb31f67ba9bde18deafeb34263ca5eb25807f39ead0e9d753a8e82c4c4f4 +md5: ef0340e75068ac8ff96462749b5c98e7 +depends: +- polars >=1.34.0 +- polars-runtime-compat >=1.34.0 +license: MIT +license_family: MIT +size: 3902 +timestamp: 1760206808444 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-32-1.39.3-py310hff09b76_1.conda +noarch: python +sha256: c070be507c5a90df397a47ae0299660be437d5546d68f1bc0fa4402c9f07d59e +md5: 3c1a7c6b4ba8b9fb773ace9723f8a5db +depends: +- python +- libgcc >=14 +- libstdcxx >=14 +- _python_abi3_support 1.* +- cpython >=3.10 +constrains: +- __glibc >=2.17 +license: MIT +license_family: MIT +size: 34785466 +timestamp: 1774207998285 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-compat-1.39.3-py310hf00a4a2_1.conda +noarch: python +sha256: 683315f1a49e47ce72bf9462419733b40b588b2b3106552d95fd4cd994e174de +md5: dd3464e2132dc3a783e76e5078870c76 +depends: +- python +- libgcc >=14 +- libstdcxx >=14 +- _python_abi3_support 1.* +- cpython >=3.10 +constrains: +- __glibc >=2.17 +license: MIT +license_family: MIT +size: 34652491 +timestamp: 1774207996879 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda +sha256: e9cbcbc94e151ada3d6dc365380aaaf591f65012c16d9a2abaea4b9b90adc402 +md5: ab7288cc39545556d1bc5e71ab2df9a9 +depends: +- libgcc >=14 +- ncurses >=6.5,<7.0a0 +license: GPL-2.0-or-later AND LGPL-2.0-or-later +license_family: GPL +size: 636733 +timestamp: 1769712412683 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda +sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba +md5: bb5a90c93e3bac3d5690acf76b4a6386 +depends: +- libgcc >=13 +license: MIT +license_family: MIT +size: 8342 +timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda +sha256: 58994e0d2ea8584cb399546e6f6896d771995e6121d1a7b6a2c9948388358932 +md5: e17be1016bcc3516827b836cd3e4d9dc +depends: +- python >=3.9 +- pyyaml >=5.0,<=7.0 +license: MIT +license_family: MIT +size: 14645 +timestamp: 1736766960536 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda +sha256: 868569d9505b7fe246c880c11e2c44924d7613a8cdcc1f6ef85d5375e892f13d +md5: c3946ed24acdb28db1b5d63321dbca7d +depends: +- typing-inspection >=0.4.2 +- typing_extensions >=4.14.1 +- python >=3.10 +- typing-extensions >=4.6.1 +- annotated-types >=0.6.0 +- pydantic-core ==2.41.5 +- python +license: MIT +license_family: MIT +size: 340482 +timestamp: 1764434463101 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py314h451b6cc_1.conda +sha256: f8acb2d03ebe80fed0032b9a989fc9acfb6735e3cd3f8c704b72728cb31868f6 +md5: 28f5027a1e04d67aa13fac1c5ba79693 +depends: +- python +- typing-extensions >=4.6.0,!=4.7.0 +- libgcc >=14 +- python 3.14.* *_cp314 +- python_abi 3.14.* *_cp314 +constrains: +- __glibc >=2.17 +license: MIT +license_family: MIT +size: 1828339 +timestamp: 1762989038561 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda +sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a +md5: 6b6ece66ebcae2d5f326c77ef2c5a066 +depends: +- python >=3.9 +license: BSD-2-Clause +license_family: BSD +size: 889287 +timestamp: 1750615908735 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda +sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 +md5: 461219d1a5bd61342293efa2c0c90eac +depends: +- __unix +- python >=3.9 +license: BSD-3-Clause +license_family: BSD +size: 21085 +timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.3-hb06a95a_101_cp314.conda +build_number: 101 +sha256: 87e9dff5646aba87cecfbc08789634c855871a7325169299d749040b0923a356 +md5: 205011b36899ff0edf41b3db0eda5a44 +depends: +- bzip2 >=1.0.8,<2.0a0 +- ld_impl_linux-aarch64 >=2.36.1 +- libexpat >=2.7.3,<3.0a0 +- libffi >=3.5.2,<3.6.0a0 +- libgcc >=14 +- liblzma >=5.8.2,<6.0a0 +- libmpdec >=4.0.0,<5.0a0 +- libsqlite >=3.51.2,<4.0a0 +- libuuid >=2.41.3,<3.0a0 +- libzlib >=1.3.1,<2.0a0 +- ncurses >=6.5,<7.0a0 +- openssl >=3.5.5,<4.0a0 +- python_abi 3.14.* *_cp314 +- readline >=8.3,<9.0a0 +- tk >=8.6.13,<8.7.0a0 +- tzdata +- zstd >=1.5.7,<1.6.0a0 +license: Python-2.0 +size: 37305578 +timestamp: 1770674395875 +python_site_packages_path: lib/python3.14/site-packages +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda +sha256: 74e417a768f59f02a242c25e7db0aa796627b5bc8c818863b57786072aeb85e5 +md5: 130584ad9f3a513cdd71b1fdc1244e9c +depends: +- python >=3.10 +license: BSD-3-Clause +license_family: BSD +size: 27848 +timestamp: 1772388605021 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda +sha256: 233aebd94c704ac112afefbb29cf4170b7bc606e22958906f2672081bc50638a +md5: 235765e4ea0d0301c75965985163b5a1 +depends: +- cpython 3.14.3.* +- python_abi * *_cp314 +license: Python-2.0 +size: 50062 +timestamp: 1770674497152 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 +sha256: e17bf63a30aec33432f1ead86e15e9febde9fc40a7f869c0e766be8d2db44170 +md5: 310259a5b03ff02289d7705f39e2b1d2 +depends: +- kaleido-core 0.2.1.* +- python >=3.5 +license: MIT +license_family: MIT +size: 18320 +timestamp: 1615204747600 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda +build_number: 8 +sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 +md5: 0539938c55b6b1a59b560e843ad864a4 +constrains: +- python 3.14.* *_cp314 +license: BSD-3-Clause +license_family: BSD +size: 6989 +timestamp: 1752805904792 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py314h807365f_1.conda +sha256: 496b5e65dfdd0aaaaa5de0dcaaf3bceea00fcb4398acf152f89e567c82ec1046 +md5: 9ae2c92975118058bd720e9ba2bb7c58 +depends: +- libgcc >=14 +- python >=3.14,<3.15.0a0 +- python >=3.14,<3.15.0a0 *_cp314 +- python_abi 3.14.* *_cp314 +- yaml >=0.2.5,<0.3.0a0 +license: MIT +license_family: MIT +size: 195678 +timestamp: 1770223441816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda +sha256: fe695f9d215e9a2e3dd0ca7f56435ab4df24f5504b83865e3d295df36e88d216 +md5: 3d49cad61f829f4f0e0611547a9cda12 +depends: +- libgcc >=14 +- ncurses >=6.5,<7.0a0 +license: GPL-3.0-only +license_family: GPL +size: 357597 +timestamp: 1765815673644 +- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda +sha256: 0577eedfb347ff94d0f2fa6c052c502989b028216996b45c7f21236f25864414 +md5: 870293df500ca7e18bedefa5838a22ab +depends: +- attrs >=22.2.0 +- python >=3.10 +- rpds-py >=0.7.0 +- typing_extensions >=4.4.0 +- python +license: MIT +license_family: MIT +size: 51788 +timestamp: 1760379115194 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.2.28-py314h51f160d_0.conda +sha256: 2080ecea825e1ef91a2422cc0bc63e85db9e38908ed17657fb8f41de7a6eee71 +md5: 818aa2c9f6b3c808da5e7be22a9a424c +depends: +- libgcc >=14 +- python >=3.14,<3.15.0a0 +- python >=3.14,<3.15.0a0 *_cp314 +- python_abi 3.14.* *_cp314 +license: Apache-2.0 AND CNRI-Python +license_family: PSF +size: 408097 +timestamp: 1772255205521 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda +sha256: 7813c38b79ae549504b2c57b3f33394cea4f2ad083f0994d2045c2e24cb538c5 +md5: c65df89a0b2e321045a9e01d1337b182 +depends: +- python >=3.10 +- certifi >=2017.4.17 +- charset-normalizer >=2,<4 +- idna >=2.5,<4 +- urllib3 >=1.21.1,<3 +- python +constrains: +- chardet >=3.0.2,<6 +license: Apache-2.0 +license_family: APACHE +size: 63602 +timestamp: 1766926974520 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda +sha256: b06ce84d6a10c266811a7d3adbfa1c11f13393b91cc6f8a5b468277d90be9590 +md5: 7a6289c50631d620652f5045a63eb573 +depends: +- markdown-it-py >=2.2.0 +- pygments >=2.13.0,<3.0.0 +- python >=3.10 +- typing_extensions >=4.0.0,<5.0.0 +- python +license: MIT +license_family: MIT +size: 208472 +timestamp: 1771572730357 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda +sha256: aa3fcb167321bae51998de2e94d199109c9024f25a5a063cb1c28d8f1af33436 +md5: 0c20a8ebcddb24a45da89d5e917e6cb9 +depends: +- python >=3.10 +- rich >=12 +- click >=8 +- typing-extensions >=4 +- __unix +- python +license: MIT +license_family: MIT +size: 64356 +timestamp: 1769850479089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.30.0-py314h02b7a91_0.conda +sha256: a587240f16eac7c6a80f9585cef679cd1cb9a287b8dfcdd36dcef1f7e7db15dc +md5: e7f6ed9e60043bb5cbcc527764897f0d +depends: +- python +- libgcc >=14 +- python_abi 3.14.* *_cp314 +constrains: +- __glibc >=2.17 +license: MIT +license_family: MIT +size: 376332 +timestamp: 1764543345455 +- conda: https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda +sha256: 7c65782d2511738e62c70462e89d65da4fa54d5a7e47c46667bcd27a59f81876 +md5: 472239e4eb7b5a84bb96b3ed7e3a596a +depends: +- colormath >=3.0.0 +- python >=3.9 +license: MIT +license_family: MIT +size: 22284 +timestamp: 1735770589188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.52.0-hf1c7be2_0.conda +sha256: 4f8523f5341f0d9e1547085206c6c1f71f9fc7c277443ca363a8cf98add8fc01 +md5: d9634079df93a65ee045b3c75f35cae1 +depends: +- icu >=78.2,<79.0a0 +- libgcc >=14 +- libsqlite 3.52.0 h10b116e_0 +- libzlib >=1.3.1,<2.0a0 +- ncurses >=6.5,<7.0a0 +- readline >=8.3,<9.0a0 +license: blessing +size: 209416 +timestamp: 1772818891689 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.12.0-py314h6a36e60_3.conda +sha256: c1da41c79262b27efa168407cfecc47b20270e5fc071a8307f95a2c85fb94170 +md5: 55bf7b559202236157b14323b40f19e6 +depends: +- libgcc >=14 +- libstdcxx >=14 +- python >=3.14,<3.15.0a0 +- python_abi 3.14.* *_cp314 +- regex >=2022.1.18 +- requests >=2.26.0 +constrains: +- __glibc >=2.17 +license: MIT +license_family: MIT +size: 914402 +timestamp: 1764030357702 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda +sha256: e25c314b52764219f842b41aea2c98a059f06437392268f09b03561e4f6e5309 +md5: 7fc6affb9b01e567d2ef1d05b84aa6ed +depends: +- libgcc >=14 +- libzlib >=1.3.1,<2.0a0 +constrains: +- xorg-libx11 >=1.8.12,<2.0a0 +license: TCL +license_family: BSD +size: 3368666 +timestamp: 1769464148928 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda +sha256: 9ef8e47cf00e4d6dcc114eb32a1504cc18206300572ef14d76634ba29dfe1eb6 +md5: e5ce43272193b38c2e9037446c1d9206 +depends: +- python >=3.10 +- __unix +- python +license: MPL-2.0 and MIT +size: 94132 +timestamp: 1770153424136 +- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda +sha256: 39d8ae33c43cdb8f771373e149b0b4fae5a08960ac58dcca95b2f1642bb17448 +md5: 260af1b0a94f719de76b4e14094e9a3b +depends: +- importlib-metadata >=3.6 +- python >=3.10 +- typing-extensions >=4.10.0 +- typing_extensions >=4.14.0 +constrains: +- pytest >=7 +license: MIT +license_family: MIT +size: 36838 +timestamp: 1771532971545 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda +sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c +md5: edd329d7d3a4ab45dcf905899a7a6115 +depends: +- typing_extensions ==4.15.0 pyhcf101f3_0 +license: PSF-2.0 +license_family: PSF +size: 91383 +timestamp: 1756220668932 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda +sha256: 70db27de58a97aeb7ba7448366c9853f91b21137492e0b4430251a1870aa8ff4 +md5: a0a4a3035667fc34f29bfbd5c190baa6 +depends: +- python >=3.10 +- typing_extensions >=4.12.0 +license: MIT +license_family: MIT +size: 18923 +timestamp: 1764158430324 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda +sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 +md5: 0caa1af407ecff61170c9437a808404d +depends: +- python >=3.10 +- python +license: PSF-2.0 +license_family: PSF +size: 51692 +timestamp: 1756220668932 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda +sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c +md5: ad659d0a2b3e47e38d829aa8cad2d610 +license: LicenseRef-Public-Domain +size: 119135 +timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda +sha256: af641ca7ab0c64525a96fd9ad3081b0f5bcf5d1cbb091afb3f6ed5a9eee6111a +md5: 9272daa869e03efe68833e3dc7a02130 +depends: +- backports.zstd >=1.0.0 +- brotli-python >=1.2.0 +- h2 >=4,<5 +- pysocks >=1.5.6,<2.0,!=1.5.7 +- python >=3.10 +license: MIT +license_family: MIT +size: 103172 +timestamp: 1767817860341 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda +sha256: e9f6e931feeb2f40e1fdbafe41d3b665f1ab6cb39c5880a1fcf9f79a3f3c84a5 +md5: 1c246e1105000c3660558459e2fd6d43 +depends: +- libgcc >=14 +license: MIT +license_family: MIT +size: 16317 +timestamp: 1762977521691 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda +sha256: 128d72f36bcc8d2b4cdbec07507542e437c7d67f677b7d77b71ed9eeac7d6df1 +md5: bff06dcde4a707339d66d45d96ceb2e2 +depends: +- libgcc >=14 +license: MIT +license_family: MIT +size: 21039 +timestamp: 1762979038025 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda +sha256: 66265e943f32ce02396ad214e27cb35f5b0490b3bd4f064446390f9d67fa5d88 +md5: 032d8030e4a24fe1f72c74423a46fb88 +depends: +- libgcc >=14 +license: MIT +license_family: MIT +size: 88088 +timestamp: 1753484092643 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda +sha256: b4533f7d9efc976511a73ef7d4a2473406d7f4c750884be8e8620b0ce70f4dae +md5: 30cd29cb87d819caead4d55184c1d115 +depends: +- python >=3.10 +- python +license: MIT +license_family: MIT +size: 24194 +timestamp: 1764460141901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-ng-2.3.3-ha7cb516_1.conda +sha256: 638a3a41a4fbfed52d3c60c8ef5a3693b3f12a5b1a3f58fa29f5698d0a0702e2 +md5: f731af71c723065d91b4c01bb822641b +depends: +- libgcc >=14 +- libstdcxx >=14 +license: Zlib +license_family: Other +size: 121046 +timestamp: 1770167944449 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda +sha256: 569990cf12e46f9df540275146da567d9c618c1e9c7a0bc9d9cfefadaed20b75 +md5: c3655f82dcea2aa179b291e7099c1fcc +depends: +- libzlib >=1.3.1,<2.0a0 +license: BSD-3-Clause +license_family: BSD +size: 614429 +timestamp: 1764777145593 diff --git a/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt b/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt new file mode 100644 index 00000000..f787dbe1 --- /dev/null +++ b/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt @@ -0,0 +1,125 @@ + +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-aarch64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda#4faa39bf919939602e594253bd673958 +https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda#468fd3bb9e1f671d36c2cbc677e56f1d +https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda#552567ea2b61e3a3035759b2fdb3f9a6 +https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda#840d8fc0d7b3209be93080bc20e07f2d +https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda#502006882cf5461adced436e410046d1 +https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda#c3655f82dcea2aa179b291e7099c1fcc +https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda#a21644fc4a83da26452a718dc9468d5f +https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.5-hfae3067_0.conda#05d1e0b30acd816a192c03dc6e164f4d +https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda#2f364feefb6a7c00423e80dcb12db62a +https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda#76298a9e6d71ee6e832a8d0d7373b261 +https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda#7b9813e885482e3ccb1fa212b86d7fd0 +https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.0-h022381a_0.conda#86db4036fd08bf34e991bf48a8af405d +https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42-h1022ec0_0.conda#a0b5de740d01c390bdbb46d7503c9fab +https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda#182afabe009dc78d8b73100255ee6868 +https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda#e18ad67cf881dcadee8b8d9e2f8e5f73 +https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.2-h546c87b_0.conda#3b129669089e4d6a5c6871dbb4669b99 +https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda#0539938c55b6b1a59b560e843ad864a4 +https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda#3d49cad61f829f4f0e0611547a9cda12 +https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda#7fc6affb9b01e567d2ef1d05b84aa6ed +https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda#ad659d0a2b3e47e38d829aa8cad2d610 +https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.4-hfd9ac0a_100_cp314.conda#3cfbe780f0f51cc8cba41db9f8a28bfe +https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.4-py314hd8ed1ab_100.conda#f111d4cfaf1fe9496f386bc98ae94452 +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.4-h4df99d1_100.conda#e4e60721757979d01d3964122f674959 +https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda#0caa1af407ecff61170c9437a808404d +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda#edd329d7d3a4ab45dcf905899a7a6115 +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda#c6b0543676ecb1fb2d7643941fe375f2 +https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda#a2ac7763a9ac75055b68f325d3255265 +https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda#f56573d05e3b735cb03efeb64a15f388 +https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py314h352cb57_1.conda#a1b5c571a0923a205d663d8678df4792 +https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda#929471569c93acefb30282a22060dcd5 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda#a9167b9571f3baa9d448faa2139d1089 +https://conda.anaconda.org/conda-forge/noarch/click-8.3.2-pyhc90fa1f_0.conda#4d18bc3af7cfcea97bd817164672a08c +https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 +https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda#b866ff7007b934d564961066c8195983 +https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda#a2c1eeadae7a309daed9d62c96012a2b +https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_18.conda#574d88ce3348331e962cfa5ed451b247 +https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_18.conda#41f261f5e4e2e8cbd236c2f1f15dae1b +https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.32-pthreads_h9d3fd7e_0.conda#5d2ce5cf40443d055ec6d33840192265 +https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-6_haddc8a3_openblas.conda#652bb20bb4618cacd11e17ae070f47ce +https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-6_hd72aa62_openblas.conda#939e300b110db241a96a1bed438c315b +https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-6_h88aeb00_openblas.conda#e23a27b52fb320687239e2c5ae4d7540 +https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.3-py314haac167e_0.conda#25d896c331481145720a21e5145fad65 +https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda#071cf7b0ce333c81718b054066c15102 +https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.7.5-hfae3067_0.conda#d2bb0c889d94f2fdc5856392c3002976 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 +https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda#f51503ac45a4888bce71af9027a2ecc9 +https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda#b99ed99e42dafb27889483b3098cace7 +https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda#a229e22d4d8814a07702b0919d8e6701 +https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda#0fed1ff55f4938a65907f3ecf62609db +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda#a7970cd949a077b7cb9696379d338681 +https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac +https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda#164fc43f0b53b6e3a7bc7dce5e4f1dc9 +https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda#daddf757c3ecd6067b9af1df1f25d89e +https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda#fb7130c190f9b4ec91219840a05ba3ac +https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.1-pyhcf101f3_0.conda#e1c36c6121a7c9c76f2f148f1e83b983 +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda#080594bf4493e6bae2607e65390c520a +https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py314hb76de3f_1.conda#e5de3c36dd548b35ff2a8aa49208dcb3 +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda#04558c96691bed63104678757beb4f8d +https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.30.0-py314h02b7a91_0.conda#e7f6ed9e60043bb5cbcc527764897f0d +https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda#870293df500ca7e18bedefa5838a22ab +https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda#439cd0f567d697b20a8f45cb70a1005a +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda#ada41c863af263cc4c5fcbaff7c3e4dc +https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda#4feebd0fbf61075a1a9c2e9b3936c257 +https://conda.anaconda.org/conda-forge/linux-aarch64/mathjax-2.7.7-h8af1aa0_3.tar.bz2#7b08314a6867a9d5648a1c3265e9eb8e +https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.38-h3ad9384_0.conda#6dd4f07147774bf720075a210f8026b9 +https://conda.anaconda.org/conda-forge/linux-aarch64/nss-3.118-h544fa81_0.conda#4540f9570d12db2150f42ba036154552 +https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.53.0-he8854b5_0.conda#ad8164bdeece883b825c50639c0c4725 +https://conda.anaconda.org/conda-forge/linux-aarch64/kaleido-core-0.2.1-he5a581e_0.tar.bz2#4f0d284f5d11e04277b552eb1c172c7f +https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.4.1-he30d5cf_0.conda#a85ba48648f6868016f2741fd9170250 +https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda#d13423b06447113a90b5b1366d4da171 +https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda#a9138815598fe6b91a1d6782ca657b0c +https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda#24e92d0942c799db387f5c9d7b81f1af +https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda#8c6fd84f9c87ac00636007c6131e457d +https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda#bb960f01525b5e001608afef9d47b79c +https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda#bb5a90c93e3bac3d5690acf76b4a6386 +https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda#1c246e1105000c3660558459e2fd6d43 +https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda#bff06dcde4a707339d66d45d96ceb2e2 +https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda#cd14ee5cca2464a425b1dbfc24d90db2 +https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda#ba0a9221ce1063f31692c07370d062f3 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda#5b5203189eb668f042ac2b0826244964 +https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda#e941e85e273121222580723010bd4fa2 +https://conda.anaconda.org/conda-forge/noarch/packaging-26.1-pyhc364b38_0.conda#b8ae38639d323d808da535fb71e31be8 +https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda#cea962410e327262346d48d01f05936c +https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-ng-2.3.3-ha7cb516_1.conda#f731af71c723065d91b4c01bb822641b +https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.2.0-py314hac3e5ec_0.conda#87d58d103b47c4a8567b3d7666647684 +https://conda.anaconda.org/conda-forge/noarch/narwhals-2.20.0-pyhcf101f3_0.conda#6cac1a50359219d786453c6fef819f98 +https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda#3e9427ee186846052e81fadde8ebe96a +https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-32-1.40.0-py310hff09b76_0.conda#d5628a33ce7652511e38fc98643dc910 +https://conda.anaconda.org/conda-forge/noarch/polars-1.40.0-pyh58ad624_0.conda#fd16be490f5403adfbf27dd4901bbe34 +https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-compat-1.40.0-py310hf00a4a2_0.conda#a82af0fcbb72db253dc89a7a45279372 +https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda#ef0340e75068ac8ff96462749b5c98e7 +https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda#032d8030e4a24fe1f72c74423a46fb88 +https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py314h807365f_1.conda#9ae2c92975118058bd720e9ba2bb7c58 +https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda#e17be1016bcc3516827b836cd3e4d9dc +https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.46.3-py314h451b6cc_0.conda#1a2cb55be9a153ad6203bff6b787c240 +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.3-pyhcf101f3_0.conda#f690e6f204efd2e5c06b57518a383d98 +https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda#130584ad9f3a513cdd71b1fdc1244e9c +https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2#310259a5b03ff02289d7705f39e2b1d2 +https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac +https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda#9272daa869e03efe68833e3dc7a02130 +https://conda.anaconda.org/conda-forge/noarch/requests-2.33.1-pyhcf101f3_0.conda#10afbb4dbf06ff959ad25a92ccee6e59 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda#16c18772b340887160c79a6acc022db0 +https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda#0242025a3c804966bf71aa04eee82f66 +https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda#0c20a8ebcddb24a45da89d5e917e6cb9 +https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda#472239e4eb7b5a84bb96b3ed7e3a596a +https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.4.4-py314h51f160d_0.conda#88a3dbd279e6b1faf0cddb8397866864 +https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.12.0-py314h6a36e60_3.conda#55bf7b559202236157b14323b40f19e6 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda#e5ce43272193b38c2e9037446c1d9206 +https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda#260af1b0a94f719de76b4e14094e9a3b +https://conda.anaconda.org/bioconda/noarch/multiqc-1.34-pyhdfd78af_0.conda#a7111ab9a6a6146b40cbce16655ac873 +https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda#09a970fbf75e8ed1aa633827ded6aa4f +https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda#ab7288cc39545556d1bc5e71ab2df9a9 diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index d02016a0..37e7612d 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::multiqc=1.32 + - bioconda::multiqc=1.34 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index c1158fb0..e80e8cd8 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -1,24 +1,21 @@ process MULTIQC { + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c6c120d559d7ee04c7442b61ad7cf5a9e8970be5feefb37d68eeaa60c1034eb/data' : - 'community.wave.seqera.io/library/multiqc:1.32--d58f60e4deb769bf' }" + container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/1b/1bef8af6be88c5733461959c46ac8ef73d18f65277f62a1695d0e1633054f9c2/data' + : 'community.wave.seqera.io/library/multiqc:1.34--db7c73dae76bc9e6'}" input: - path multiqc_files, stageAs: "?/*" - path(multiqc_config) - path(extra_multiqc_config) - path(multiqc_logo) - path(replace_names) - path(sample_names) + tuple val(meta), path(multiqc_files, stageAs: "?/*"), path(multiqc_config, stageAs: "?/*"), path(multiqc_logo), path(replace_names), path(sample_names) output: - path "*multiqc_report.html", emit: report - path "*_data" , emit: data - path "*_plots" , optional:true, emit: plots - path "versions.yml" , emit: versions + tuple val(meta), path("*.html"), emit: report + tuple val(meta), path("*_data"), emit: data + tuple val(meta), path("*_plots"), emit: plots, optional: true + // MultiQC should not push its versions to the `versions` topic. Its input depends on the versions topic to be resolved thus outputting to the topic will let the pipeline hang forever + tuple val("${task.process}"), val('multiqc'), eval('multiqc --version | sed "s/.* //g"'), emit: versions when: task.ext.when == null || task.ext.when @@ -26,38 +23,28 @@ process MULTIQC { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ? "--filename ${task.ext.prefix}.html" : '' - def config = multiqc_config ? "--config $multiqc_config" : '' - def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : '' + def config = multiqc_config ? multiqc_config instanceof List ? "--config ${multiqc_config.join(' --config ')}" : "--config ${multiqc_config}" : "" def logo = multiqc_logo ? "--cl-config 'custom_logo: \"${multiqc_logo}\"'" : '' def replace = replace_names ? "--replace-names ${replace_names}" : '' def samples = sample_names ? "--sample-names ${sample_names}" : '' """ multiqc \\ --force \\ - $args \\ - $config \\ - $prefix \\ - $extra_config \\ - $logo \\ - $replace \\ - $samples \\ + ${args} \\ + ${config} \\ + ${prefix} \\ + ${logo} \\ + ${replace} \\ + ${samples} \\ . - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) - END_VERSIONS """ stub: """ mkdir multiqc_data + touch multiqc_data/.stub mkdir multiqc_plots + touch multiqc_plots/.stub touch multiqc_report.html - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) - END_VERSIONS """ } diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index ce30eb73..2facc627 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -1,6 +1,6 @@ name: multiqc -description: Aggregate results from bioinformatics analyses across many samples into - a single report +description: Aggregate results from bioinformatics analyses across many samples + into a single report keywords: - QC - bioinformatics tools @@ -12,74 +12,91 @@ tools: It's a general use tool, perfect for summarising the output from numerous bioinformatics tools. homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ - licence: ["GPL-3.0-or-later"] + licence: + - "GPL-3.0-or-later" identifier: biotools:multiqc input: - - multiqc_files: - type: file - description: | - List of reports / files recognised by MultiQC, for example the html and zip output of FastQC - ontologies: [] - - multiqc_config: - type: file - description: Optional config yml for MultiQC - pattern: "*.{yml,yaml}" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML - - extra_multiqc_config: - type: file - description: Second optional config yml for MultiQC. Will override common sections - in multiqc_config. - pattern: "*.{yml,yaml}" - ontologies: - - edam: http://edamontology.org/format_3750 # YAML - - multiqc_logo: - type: file - description: Optional logo file for MultiQC - pattern: "*.{png}" - ontologies: [] - - replace_names: - type: file - description: | - Optional two-column sample renaming file. First column a set of - patterns, second column a set of corresponding replacements. Passed via - MultiQC's `--replace-names` option. - pattern: "*.{tsv}" - ontologies: - - edam: http://edamontology.org/format_3475 # TSV - - sample_names: - type: file - description: | - Optional TSV file with headers, passed to the MultiQC --sample_names - argument. - pattern: "*.{tsv}" - ontologies: - - edam: http://edamontology.org/format_3475 # TSV -output: - report: - - "*multiqc_report.html": + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - multiqc_files: type: file - description: MultiQC report file - pattern: "multiqc_report.html" + description: | + List of reports / files recognised by MultiQC, for example the html and zip output of FastQC ontologies: [] - data: - - "*_data": - type: directory - description: MultiQC data dir - pattern: "multiqc_data" - plots: - - "*_plots": + - multiqc_config: + type: file + description: Optional config yml for MultiQC + pattern: "*.{yml,yaml}" + ontologies: + - edam: http://edamontology.org/format_3750 + - multiqc_logo: type: file - description: Plots created by MultiQC - pattern: "*_data" + description: Optional logo file for MultiQC + pattern: "*.{png}" ontologies: [] - versions: - - versions.yml: + - replace_names: + type: file + description: | + Optional two-column sample renaming file. First column a set of + patterns, second column a set of corresponding replacements. Passed via + MultiQC's `--replace-names` option. + pattern: "*.{tsv}" + ontologies: + - edam: http://edamontology.org/format_3475 + - sample_names: type: file - description: File containing software versions - pattern: "versions.yml" + description: | + Optional TSV file with headers, passed to the MultiQC --sample_names + argument. + pattern: "*.{tsv}" ontologies: - - edam: http://edamontology.org/format_3750 # YAML + - edam: http://edamontology.org/format_3475 +output: + report: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - "*.html": + type: file + description: MultiQC report file + pattern: ".html" + ontologies: [] + data: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - "*_data": + type: directory + description: MultiQC data dir + pattern: "multiqc_data" + plots: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - "*_plots": + type: file + description: Plots created by MultiQC + pattern: "*_plots" + ontologies: [] + versions: + - - ${task.process}: + type: string + description: The process the versions were collected from + - multiqc: + type: string + description: The tool name + - multiqc --version | sed "s/.* //g": + type: eval + description: The expression to obtain the version of the tool authors: - "@abhi18av" - "@bunop" @@ -90,3 +107,27 @@ maintainers: - "@bunop" - "@drpatelh" - "@jfy133" +containers: + conda: + linux/amd64: + lock_file: modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt + linux/arm64: + lock_file: modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt + docker: + linux/amd64: + name: community.wave.seqera.io/library/multiqc:1.34--db7c73dae76bc9e6 + build_id: bd-db7c73dae76bc9e6_1 + scan_id: sc-66fc7138dbf1cf48_1 + linux/arm64: + name: community.wave.seqera.io/library/multiqc:1.34--d167b8012595a136 + build_id: bd-d167b8012595a136_1 + scan_id: sc-ac701dfa631a2af9_1 + singularity: + linux/amd64: + name: oras://community.wave.seqera.io/library/multiqc:1.34--4fc8657c816047c0 + build_id: bd-4fc8657c816047c0_1 + https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/1b/1bef8af6be88c5733461959c46ac8ef73d18f65277f62a1695d0e1633054f9c2/data + linux/arm64: + name: oras://community.wave.seqera.io/library/multiqc:1.34--7fbd82d945c06726 + build_id: bd-7fbd82d945c06726_1 + https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/9a/9a1fec9662a152683e6fcae440d0ce20920b3b89dc62d1e3a52e73f92eba0969/data diff --git a/modules/nf-core/multiqc/tests/custom_prefix.config b/modules/nf-core/multiqc/tests/custom_prefix.config new file mode 100644 index 00000000..b30b1358 --- /dev/null +++ b/modules/nf-core/multiqc/tests/custom_prefix.config @@ -0,0 +1,5 @@ +process { + withName: 'MULTIQC' { + ext.prefix = "custom_prefix" + } +} diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index 33316a7d..4cbdb95d 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -15,25 +15,84 @@ nextflow_process { when { process { """ - input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) - input[1] = [] - input[2] = [] - input[3] = [] - input[4] = [] - input[5] = [] + input[0] = channel.of([ + [ id: 'FASTQC' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), + [], + [], + [], + [] + ]) """ } } then { - assertAll( - { assert process.success }, - { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, - { assert process.out.data[0] ==~ ".*/multiqc_data" }, - { assert snapshot(process.out.versions).match("multiqc_versions_single") } - ) + assert process.success + assert snapshot( + sanitizeOutput(process.out).collectEntries { key, val -> + if (key == "data") { + return [key, val.collect { [path(it[1]).list().collect { file(it.toString()).name }] }] + } + else if (key == "plots") { + return [key, val.collect { [ + "pdf", + path("${it[1]}/pdf").list().collect { file(it.toString()).name }, + "png", + path("${it[1]}/png").list().collect { file(it.toString()).name }, + "svg", + path("${it[1]}/svg").list().collect { file(it.toString()).name }] }] + } + else if (key == "report") { + return [key, file(val[0][1].toString()).name] + } + return [key, val] + } + ).match() + } + } + + test("sarscov2 single-end [fastqc] - custom prefix") { + config "./custom_prefix.config" + + when { + process { + """ + input[0] = channel.of([ + [ id: 'FASTQC' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), + [], + [], + [], + [] + ]) + """ + } } + then { + assert process.success + assert snapshot( + sanitizeOutput(process.out).collectEntries { key, val -> + if (key == "data") { + return [key, val.collect { [path(it[1]).list().collect { file(it.toString()).name }] }] + } + else if (key == "plots") { + return [key, val.collect { [ + "pdf", + path("${it[1]}/pdf").list().collect { file(it.toString()).name }, + "png", + path("${it[1]}/png").list().collect { file(it.toString()).name }, + "svg", + path("${it[1]}/svg").list().collect { file(it.toString()).name }] }] + } + else if (key == "report") { + return [key, file(val[0][1].toString()).name] + } + return [key, val] + } + ).match() + } } test("sarscov2 single-end [fastqc] [config]") { @@ -41,23 +100,85 @@ nextflow_process { when { process { """ - input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) - input[1] = Channel.of(file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true)) - input[2] = [] - input[3] = [] - input[4] = [] - input[5] = [] + input[0] = channel.of([ + [ id: 'FASTQC' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), + file("https://raw.githubusercontent.com/nf-core/seqinspector/1.0.0/assets/multiqc_config.yml", checkIfExists: true), + [], + [], + [] + ]) """ } } then { - assertAll( - { assert process.success }, - { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, - { assert process.out.data[0] ==~ ".*/multiqc_data" }, - { assert snapshot(process.out.versions).match("multiqc_versions_config") } - ) + assert process.success + assert snapshot( + sanitizeOutput(process.out).collectEntries { key, val -> + if (key == "data") { + return [key, val.collect { [path(it[1]).list().collect { file(it.toString()).name }] }] + } + else if (key == "plots") { + return [key, val.collect { [ + "pdf", + path("${it[1]}/pdf").list().collect { file(it.toString()).name }, + "png", + path("${it[1]}/png").list().collect { file(it.toString()).name }, + "svg", + path("${it[1]}/svg").list().collect { file(it.toString()).name }] }] + } + else if (key == "report") { + return [key, file(val[0][1].toString()).name] + } + return [key, val] + } + ).match() + } + } + + test("sarscov2 single-end [fastqc] [multiple configs]") { + + when { + process { + """ + input[0] = channel.of([ + [ id: 'FASTQC' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), + [ + file("https://raw.githubusercontent.com/nf-core/seqinspector/1.0.0/assets/multiqc_config.yml", checkIfExists: true), + file("https://raw.githubusercontent.com/nf-core/seqinspector/1.0.0/assets/multiqc_config.yml", checkIfExists: true) + ], + [], + [], + [] + ]) + """ + } + } + + then { + assert process.success + assert snapshot( + sanitizeOutput(process.out).collectEntries { key, val -> + if (key == "data") { + return [key, val.collect { [path(it[1]).list().collect { file(it.toString()).name }] }] + } + else if (key == "plots") { + return [key, val.collect { [ + "pdf", + path("${it[1]}/pdf").list().collect { file(it.toString()).name }, + "png", + path("${it[1]}/png").list().collect { file(it.toString()).name }, + "svg", + path("${it[1]}/svg").list().collect { file(it.toString()).name }] }] + } + else if (key == "report") { + return [key, file(val[0][1].toString()).name] + } + return [key, val] + } + ).match() } } @@ -68,25 +189,23 @@ nextflow_process { when { process { """ - input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) - input[1] = [] - input[2] = [] - input[3] = [] - input[4] = [] - input[5] = [] + input[0] = channel.of([ + [ id: 'FASTQC' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), + [], + [], + [], + [] + ]) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out.report.collect { file(it).getName() } + - process.out.data.collect { file(it).getName() } + - process.out.plots.collect { file(it).getName() } + - process.out.versions ).match("multiqc_stub") } + { assert snapshot(sanitizeOutput(process.out)).match() } ) } - } } diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index a88bafd6..7c2f370f 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -1,41 +1,422 @@ { - "multiqc_versions_single": { + "sarscov2 single-end [fastqc] [multiple configs]": { "content": [ - [ - "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" - ] + { + "data": [ + [ + [ + "fastqc-status-check-heatmap.txt", + "fastqc_overrepresented_sequences_plot.txt", + "fastqc_per_base_n_content_plot.txt", + "fastqc_per_base_sequence_quality_plot.txt", + "fastqc_per_sequence_gc_content_plot_Counts.txt", + "fastqc_per_sequence_gc_content_plot_Percentages.txt", + "fastqc_per_sequence_quality_scores_plot.txt", + "fastqc_sequence_counts_plot.txt", + "fastqc_sequence_duplication_levels_plot.txt", + "fastqc_sequence_length_distribution_plot.txt", + "fastqc_top_overrepresented_sequences_table.txt", + "llms-full.txt", + "multiqc.log", + "multiqc.parquet", + "multiqc_citations.txt", + "multiqc_data.json", + "multiqc_fastqc.txt", + "multiqc_general_stats.txt", + "multiqc_sources.txt" + ] + ] + ], + "plots": [ + [ + "pdf", + [ + "fastqc-status-check-heatmap.pdf", + "fastqc_overrepresented_sequences_plot.pdf", + "fastqc_per_base_n_content_plot.pdf", + "fastqc_per_base_sequence_quality_plot.pdf", + "fastqc_per_sequence_gc_content_plot_Counts.pdf", + "fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "fastqc_per_sequence_quality_scores_plot.pdf", + "fastqc_sequence_counts_plot-cnt.pdf", + "fastqc_sequence_counts_plot-pct.pdf", + "fastqc_sequence_duplication_levels_plot.pdf", + "fastqc_sequence_length_distribution_plot.pdf", + "fastqc_top_overrepresented_sequences_table.pdf" + ], + "png", + [ + "fastqc-status-check-heatmap.png", + "fastqc_overrepresented_sequences_plot.png", + "fastqc_per_base_n_content_plot.png", + "fastqc_per_base_sequence_quality_plot.png", + "fastqc_per_sequence_gc_content_plot_Counts.png", + "fastqc_per_sequence_gc_content_plot_Percentages.png", + "fastqc_per_sequence_quality_scores_plot.png", + "fastqc_sequence_counts_plot-cnt.png", + "fastqc_sequence_counts_plot-pct.png", + "fastqc_sequence_duplication_levels_plot.png", + "fastqc_sequence_length_distribution_plot.png", + "fastqc_top_overrepresented_sequences_table.png" + ], + "svg", + [ + "fastqc-status-check-heatmap.svg", + "fastqc_overrepresented_sequences_plot.svg", + "fastqc_per_base_n_content_plot.svg", + "fastqc_per_base_sequence_quality_plot.svg", + "fastqc_per_sequence_gc_content_plot_Counts.svg", + "fastqc_per_sequence_gc_content_plot_Percentages.svg", + "fastqc_per_sequence_quality_scores_plot.svg", + "fastqc_sequence_counts_plot-cnt.svg", + "fastqc_sequence_counts_plot-pct.svg", + "fastqc_sequence_duplication_levels_plot.svg", + "fastqc_sequence_length_distribution_plot.svg", + "fastqc_top_overrepresented_sequences_table.svg" + ] + ] + ], + "report": "multiqc_report.html", + "versions": [ + [ + "MULTIQC", + "multiqc", + "1.34" + ] + ] + } ], + "timestamp": "2026-03-17T16:15:42.577775492", "meta": { - "nf-test": "0.9.3", - "nextflow": "24.10.4" - }, - "timestamp": "2025-10-27T13:33:24.356715" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, - "multiqc_stub": { + "sarscov2 single-end [fastqc]": { "content": [ - [ - "multiqc_report.html", - "multiqc_data", - "multiqc_plots", - "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" - ] + { + "data": [ + [ + [ + "fastqc-status-check-heatmap.txt", + "fastqc_overrepresented_sequences_plot.txt", + "fastqc_per_base_n_content_plot.txt", + "fastqc_per_base_sequence_quality_plot.txt", + "fastqc_per_sequence_gc_content_plot_Counts.txt", + "fastqc_per_sequence_gc_content_plot_Percentages.txt", + "fastqc_per_sequence_quality_scores_plot.txt", + "fastqc_sequence_counts_plot.txt", + "fastqc_sequence_duplication_levels_plot.txt", + "fastqc_sequence_length_distribution_plot.txt", + "fastqc_top_overrepresented_sequences_table.txt", + "llms-full.txt", + "multiqc.log", + "multiqc.parquet", + "multiqc_citations.txt", + "multiqc_data.json", + "multiqc_fastqc.txt", + "multiqc_general_stats.txt", + "multiqc_software_versions.txt", + "multiqc_sources.txt" + ] + ] + ], + "plots": [ + [ + "pdf", + [ + "fastqc-status-check-heatmap.pdf", + "fastqc_overrepresented_sequences_plot.pdf", + "fastqc_per_base_n_content_plot.pdf", + "fastqc_per_base_sequence_quality_plot.pdf", + "fastqc_per_sequence_gc_content_plot_Counts.pdf", + "fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "fastqc_per_sequence_quality_scores_plot.pdf", + "fastqc_sequence_counts_plot-cnt.pdf", + "fastqc_sequence_counts_plot-pct.pdf", + "fastqc_sequence_duplication_levels_plot.pdf", + "fastqc_sequence_length_distribution_plot.pdf", + "fastqc_top_overrepresented_sequences_table.pdf" + ], + "png", + [ + "fastqc-status-check-heatmap.png", + "fastqc_overrepresented_sequences_plot.png", + "fastqc_per_base_n_content_plot.png", + "fastqc_per_base_sequence_quality_plot.png", + "fastqc_per_sequence_gc_content_plot_Counts.png", + "fastqc_per_sequence_gc_content_plot_Percentages.png", + "fastqc_per_sequence_quality_scores_plot.png", + "fastqc_sequence_counts_plot-cnt.png", + "fastqc_sequence_counts_plot-pct.png", + "fastqc_sequence_duplication_levels_plot.png", + "fastqc_sequence_length_distribution_plot.png", + "fastqc_top_overrepresented_sequences_table.png" + ], + "svg", + [ + "fastqc-status-check-heatmap.svg", + "fastqc_overrepresented_sequences_plot.svg", + "fastqc_per_base_n_content_plot.svg", + "fastqc_per_base_sequence_quality_plot.svg", + "fastqc_per_sequence_gc_content_plot_Counts.svg", + "fastqc_per_sequence_gc_content_plot_Percentages.svg", + "fastqc_per_sequence_quality_scores_plot.svg", + "fastqc_sequence_counts_plot-cnt.svg", + "fastqc_sequence_counts_plot-pct.svg", + "fastqc_sequence_duplication_levels_plot.svg", + "fastqc_sequence_length_distribution_plot.svg", + "fastqc_top_overrepresented_sequences_table.svg" + ] + ] + ], + "report": "multiqc_report.html", + "versions": [ + [ + "MULTIQC", + "multiqc", + "1.34" + ] + ] + } ], + "timestamp": "2026-03-17T16:21:17.072841555", "meta": { - "nf-test": "0.9.3", - "nextflow": "24.10.4" - }, - "timestamp": "2025-10-27T13:34:11.103619" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } }, - "multiqc_versions_config": { + "sarscov2 single-end [fastqc] - stub": { "content": [ - [ - "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" - ] + { + "data": [ + [ + { + "id": "FASTQC" + }, + [ + ".stub:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "plots": [ + [ + { + "id": "FASTQC" + }, + [ + ".stub:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "report": [ + [ + { + "id": "FASTQC" + }, + "multiqc_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + [ + "MULTIQC", + "multiqc", + "1.34" + ] + ] + } ], + "timestamp": "2026-02-26T15:14:39.789193051", "meta": { - "nf-test": "0.9.3", - "nextflow": "24.10.4" - }, - "timestamp": "2025-10-27T13:34:04.615233" + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "sarscov2 single-end [fastqc] [config]": { + "content": [ + { + "data": [ + [ + [ + "fastqc-status-check-heatmap.txt", + "fastqc_overrepresented_sequences_plot.txt", + "fastqc_per_base_n_content_plot.txt", + "fastqc_per_base_sequence_quality_plot.txt", + "fastqc_per_sequence_gc_content_plot_Counts.txt", + "fastqc_per_sequence_gc_content_plot_Percentages.txt", + "fastqc_per_sequence_quality_scores_plot.txt", + "fastqc_sequence_counts_plot.txt", + "fastqc_sequence_duplication_levels_plot.txt", + "fastqc_sequence_length_distribution_plot.txt", + "fastqc_top_overrepresented_sequences_table.txt", + "llms-full.txt", + "multiqc.log", + "multiqc.parquet", + "multiqc_citations.txt", + "multiqc_data.json", + "multiqc_fastqc.txt", + "multiqc_general_stats.txt", + "multiqc_sources.txt" + ] + ] + ], + "plots": [ + [ + "pdf", + [ + "fastqc-status-check-heatmap.pdf", + "fastqc_overrepresented_sequences_plot.pdf", + "fastqc_per_base_n_content_plot.pdf", + "fastqc_per_base_sequence_quality_plot.pdf", + "fastqc_per_sequence_gc_content_plot_Counts.pdf", + "fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "fastqc_per_sequence_quality_scores_plot.pdf", + "fastqc_sequence_counts_plot-cnt.pdf", + "fastqc_sequence_counts_plot-pct.pdf", + "fastqc_sequence_duplication_levels_plot.pdf", + "fastqc_sequence_length_distribution_plot.pdf", + "fastqc_top_overrepresented_sequences_table.pdf" + ], + "png", + [ + "fastqc-status-check-heatmap.png", + "fastqc_overrepresented_sequences_plot.png", + "fastqc_per_base_n_content_plot.png", + "fastqc_per_base_sequence_quality_plot.png", + "fastqc_per_sequence_gc_content_plot_Counts.png", + "fastqc_per_sequence_gc_content_plot_Percentages.png", + "fastqc_per_sequence_quality_scores_plot.png", + "fastqc_sequence_counts_plot-cnt.png", + "fastqc_sequence_counts_plot-pct.png", + "fastqc_sequence_duplication_levels_plot.png", + "fastqc_sequence_length_distribution_plot.png", + "fastqc_top_overrepresented_sequences_table.png" + ], + "svg", + [ + "fastqc-status-check-heatmap.svg", + "fastqc_overrepresented_sequences_plot.svg", + "fastqc_per_base_n_content_plot.svg", + "fastqc_per_base_sequence_quality_plot.svg", + "fastqc_per_sequence_gc_content_plot_Counts.svg", + "fastqc_per_sequence_gc_content_plot_Percentages.svg", + "fastqc_per_sequence_quality_scores_plot.svg", + "fastqc_sequence_counts_plot-cnt.svg", + "fastqc_sequence_counts_plot-pct.svg", + "fastqc_sequence_duplication_levels_plot.svg", + "fastqc_sequence_length_distribution_plot.svg", + "fastqc_top_overrepresented_sequences_table.svg" + ] + ] + ], + "report": "multiqc_report.html", + "versions": [ + [ + "MULTIQC", + "multiqc", + "1.34" + ] + ] + } + ], + "timestamp": "2026-03-17T16:15:30.372239611", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } + }, + "sarscov2 single-end [fastqc] - custom prefix": { + "content": [ + { + "data": [ + [ + [ + "fastqc-status-check-heatmap.txt", + "fastqc_overrepresented_sequences_plot.txt", + "fastqc_per_base_n_content_plot.txt", + "fastqc_per_base_sequence_quality_plot.txt", + "fastqc_per_sequence_gc_content_plot_Counts.txt", + "fastqc_per_sequence_gc_content_plot_Percentages.txt", + "fastqc_per_sequence_quality_scores_plot.txt", + "fastqc_sequence_counts_plot.txt", + "fastqc_sequence_duplication_levels_plot.txt", + "fastqc_sequence_length_distribution_plot.txt", + "fastqc_top_overrepresented_sequences_table.txt", + "llms-full.txt", + "multiqc.log", + "multiqc.parquet", + "multiqc_citations.txt", + "multiqc_data.json", + "multiqc_fastqc.txt", + "multiqc_general_stats.txt", + "multiqc_software_versions.txt", + "multiqc_sources.txt" + ] + ] + ], + "plots": [ + [ + "pdf", + [ + "fastqc-status-check-heatmap.pdf", + "fastqc_overrepresented_sequences_plot.pdf", + "fastqc_per_base_n_content_plot.pdf", + "fastqc_per_base_sequence_quality_plot.pdf", + "fastqc_per_sequence_gc_content_plot_Counts.pdf", + "fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "fastqc_per_sequence_quality_scores_plot.pdf", + "fastqc_sequence_counts_plot-cnt.pdf", + "fastqc_sequence_counts_plot-pct.pdf", + "fastqc_sequence_duplication_levels_plot.pdf", + "fastqc_sequence_length_distribution_plot.pdf", + "fastqc_top_overrepresented_sequences_table.pdf" + ], + "png", + [ + "fastqc-status-check-heatmap.png", + "fastqc_overrepresented_sequences_plot.png", + "fastqc_per_base_n_content_plot.png", + "fastqc_per_base_sequence_quality_plot.png", + "fastqc_per_sequence_gc_content_plot_Counts.png", + "fastqc_per_sequence_gc_content_plot_Percentages.png", + "fastqc_per_sequence_quality_scores_plot.png", + "fastqc_sequence_counts_plot-cnt.png", + "fastqc_sequence_counts_plot-pct.png", + "fastqc_sequence_duplication_levels_plot.png", + "fastqc_sequence_length_distribution_plot.png", + "fastqc_top_overrepresented_sequences_table.png" + ], + "svg", + [ + "fastqc-status-check-heatmap.svg", + "fastqc_overrepresented_sequences_plot.svg", + "fastqc_per_base_n_content_plot.svg", + "fastqc_per_base_sequence_quality_plot.svg", + "fastqc_per_sequence_gc_content_plot_Counts.svg", + "fastqc_per_sequence_gc_content_plot_Percentages.svg", + "fastqc_per_sequence_quality_scores_plot.svg", + "fastqc_sequence_counts_plot-cnt.svg", + "fastqc_sequence_counts_plot-pct.svg", + "fastqc_sequence_duplication_levels_plot.svg", + "fastqc_sequence_length_distribution_plot.svg", + "fastqc_top_overrepresented_sequences_table.svg" + ] + ] + ], + "report": "custom_prefix.html", + "versions": [ + [ + "MULTIQC", + "multiqc", + "1.34" + ] + ] + } + ], + "timestamp": "2026-03-17T16:15:18.189023981", + "meta": { + "nf-test": "0.9.4", + "nextflow": "25.10.4" + } } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/tests/nextflow.config b/modules/nf-core/multiqc/tests/nextflow.config index c537a6a3..374dfef2 100644 --- a/modules/nf-core/multiqc/tests/nextflow.config +++ b/modules/nf-core/multiqc/tests/nextflow.config @@ -1,5 +1,6 @@ process { withName: 'MULTIQC' { ext.prefix = null + ext.args = '-p' } } diff --git a/nextflow.config b/nextflow.config index b9c8f64f..e081c0c2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -32,7 +32,6 @@ params { email_on_fail = null plaintext_email = false monochrome_logs = false - hook_url = System.getenv('HOOK_URL') help = false help_full = false show_hidden = false @@ -53,6 +52,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' @@ -259,8 +262,8 @@ manifest { description = """A pipeline for spatialomics Xenium In Situ data.""" mainScript = 'main.nf' defaultBranch = 'master' - nextflowVersion = '!>=25.04.0' - version = '1.0dev' + nextflowVersion = '!>=25.10.4' + version = '1.0.0' doi = '' } @@ -273,6 +276,5 @@ validation { defaultIgnoreParams = ["genomes"] monochromeLogs = params.monochrome_logs } - // Load modules.config for DSL2 module specific options includeConfig 'conf/modules.config' diff --git a/nextflow_schema.json b/nextflow_schema.json index 024e3569..5d9dff39 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -74,7 +74,6 @@ }, "igenomes_base": { "type": "string", - "format": "directory-path", "description": "The base path to the igenomes reference files", "fa_icon": "fas fa-ban", "hidden": true, @@ -180,13 +179,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 - }, "multiqc_config": { "type": "string", "format": "file-path", 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 fd557197..2d0ac5c2 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -1,6 +1,6 @@ { "@context": [ - "https://w3id.org/ro/crate/1.1/context", + "https://w3id.org/ro/crate/1.2/context", { "GithubService": "https://w3id.org/ro/terms/test#GithubService", "JenkinsService": "https://w3id.org/ro/terms/test#JenkinsService", @@ -21,9 +21,9 @@ { "@id": "./", "@type": "Dataset", - "creativeWorkStatus": "InProgress", - "datePublished": "2025-11-20T09:32:15+00:00", - "description": "

\n \n \n \"nf-core/spatialxe\"\n \n

\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/nf-core/spatialxe)\n[![GitHub Actions CI Status](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/spatialxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialxe/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/spatialxe/results)[![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.04.0-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.5.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.5.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/spatialxe)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23spatialxe-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/spatialxe)[![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/spatialxe** is a bioinformatics pipeline that ...\n\n\n\n\n1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/))\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 nf-core/spatialxe \\\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/spatialxe/usage) and the [parameter documentation](https://nf-co.re/spatialxe/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/spatialxe/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/spatialxe/output).\n\n## Credits\n\nnf-core/spatialxe was originally written by Sameesh Kher, Florian Heyl.\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\nFor further information or help, don't hesitate to get in touch on the [Slack `#spatialxe` channel](https://nfcore.slack.com/channels/spatialxe) (you can join with [this invite](https://nf-co.re/join/slack)).\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\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", + "creativeWorkStatus": "Stable", + "datePublished": "2026-04-30T13:33:23+00:00", + "description": "

\n \n \n \"nf-core/spatialxe\"\n \n

\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/nf-core/spatialxe)\n[![GitHub Actions CI Status](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/spatialxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialxe/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/spatialxe/results)[![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/nf-core/spatialxe)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23spatialxe-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/spatialxe)[![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/spatialxe** is a bioinformatics pipeline that ...\n\n\n\n\n1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/))\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 nf-core/spatialxe \\\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\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/spatialxe/usage) and the [parameter documentation](https://nf-co.re/spatialxe/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/spatialxe/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/spatialxe/output).\n\n## Credits\n\nnf-core/spatialxe was originally written by Sameesh Kher, Florian Heyl.\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\nFor further information or help, don't hesitate to get in touch on the [Slack `#spatialxe` channel](https://nfcore.slack.com/channels/spatialxe) (you can join with [this invite](https://nf-co.re/join/slack)).\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\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" @@ -99,7 +99,7 @@ }, "mentions": [ { - "@id": "#ee2c0a4f-0aee-4f4b-9e9d-044fdc833c27" + "@id": "#1c52c7cb-def3-43c9-9e10-865c2cf0ba78" } ], "name": "nf-core/spatialxe" @@ -112,7 +112,7 @@ }, "conformsTo": [ { - "@id": "https://w3id.org/ro/crate/1.1" + "@id": "https://w3id.org/ro/crate/1.2" }, { "@id": "https://w3id.org/workflowhub/workflow-ro-crate/1.0" @@ -122,8 +122,16 @@ { "@id": "main.nf", "@type": ["File", "SoftwareSourceCode", "ComputationalWorkflow"], + "contributor": [ + { + "@id": "https://orcid.org/0009-0008-2420-6464" + }, + { + "@id": "https://orcid.org/0000-0002-3651-5685" + } + ], "dateCreated": "", - "dateModified": "2025-11-20T09:32:15Z", + "dateModified": "2026-04-30T13:33:23Z", "dct:conformsTo": "https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE/", "keywords": [ "nf-core", @@ -144,8 +152,8 @@ "sdPublisher": { "@id": "https://nf-co.re/" }, - "url": ["https://github.com/nf-core/spatialxe", "https://nf-co.re/spatialxe/dev/"], - "version": ["1.0dev"] + "url": ["https://github.com/nf-core/spatialxe", "https://nf-co.re/spatialxe/1.0.0/"], + "version": ["1.0.0"] }, { "@id": "https://w3id.org/workflowhub/workflow-ro-crate#nextflow", @@ -157,14 +165,14 @@ "url": { "@id": "https://www.nextflow.io/" }, - "version": "!>=25.04.0" + "version": "!>=25.10.4" }, { - "@id": "#ee2c0a4f-0aee-4f4b-9e9d-044fdc833c27", + "@id": "#1c52c7cb-def3-43c9-9e10-865c2cf0ba78", "@type": "TestSuite", "instance": [ { - "@id": "#ec41083f-c8e9-4bd2-818d-5be534486d2b" + "@id": "#162edd3a-9c52-463a-94f5-78ed109f8513" } ], "mainEntity": { @@ -173,7 +181,7 @@ "name": "Test suite for nf-core/spatialxe" }, { - "@id": "#ec41083f-c8e9-4bd2-818d-5be534486d2b", + "@id": "#162edd3a-9c52-463a-94f5-78ed109f8513", "@type": "TestInstance", "name": "GitHub Actions workflow for testing nf-core/spatialxe", "resource": "repos/nf-core/spatialxe/actions/workflows/nf-test.yml", @@ -300,6 +308,16 @@ "@type": "Organization", "name": "nf-core", "url": "https://nf-co.re/" + }, + { + "@id": "https://orcid.org/0009-0008-2420-6464", + "@type": "Person", + "name": "Sameesh Kher" + }, + { + "@id": "https://orcid.org/0000-0002-3651-5685", + "@type": "Person", + "name": "Florian Heyl" } ] } diff --git a/subworkflows/local/utils_nfcore_spatialxe_pipeline/main.nf b/subworkflows/local/utils_nfcore_spatialxe_pipeline/main.nf index 4e8dde6f..c60249c8 100644 --- a/subworkflows/local/utils_nfcore_spatialxe_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_spatialxe_pipeline/main.nf @@ -14,7 +14,6 @@ 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' @@ -54,6 +53,9 @@ workflow PIPELINE_INITIALISATION { // // Validate parameters and generate parameter summary to stdout // + + def before_text = "" + def after_text = "" before_text = """ -\033[2m----------------------------------------------------\033[0m- \033[0;32m,--.\033[0;30m/\033[0;32m,-.\033[0m @@ -71,6 +73,10 @@ workflow PIPELINE_INITIALISATION { * Software dependencies https://github.com/nf-core/spatialxe/blob/master/CITATIONS.md """ + 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 ( @@ -102,7 +108,7 @@ workflow PIPELINE_INITIALISATION { // channel - .fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) + .fromList(samplesheetToList(input, "${projectDir}/assets/schema_input.json")) .map { meta, fastq_1, fastq_2 -> if (!fastq_2) { @@ -140,7 +146,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 multiqc_report // string: Path to MultiQC report main: @@ -164,13 +169,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_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index 2f30e9a4..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 } /* @@ -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_nfschema_plugin/main.nf b/subworkflows/nf-core/utils_nfschema_plugin/main.nf index ee4738c8..1df8b76f 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/main.nf +++ b/subworkflows/nf-core/utils_nfschema_plugin/main.nf @@ -38,7 +38,7 @@ workflow UTILS_NFSCHEMA_PLUGIN { } log.info paramsHelp( help_options, - params.help instanceof String ? params.help : "", + (params.help instanceof String && params.help != "true") ? params.help : "", ) exit 0 } @@ -71,4 +71,3 @@ workflow UTILS_NFSCHEMA_PLUGIN { emit: dummy_emit = true } - diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config index 8d8c7371..f6537cc3 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.5.1" + id "nf-schema@2.6.1" } validation { diff --git a/tests/default.nf.test b/tests/default.nf.test index ba0b6870..d5000f57 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -13,19 +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( // 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_spatialxe_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 21d5c006..caf25a7b 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/spatialxe' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/spatialxe/' } aws.client.anonymous = true // fixes S3 access issues on self-hosted runners diff --git a/workflows/spatialxe.nf b/workflows/spatialxe.nf index 957483fd..d9a6a306 100644 --- a/workflows/spatialxe.nf +++ b/workflows/spatialxe.nf @@ -20,23 +20,25 @@ workflow SPATIALXE { take: ch_samplesheet // channel: samplesheet read in from --input + multiqc_config + multiqc_logo + multiqc_methods_description + outdir + main: - ch_versions = channel.empty() - ch_multiqc_files = channel.empty() + def ch_versions = channel.empty() + def ch_multiqc_files = channel.empty() // // MODULE: Run FastQC // - FASTQC ( - ch_samplesheet - ) - ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}) - ch_versions = ch_versions.mix(FASTQC.out.versions.first()) + FASTQC(ch_samplesheet) + ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.map{ _meta, file -> file }) // // Collate and save software versions // - def topic_versions = Channel.topic("versions") + def topic_versions = channel.topic("versions") .distinct() .branch { entry -> versions_file: entry instanceof Path @@ -53,59 +55,43 @@ workflow SPATIALXE { "${process}:\n${tool_versions.join('\n')}" } - softwareVersionsToYAML(ch_versions.mix(topic_versions.versions_file)) + 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: 'nf_core_' + 'spatialxe_software_' + 'mqc_' + 'versions.yml', sort: true, newLine: true - ).set { ch_collated_versions } - + ) // // MODULE: MultiQC // - ch_multiqc_config = channel.fromPath( - "$projectDir/assets/multiqc_config.yml", checkIfExists: true) - ch_multiqc_custom_config = params.multiqc_config ? - channel.fromPath(params.multiqc_config, checkIfExists: true) : - channel.empty() - ch_multiqc_logo = params.multiqc_logo ? - channel.fromPath(params.multiqc_logo, checkIfExists: true) : - channel.empty() - - summary_params = paramsSummaryMap( - workflow, parameters_schema: "nextflow_schema.json") - ch_workflow_summary = channel.value(paramsSummaryMultiqc(summary_params)) - ch_multiqc_files = ch_multiqc_files.mix( - ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) - ch_multiqc_custom_methods_description = params.multiqc_methods_description ? - file(params.multiqc_methods_description, checkIfExists: true) : - file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) - ch_methods_description = channel.value( - methodsDescriptionText(ch_multiqc_custom_methods_description)) - ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) - ch_multiqc_files = ch_multiqc_files.mix( - ch_methods_description.collectFile( - name: 'methods_description_mqc.yaml', - sort: true - ) - ) - - MULTIQC ( - ch_multiqc_files.collect(), - ch_multiqc_config.toList(), - ch_multiqc_custom_config.toList(), - ch_multiqc_logo.toList(), - [], - [] + def ch_summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") + def ch_workflow_summary = channel.value(paramsSummaryMultiqc(ch_summary_params)) + ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) + def ch_multiqc_custom_methods_description = multiqc_methods_description + ? file(multiqc_methods_description, checkIfExists: true) + : file("${projectDir}/assets/methods_description_template.yml", checkIfExists: true) + def ch_methods_description = channel.value(methodsDescriptionText(ch_multiqc_custom_methods_description)) + ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml', sort: true)) + MULTIQC( + ch_multiqc_files.flatten().collect().map { files -> + [ + [id: 'spatialxe'], + files, + multiqc_config + ? file(multiqc_config, checkIfExists: true) + : file("${projectDir}/assets/multiqc_config.yml", checkIfExists: true), + multiqc_logo ? file(multiqc_logo, checkIfExists: true) : [], + [], + [], + ] + } ) - - emit:multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html + emit:multiqc_report = MULTIQC.out.report.map { _meta, report -> [report] }.toList() // channel: /path/to/multiqc_report.html versions = ch_versions // channel: [ path(versions.yml) ] - } /* From 9369ecce982825621d27009071baf163d233debd Mon Sep 17 00:00:00 2001 From: f641l Date: Wed, 27 May 2026 13:32:08 +0200 Subject: [PATCH 3/4] Template update for nf-core/tools version 3.5.2 --- .devcontainer/devcontainer.json | 1 - .devcontainer/setup.sh | 2 +- .github/CONTRIBUTING.md | 125 ++ .github/ISSUE_TEMPLATE/bug_report.yml | 4 +- .github/ISSUE_TEMPLATE/config.yml | 6 +- .github/ISSUE_TEMPLATE/feature_request.yml | 2 +- .github/PULL_REQUEST_TEMPLATE.md | 10 +- .github/actions/get-shards/action.yml | 2 +- .github/actions/nf-test/action.yml | 10 +- .github/workflows/awsfulltest.yml | 31 +- .github/workflows/awstest.yml | 10 +- .github/workflows/branch.yml | 6 +- .github/workflows/clean-up.yml | 2 +- .github/workflows/download_pipeline.yml | 16 +- .github/workflows/fix_linting.yml | 26 +- .github/workflows/linting.yml | 34 +- .github/workflows/linting_comment.yml | 4 +- .github/workflows/nf-test.yml | 8 +- .github/workflows/release-announcements.yml | 4 +- .../workflows/template-version-comment.yml | 6 +- .gitignore | 1 - .nf-core.yml | 8 +- .pre-commit-config.yaml | 16 +- .prettierignore | 2 + CHANGELOG.md | 4 +- CITATIONS.md | 2 +- LICENSE | 2 +- README.md | 42 +- assets/adaptivecard.json | 67 + assets/email_template.html | 14 +- assets/email_template.txt | 10 +- assets/methods_description_template.yml | 8 +- assets/multiqc_config.yml | 8 +- assets/nf-core-spatialaxe_logo_light.png | Bin 0 -> 79633 bytes assets/nf-core-spatialxe_logo_light.png | Bin 80727 -> 0 bytes assets/schema_input.json | 4 +- assets/sendmail_template.txt | 6 +- assets/slackreport.json | 34 + conf/base.config | 4 +- conf/containers_conda_lock_files_amd64.config | 2 - conf/containers_conda_lock_files_arm64.config | 2 - conf/containers_docker_amd64.config | 2 - conf/containers_docker_arm64.config | 2 - .../containers_singularity_https_amd64.config | 2 - .../containers_singularity_https_arm64.config | 2 - conf/containers_singularity_oras_amd64.config | 2 - conf/containers_singularity_oras_arm64.config | 2 - conf/igenomes.config | 440 ----- conf/igenomes_ignored.config | 9 - conf/test.config | 5 +- conf/test_full.config | 6 +- docs/CONTRIBUTING.md | 185 -- docs/README.md | 4 +- docs/images/nf-core-spatialaxe_logo_dark.png | Bin 0 -> 31726 bytes docs/images/nf-core-spatialaxe_logo_light.png | Bin 0 -> 26722 bytes docs/images/nf-core-spatialxe_logo_dark.png | Bin 30543 -> 0 bytes docs/images/nf-core-spatialxe_logo_light.png | Bin 25890 -> 0 bytes docs/output.md | 2 +- docs/usage.md | 21 +- main.nf | 44 +- modules.json | 12 +- .../linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt | 822 --------- .../linux_arm64-bd-e455e32f745abe68_1.txt | 769 -------- modules/nf-core/fastqc/main.nf | 43 +- modules/nf-core/fastqc/meta.yml | 51 +- modules/nf-core/fastqc/tests/main.nf.test | 12 +- .../nf-core/fastqc/tests/main.nf.test.snap | 228 +-- .../linux_amd64-bd-c1f4a7982b743963_1.txt | 1552 ----------------- .../linux_amd64-bd-db7c73dae76bc9e6_1.txt | 126 -- .../linux_arm64-bd-40bf3b435e89dc22_1.txt | 1502 ---------------- .../linux_arm64-bd-d167b8012595a136_1.txt | 125 -- modules/nf-core/multiqc/environment.yml | 2 +- modules/nf-core/multiqc/main.nf | 51 +- modules/nf-core/multiqc/meta.yml | 165 +- .../multiqc/tests/custom_prefix.config | 5 - modules/nf-core/multiqc/tests/main.nf.test | 191 +- .../nf-core/multiqc/tests/main.nf.test.snap | 435 +---- modules/nf-core/multiqc/tests/nextflow.config | 1 - nextflow.config | 36 +- nextflow_schema.json | 54 +- nf-test.config | 26 +- ro-crate-metadata.json | 67 +- .../main.nf | 59 +- .../nf-core/utils_nfcore_pipeline/main.nf | 66 +- .../utils_nfcore_pipeline/tests/main.nf.test | 29 - .../tests/main.nf.test.snap | 19 - .../nf-core/utils_nfschema_plugin/main.nf | 3 +- .../tests/nextflow.config | 2 +- tests/default.nf.test | 16 +- tests/nextflow.config | 2 +- workflows/spatialaxe.nf | 115 ++ workflows/spatialxe.nf | 101 -- 92 files changed, 944 insertions(+), 7016 deletions(-) create mode 100644 .github/CONTRIBUTING.md create mode 100644 assets/adaptivecard.json create mode 100644 assets/nf-core-spatialaxe_logo_light.png delete mode 100644 assets/nf-core-spatialxe_logo_light.png create mode 100644 assets/slackreport.json delete mode 100644 conf/containers_conda_lock_files_amd64.config delete mode 100644 conf/containers_conda_lock_files_arm64.config delete mode 100644 conf/containers_docker_amd64.config delete mode 100644 conf/containers_docker_arm64.config delete mode 100644 conf/containers_singularity_https_amd64.config delete mode 100644 conf/containers_singularity_https_arm64.config delete mode 100644 conf/containers_singularity_oras_amd64.config delete mode 100644 conf/containers_singularity_oras_arm64.config delete mode 100644 conf/igenomes.config delete mode 100644 conf/igenomes_ignored.config delete mode 100644 docs/CONTRIBUTING.md create mode 100644 docs/images/nf-core-spatialaxe_logo_dark.png create mode 100644 docs/images/nf-core-spatialaxe_logo_light.png delete mode 100644 docs/images/nf-core-spatialxe_logo_dark.png delete mode 100644 docs/images/nf-core-spatialxe_logo_light.png delete mode 100644 modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt delete mode 100644 modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt delete mode 100644 modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt delete mode 100644 modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt delete mode 100644 modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt delete mode 100644 modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt delete mode 100644 modules/nf-core/multiqc/tests/custom_prefix.config rename subworkflows/local/{utils_nfcore_spatialxe_pipeline => utils_nfcore_spatialaxe_pipeline}/main.nf (85%) delete mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test delete mode 100644 subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test.snap create mode 100644 workflows/spatialaxe.nf delete mode 100644 workflows/spatialxe.nf diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 237c9ed0..97c8c97f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,5 +1,4 @@ { - "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.schema.json", "name": "nfcore", "image": "nfcore/devcontainer:latest", diff --git a/.devcontainer/setup.sh b/.devcontainer/setup.sh index b16c2e73..033278f7 100755 --- a/.devcontainer/setup.sh +++ b/.devcontainer/setup.sh @@ -10,4 +10,4 @@ export PS1='\[\e[3;36m\]\w ->\[\e[0m\\] ' nextflow self-update # Update welcome message -echo "Welcome to the nf-core/spatialxe devcontainer!" > /usr/local/etc/vscode-dev-containers/first-run-notice.txt +echo "Welcome to the nf-core/spatialaxe devcontainer!" > /usr/local/etc/vscode-dev-containers/first-run-notice.txt diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..21358536 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,125 @@ +# `nf-core/spatialaxe`: Contributing Guidelines + +Hi there! +Many thanks for taking an interest in improving nf-core/spatialaxe. + +We try to manage the required tasks for nf-core/spatialaxe 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 ;) + +> [!NOTE] +> If you need help using or modifying nf-core/spatialaxe then the best place to ask is on the nf-core Slack [#spatialaxe](https://nfcore.slack.com/channels/spatialaxe) channel ([join our Slack here](https://nf-co.re/join/slack)). + +## Contribution workflow + +If you'd like to write some code for nf-core/spatialaxe, the standard workflow is as follows: + +1. Check that there isn't already an issue about your idea in the [nf-core/spatialaxe issues](https://github.com/nf-core/spatialaxe/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 [nf-core/spatialaxe repository](https://github.com/nf-core/spatialaxe) 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. + +## Getting help + +For further information/help, please consult the [nf-core/spatialaxe documentation](https://nf-co.re/spatialaxe/usage) and don't hesitate to get in touch on the nf-core Slack [#spatialaxe](https://nfcore.slack.com/channels/spatialaxe) channel ([join our Slack here](https://nf-co.re/join/slack)). + +## Pipeline contribution conventions + +To make the `nf-core/spatialaxe` 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. +9. Update MultiQC config `assets/multiqc_config.yml` so relevant suffixes, file name clean up and module plots are in the appropriate order. If applicable, add a [MultiQC](https://https://multiqc.info/) module. +10. Add a description of the output files and if relevant any appropriate images from the MultiQC report to `docs/output.md`. + +### 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/nf-core/spatialaxe/codespaces) +- Tools installed + - nf-core + - Nextflow + +Devcontainer specs: + +- [DevContainer config](.devcontainer/devcontainer.json) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 08eca313..b08b451d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -8,7 +8,7 @@ body: Before you post this issue, please check the documentation: - [nf-core website: troubleshooting](https://nf-co.re/usage/troubleshooting) - - [nf-core/spatialxe pipeline documentation](https://nf-co.re/spatialxe/usage) + - [nf-core/spatialaxe pipeline documentation](https://nf-co.re/spatialaxe/usage) - type: textarea id: description attributes: @@ -46,4 +46,4 @@ body: * Executor _(eg. slurm, local, awsbatch)_ * Container engine: _(e.g. Docker, Singularity, Conda, Podman, Shifter, Charliecloud, or Apptainer)_ * OS _(eg. CentOS Linux, macOS, Linux Mint)_ - * Version of nf-core/spatialxe _(eg. 1.1, 1.5, 1.8.2)_ + * Version of nf-core/spatialaxe _(eg. 1.1, 1.5, 1.8.2)_ diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 6192b81d..881458ad 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,6 +2,6 @@ contact_links: - name: Join nf-core url: https://nf-co.re/join about: Please join the nf-core community here - - name: "Slack #spatialxe channel" - url: https://nfcore.slack.com/channels/spatialxe - about: Discussion about the nf-core/spatialxe pipeline + - name: "Slack #spatialaxe channel" + url: https://nfcore.slack.com/channels/spatialaxe + about: Discussion about the nf-core/spatialaxe pipeline diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 9276baef..23ffd0c9 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,5 +1,5 @@ name: Feature request -description: Suggest an idea for the nf-core/spatialxe pipeline +description: Suggest an idea for the nf-core/spatialaxe pipeline labels: enhancement body: - type: textarea diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 6a378da4..04f515c8 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,22 +1,22 @@ ## 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/nf-core/spatialxe/tree/master/docs/CONTRIBUTING.md) -- [ ] If necessary, also make a PR on the nf-core/spatialxe _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. +- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/spatialaxe/tree/master/.github/CONTRIBUTING.md) +- [ ] If necessary, also make a PR on the nf-core/spatialaxe _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] 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 e2833ee9..34085279 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@4069fbbaabe94c08faba4ad261bfa88225ba133f # v2 + uses: nf-core/setup-nf-test@v1 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 ad686e8e..3b9724c7 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@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3 + uses: nf-core/setup-nextflow@v2 with: version: "${{ env.NXF_VERSION }}" - name: Set up Python - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 + uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 with: python-version: "3.14" - name: Install nf-test - uses: nf-core/setup-nf-test@4069fbbaabe94c08faba4ad261bfa88225ba133f # v2 + uses: nf-core/setup-nf-test@v1 with: version: "${{ env.NFT_VER }}" install-pdiff: true - name: Setup apptainer if: contains(inputs.profile, 'singularity') - uses: eWaterCycle/setup-apptainer@3f706d898c9db585b1d741b4692e66755f3a1b40 # v2 + uses: eWaterCycle/setup-apptainer@main - name: Set up Singularity if: contains(inputs.profile, 'singularity') @@ -48,7 +48,7 @@ runs: - name: Conda setup if: contains(inputs.profile, 'conda') - uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4 + uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3 with: auto-update-conda: true conda-solver: libmamba diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index 5eb53aee..1fb4ced6 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -14,7 +14,7 @@ jobs: run-platform: name: Run AWS full tests # run only if the PR is approved by at least 2 reviewers and against the master/main branch or manually triggered - if: github.repository == 'nf-core/spatialxe' && github.event.review.state == 'approved' && (github.event.pull_request.base.ref == 'master' || github.event.pull_request.base.ref == 'main') || github.event_name == 'workflow_dispatch' || github.event_name == 'release' + if: github.repository == 'nf-core/spatialaxe' && github.event.review.state == 'approved' && (github.event.pull_request.base.ref == 'master' || github.event.pull_request.base.ref == 'main') || github.event_name == 'workflow_dispatch' || github.event_name == 'release' runs-on: ubuntu-latest steps: - name: Set revision variable @@ -23,7 +23,7 @@ jobs: echo "revision=${{ (github.event_name == 'workflow_dispatch' || github.event_name == 'release') && github.sha || 'dev' }}" >> "$GITHUB_OUTPUT" - name: Launch workflow via Seqera Platform - uses: seqeralabs/action-tower-launch@51565b514bff1827cf34620de25d0055759f1fc9 # v2 + uses: seqeralabs/action-tower-launch@v2 # TODO nf-core: You can customise AWS full pipeline tests as required # Add full size test data (but still relatively small datasets for few samples) # on the `test_full.config` test runs with only one set of parameters @@ -32,34 +32,15 @@ jobs: access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} compute_env: ${{ vars.TOWER_COMPUTE_ENV }} revision: ${{ steps.revision.outputs.revision }} - workdir: s3://${{ vars.AWS_S3_BUCKET }}/work/spatialxe/work-${{ steps.revision.outputs.revision }} - nextflow_config: | - plugins { - id 'nf-slack@0.5.0' - } - slack { - enabled = true - bot { - token = '${{ secrets.NFSLACK_BOT_TOKEN }}' - channel = 'spatialxe' - } - onStart { - enabled = false - } - onComplete { - message = ':white_check_mark: *spatialxe/test_full* completed successfully! :tada:' - } - onError { - message = ':x: *spatialxe/test_full* failed :crying_cat_face:' - } - } + workdir: s3://${{ vars.AWS_S3_BUCKET }}/work/spatialaxe/work-${{ steps.revision.outputs.revision }} parameters: | { - "outdir": "s3://${{ vars.AWS_S3_BUCKET }}/spatialxe/results-${{ steps.revision.outputs.revision }}" + "hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}", + "outdir": "s3://${{ vars.AWS_S3_BUCKET }}/spatialaxe/results-${{ steps.revision.outputs.revision }}" } profiles: test_full - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 with: name: Seqera Platform debug log file path: | diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml index 632a6a5e..8a8d7f8e 100644 --- a/.github/workflows/awstest.yml +++ b/.github/workflows/awstest.yml @@ -7,25 +7,25 @@ on: jobs: run-platform: name: Run AWS tests - if: github.repository == 'nf-core/spatialxe' + if: github.repository == 'nf-core/spatialaxe' runs-on: ubuntu-latest steps: # Launch workflow using Seqera Platform CLI tool action - name: Launch workflow via Seqera Platform - uses: seqeralabs/action-tower-launch@51565b514bff1827cf34620de25d0055759f1fc9 # v2 + uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ vars.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} compute_env: ${{ vars.TOWER_COMPUTE_ENV }} revision: ${{ github.sha }} - workdir: s3://${{ vars.AWS_S3_BUCKET }}/work/spatialxe/work-${{ github.sha }} + workdir: s3://${{ vars.AWS_S3_BUCKET }}/work/spatialaxe/work-${{ github.sha }} parameters: | { - "outdir": "s3://${{ vars.AWS_S3_BUCKET }}/spatialxe/results-test-${{ github.sha }}" + "outdir": "s3://${{ vars.AWS_S3_BUCKET }}/spatialaxe/results-test-${{ github.sha }}" } profiles: test - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 with: name: Seqera Platform debug log file path: | diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index 873c6700..1d9a4442 100644 --- a/.github/workflows/branch.yml +++ b/.github/workflows/branch.yml @@ -13,15 +13,15 @@ jobs: 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 - name: Check PRs - if: github.repository == 'nf-core/spatialxe' + if: github.repository == 'nf-core/spatialaxe' run: | - { [[ ${{github.event.pull_request.head.repo.full_name }} == nf-core/spatialxe ]] && [[ $GITHUB_HEAD_REF == "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]] + { [[ ${{github.event.pull_request.head.repo.full_name }} == nf-core/spatialaxe ]] && [[ $GITHUB_HEAD_REF == "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]] # 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 - name: Post PR comment if: failure() - uses: mshick/add-pr-comment@8e4927817251f1ff60c001f04568532b38e0b4a0 # v3 + uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 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 172de6f3..6adb0fff 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@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10 + - uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # 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 a7bf4fc2..45884ff9 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -38,16 +38,13 @@ 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@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3 + uses: nf-core/setup-nextflow@v2 - name: Disk space cleanup uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 + - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 with: python-version: "3.14" architecture: "x64" @@ -57,15 +54,10 @@ 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 nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} + pip install git+https://github.com/nf-core/tools.git - name: Make a cache directory for the container images run: | @@ -135,7 +127,7 @@ jobs: fi - name: Upload Nextflow logfile for debugging purposes - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 with: name: nextflow_logfile.txt path: .nextflow.log* diff --git a/.github/workflows/fix_linting.yml b/.github/workflows/fix_linting.yml index e9c90ca8..5f731f04 100644 --- a/.github/workflows/fix_linting.yml +++ b/.github/workflows/fix_linting.yml @@ -9,11 +9,11 @@ jobs: if: > contains(github.event.comment.html_url, '/pull/') && contains(github.event.comment.body, '@nf-core-bot fix linting') && - github.repository == 'nf-core/spatialxe' + github.repository == 'nf-core/spatialaxe' runs-on: ubuntu-latest steps: # Use the @nf-core-bot token to check out so we can push later - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: token: ${{ secrets.nf_core_bot_auth_token }} @@ -31,18 +31,22 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }} - - name: Install Nextflow - uses: nf-core/setup-nextflow@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3 + # Install and run pre-commit + - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 + with: + python-version: "3.14" + + - name: Install pre-commit + run: pip install pre-commit - # Install and run prek - - name: Run prek - id: prek - uses: j178/prek-action@6ad80277337ad479fe43bd70701c3f7f8aa74db3 # v2 + - name: Run pre-commit + id: pre-commit + run: pre-commit run --all-files continue-on-error: true # indication that the linting has finished - name: react if linting finished succesfully - if: steps.prek.outcome == 'success' + if: steps.pre-commit.outcome == 'success' uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5 with: comment-id: ${{ github.event.comment.id }} @@ -50,7 +54,7 @@ jobs: - name: Commit & push changes id: commit-and-push - if: steps.prek.outcome == 'failure' + if: steps.pre-commit.outcome == 'failure' run: | git config user.email "core@nf-co.re" git config user.name "nf-core-bot" @@ -82,4 +86,4 @@ jobs: issue-number: ${{ github.event.issue.number }} body: | @${{ github.actor }} I tried to fix the linting errors, but it didn't work. Please fix them manually. - See [CI log](https://github.com/nf-core/spatialxe/actions/runs/${{ github.run_id }}) for more details. + See [CI log](https://github.com/nf-core/spatialaxe/actions/runs/${{ github.run_id }}) for more details. diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 8738ffc9..7a527a34 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -11,31 +11,33 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - - name: Install Nextflow - uses: nf-core/setup-nextflow@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3 + - name: Set up Python 3.14 + uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 + with: + python-version: "3.14" - - name: Run prek - uses: j178/prek-action@6ad80277337ad479fe43bd70701c3f7f8aa74db3 # v2 + - name: Install pre-commit + run: pip install pre-commit + + - name: Run pre-commit + run: pre-commit run --all-files nf-core: runs-on: ubuntu-latest steps: - name: Check out pipeline code - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 - name: Install Nextflow - uses: nf-core/setup-nextflow@b4ec1bc7c16a94435159de94a05253542fddf6ef # v3 + uses: nf-core/setup-nextflow@v2 - - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6 + - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 with: 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 @@ -43,10 +45,12 @@ jobs: config: ${{ github.workspace }}/.nf-core.yml - name: Install dependencies - run: uv tool install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} + run: | + python -m pip install --upgrade pip + pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} - name: Run nf-core pipelines lint - if: ${{ github.base_ref != 'master' || github.base_ref != 'main' }} + if: ${{ github.base_ref != 'master' }} env: GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -54,7 +58,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' || github.base_ref == 'main' }} + if: ${{ github.base_ref == 'master' }} env: GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -67,7 +71,7 @@ jobs: - name: Upload linting log file artifact if: ${{ always() }} - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 with: name: linting-logs path: | diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml index 5b0c24f7..e6e9bc26 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@b6e2e70617bc3265edd6dab6c906732b2f1ae151 # v21 + uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11 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@70d2764d1a7d5d9560b100cbea0077fc8f633987 # v3 + uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # v2 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 efd72d65..c98d76ec 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.4" + NFT_VER: "0.9.3" NFT_WORKDIR: "~" NXF_ANSI_LOG: false NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/.singularity @@ -40,7 +40,7 @@ jobs: rm -rf ./* || true rm -rf ./.??* || true ls -la ./ - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: fetch-depth: 0 @@ -78,14 +78,14 @@ jobs: - isMain: false profile: "singularity" NXF_VER: - - "25.10.4" + - "25.04.0" - "latest-everything" env: NXF_ANSI_LOG: false TOTAL_SHARDS: ${{ needs.nf-test-changes.outputs.total_shards }} steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: fetch-depth: 0 diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml index 78d5dbe0..431d3d44 100644 --- a/.github/workflows/release-announcements.yml +++ b/.github/workflows/release-announcements.yml @@ -18,7 +18,7 @@ jobs: id: get_description run: | echo "description=$(curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .description')" >> $GITHUB_OUTPUT - - uses: rzr/fediverse-action@563159eb8d45f70ab6aaba36ed55cd037e51f441 # master + - uses: rzr/fediverse-action@master with: access-token: ${{ secrets.MASTODON_ACCESS_TOKEN }} host: "mstdn.science" # custom host if not "mastodon.social" (default) @@ -34,7 +34,7 @@ jobs: bsky-post: runs-on: ubuntu-latest steps: - - uses: zentered/bluesky-post-action@5a91cc2ad10a304a4e96c16182dbe4918710bcf6 # v0.4.0 + - uses: zentered/bluesky-post-action@6461056ea355ea43b977e149f7bf76aaa572e5e8 # v0.3.0 with: post: | Pipeline release! ${{ github.repository }} v${{ github.event.release.tag_name }} - ${{ github.event.release.name }}! diff --git a/.github/workflows/template-version-comment.yml b/.github/workflows/template-version-comment.yml index ea30827e..e8560fc7 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 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@8e4927817251f1ff60c001f04568532b38e0b4a0 # v3 + uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 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 [Synchronisation documentation](https://nf-co.re/docs/developing/template-syncs/overview). + > 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). # diff --git a/.gitignore b/.gitignore index cc2b1a77..a42ce016 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,3 @@ testing/ testing* *.pyc null/ -.lineage/ diff --git a/.nf-core.yml b/.nf-core.yml index ae563bd5..75d83cd7 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -8,14 +8,16 @@ lint: - docs/images/nf-core-spatialxe_logo_dark.png - docs/images/nf-core-spatialxe_logo_light.png - .github/PULL_REQUEST_TEMPLATE.md -nf_core_version: 4.0.2 +nf_core_version: 3.5.2 repository_type: pipeline template: - author: Sameesh Kher, Florian Heyl + author: Sameesh Kher, Dongze He, Florian Heyl description: A pipeline for spatialomics Xenium In Situ data. force: false is_nfcore: true - name: spatialxe + name: spatialaxe org: nf-core outdir: . + skip_features: + - igenomes version: 1.0.0 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f51e1a28..d06777a8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,7 +4,7 @@ repos: hooks: - id: prettier additional_dependencies: - - prettier@3.8.3 + - prettier@3.6.2 - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: @@ -13,21 +13,15 @@ repos: exclude: | (?x)^( .*ro-crate-metadata.json$| - modules/(?!local/).*| - subworkflows/(?!local/).*| + modules/nf-core/.*| + subworkflows/nf-core/.*| .*\.snap$ )$ - id: end-of-file-fixer exclude: | (?x)^( .*ro-crate-metadata.json$| - modules/(?!local/).*| - subworkflows/(?!local/).*| + modules/nf-core/.*| + subworkflows/nf-core/.*| .*\.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 63cde500..dd749d43 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,6 @@ email_template.html +adaptivecard.json +slackreport.json .nextflow* work/ data/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f0d1258..d7e6cef7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,11 @@ -# nf-core/spatialxe: Changelog +# nf-core/spatialaxe: Changelog 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). ## v1.0.0 - [date] -Initial release of nf-core/spatialxe, created with the [nf-core](https://nf-co.re/) template. +Initial release of nf-core/spatialaxe, created with the [nf-core](https://nf-co.re/) template. ### `Added` diff --git a/CITATIONS.md b/CITATIONS.md index e8c14658..6095d5bb 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -1,4 +1,4 @@ -# nf-core/spatialxe: Citations +# nf-core/spatialaxe: Citations ## [nf-core](https://pubmed.ncbi.nlm.nih.gov/32055031/) diff --git a/LICENSE b/LICENSE index df908d32..cf21b558 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) The nf-core/spatialxe team +Copyright (c) The nf-core/spatialaxe team Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index f3f2cbde..e04eb70f 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,27 @@

- - nf-core/spatialxe + + nf-core/spatialaxe

-[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/spatialxe) -[![GitHub Actions CI Status](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml) -[![GitHub Actions Linting Status](https://github.com/nf-core/spatialxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialxe/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/spatialxe/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX) +[![Open in GitHub Codespaces](https://img.shields.io/badge/Open_In_GitHub_Codespaces-black?labelColor=grey&logo=github)](https://github.com/codespaces/new/nf-core/spatialaxe) +[![GitHub Actions CI Status](https://github.com/nf-core/spatialaxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialaxe/actions/workflows/nf-test.yml) +[![GitHub Actions Linting Status](https://github.com/nf-core/spatialaxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialaxe/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/spatialaxe/results)[![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%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) +[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.04.0-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.5.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.5.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/) -[![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/spatialxe) +[![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/spatialaxe) -[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23spatialxe-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/spatialxe)[![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) +[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23spatialaxe-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/spatialaxe)[![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) ## Introduction -**nf-core/spatialxe** is a bioinformatics pipeline that ... +**nf-core/spatialaxe** is a bioinformatics pipeline that ... + workflows use the "tube map" design for that. See https://nf-co.re/docs/guidelines/graphic_design/workflow_diagrams#examples for examples. --> 1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) ## Usage > [!NOTE] -> 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. +> 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. ```bash -nextflow run nf-core/spatialxe \ +nextflow run nf-core/spatialaxe \ -profile \ --input samplesheet.csv \ --outdir ``` > [!WARNING] -> 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). +> 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). -For more details and further functionality, please refer to the [usage documentation](https://nf-co.re/spatialxe/usage) and the [parameter documentation](https://nf-co.re/spatialxe/parameters). +For more details and further functionality, please refer to the [usage documentation](https://nf-co.re/spatialaxe/usage) and the [parameter documentation](https://nf-co.re/spatialaxe/parameters). ## Pipeline output -To see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/spatialxe/results) tab on the nf-core website pipeline page. +To see the results of an example test run with a full size dataset refer to the [results](https://nf-co.re/spatialaxe/results) tab on the nf-core website pipeline page. For more details about the output files and reports, please refer to the -[output documentation](https://nf-co.re/spatialxe/output). +[output documentation](https://nf-co.re/spatialaxe/output). ## Credits -nf-core/spatialxe was originally written by Sameesh Kher, Florian Heyl. +nf-core/spatialaxe was originally written by Sameesh Kher, Dongze He, Florian Heyl. We thank the following people for their extensive assistance in the development of this pipeline: @@ -86,14 +86,14 @@ We thank the following people for their extensive assistance in the development ## Contributions and Support -If you would like to contribute to this pipeline, please see the [contributing guidelines](docs/CONTRIBUTING.md). +If you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md). -For further information or help, don't hesitate to get in touch on the [Slack `#spatialxe` channel](https://nfcore.slack.com/channels/spatialxe) (you can join with [this invite](https://nf-co.re/join/slack)). +For further information or help, don't hesitate to get in touch on the [Slack `#spatialaxe` channel](https://nfcore.slack.com/channels/spatialaxe) (you can join with [this invite](https://nf-co.re/join/slack)). ## Citations - + diff --git a/assets/adaptivecard.json b/assets/adaptivecard.json new file mode 100644 index 00000000..1fbf3f15 --- /dev/null +++ b/assets/adaptivecard.json @@ -0,0 +1,67 @@ +{ + "type": "message", + "attachments": [ + { + "contentType": "application/vnd.microsoft.card.adaptive", + "contentUrl": null, + "content": { + "\$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "msteams": { + "width": "Full" + }, + "type": "AdaptiveCard", + "version": "1.2", + "body": [ + { + "type": "TextBlock", + "size": "Large", + "weight": "Bolder", + "color": "<% if (success) { %>Good<% } else { %>Attention<%} %>", + "text": "nf-core/spatialaxe v${version} - ${runName}", + "wrap": true + }, + { + "type": "TextBlock", + "spacing": "None", + "text": "Completed at ${dateComplete} (duration: ${duration})", + "isSubtle": true, + "wrap": true + }, + { + "type": "TextBlock", + "text": "<% if (success) { %>Pipeline completed successfully!<% } else { %>Pipeline completed with errors. The full error message was: ${errorReport}.<% } %>", + "wrap": true + }, + { + "type": "TextBlock", + "text": "The command used to launch the workflow was as follows:", + "wrap": true + }, + { + "type": "TextBlock", + "text": "${commandLine}", + "isSubtle": true, + "wrap": true + } + ], + "actions": [ + { + "type": "Action.ShowCard", + "title": "Pipeline Configuration", + "card": { + "type": "AdaptiveCard", + "\$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "body": [ + { + "type": "FactSet", + "facts": [<% out << summary.collect{ k,v -> "{\"title\": \"$k\", \"value\" : \"$v\"}"}.join(",\n") %> + ] + } + ] + } + } + ] + } + } + ] +} diff --git a/assets/email_template.html b/assets/email_template.html index 819a2f90..b3dd2884 100644 --- a/assets/email_template.html +++ b/assets/email_template.html @@ -4,21 +4,21 @@ - - nf-core/spatialxe Pipeline Report + + nf-core/spatialaxe Pipeline Report
-

nf-core/spatialxe ${version}

+

nf-core/spatialaxe ${version}

Run Name: $runName

<% if (!success){ out << """
-

nf-core/spatialxe execution completed unsuccessfully!

+

nf-core/spatialaxe execution completed unsuccessfully!

The exit status of the task that caused the workflow execution to fail was: $exitStatus.

The full error message was:

${errorReport}
@@ -27,7 +27,7 @@

nf-core/spatialxe execution completed } else { out << """
- nf-core/spatialxe execution completed successfully! + nf-core/spatialaxe execution completed successfully!
""" } @@ -44,8 +44,8 @@

Pipeline Configuration:

-

nf-core/spatialxe

-

https://github.com/nf-core/spatialxe

+

nf-core/spatialaxe

+

https://github.com/nf-core/spatialaxe

diff --git a/assets/email_template.txt b/assets/email_template.txt index f92d5849..9447a493 100644 --- a/assets/email_template.txt +++ b/assets/email_template.txt @@ -4,15 +4,15 @@ |\\ | |__ __ / ` / \\ |__) |__ } { | \\| | \\__, \\__/ | \\ |___ \\`-._,-`-, `._,._,' - nf-core/spatialxe ${version} + nf-core/spatialaxe ${version} ---------------------------------------------------- Run Name: $runName <% if (success){ - out << "## nf-core/spatialxe execution completed successfully! ##" + out << "## nf-core/spatialaxe execution completed successfully! ##" } else { out << """#################################################### -## nf-core/spatialxe execution completed unsuccessfully! ## +## nf-core/spatialaxe execution completed unsuccessfully! ## #################################################### The exit status of the task that caused the workflow execution to fail was: $exitStatus. The full error message was: @@ -35,5 +35,5 @@ Pipeline Configuration: <% out << summary.collect{ k,v -> " - $k: $v" }.join("\n") %> -- -nf-core/spatialxe -https://github.com/nf-core/spatialxe +nf-core/spatialaxe +https://github.com/nf-core/spatialaxe diff --git a/assets/methods_description_template.yml b/assets/methods_description_template.yml index 1ac4277b..aedfd24f 100644 --- a/assets/methods_description_template.yml +++ b/assets/methods_description_template.yml @@ -1,13 +1,13 @@ -id: "nf-core-spatialxe-methods-description" +id: "nf-core-spatialaxe-methods-description" description: "Suggested text and references to use when describing pipeline usage within the methods section of a publication." -section_name: "nf-core/spatialxe Methods Description" -section_href: "https://github.com/nf-core/spatialxe" +section_name: "nf-core/spatialaxe Methods Description" +section_href: "https://github.com/nf-core/spatialaxe" plot_type: "html" ## TODO nf-core: Update the HTML below to your preferred methods description, e.g. add publication citation for this pipeline ## You inject any metadata in the Nextflow '${workflow}' object data: |

Methods

-

Data was processed using nf-core/spatialxe v${workflow.manifest.version} ${doi_text} of the nf-core collection of workflows (Ewels et al., 2020), utilising reproducible software environments from the Bioconda (Grüning et al., 2018) and Biocontainers (da Veiga Leprevost et al., 2017) projects.

+

Data was processed using nf-core/spatialaxe v${workflow.manifest.version} ${doi_text} of the nf-core collection of workflows (Ewels et al., 2020), utilising reproducible software environments from the Bioconda (Grüning et al., 2018) and Biocontainers (da Veiga Leprevost et al., 2017) projects.

The pipeline was executed with Nextflow v${workflow.nextflow.version} (Di Tommaso et al., 2017) with the following command:

${workflow.commandLine}

${tool_citations}

diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index a11d3d7f..c7bf650c 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,13 +1,13 @@ report_comment: > - This report has been generated by the nf-core/spatialxe + This report has been generated by the nf-core/spatialaxe analysis pipeline. For information about how to interpret these results, please see the - documentation. + documentation. report_section_order: - "nf-core-spatialxe-methods-description": + "nf-core-spatialaxe-methods-description": order: -1000 software_versions: order: -1001 - "nf-core-spatialxe-summary": + "nf-core-spatialaxe-summary": order: -1002 export_plots: true diff --git a/assets/nf-core-spatialaxe_logo_light.png b/assets/nf-core-spatialaxe_logo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a25c982ad5a51c810d282d9b6a9788511000f9 GIT binary patch literal 79633 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 R0{e}~8;1WBUbB1re*i^tg%tn* literal 0 HcmV?d00001 diff --git a/assets/nf-core-spatialxe_logo_light.png b/assets/nf-core-spatialxe_logo_light.png deleted file mode 100644 index 8a8ca75bbb8c67fe1521e272cbd6ab71fce03182..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80727 zcmeEui93|*|NktQ%2p{POG2_GTh>fbF$vKkWvL`7S+eglWvLVyq^!vx5wgoR)sd*| zWoJr4wy}@>_kPs*ocb4j*Y~ijuVhOY*KysvQ|q$y*J-S zk72oMpYe0q?VAbaq#*9EMu$IdcoXp^so>_-$xz2=@*S~&`he~jv*V1qmOg7gB~|ku z4iN>q9{kdyZ|YpwtFN7@xuSZ(Q#H%X?NoYKwa=aXj}v2~+N64J89ds7jyopzTE&lL zTX=gIP6(U()S#j$694J$cS-q-%;cBHV%V6wo@O1Lq5Km$NZ4lj<2c zwqe?icigw3j2(aYEkjNIUZPcw=4bC$%q+7b?p1P^!$01``3%CuY^87 z;+7(ucG8n%c1WY$)*4{X-}BJ>bo;<}^v>;*r&@E0IG1l!Tp!}0zq857k7xHop;0Kp zp@Szq;zqjNA6dD3R!l5jDHM2N_C;`RXROn?GDR!4N3Rr{H;HXrSGA?_^#Q)^>x3(} z=<43q$8GY`M>pzW^wyWZeG~I-r(IWRLDQGU@i1q_WC4ffOiFfW-Ev8m^QVz}l&O0c zE-N-A&)rvx=OBv`{`)UCX`>qP&krcRHeYrA`@JZkb|WkP&!3Hh&M?CNd_(@9H(`JN z94XB0_vgv}e;Qn^msPPxe=j4ZZ3tyk36Qt*{xj$1vfpf zfBH3w+1b*|GaJs!(AUwvQtw>gauUf&pe#+DqG^ev2_0MidbaBfJliPBoT!80#N55W zHQE^UG1`B{W;y77G;^JZ?XkZ+q<%geg@+i7lHDn>$mVspb@xY%5NgE@d77ner^MdB z*1nVP_UY#-Y6+E<6!9i?+oS8$-pt;d3D=}sx*MwhbhNflGtKiBcGI#+HhX)dN@uIz zwmP&i0vm)y17C`|p#E^MEEm>zX-KMMI?WQQU^kBA;1tj@<~8`!k6U+iC}prxPmuhX zLf7-#M5camXj9p)7C>oq{&QD}yf0a%zRENK>b9gjroGHS>5cb)J>cAwuIbORgq`;p zTlA*RBIgOO7V`Q-GHmC7ec{waQgA@s=7!!EAVMzKXzyQ9fV>qPdH^Ma;^2%Idm@BQ zM2@WTS7c%30FP{ds&OGjve=0;e@c)!{5Qs~o)&OAOBL&2h3C z+(CYm`)5ePckWtirUj;j=#14_e|4Rpj0@3N8b)$~sm-A@5Q%3?LyG%gU8O9hH~ z8A^^977D%Xm^qkJdCK;0QQ7W6MLAC=Yv;Zj_Q%9qHa)tdCeXU@hbZ2C04`h6DoMfY zv>$5J0irT?7{pe5eUoP@Q5MB1cp$;gj9tSTbi-0$!c*+N++WJ^G8dF%Gu@Qtx9EAI z2(`*l<_b^pu(Eh_HU}9)^Sqh{~|U>-3rmZFc!^%_ZbeD=flc&OM@tp z?svck6BIj*j_#cr!gBffi`+ED7@O#-v_4>H7vHWV z3c>16#ozJ|(2YlFyr|FcUGLF?NR3^%$qz9+`SUEr7eQ9a!GKiqe+#+`-V#Fjq||3D zuPa`Kw_>$#ixM7R_;YDRW5ifEmiSdt!ZNxsaTTCTAA%!}l5>;)N+l%RS8lG9h?`u}UeiCe>ZJV(mp_czII|xVk zvx(}wP}Y$Fk9aihozyix{WmSOp47XVdsg*mH-)XkDIf2u38W?bXA$Ryrt>*3-i2J>&i0gGs^9OpXxyy zb;$Dde`29+TOBjUaNlGlPE#>%H#ySxFD|^Doz|3Htw#j7FH)4Oi2jQQL6_lt3e@h! z;-jn#>Vt2(O^0&+I$A1zY-%#m4D8{BHen}$>&;&~?*{!7K>Ifhe2yCvA$b2SL1}lU z({oPqQlxA)AWNU^FWz48ypb5aN(bS)vx(gi)&DE~qmV#_TuCdecp<(c+=Lj#zbSIu z=jbC8UCGCoe~=3Y{wwd}3-U`_^sxd?#V3h|Q`Y~buZqWq)UxqEr>^$$Bg-E8YuQ_F zYK~_TTanck|ME4q4P(s%{SGXCa`$$S74Q7TKb9B0Z|aM{i4|MzCWzW%{!$M1kD%xx zvtrh&lQ9AzK{24tOKN zR6~TB^!H)X;V`T0Vu7OiIbuoJ|0TP&(?_d3*5_+__{X{WkEQb_qPxUhLN()s)QA+{rg1e{M9F;f{?oKbylL#% zlmcyglD2M#c-pMz{0~qK2Z5uT2{GsY;J^*a$$Md_6%}MLAVeK`JP!a*XBz*tdPtL; zzwVERC;R8AxedY#jxzL@5Fm_3h>)-gWuahRXPN$xg{qO{yALFufV##scg1s~pVp4B zY%qt0XYzOdxnAEL>ZT;^=?mNGNWd|gcY?=B0D0)oO>aCoc~68^)}XpDJ#jh1*LrXx zdA9xHt|c=$`WA8|_Rrb_M=hKw1^jm*3RO zU=4){s^|a1N!vG3cPA#OeOd#9&CDS24tGG!P~zmyEIxL%5Yc|pe^5fHncI0@5=3go z;v?^}j^L|`I#Y3bcs{N`ROTjL<9~j9*O_$QY^LW)&eKCOpH6#w!}%9(wC&6uaQ*^> zuFxa@6@HAJA@k`#j>cea`WSFy<`byT{f0Hq#;4QoRe<8(z|YRllsTySjd|6A!wwxo zO=Wg)*tHGsb0XPz_}*;BgSDlMd!p_-F_kHTNPVBQU+vw9Pz&}z*@Q$-wJA5sU$LpM z7h@gy2`|&U`LX=W(gHLI2Z`1UcAD{%#aUyT3Dtowsv{Jgp!X~M`{}jOaS`M`oeGSV zxeGkt69zF+?wrmt5g~7`7vSMflk4ccg(F9XjOB#X7krrcSx-t#tu`cDDoPf7dEfL4 z!EKG#)Vrd^u0T16L)g{`w7O{>VygOaH_E*fYowwD<0|&c+dVD6ODav%X|*e{SVq(P zrx_N>#+}?d<9@L!H~r*2Ll(hJYC4H~)(ISFdio!6Wv~p&(UN?#{#H%T?QiB1do3{w z*JxjWWhD*O_s=XT>z|oLqiM8AShW5u26nJ)v$8Nd{t&y6Wb0=sFMb4gz z5S6O@wK=6*a%HJx3bc?(RL7(Ovl%dvK};6ACw7!?8t5XUP_oTE#pbg4I%yo zzYBGWLkY~0TET;F^{F_m;0O7Z9OmC=LbqMnK&V}haPy@}mWkehsP6~wDv|nrV~y2| zllRiz_o!vNE1w&^jHtd|+52Gu^#)LVE=0GjGR(3C*~)l5R2_BO6n~Lsd|6|&irgC5 zI3OtEcdqdLFv6q52ukp&_j}FkrCEzwCt}~G{w@j150o{a7p7}2XLPSyd!ypdH@3qY z8)>JgQ>2SDmEU{(h`c)?Kq^4g`X*=vdjOZ8sBHiOQ#YkrGd9r`X_llRs?%?#NqgH4 zqI?(R=>7l(e7CE({Wwg)BRPRvc|l4Aw}OO!TTYf(n6sC$7yHw8|K24P%u$gpzP1aT z4WZ_Mv|9=fRgUT~r+i=m(-%b*9(wtFV7Vtu0JWvb>gwyxK%q{yuKbX`AIz&2n~GD7 z(&rWQn{<)zl-VfD#ELv)?vIvc=l@+TjbW;1J{$vER1BCntSY*=CRKy=ff23LK!3be5YuWtf>8^w6 zyt2#|TR=^Fdh7~(F=jC+1Wnpj-*6T!GD@V}r7gWMMKUukA^Rs*!~|YNQMU~>UMn=q zw)l8GC3x*AMa4x5hKjp;4ke5|P= zh9X2JQ{=#yL#UlZn}E8Vzsyzt$&?muuvsVe#q4K9Y>)aET}SovGS2^`8l=5#5wceq zc_d}OwETsOv+`TVWcVEK@d~GcEgt8+mZTh=z;rbT=)r6EkG>F)kE2X*yQ*08#U?r21@$V}!yT`uX=J6ZJ z>9s8PY)@(BZ)%r2w^L$X8uyUrvV`{I|mNyUav)P$WM4jW= z-!FdmY5Oep=%$UMlT#laE`9&eDO8zT@{@Ri+dFi9PWbn#&ki73lOPTe2@S;VlK^=+ z(VCxDLMKnk!Ut<66LUiHT{S8iqleKMs_p{`hyycnDQ4O4sH3EaN3x^*Rdr$sZ;5Yo zZ@H?ebCfK+OUy1_dUY-&v0}ERy}fQzNXg?jxo`AeEM{tWWb;VBV0?+PiSs#P^L(T1 z4-Kx1+v#$&r6Vb`eGL~x1Cf|caSQ17L8^`Jk(*Z?5$+(zur)~MUENQA4$jw6!qGVI zbI&HV+lryJGe0-eE}hr+>Js+#-dy_FPhp>$fI+E8bD&=3a&Sf`Pp@OkNTI-@#(kTb z3m^PC%K9eN$3IvnYkmE;eaz=#n(uMj%Z;Yu)yhPFtY-7GmZcKO{(HdxCTi61XB;X~ ztbIJ=_5V_R)X^#x7C+8o!F5f+_-ln7t9)t!ihJM;U#Y&NMf4oT0QZoYU1>-EwIVZ5 zdQtX*`Jzc{W>nC_hz+wl*To9d=A|R{BNsS z#hvL7{eE<_Eh*7wkE9gtci|C7O6+|MznJ?YD)NOdWtf2jB zr3$EHBoM!)hA9z`5j>U~Bh~t}Zsg0*hpgqArVrV&Io6%#ZJ)j;`nnyT*lrT%H0g_r zu)nyp#p43FKLaSD1R?b(+a0h5iE2pf46Kv?`men27|U6(`Y0j6;1`IK1c1?YwlxDi zR4!6ARwqDTu_Cq5uJpn}Q^r2&l7&9jRwh``Wl?I(ucO_h*LmiC z{1CQ6@NlEjvYCI4b!)tDgRAoLjWhG|BO7V)RCnN(xmIwv;#w(dF~ux9fu&5$h2s}c zO6XXy9YUa3gpLP7Zk^0BNrMo`64F$2sx3)G|DJ%87D%`Hv7NQ3e#<;jU-3gQt^1$at-TmG_0LZoM`h;Bob-m98dE+{Oi+n3 ztr@srj-9p>h;nfQ#{~5zC0Tw^KoB`D`Hq>Eg7|gwPp3<_ss-eq>GyK=ga80%woc=Y z-HYZ}mCnBYU`wYj>2t68>xvfj^Id-0l$NyRYWw@u=qG=SG8#bjf@Y-!!6r^?n+z9F z?}95_+k?XI$?JGyaHDSS$XWsKT3o9I-M&Q4X)d2XoyDjOOq5!l(H9?-PehZ0+mBa&p8c8}fiY&m@~=9|56iK*SQp8n3f>*{!CfR;o^Ire`QW zar+O=#vZRPx%#o$>v(1KHc(@Mz!E4ocerbsN)dkQl~|PX&>uCZ{$4!Jb1ecx)8iY2 zDZb!@O)x^tb+~Uiw)woR0^V(=Cf$AcrVnM7FDxXznReK-Xx?zVeQFFsg=fIh(d~$* z@eiP%Meq+sv+URJ(>t=uW#v;-I>^~N||;g z4*r-mPZr3F)gGvQAVI^!f!mP-t0QasbxH02byU&&b^zQJ+2y!}y?qT=GR7RAHpg-g z@X|hjUaLV-x)ee5{Op8dh3{B?=T#9j>m=;-&|3h&4vr#U_LNzOQz;plku7t{yX<^*lZ(Z5-6a z<#7tq1^W*O)@K7P=A_bqI^o}Me)L54y$1UZ0A7`nANp$Ew-&OMvoOyxsYmjmIz;DZ ztDLoPe~3Da=~tZqiVpcw2D9O_om=RyUBnV7a!AsX4>_tUGd=PTjnm9gMDk;d&pt4~ zq#NaY=y7I2ezlNDr!>?ml7xFADU7$X5RLjjvn|`bwXdJbiX`B%5CcMJOEG8Y(Fkx( zu5VTSUY{r96nCwi?nm6eMPEvs=VnI_u=OkCW5>ha9WAl&Wuk{AIqP!$D2GEKj97c4 z4w$jV0mYpu7x~e$tYB&5w&2bo@Sg#kOG68xpEj6M);qJ&IblO21nIbiWTrX0{%80) zW9(gGK$Z*f-`8+xR~nUSL?N64%o7jf5bp0@%i66*g_E$Cjnr7f>bN7#4 zpBmd^2Hpj*DHy9jwIXhCr03i^y0)b466F2cJnTRp)bK8-bOe%c9;XNSjX5;Z&9WP!6sRcX&n?J*n6(TuBu8;wm~)ed(9msKa#y10dz*YHf;1{EB{A$P=&qYTaPfUJGr zv+dVUUOh*W#aK$WX83Pd!qT;N@U{GgCB+q}q=_A8M<5SMMFy~Hm@=vwiUa-cZ-L@t zA;&V&!i7)n){}7}G+pUdcOl9(?%KBMH2}eD(!qzm+*eOtRfe#h2RkP!!TU?UCGZJH z3Qt#Ba{55DlnxoP=IxQF9~1(8;YRt-kVh$~H4Y4fCSmW9?o+#=*5M8NythbidDc>a zi(9|Myf^>m?=0?}b~>*PRZkoAQ9bsBo4U)o^-s*Q_b~Txs|81%u)%ObgR52q!HDjX z6N4y{?<2~{)Q64Y5aM^j!rO_?#8~Z1zpSX~y$0_Y0kuOyg;ph6ef{m!8c;ITStwUg zG!R{TbsuUEOe*_bLWvbj8p%fK*Ea}IjM87=#+a8hUATV{$NuR9l9l;G?ExRaA&ds- z*-Y97dW`VCRDnQX14?1d?vKq?`yELobQ`Z=usrN8F$x zjYNB3(k)OgSBBJWJEGKsI5z6Cde|i!mkPT)2n33vAnFzh`kfJj8=fZI#P6i*#1C7 zTw0#7W7si)U!~xtbx`++CoTp*L>~-nIUh)2#Zm@`Oc+V55Smrl0CSjTA%m0F4 zq?D^tOJo*y z8T#yQ2dVN39<|@KugRp7_oC6VY+&aO_JtjJzjz>}4P`JBDaV-vMHj>qu=ZbnQ_l$} zSmT+oy#`tZDX?~7%9O#5tGR#^`SnouBPtFd0^+Xi3`msv@9{XKcHYx$SAaPAn0&JApT!FRLqGilW52->f|m0cK>ptlo}JscXOz^4e`mG0yLyny;#lrf;QIfsTCxD{V@b@1L~qzpPE8N{*oViDLYQda!s zswOPf9YdpAjNvw3{Zw$pMN>uswfLs(drp=56)NJ6zQp|Ry(l0tt_~x6JXrt zAIqDfw#R@D(sy^=W0P+Z1FManFx&m~?A+f0Rr-Ag>?AUNC3RmrAxy#nBg!F)3a6$c zx-KgYc3*6iUZ9N&-vwxE%LerK;HJ`uFR0w-&m|jA9o)(u0Toe#m4xrbtIRdy&tDv9 z7LSdzPPtgdq{6Slr?Shpl)n7-k?f4L5N*gtud4VQ>MGgQ3@hXT1_g zlcb2rMB5)BTUkGNbr(5y-Z(stR5&l&8nUKTnuMZjsq0yL1X(jLRW#&Xj8@JaAGoSu zi7bWT!Sc+Ml|O@}^6>-Vxmkd)ObG%Yw79Wkr|)XA5{o-&qBI_eaULnT~4DUljXs_o@Olo~VvZ zi_jSIVyo$8OZsBR^T@wx?l?>i*_W0&rt>O4mc=L$6VZ5PzaJ4LwaEZe#P6qmh(|sO0Yhtkwv&?YdM{U?rk5{gl&hXpu{|JYFuC(~<`rxKgf)SXBr$c#0qkPKQ+h*;FP~u; z*@N+Fx0QTs-fwVGUg%gm&k0e>RRUGyl@LU%Jeb~5RX>OxdoUMJeP`-lqTUAuurqDZr&03Wzd=(+Fa0XX|AYIxi=F~3C0@fc+LH_m#+#jbdt z0Oe+>$w1?wGMlw->oKw@yCK-sA!9oawi>CEoEu`V*twXL^n|$_^M~^AO&GURl1AwV zxWw0AC6AMwiHjJin?bc%QPan6Kr&|;@z9@`tzLET?L$9&FWQ5*W^Q^vssEt%{V*{q zwyAGvdagaKxi1(&-Al!UQd|2l@J3NT0&;SgETU4fQe6t8rI@jit#l^H_p^! zjvq-ee51+gA?fHtQ}JwIsn}2^#5f7jCZ9^!u0v>A?4|o0$awJ61J=92vv016+n4It0M|(Gs@I!+5_)% zOJ&Y^^+%*}u8ek@L~&Re-R4$G-*@-vcG+v!=ReO!TRKlKd^%^y?{cL79n!UuK-@ZD zzWfWb?5v#gby=BRg2#}L|JcH|Myq|6r)Ab0=*DmN$?`rZ8Qpfqzq z^5%em3zakB#=^q;Ciax_d34P!S)pquufAxwkP9~-W+A+#kU+0C)5WPFx(PczUs=9+ z>3NL~QK&d!=RGJMi_q<8w$$fTr~JHZv=WUgYpH2WrOM{JJ@X2;3OMNTbpn^;Ame7! zzL9>(R8#razlm5jmV76Um1Rm;kJPd@SMGd#butMVl%Pp-WuLrff-w|+{KNS) zO{JrByY82w7GQ9;R>bZ)U~wK|8qs)s--Rqu!S!axq;INpGukPJ`;pVWf*z+J z`?MY0!55$Z-Pwd}D-l-3gSj8_i8=+e;}yFdGS3;p(VG2}#eE#sB>mxgC#EFgkHCu}I=-W{x;ygcnl`A_qBnbyEWh>A8dY{=bw`X^&KKUZMK zk--DMbIwwk#Va4@=Q=G;LM8gMWxU69ZTju=)!q?e zjR_2m97UKAQZxom9H0q{8eY`k7k~7nd-BU2~74k2KbdtBo?GR+ozWi@#rsEsEn+t5;Fa+<3iY zYSKD7vGC&jj6&7cSWe5rfRw;zIZrnp)=R!pL)KC(5S5f}-=|*c+8o;cqR77YWnb#3 zdhvzf**B-o6}?~(u1y*B_7;w|wcAxFLXmlmM=ro4QCj$rljV8awnKahVa$S%V)o*e z^r2p&;V4KT%S)Me&nVKyo%(A;OR)58Djr^x*lAZ#DX4aD z*V!+ri!Fe?DFE%>Ujq`&Rh-+&QnD)Z#j&TiJY5W|%RP<`_3D$T?qSUFm`{8#w7aUF z!gXfT;XF>6J(cu>860J^)7Wp=qk5^Kl2jw=F|Uz>ByG2;$Gh+DD<~Q-{(e`c(|*a- zS;6wv(3if-66jnrgwZ2Y zG@-MvDk>%BGiiH61}zvb7)UjJXAJdg4iDv=eJY~t9~1pJzfES9>H0F(XJ9h}kk3Pz0@~?aApCg3T}@67{=*w~#cwob z?$N!GXgu${w}xxN9|BiH=x_6|)Fqqinz-!`qU?3zc*qll9$Ls6h&Xm!W49x}j0Mw@ z1U+YZ?w>GiT+<;>&Gwk9t6a2L5c}c|*5;!}ew+$^vGAoY)XY_RP+AY4k1giijn>&~ zG54YmzklLA*Phi+*3o{5*VGE$7Fa5KZXtMp-*a$$%;)&TcP-=7>gXrU+subA6SjPc zb2{$ytPi_w z;(q=%sKZ${JZo7Ifz~$posrtMudbp}WlyP2l=DsFf$kAY*LTLRUxMz@D#qhl-sc2% z0bOvJ)ntuEzdZz1z1jc(woMF`nhsU{piXQr;B+Ok1vEN~f;lL5dLJ_D0kaKxiUrSX zbJ7|_^_@Sw@!Qq8I^2tU1dF}P&C`tj>5s2Ip<2zSUrEp$$)}8TB9@B0F&phh zP12fG2Q3XWXMc!0*mX^pj;eETL|HxJkUrFz;7cdry{0$eWYryOTDDQ;k`!FG(%PCi zZ-?z)CO&dK)M}P*I~AB%K9-8b`wXY5_fv%K0yJevD6< zS@vln57ef&!^nxKtsU3^7s(x!0TV)6FhnMfcBmd_9<^hp@1iw==4XP{n+_iEgiuc$ z?N5+z6xWO36a^!=Kn@;Y8@- zyojt_r2XU3V;`NH=1eOxC%Te3%BN>>TgFlG-T`%a+pp8)X_L3>`o&+E`OSYgE$B2~ z`ys3Rr+{+zf-Y?$;IYNfRBaRSa5BGG>IfLVH7#BAaN-F}wb9BFw@R8(y7^|c_lPBA z)O@+c%olI7PqJVR3TqMocbdE&taNcw^6oON1k0#%lJA014q~1+4|hbwl6cTUHB)mR zpMli~5M8MeyxE^Ie3_gOsiXyS$X!XfsKH#u!nhXq^bxKSE!bgK;5_vxf<@e1YSD^T zM@pXVa{xrV2GQhfDm3gdOKL8m)GVAJBy$y|mCBI@C@&QK7%hx<;=t|Rq9VWH^*rW& z*#g^ELq1;44&G+~O z(E;*AZJ@0l0=XYu!FEx;h2h8UM&;51pz>V0#p6n{@pj!IiFnjBp1Nx0-Z;F%%s@FV z?6CK?YZELmkt15WxlQr?tS})7Yy=xOs{Bbis!*|0@C3?hqR3dYQ-2OcK z4;28Ch9jWZdxI7?0JYkg1i-)@2 zDi34NL*Gav#O2dPq!+(8hEtWBZkD%%{cjxY6ash8_|*;^z@x`hpXJtTfv)?pb#3+7 zpVO&y;g(ykHfQm8h=~AW*(ly&<5<2+jgnAhcVn;5Kzg-dBGBmoqr0gstwbDF0bZ?( zO)#CqFGu=%DM=Q{Kr2k2%0^c^KSjIP^X2u46Iosl5flFb8q5W>#*$cS+Ag|BUhCpV z`6NMRs0!^}@(~E<#@G1>F;19CB=PI9GW)amFwtKN%becEKsqe~YVSpLD`kb4ePSt* zKSLBE2}7&ViL5>$KKPPH?l@?V0VD)*Jhg+Qgo}8T#=DGkb<;VkgE=<7k0vd`$&wyU zrP_SC{y4$3h@)7U-gzM*LudMAgYn#HV$+JBq31^2Xiw|-V<8C zw1uJQ7?xv8sRH0$=OIEjIB!Z*+2F8^{t{Mz*@xNyp70j~CKc^4W5f>y>R@dx+&bDV zYBIE!UL>o11>_!okh#le^|pcOQtaboRvh=!Q4uxE-h?xf_Kd{N#0C}bQ$v0*?BQv= z%HHJ)7Wo!P^S$;+9J+zgfVehjcMODS&IG=D(%r(JiC~i6ppo?`JT9S@aqnrwY}Gjk z&_w_nL~R=&op^roo-C^8o}q@s0Q|&EcY@)Ryem&LQ7fe<@A+;zmeH+AI zQ@V>HGK*!~JWOf3`D8cIfio+M4F?q~;9W6#91I_pom2;1Uo00&PFF zlVlifSGlg=m8t-Qelbe)@Vacy>anlJKO*TI-(m6P=Eh+5g8W=wg%g3XtKL5ztuB7x z3NyXH@L4PmQ=(1HSLAzRKuo{ecCEi#2ZtvQM6ISn2clMUUNP^sQq`95<4R7*L{ z>>E+sFmucbx10uo>z=-xc@8j?3i+Od%f|aDX$ocXZ}u)FP(JRku6d1p6@N{)_Gj){G3@yQ9}gl8)2F8zTld58Gs8?+*{^^K=kjgaA>(2L7Xy1)QHvGmhHe z>91n-WM6&*$9%1lpVG$Goq2a%fubBGX{R={#Z2!a7>3NG9d`G6~Y49oMbgVHe`{>=Q~ zS?Zz8(g{%y6sCQ+YcdiIH^d+23&Err zR(-fzA8om8#gK4X+dmTkvAtCa401au8*2$vuc9Ggb{c5b1lNIi9V^nSEUhrmBpzz8#zbNl29{|^PV?HA1sC>%+?^T020RsErFzQYD;HGF&z^!2nLCXNp( z;AchgbCgU~k4>#Z502%%!aE)Tx%uO*6Oo2*A$T`S(5DsAuvWGk%~XBrt?HDKW~Kdk zW87pV10K#rvx$=~3%!DJ0(M+Ax4!jPE`I;Xm8I&_-sBxro5Q-w)MXu4t62_9tzz7F zJl2H93j|Gy>!BI#U1Guhg$V}TUV`Pw(62v%=@3LuWzm`}FlE8rZxDEie9QktPV>=n z%m^lyW>EX)o+S=mCWe|UGoDe2Y~yGzh8S_H3oAG|_{qoYuCH&fYql@g=$Q?O<0 zTz=s-Irv8yu@t?E`ZzZ5$(*GN@Q+!lbfg9hDg$OILiXs5X5a+fXpiU46i!cGNVG{Z zG00w+#mBpRlsmCWJanO}^yM~>H}JTLL49T?zuLzH5b|ko>L+MM#7aww9MmkDC?4|k zYB&VB1z7LLM;Bu$inXZC%)c_Ri?%5#Z+8(4B1ya4mYdi~gUM~(TV(E|aM@4Bh1rNZDgc z)EqR`EBVZFUn6d8JFWMK|OKJ6I#K?Q@df%VG|p*TjnHfK~QjZDRr+YR+6p7VVp zCcY)Q*QRaY=i5N){&%i{tvzsNJ(4%pftCMotRoDePThanP0UiiHoIsH`Aiq~%X%O8#EHeIeoT_hv=awRd+eVx5!YOaxe_I?o}TEGmfj2N-LkLmn=i`#m1W13GA6{ z(1z#1SaJwxou%AzpLl6X8>LEsp~l0UQ1um&(X(L0vUJh&oq~I29jGUe?Heh4&*o5g zp;-c?w+9`{y5+F46`A**3J9rueU^KV~X}stP({&n9r`IJ~GsDn)yn znYg#lj-Jzr(5>Z6y!1fv4iXebLsbvv3IIA;=(g0}6PuAlF5Jg3b6x!5v*-C3TEJpH zm}jkmST~tui29&q)A*049()Qzt4Dz3G$PO1m_y79H*u&bhI3fZ$AumooA!ixbtENEGVVEk4mN;N#18$##)-R&knk(j>EqHRF@rnI7hhDVVRMlt5 z{QVC2R37a9K{R92aDpfQ*=h-N9HB{*d0a=EWDBqNYQ8#Ttcd{89Rp?yIE*Nv98B;M zErg1O0H<$+IHKia@6hG0}o~!hxMvFc7e_>jxba6w1bcDf#czT`E^uZ7+iSEL2gQp zv=#!+4M1RVO$#>!u5i%_b~%%5d`?L11MxFyyN=V-H2(d*jJvzfwrt2Z5h(n5u3qKx zf<3hfUCkFz3A~%DX%IdFxVg-$f@Sy&N;iqZWQr}hJQKPe0A=JzOQfjHK!*FcZOteV zJUviCR}0AxyG!*p8x^}>384?C!gN-FmQ6z)5|FcK zD&BS0KioC8wHfE1);nDO_1W8siDD6x?vM%iI)xBwZ!pIuEl}q>my~`~GKKEc&vaT! z5+~fc!9>qTptfZ8EUgDtwfbR5)PbR{nV||QGFFoBopRBPsRt*$p8xQ?@$1hPTp5rE z;u1DP7rzdf(fDU!&M1EHrB0Tl(3#tXqaUo(c6tmr>G&+8n{oGs6$?#i^>9F$t5+LE zft%_e3+UGh(bBqTrLDER-cA7sU?41jjqVtJ!b*0HPt&3lK!9f}Bcc z&eGhHw0B3FjVhJE01zu64<1tiBUh9fMTi4zMDaF3S*YrjstdtB?%B~HG;OGy-&f$Y z@T@fYewH!^%CZPIH~XF#rI!m8`w#LrQD6$iwke)X1JMKH3P^l~sW^1?qF%a7cU33x z6qsPhmcFa9w$h+C=0uZ#x}+{OCJ(E@jeMEV>1HY0i=g)JE2}YAL}DkW8s2hh&fM0@ z_jFIRgu>=bMCkGtiIlB3zliXmu(pPQBs23G1Z8J zdt99w9BDnrVgc7nD4w7hOdiTK7t6ru@1O?Aw$JdGT*ZBC{$#jvBUn)eqt#ybM!*=#APwtEk_E! zWHb+DdVOwe#{XRLzWm&A%0J<3#do4uVCg-{w|TAl>y{u9%6hhwFTdhoqYC$$=iuXe@HKaSgyDdFEj77O@*b%$02BI+z;g(+Au$*pkfG;*G))FKo-G5aLr2OT>B#NH{%VNqIOvT=@!8Eokv%tR zos_>A$jDkkQWo~JY;i~l0J{TNRf}9XpWKO&gnyHFLG+M_S@HyBE_QkqwyR6w7ph5w zt!07PNzTU}2vC)%u2egkbOcob-#)9gc4643y#4B`B0}a=pizR|Vd1mv@u!kC2K*Re zbP~Wpe>F0}WE+q`T+DhtA(kGjymUM9KYS3viZ~jAt_7?tXv)3@e}&_Jfs2S zp4}8oOhxMT;_R7njo)lbX@$6^6NX_ZOLW3|f@dyVMigv%)?&X7k_|=GrtoFBh@j1< zJj4~`&!tw)R7(0z=ot3uu`rx;U%61Ka`(bTgR(RTxA0J-0~Oxce|RCFEMn{2SQ<6D zsShTpygyW!Nyw~pJrd*@{V5OV#xj;Dc#Smamlm(#4@LdCtH?cqgDuf`VToevDlw`J z7+WMB_+My=)Uj|L7YC)SQqew=z`uF;!a3uFV`v*}B0F-xZ7_9#>4BkA#Z*bEfL8GP zoMDm!wioU9wyr;6J0x#sZ)Ugr-dP*tfs+PKCF!fK(qEE1=~(53oeE#uvm z)Hn574$iN_C`RCEBpm9HFL$tY6f~SXUqR_S3*(9J>{v8)ZdlHoqmHwvZiU;~4m(YU zng-|Tl~_Q)*P{3jg1VE$QKwsK4h9-2Pzy_fN7w`o#kj!0I@W)aS~c&h0E!PIe52tC zGI~g=gq&9yC5yAbL>`H^Vk<|n;!P(}IbbMtELObr=bU3m9Ll>>!;>Q_ux9dUhD^D z&qmj=#fxAIv5B|@7JiugOKgCg4LG$&pPEM7j)a?65(;x}XB8 z;m&}Slh+`4J0%)cxqBiUPzJ#@34i#u51Bd+n!D)X1k04_6zV5Y&dXhFb`U9gOHV_U z?)LYshPWC2V6;2S*h9h4bivF#nEQe0?yjUggbvGkxTPEXo)khFCvWkz$Jmc}b}p_U zm-CC}%A4+>g2(z*$P~(r_j@ZI#CgJyqLsY@eGe@WPAjApJQU?8v@AsThg@Od2W-EHKjgy<;C<@~fa!9EHMC zv>D@ap#5bS#)k&gcmKH2l&HwG=2o?jTEHGJni8zOi-so_kVFFInd4ZOtZ4ilAplwH zJuV>*0Vd7KhX4rnBx&EfQv~zX5{b}+@}BdiEsmIt&BIOi&fH4nxQ7Pz`e7fuHD@Fq zNihlNP5#sT_+vDYqo>z-pzSrahU$PBXp0?3XJF#y>?W0#M=z3bLwVn00DWM}M(9xP zzJs?u?=0z^F{i0h-GTfAeq%6pzOQEa#fLeU5-2YaPw0Nx-py5v%L(#X_Un>GO7a?T ze^Bl-riWz-T00ezE|1Eg?sAUgFT1sG4r_?9V9w--y=wP@DFIa`>&P*hI4bHdWcF@p z{9a)7DUgA8PQaqD%tw9>{=C?}w&~Hk$G6RWYbQ1vlXIt#i?Alzxb|334se)>+VVi2BzYaLI2l=YInnS96BbfN^buoIwkJp+?9#lrY9{ZTDVfUp7V(dAqb%943S ze7_&hRlZ|hJs+C-B2X~;xQ)(BPRDSvglCnK;GolA^ z!NdTsvwO+Ih_2Pz(h#B!*bU5S98rGp6-Ib#)MIw(Kr=bR$ z4_UC!j+$}0v?|;JAsqD$zSMU(A>l+@lrqdbOH_iM)JQQZ-uk>A2!<5J&hiD66$&w{ z>z8a``hA#3;j zXv)3o=qo+V+BjZ?B2+f2CxW|HUP@-A44H0VF56ygNYm~6Q2~kp!yB?21P=LjLZc>| zP2eIw1)pZG8b3b!4FtZNALV!Q|_+6T_(Hpki`G?8{!q*Kdzvh+~_&|HkK-%iQ z){aW46efkm-#VAm(COV#Y~(lZB;^7zJ$VUt+FR`YK@KgYQdyN4W<)h)=VUZz?* zG=I|`$^Dv`HSOiokaU7kY=d+m-wVr3q5{;zA^eK7u|0^^d}yt2tfgEFsoP9&H|!7b zzJyfo0IV4?Z50F-0oD*@DyjQ4^do=HA47jmTsz^ht1Y&PL1tQj_7n>2h77Zz+c^E8 zP-FATV=16U;L!$jOZCP+54WBsW$4@7q$SuP#q>>DwolctkTQ+eUo zqFsh$gLqA{ybp|1whnvTf(QznQ+B;;TP*kqSzGb1?Bh zVr}{@szgTUmpOx^cJ{mrC~fdtXaEu?LmY{8Pla87-@A^>cv3QgSj!u+T|p~v^%o*$ z;$UG`P*rZLbGiy!DZad;k{kZ@%gRK|F2o$=;L}B)0lV;0!I zcLAa3FC3hVtLf8WVBdkuiw{xV3Tpah0pn`JTvsL~1LZQ%F}cY=EX1uk<;gX}q! zac7fuF90W3#7Nk4$N_2 z@%Npe&;cq)^(FIoLpOMADXj`4EXf^VwK9Ml^dS5`Z@J;;4f>r07107B3Q&I5Mh_lU z5bFnB@R|!14Wy1dfG3Z@$C`ALbW-4TOf$sHuaT6+{t1rQ&VkSQHe`^dozo2)mDK?r z(B#qcIqV8J3K);pT0*ux@v(*3qkSx0Pv*azJ3VIKr-;n3M(z}Rx4?))+%q04X49PH70dyg7I#U_~o)mst zoJ_w8a)gJswZMmsbj6s0{( z37SB!o$~BkmBXGQLW^D@RqFw~gPtoD4-76);XrHgApRwgVhR_B)r8aRugmc@%=@7O zEuY{CbaS0JJ_5&D?o=r>qw94~U1~Bf>h$v9p*@14;$<_Gu$`e*K8CIjdn?X90!>Zw zK6_Y!w2OfgATV=ZF@O0k{(0s*C|7KJ0Ye-Zk*2q==TpoLpjX_J=`1_?Gv|+eiq)`5 zeoS;VP)Gq5GY)Ugz_My*$wWR~(#{Kb*vj&)4gi;4?GdLr2)+WrN)?0 Zr0LVfWv z0@dXRQ&Yjb#;_BhOLzfJD(5uHX3O0K?ZoB;ZVVX0uMj=|`W1;9pTeZ1O*drr$~q7K zF);YQFRVkSKCQ=YyF7=(n>(L=CKuNH&e^WPtFoP(Q)j{N&k8$!&tT!9!N$5OTg$G( zJth{Dj;-;FlPolXARhl zDA1t-TC2q-p5xfQoFWHpXL1Qw)cUIU=H{>~gVH%@*=+w<+;#<8#2HE5X`ZJ%-0dMN zLRpG~oIwob?tVquZzEFo--EdYQ{~Rgt={-b(coL-Z%k?d)bK-lfC?jYN+q!P%FS1_ z^W7DNIbM5JhS25}yV8LWAZD1d4*Hg3D?vWimyg0fkJi2yFkHH!Gd^kc;ZN1!j=nO7 zIyWIvf&3)l6XILy>PG6>(Xgq65W3J&&rr7pLGezE%1}+~*6pmD~*yyx> z3W-m%bvChe4hY<%V!`KzKvUSNgo z?0inadU*}dL47i$2_HiJWC;{n&V|ult45U8Qi%1v$LI2V>Avt zg)Q#W&aNLibsHhkwZi`j+VaoqHZ8w-t*Kou5zvx9xbc2?I;2m?^3n=lQgU&eEfsVh zQDEpo2c89?jeLp?&^1oM_6MW&7(_FBrxJqbh_O&Q+}u^;vG5La&d_I}&9qG_H6;+g zRBW^l4Yjf1$mVI!3*3IcNVht-rH zplSO2g4}EMemft2k>=kGF2Fa|VX6Wq?rZxDD9j!)#i*U3NI<$d3z1r6B%KrV;RFWD zvYrZpo%EF}b0x>Tb*O)w|uOvpNK zXT7v^ltNP$^owi7(l2Qh4De09*#BMfr%(-XDBhOX*)~|3I>dgJI2BzmJ<0K;ldRmJ zudeVry-V8+$4=MGal)~yxGhq3?)1CxxK%G(FOr?wqxLm8Z@o;g0mLUEUHc2|e8uTt zs3^9qCXV6YEMen$`CM`;Ku;d&Z-C~x=~iiIxo^^7-?h{9%^c|!0pY~>Yw9c|CZX4BuB^HU zvyIVdvMT-*Y70$$jB~2Ibw1#ZtoIH%?l3Ps_woC;&Z-EX)|`b?WLhBn4LxZ0+hsu$ z64$Mvi7~b}J||7_h#Z_uNri5!U)Y~xj>Z)Ko!V=5dkgJ{J&)o^7#B ziiRhTE6y=De17?Ht3Q8sA9rHvXxFw+np3`6?-mAs-MHQK>W(5__1Uw4&TB@v_4hV4 z)Gw(z1{(`1qL$yTCfQNC=$iYrY|EZ%F5F2v8wED%m1Rk{xB9!4 zFJvI*{1?DL(48k6&|FGYp$2Zn!@<-{;pc}{zyO0?l`w!UixXs3$2oDIup?@ZzJ+g6 zL9=x_b2-%<0+Af#h<3_{P{5S=4tn$(E1+{rq@giV@$Sc{XPycL`n|r4uck{p;t$uv z-Ko5oI<%^7=FM`Ee5-KO6Td%Ev^jraa>zT4qJ%u|E=kM|=$|dcSG29_?WC2HP&ejh)pae#T7rY6x0Nj2JU;cxX<{R}Mw<1$YneWCo|f*%_7X*5i+l?H#9yLYHD z3wr)LKk6DMh-6Zy-Yg(>U9ELhGkoFrALFtf`Gwv4?rrOH=Y{d#;u1o~1UJ~|JfEY+ z9xEYGjti@Zy2uur)L~uQCww9)X*ZDVq9=8Ra80mK#m`bq>G9zQfY_Yiq-!28gs9yw zP}MdF^qp!wdAShU^>U(kRETdcx;`X1kl z5h_G&wFd316N%z%!fb-GZol!^-{79lyO8qX%tkVj7Fy&bt__3vm3_bzb0-z?#uY$| zuFG71O$i(Pgfmea=S<_RXm#lYQF6x)gG)$duy&;Oa9sZQdF7EdYV9Mk4XnYzXr+?Y z<)PTG1_`s%I!9BWOi`;d$F;6Z+hscx1+k;hax;5C`mD}dOuu1&KY2UwQI6BK)~$`V zIhS6wbN8@%xhu#U`lK5!tdGjjlj#a)2P(ot_e*!At7X)4yH0__`kD97h=0+3tt#K5=Y*iM8{VNk)fGQ^DUX(u=O)<|~6|L$^;gk0*=qv2$EcV(>vCjwx(ZC{r4A zU}x06cBxsI7noIrUi+0<0~ke-c&4_$1kB!9Dq3VZfL@VP^p&iPP$?|t^fGede_kCl|}*9A=7O*L1CjUe^-BkLTzaZS-v@VX_J-85MmrnxZNx59JH*; zxpX}>C;La2$(wNhY;q>=RK+QtDc_non+M#B|nAGn+4NxdZ&}ltT&%-R=N-b%`&zIJA%)rDTa7J zc!b=Cg;MFb?eC4gn;(Hw!MO#~we^32QDT$s&++DVO2O~)NW`-A)1Sl-flDVvDOiSd zU5Gg{ZNNfl#Tjhk032wKG4@4(;q=y-#1;pQ+y`3GW zH}N7#tgHEXfd5=IJDq~Gx0?w=QkA7o@g*NBBiS))=bZCw7pD`OXi7r&(}k|<8GW7} zR8Pa#abR;BET`VnT!Dx!ET|YlZCHLW6a+t~$OE-~R|xPU0_-?R-~|f+gXcSWK(~!a zD`}ojqQ&@D5dTC=IoMq8r<2^?%&Iv6f*B;>q!9GFyTl!gH#|mM2aS?Vp@{O*6h_NVD!~b#* zo-8N65EIn@PHe0KDI(OX(q0;Crf7m#NTS|{xu+0_{jLkn(jZpo@M zNJPa6b_l1|anM0v$p2zKj(q@EjzI1GvruuD&~R#7s)dbMEs)8OrvVaMzME+vcDU#)>ygEXrRP!+G<2Q5MRM$fKK7910!FkzJ@ z(vkqDG+f2z;h^)GJQVPry(YdOal`)Eg4vn{)l2Y|q`o3;t6>&veX^h|Y`8eJM~P?8 zFml60F*sK#M5+^LZXW9Ow}Eb5ff?ke-UbF_z#O?=_w@B{dRnWMaBtiEZkvH_viMZy z+)|HSI)<^w^gDjPdYk$yyo$_#Ni&(v-^|fVL5V1RwPvcMQ{;k)QCn%M+l%b%Z(ZUH z7nR0m#lt@(1e%=fFkzruLH-3I$MlQ1ER_y;oSZ7o;%$5GW9K zMaIBXl^~Z~IE?IR&cTP~E96>c?y+4Z^DRo@OqbHilPRhTf0&5Z7?t9@6UEvv+2aDe zGxB#T1@qd)xh|4F^H$DfryA-iOqma<;lHh8p9xWBt7b(Z5a+L`a> z&+BP!eNLKJgLRCAY%cWRD!`179tT$F(=^8ig>|lmPw2G{ej7j`D)FujDgyKxt$vQn z0)3H7Q2c-A&M)3?r#yF^zrlq$3;G;kP6-OiuXOh+s)S&oO_F+?+|O|c5Cxol5VTGD z-19#3Sl^vbf--=%=ww=m;o=g4VjGkf^NO$)od(ZrBP$LlYx_9`iyBxmO>(%M2%ESh zEFe}wM;<+v$osvkDmKrG(C2J-<(6BJIa)f$MEIZ=+B3O&Opt!L^u9M+r?f4mHz20A z&H8HYB`qP8c%pS_S83YKyGhEq$Qi*qdPsqQcOo3OU}o*{u?-7!hiafTOQh0D<6FFK z=V{PwKFBY6K54grQ?McAh+FI+gj3f!f@wx1&dWm(vPHS34w*%%eF}gPR4^Cus1-6l z#(3;@UD`#L{Wrjf9Pc7?xcRH_#&GzJ(MwXJG3l9FlHK^1tQQ;DQY*@dQ<~)#_qr82 zvIAn>ocDJw+iHJU*H(4z%Z@9czJI;a5La3hH)Jb>|54)LMl@dtH}DU@@7L<}^{R|} z%<(KRt5em;{o8@0S(FD7A&rSOzrSLz)^U7`?t>j9n4guWzbq|`WahU23@x-JKBo~3f;`U1WXVm^TFz zi!`P+(@?@Cr?ze$ltHG@Kx4d(=SKX(tT*Ik9$OUjo5KOXVUjY8j!0wt4(Y^9z8BC) z&2>)TX?{aMghs5u@2^FT%AVdOjV`kep+n~`6>q#z=yP)WWpK6j9V`2o`CYGGC;gbg zu|c-f6lZ1i>FUP3=s=G*PTS@_`d89~H2IVq*e+ZZUH@!qNiiwD(yXyK^$9{iwpeKg zvOHa=+Y1qSpGWJzI`<_69S;djoRlZk_@ljevQ1qtR}IQf|~i!Ee- z{wexBS(z6S63Dr+w%WPy(A0dyX`R&@>w;<7&cANg-SLeJO21j#+=ch(65q^xt|K^= zc`^}`)B4iDG9ldmvApx2EH!nhc)|K-!+*Q6)WN9_rYj#L^0DrefF`&^CqE~_+C>!{Ito0GoAiRMfPAv z93)xOrXlF~O@I-*8WX*s*+ql;Yj^J5FVzKsh9TbAx8R`jV}+0sNhsSpuB|2&9?ENe zR_A{b&yY8bYR+$usN}z^CA8YSd@H>Ir+}aR4R$wNk=SiV_VRC(FbSQ#5jXHMd0Mi( zRxD{#k*xlTYB8@Ct-v1mV|_#^4(C7IYAC1^q0%lcdGacn=&bJCkZmHo^pby@xzofu zsl7qj#!qz18j{bjh%~*%E(~wcyrdprXvrbD<50HA06`9d{MUahe(Q;A+J&@z2vSqY zXp|5vI46eWCws1|*uaH?g00ql*-C45C6##vmDG5qjz9}1psQu1c9XmjpAOwQqvF{& z3QE~kRC!e$d0mot(8!;Y96@xUDY1rZMv0S=43jec{t?RLI(p*WOW%{v$os^K;MZ7B zPE}Ms=hFd$oDR1ni8dQj-picss+lohljs)bZmChJxPJgCN%ByiIL42;3Z~#Kn1Wzd z2q3BseE?Wt@yvgYL4br_<#Fr| zR37XIr}HEx%nINQ+C&R0!qMdKFDs_H@Izgm^0AciCB$51;05c()7PmEEh?qubiGKPUdiFnsz+dQRMQH9keY-06;%44qrq|Pw*;U12;{Ra+r12l`-7{D%CWgyq#)W7# z$%MKYJzBSrAkT1gHlaMbz%mca*u;06th`V;?Aa9=XK-LLlQkk;Dj@q( zV$-1bCdNPFB3@Wz6O+DPY&ds4Rlt?+j3?is*;>UZ48;vI#LFp}m$dfVoC~lAuL0@Z zJ2_gYB|6g>4r1Tl2U$Uw?JrK)M2_b8l0R>HSs{Uf5;AQo_G^DxvSn%AT|WGZ$4=R# z&6jTOxi~hLD`)=*y-12SIA(x+$<>~ zG4+QDB#hX-=t6JSj+#tVSS2`;4gQE^#$nM$>Sy{ujW#mu z6WShh-FUyu5uHV+ouAW=7gc}u=(4R1_@0mJ=`5e%O;KQb6kU ze2cXus5YR_jWXxpMGTj0sIW~gdyC-;^u4r;V9r$8-!{KmklzK;V%0=#((#e%kb+%Z zRq)&F=`N+!$dqoohR^BOpZ2<1u8?bjS0VDhc1tv=?oMah_|(uZ39vsuq!BB+V0Psu z#AQDh%yJs7t{U{i_}tFw%OEG;9%FN%SbQGNu!FP_Ij1UEip^wc>NSCj6+~Feh84Gp z4SjSB&V9)~Up|N;rsx@0Yb!s~>m~;WzES9S1S2K}EelGQOcHgPq%z}tDp~#f1s5-A zHJ!&B7_Wr;7j)sNq{^Az`p_9k$zIJ-@XJv%{F8lF<>JlRA=@;k6PJ7%FZon5BXZN5 z^s%9Rqdxgib z8lREtRj%po4Tzn5zda_CyyGKvBXyKlq41~9&ba{^sRXrE;Xx&*AUuwFqIe&MumieqzVya$gM!U@c zGp*jJ*X4CxUg-0d4Dt4;`+ ze!BvFD*S)vU8l2>FDh6r4G~1>*4;oQp8xjv}iV;^qX#% zd#wKm+5GMn!912^;Z9FEr$6@$pAxP_d~cx;Z0@Mb3(@HDVrGbuS1zXrZn?q$g4!ha4^UzEJ9(J3 z6K*I7SUpc#LK+w}sE^}bf zN-pnXr~g)2S|j(0U-WFN414&YK&yV{l$?u6NwCFgBT_^qZ>>>s}B2Z;7`oxC-j(x zE`TS!v9yAW`~n+&G)?=|)-#aJfAD*+-`g{}$NcmIKG1Z7DRM3EYwA>dkK6Lw>d6G3 zO7|*OTxFN%n2wzDV_}`g=+N13Kus0T!xO>5v(^m*Ve2Oh=a%qp+R(vAZkMc}P1Ha0 z{8>;ZGe>21@)_xt8;-#zE@dACJev?XJHsaT9Hebi(9p28OqKQ;J= z{z^x2l@kp198I)-jzkIfl0cHvn_gzb3OY;3kBM1Hx zr+1jXj%!Pi%*pS!MusKkGto7qQBqxxCSK;*_uHH&Rf#fN-^rHz`HU(;nZJ*%RRlcJ zq}A&(@5j%oWbg|(V`Z+&)s+q0{dvz%IZ80M^cbSod>q4pT;(ZujD{ZtVHF-;%i^qX z;AiIN*UOh%q7q}?X-?`MnC{y2^O<1W^vLF~n&l+C@XCIAL5%57vn84HtcC_>+Ug&3 z&i$5mblZ!w6nKBXFD<`1(W<7_^awjErB^z=YTxsA$T4*&y7N?GlG4X#cI>J(GFz@k zxnJpUeHEHFtH-78c#<^Vl%s>TPv(cCRPs7*$;d!&5m7?FUY!;a35+9mY%eJ~R9(hA z5Xg@_GXqu%CnmGG6!OEVPb1}5YK6mor#|nO3XXRY82e5Q{E{r5Ud#LaNm-0(hs_G> z&vno7DcgNTrIJKT<$aiX=E%W6Z6*G^F1O4io|L#oJDIsBI<1ph7jQggYwu!WZdmz8 z{KVg=e?oZ*FFh4`Tg}8L@TG+hgOt8Fm)vB~Rv-Ua>47t}l$I@D_b>bZ*MQ^AXO`W% zDJVbB-<_Pw+IcrwllIvUF`OCZv(#24k(|QH&8Ll$c~b8uKJv~sR;P&_?o!H4t=+%1 z(yAi2**WE%T+^*FP}Hpvv`HxOSCcnkyD#4K&~buseDIy$cx1l(sog&@LlV|v4E=1o zgIuvkEOr*NUX|Z?r0_6Q1K35l={y%=m|uF}=6X9*&3`Gs)#Sg_TcXcBK6z^Qif#aJ zo!n&J1oHE1em2eUr)>59Ek|%MF%~tu1;2WmEv^Q%n-=I$R?6cM=}|m>?Ut&sc3E#y4BTtZEVH#JVdE<-gR5E2!+2%p5z|)(!*c{ zs5yHWRn886(u);s6-t8C!myt5c!@cM`QUFm#Yd@(wHlRHUj4Hr&4PsG4wg5W1L-K5 zoFm+qP?syMLIg1xsLa?qBu&d!TiD~M!&*W%2|N_Wh8-U_I>cLouG@Bi1*K}or{dLj?^+4Ejp8sV498C76;VpS*6 z=S5j$x8A<$c6Fsb#tACG`JOxOeO}Dc> z-}|JeY}^u~lQQ!oF}9tJu;BzxlGBaC*Ov7=_@P zHXNFiT^b=o^<2i&1QQ%;HuBw2Dqfqw;mk-Yj@R8s#t!RbzwUNzrnWu&Pa}Sj;}Ta<3~W9c60aHE^le z2t$bW{1j#C?zR?VW;W$e1Itjt9li+5Feb6?EyLX24fB}-1kqUJuaL0clAZ6mB{Mny z;ECfg6ikg~0AJo}SMG?uz0b!5@C(>7a})74_PoQ3V=X8iAcUFEPKkJhA_>0kD1L2@~fvuVZKo zh)gj$c>DeS4=2#7ucZ%hA580ZeL|tB?xWZB4j3Y}DrC;lHpC*|f#bo2Uth@e&D zO|u6$G)01Pw!`x{5=ygtsfU`>B`Q-1$RSP-H!0jO@Y=!)))!D>IU(eR)Q6iqWQ^ED_t zXq@SXgNYH5`$?erp(qtgy8%@4MNNhu(jAn>+BTfr2T3uYGA!JD7hR;exKM@Rvx!*_ z87P5V29DE-vWI;^RHJwgo4vC)>-SbhOTh({NQB+#)bB}~bA^f~?Yo6l8YRzK^DH>mP{xuoAk{*Okf3zV{eG^ejJ(junFg`si|cgKF!5_@YR9o zgJ8AA{sOIKK>=LjlNrhN7hRt0ajx^O7x$Ww?H0nkJA;XnyGlWfCV?DxdNyRpUx&ew8FJ%z#=V9ffk5Ot|}4F0aZl*Vd!t@ zIqG1!z!b)G$*WX>$b}QjP@r)woWSxe2)tt9marcO!kt`wK7l=67{L^MuUZ0apJXr@ zv@NDBs;G=Uj>wnJKYh=JoH2C=_XQ?bX)b<1k7t#)KliJk?Zc|&(8mdWASDfml#I&5 z&dVqEJ4XXQI0#MY3R&b4(00>vhG9(m5o2WxP=#o{1@R$gLLc`JA=vuDIA~9RdS2fL zO^kXsm@Y=_yNO7Oz2%wrGOF+sVmeqlu{AU|5wqbuV^AJh->1__^t*;Re;jl_KH@Ju z8z<58sQEF_1RcN;4eYqOCIc>;Dp^BwpPUN7TSX<)7DaV2*isNYM%BE&L{v3jr9)EW zQ?RM$EI!x|t$Yud_{{?#o;R{u8mrUzSNv{x@vQk7!SW0-4@5J-Bv7cIgd%p#cgkME7Aff!O$TTbw} zk!$vMFrTqX?_gCt+(wsyerl5yC&^nNG*a;7lA-Z$7dyCdL+uI+myUYxIWhkOKb@>r z@FGi`z|#`{tHq`Fyt4yP9yc(WukKs5e1+9C781#hldHd`kC9$73nxZv|DO&W`^aR%49UcO*Va$8^c2(OS;1c5L-Y5pkj>p-gE9ejqwE4M* zHW>2|Ac42m9Fw)PJ|N*@saZ+KlgON;p}D>t5VKbBazuXxbWr{`%lrgTbG!YPOc}N9 zAy}U-)({c-14?}8R|0@GrbqXD7i}Lef6VzJ3&J0upaCXKrx3uJ(Y|gXjLsijWQ0-2 zz9vw^;@CkGny_{1KKnK?pm~C5)yey6IPjGihj02+dMS@t#3I|GTeSso7zF-N{dGt# z%X58DMxXdGMBqy2H}&@-KK%X8w#!Eg5T!(sNj)i{(tW*;X6>bBfOBFgBEg>!+5a&? zp)HymN{`Mf(BGR1`h8l-=f%Z|7!()ch6!9U#D0Frwl73sk(rz zQ>63N!DvSFf*D|6Bu-!t`3iP(MMlrIKE{a#5tjl;ZxQ)QBVq$IG@pgl`)i9*|68nr zI5;LURLaA*WUNizR(WcGwWgWhP3IRKwdtV59pj15f{VQYTy#jEfL?8&u|dmam$_LG zm#$2Kn2S7^uYB|Eo`nFT0PtCQD;uTUK_5k{e26>EIB$f&Oqc>0QYe z|C=i5<;4D69e*nh?#hRZIFkTPKJCjZ!X!RWh6PkY=KGO?4Q&;63Xp`7G#GBx?G9G3? zVSYd>vksP%-p9Wr6jg3q#b8a1RH!&KHJ^R9f?ve}2zw!Rm@0(}B(NNn8V;|D?Wg~N zMyFq2x$?o@_J!NmSW}a~l9=an3v)ianYy<7mdr{dQ*Or4tF~-x9jXx3=>1vKCTh8# zVeJw|{RjYEKF%Rs;oi0|`uv-8&|KE}#}kpUoRqah_~v7#n4bTpaD52nz6>RpYj@fx z0b3u)pvvI&0)IK(4MO{zs_x0GaEv%E6`okH@#y+`*X2{Y>fO}j14x_xxTyFAY{S^Sa@QI|Ix9l&&^e08s@%$R_+) zh%%>~qxGh570tMhZOH)lU>qD5LqvKs0G$UIeAO|U+A}=hoc`1PxhcYJ*jx$USzwec z2lqKwSV}9r&X?p);CmL*P76Ls73Z1-KqC>ms;>F$0_=>P_T+yM57dApP!j-VPfAh+ zzUg+|G6xSTJTf=gtmIA`h>IQJHCsr%3U4B-)n$VkmDD{KR06SU*9_AwHKmvka(w*j z*b$#1j6BOiG*b1%wv{J6je~^GFRjIXx^w z&wonXi^cdTwz@2@fDa;2CxKjs-7`H3fDs_?5e$4a#b~huRRiF|iq*yTUYb$(Qg`6g z)5!fR72vh|VALN#*vog&jRl@xn5K}cgYQ$0Pw8Y8u1SQZ zE#+xjhM^{Sw}EfrFA-fhX9;Sze|~8q@(@HenI6Fz$nCfJeNiGQ^Sy6o7+&_>lG*7! zoYM0a}>kz5iG+>V}0gP_z7T$wI?+(8E-xVrH)Y#61(J4dd!FV5tDKh^Q zo~y9`LlHn?J%4SF9a!#x&5h|tY+QD52d9lDCPiBqxI{7@*AOrH$M(Fxua7r^ z;xr&OlP!NuIpdz|o&lVerT0~sFNbY|=!&Wk&LM2l0$L&BE8xL6?-lVgtnb|o$=SsY z%9BN?`8Xg{5a!$QrO0RN0v^{rbS$>Ah-6z%@FZfGL4^ie*)-dN>$+X1Ig*W)0B5}6 zVXp8nPLGpcdYv{YnJ(p5eae8K)w72GwJGf)% z{tC3qxF>-T47P`11i#!4Bq40SbJ67F{}V_v(iynpa|$bdEpOu%)dzWW`o3BEEs)$n zF?43C|NS5#%16}M&l(PNPQf_a{u^b+*t4OsICrlZf`U*M~rnc+Tghk8EPzK!%22Y6*e$^-hpqyN(0 zwwa}{$f5EU_!r=s@^lP3VPyqm1*>5z1muUi5z!e{Xw=NQH5DKw(?Bjk^deqTy0J44i zN)UlxJg&(&Et9km!ceX;PRj}D_3KGJSCDB?^|1FtW=9f$`%4@+oUWGCQ@_rA09LBn2 z@QdEk1>OeJZoQYqD6!dxVe1wiMTPa{P>r5XD|10bv`|u9x z1NDdPS=+a;n-US4CuM0LrUJa8W`u1IdVaXd{T>`;*odKsZCIC$633bssNm^&Ws=Vg zE)K9`t5i&=A?znNm%AvByO;;2s8pIE8mSDmho2n+n6Zf4DTlc)NmNM+?8%lmT&c9~@~3Nc#{FsL z`@bQBls-_D7f5xVu&ZAFT^;qKYW0H^;4F*B0G7ZPD2()kKQAd-+0 zC4GU&s6@fT5%YQDD4w%Uc3zycl`Trkti0ifdQBC60ss*x4vbcx}s^NbCBpd$Eh zF;P^7pTq<2M_*YaET@Bg80UL+!#!L0VHp>j)r+HIiZWT8D}Q$DCj-QbF2ET?U=3I; zb|f)>WD(ZmptrG~()Mf(!xt>PIh9@`KsrERJ3*A`6yXbgc)?9j{cRbCX$ z09^&wc8GfGY~^cJM@mDo5=B1{u@_8|3NFNmA@Ni|Kv%z;835sdAJjkcS3mI1?<3ht zuJc|}n}g(5IRtQC9gu_ug%zSIjC5nU#9-mx9gySbUtdsj8i~lmAtI;qsA^jRAFrrD z0}=6Z<72Y5r>)-cVo@r_!hhXgFP}pma`Uf9Ou27^_iZt?dD)qZ+t&>_T)qp@`r^TM zwj!gs-qQh9)Mq1-*&N~4MJEV$kD?=f$$h?^u9le;Kv@)ooXZpt$vdYJ?h$aQP9#z(y7b;qLh3GM@Im6a%tJ+L zb7}tt_<(RJ0cVoIcL~btle_op8>RN0$S@{InWduymWKg+bg@lB^<%p-m9HZJlUC11 zJQYt$u{nG?vHZ7L70>qEMD%-UunS`I;yt^&bB(-Cf|v0=s{pRrQ)#f)19Ip}HPLrn zB9WP~4;zMYZD6XUSJ+9V5PTJY)O^bAp{dWqxkDs>G^_@j8foxEMFE|ezQd1xm97C9 zGtIa89pQhrh23mlhW|VbNk{vCte)c}2|<{A1a>JxvgzRNWZ0Yo$5|NmlQ;Aprtao< zh#TwggR;r9)(z|>&~Kt2e~ z-vbT%z$mATR_!EAe-BWgUpqTr0S{)R3V1WxLYRgyKcEqEwmJ&-GC((xFA2@eXG<0- zt)3b@ahJY7XV@wA*FA56Fd%>(a@&tgHEQ%3=AO((JAPxSxnQXMM>!Jpy7N^HQz9#5 z1MI+2p$BAQY&P)O7%qGz_seAfo6rcc-jEr=1&p$r5J|a%CGQ+s0_IG&;eQ`vi8$j4jmk(V8O10o-H*jMG6Bd*Ce7sc^TLNjTb(${EsULgK5V zPhd;(gq6HC^Qe70XJI3~*tj>N`y(>iOM@XGywU-p^Ai5XhpKL$#^zeu%EZWKLMhE( z-bqe*kQP7yGMVZ#=1gs#Q|&^U%lQVpQ!#>H0pyO7kbne}U~2;|U>;=R`ck^m6Pj9F&LmGhX+h5Z{1LBd4drrx- zdV;83)wL}&pEbec%&kXR2xOa?IH;YsbUGqUQ9B46R}EpA^QH|*v_vxr`6{9XY7Oyq z>p^N{kE&nlLo)aeeuaH!r2X?J;bXV#Da)-#F)=Y$Ygld?l1LL_u(-oU$9^tPPzGti zS=Ik2Tm%%>C2ermN{Lpqux z&A4^SQ*M47o+z{=nRVhT)@fFlW$T{q-1=yp?YlP5ox2trE}LbN zB5rRvW#*9hhK7aL7s$~CUvHzdqmd^%)4{xc@6@Pr1)K5$o#o;Yso>eu1VgakQ4j(Qf3Ul7qYTnz93HN9 zL%YU_TkCc1@{3;%>kn;A*V(LpD=e#GzS7AxS8=zY^C?sHbW(lr+Cs>VpNMsL;ltw! zl#duT?t`XBQ68o$JhoI%GYb&Hb8b`s&ZGf3a?e1Hgof#38V&h0$mDOi^J%xP=-hc` zE`(O^w3I&vq45JLBxy@&q=ushcBP`bB-rQOvSbC`%W&BF zY^D$MNczq2uGWw`J7n!Vi4ME9z74l_L*$neT2b|_IlOcPl+Xo!Q zfhdC~At-1y+di&5CfZEn&9w2uc;>ItEF+R6_Jwt%T(ey3F880d^qlCg-k} zv%$4cj5BuC(}i)e$}_QIyupnv<+JZG;>=T({tcaDi-)bZC)%v<5P9uK?IgR|TwO>G zfMZhw?>&LvJs_+uB4rzjg?7A7M{oV9;E#{l%YGR1f)=Dwo!OV5UaoZm{Kn@LgDGKf`3@$(9WM-#_E?9fSA#@}JDtdR z0;a&nowO)9U*KkyczAdAgV>H&tHYTOn9Wax8@(et#Wx$!%t6OOpv1a*ExoDhefgQA z30$Xb4^-#!&LOht6Oo^gN+~l_Uw?(x3LILm-+NH|-3bJ+itrzsp|b8Igo7X-;j__Z zR}cND1Iy0AeZqMIB;qx}(<8?;=|G|Vww*dJ^uz2hMVqQjRsM9k$VIuUEwQ#Z1Pe_& zdJRcmm}tb`X#fXch=Ax!;v>_?72FBPmyTA?+6b6 z~2C!mBF~m#c%O?qvj=*mE0c55SvrXgc2Uvas{4kC$cWf`;b;V#a&q~U_{6RIO z0ZX2RCAT=u2R)kLKI3(4p5VOG*$QOam}%Hs^IFplMMNTYI;PzH*HjWt-Cp5i#YS0& zbn!FQPAq)cL!;oJCzMAhYfC{jHw)Voj^H^{yA*1t+zAReM#mFw4;g37PUTMjTXQCn z%)@+)oyZs8KCpL$M7Ty;ubDB46@}FXhyFUs?@UzW{vnROc64Xo7I<*RiNUV?1DtDT zNX4+$-P|=&8yD_*ev9F;BS*+viz^qMf_5fD>jJ*oolahUqFWHS_O5q$Y2M|zf%L|p z@1wd?mc`4#hwa|AjTcnTP7gdc*!H@_Th44r@Il;(E=~9K>0)&{EYVPT5bR#VNG&NJY?;+g?j27skHpuA_X=XVIF#b7v=j}hdv!^5) zje}Y~$JpkTh`ylKzhWMzpAIq|H0W+PsjI_`E4(n!-;$#OGit4R>`*>0-epRXrmSNt!k#(GA*a`+6 zj=C~nhgd@9c}bX`mJ&3Xgrxi~{0rBlm+aVlQZC6+V{VNlUfl|6`8F;3#yc^fI&3ab8b=- zfgIv%wN-bN#dj0M7h2de}sqb(H^W4%v_09T|Cazp2eya(3 z|NW6A7PmRM*M>g7-H9HTULCx3pV6t!ve2OzCOB*b!fpzOZuMr=6}?G?Eh$qe9`L0v z8a_Vah`6)||GKo4Q#JD#fiH1JXP8@KbTWu!gR-Qj;zdnck?8C<=X!9UcptV zN7Ka5MhqK@a;M#EeBVT~L45@n8T{aLh z*s8s|yW!WNWNZO(?=WQP?vNHc#NRxX#F?)|Cd5f)0`4#ZZ^(owEHOPG^Bf#6TTz^O z42ispggf9WeQaUc`jJdoIH}|YCQ^lVjYt79WHI%Wx0H3QXEg4;{Wq^bxwCR zi4@>^XHkiZOVQ)jtvBpMFIjXiv39~x#nyLG#;%r}K#z08v@<|dN%z;eW&^7^1Z!j3 z*GdCTLfp>A&cFZ%utNHT10RlBZr`DspY+bQityTur2!$^se;^U=(Yc2@6Y3*ZofZp zd=^V(ODV!omNX<4VyqQ~QIah$aeCB2kE}uadMdqAX>b76ug~ zd$!-1-0%1O{{8;^{q=o3zMscK_oG`guh(^*>s;qL=XsvzT&&-UuvQ;ooe0Qxa031$ zuo&<7o?MMTdd-`jXbsy?V9he1O*S+~g&#=DAOY%k?;)7&amaJ|kENJ~pp7 zu+KoqVt$7JXOQREx!hza+!ur2Tn6(!F79({0UrmU@$)^!)Yu zg4A7{o6zL%J?HB;^mZ?w{}iCLr}q5YLXqm=;ScisGmne_G~`{0)RiHLKYs;41TBuH zi^SOU^}B^&U2;HZQnMS|bsY8&1ZZ%meZ`F2j1i%QnnD0t)`UqqyC)_upK95_yXZqahn@gD!MQFdGwTd01{w?TfzKC@zkE^-yh5Y5k&_=uG_Edg2T>Fh< zOqJ`v7u4h&WrafYOfjN9Ng}9Q>O@USP4%bR`VP}c{3ATLjTyrFfS`uYryCV`c4F{zXjQIYLgjxIh zQGZCPj+%)%2ZrOdO(ZX-p}M)&EdhRci7Rb(2k^XJK7^Fh$O=#5{(ktUzpCDcujWWV z8dwJJ0234o(%?iOpM{~>YaT3VIjCPd%xD>s-6E*W)yFsW%1;?VwhbK*$(uivqLd`5 zh+K)~8`3w&4xazVOCj;Xu$<8%Iodv7vYrtn9|-t$c`8B_Z4JvO8KfLx@S)w1at};g zIVgiPPTr#e{{EgaZ!Nv$o8SHD<{WAbmt?e#6~i4m1Vs3k17Pg`A!FIua!)H=pDzZ8 z9&5TwZtCME&>Z6$5`-Pfai^Y`&(|zZVgiP@s z8v@MW3qX2&dNK)nrS=$Nr$M>Yd;=@(4>X$QXZ2YpjbUY0E$C^R?Apya%;FWpy4X#H ze8xk`tBB_1)q2CBL<-F}Jc4fSn6EhFl)o!6t2PN?L*7m}_EJ~WS*W{cPs3=~?{RRw*0q?znj3TXKjr;O+9^UQR%Ypqe ze)?aT0RW;aqsY`NRRmJ_J(P3p@b5uJQWvW@*op1Zr`hiGep&}d$`mwI4eSf zxptKNHbLWP-7V>xk$`R4aw!P_;2Av({LmSR(Y5j-%mw%XD@~MR%X$Vcr-5@Va54PD zsDBmw-=bKSK#Y~3!~N3qUKwg^Ja8id5{r^lbl|1HP@>=<@a3;v6$b1hJ(RYf zwuJko==K%@Qcm%OrMi-RY6Sd?XeQLInLRq6g*B$ z@)`AU6V&J;z9rdW8?Tg(=bA_w#fEAqJa_QvJya;yZpc!d0rt(mXbz@0gX^fQtdFe` z47dgP4xWi46^oCKl#y`MEKRlYQcg$J_QHuKSlEgSQTw(i`6mGpDW>*DX3Y-?$s?BH z&=k~S+Emx9J{x=;j5K6`3|3dKofTm{yJKBh5{d24mH0Jx8g}-&9`$W2#3>^KilWCL zSa3=Dcd8**OW1$3#P(E;c(wsV4+hvDLVDOB$znAbbhUvFB7%<&tL=wjBs8~XfReza zgOI{n#%7wG`_`F!?z^R78C4e5h&3F)q-R#2AE@y8KDaC9Nb2i}JPA229(?Tx$&(D>t_ns-Z(is*%HK#mj7o&K)h6ZH7ZGGDFHu5S}x zVUJvEZmk5XafREu9YO^u8|mQj?Q!B~$}f9Kt+OYEWrm5*29M?KOKCZV@aM?$y}ENq z$aw5~p*lq!mclCz{e6+@hMl?QCFL4!b|zKBc=NY)8a5q+U*PKQ~G*7HQzLlu&A1 zuP6_QY?u8-=s#?b;3B>YdHDQPZOO zDRA5^W8I!i{RxC^Y9=adQZ70u+DTy%|y*u;Z zu7wGImy%bR>#8=)3cckIWBLSE-s;Ld4`GTg2GXdzgp|s4d(*h9n97abdHZCzz~g&} zPz==}q43A>Cw15qd^ANKBAH@0DXBHRSa;sLg$4MyQ!z`z$4z&2k@xrk^mRgV)7|qU z-p@YCbV&uhTH{-u@Ix}u6VLaVd2G4^Eo+v+?k&ti^wNtr zScA@r0b&wgftFXeENf}IET+=10X6*qDGdk^XxQ8mXQcmjX>LtS$Qg*YgLZJ5!NHuh z1FLliOydX_L=jpL=#r~EAW0HO&)kILo{T1~UU3LLSby-cLFA>1o&(_T1@q%Vlx}ME z^X}?6*{V#}Jh#uc`j&vvJ&0a#BL=osRYmB!#8d_MtiJ&_Wq;qc$FXqq93ZhLG+0~B z+B6`Z5yD3o*h^z7#f#0x9_@;fT2*=L%d5f-vRc?Qa;LZc@`a$%Wq4-`e$N5B1_4ky zEfAC4dw@;ubNNcSTLOk)f3|?hP;P?c6zICGAxL;*T-8&C100yz++L?Az|XCrQF%FhEaYAiNM7WwL%o4LsvpR0wjTE&75YJ>6U$|2LRAd+d^ZDH zF&DOZ_)}lOEJL(LRp)K=`K3+toM$1YAp0HOlhdP6cn=aqiZYjluSYj6Tf{eyaligB z&P~Uh`+fMy)r2=WV)=ntZ^S?A1?zJb)*}+?@E6Pc=8IXRr~s*~1-HxS5`X>c0}7=>Lxk z%^ibAm=mf;9#F9eI8D`Hx*8fx-iJUgibmvE%ZKBev%vZP|N4S4tk){PzqnNj>*2vc zhXCSO)08j@-)IH&W*PEG9_{}#=n6gQAa`!IZ^NuLO!1Do?9p|&Ep}ZZlms}L9H55i zpXr%N?)VSSwlinHLUSI>${yPvH=3wCB8#YmbU*%2fyf{E2?2rP5q2d-C92KEqu>3u zh4^5f4YH3rjtw}u;n9^H$CY*)CkVGw7bZFgmIL^-3POchSaDdA4HLESBExI(iKS;& zT!lY!;rV08ykVN#(FVZ4_Xy$&1Jk#ucZ=OC5y~=%sPw}BOjBEW74VyZ&kEkWJv>%2 zWIX~TLK5$SSkMyaa6{{sqz(uT{)`<4WXCNR_{aT*s6nU>5}M@)0)ZK>;<5|_>IIkG zv*jOU0}17itwt8Plssvc7Py=vT*GTg$ufp-1nl87!8ghe#+YWv{437gMv&{dyucSU z0+W!+Hc}{*`kya7SxE_KgIhTWUnzq-d;1~RyG~m;=sA4;JNNTda87BRA^tOQ+XG-v z*Rzy?5S>~^qvE)1d-zm4ch8@qsKcJ$yeX)cyXj#%4v|o-^N)JmuXNfM5FL)P27yf+uYzQBh4(2g?0K9WGI6dGL38b(wosbW~`U!Hr!Mi%SvOOjbL3XRqe^$^V z19n0JRf+3TkYO6eK!8&PTG7&9EdS$4w?9w1u@d2{ZU;P%0kZqTo zekwTY179h0hn3ufL>>$@Reyk$K5*`08cb*HP1sy3UocC$`;*Js_-)K}s(?aJz}e!W z<)Wu!oPqA=@7oEh^b3?_k^QG!X5}3~sq0!-v8HQh?mVbH%)WdIIKD9Mzl zD4X1X03psn)=k(dI8@@<=R*H#=3DLdP19)Y*C%DoPVWH+e;AggfFeW@KQLq4mO*#NJ=qbWLgj-eL`(=T93^fX7 z4&3bYQ=}8>1j=ojTv^5}0b~qB-d|gpr45L)Y6GjKR!l18f|TiJ&Qr|nX3kTP;w=b{ zcm2EF?#qGfuTYA>bk@&+>`TBJdU!)xLy4u$vTIe{a88bs313S)JR{D{&7l%7kgk#F za*ytgZoP!?Q`BHLJB#7u@u~l_C7~8#R+IAzwm{HX0OBFLsc_iDckRG7NO-C$URdw< z4)k)Y`GqcEqP}P~Y@e`~;rcQ1s|Dd3{9%ExjBPN=ffe5NpVi&~q|0e^ge*8L;+Po- z?rPU=xu3+%>6x56WG4@twk6C}7|HVdp}Mai7Cuf0%iZNldc^XEN%^>aS_fwFBl4W@!%xC!1=Y%;ln7P*EL=<3#z8JXacm2B& zcBAqg6{;H683O#}d)#5JRWM39Q-N})wjBO-Hr9F@A%6x{g_&wg&=rWHcQ5A!%BU{ z${-=u*~9Y?^(5Zsn7KLS7Ch7rbXwy*JfWO7o_{*QXVdL|Yr***F&sEwwd#IioU@x7 zIvyk+Ksd*-Cc{osaW!7)gzg$s^J$l z{>NB8a0eNOvQ&{fd*!v=4(~ukVCZQ2u_yiJX6^qgN*LwzZJq9L)Dk#yTq=OsB2Xg? z#Nme69WHNK^oUs@&g5>9Jnq^EEf}(dkeAO0Z;zYp>LK%S-owH(B~2|c&d4{1-o>$-NM79wEaNDg{@oOL$bOLmB|A@fK-=HwBd_(50 z+*SXsCLEuFT&mJG*qi25p(yg*ukwgBn2t2#mIgdqEpe%29{Z{8|S}o-8v53+MPpR7mHG`$o|Jn#R2+-i~ z_VWbE6+4eTGPiouj94QJ@KEz8NnrG>kShKe)|z+S3neOVVwiwt0tGm_*ac;@nEM!;JqGx&ic5`lVpWHFAXqNQ%zitP7OR>Eh zQ@S1`2c4Wz-IFri(|vokMTey7KOECvTD2fJTLOEh&F|k6>5sbSCmsXt#-G3b^WTol z{~ZJrMqXO++W(mWxD+e7#s7Zk|30uHivN?t|I6j@>L1_@#L%8b(vb{`fV$Z*dA1(c z+k-7;>-=9+m$5nrfjVvMub36Aj#Lwz%SBfI`(wN1AD6VvZ2 zpVFm&{hvQy`oB%NB0RhQEP_J{t?dpZnQ@}$nezYjrgMLtujiJ#{rAUq%YWBo<(C^) zQmp^?f&WL!febM$cl9Jo=@WO5J5W)xvQVWv{%=2U8MLxtNW|4$w`aQiE=BgC zZeTXf$Xq!R)Q$c`U^j?1|0Cl!Dhv&bm!JmqX+aR`uQ;}(cp;~y{2RRrE0PN6)K;!1 z_`Oi8m~837?;_wbv7yhWHg36Q(_8+~bvqx+$W{sTJbwOFhvkfv)s!z|me9wA5B+Yg z^tZ<|geZscnW*l(nF}9t_Kjrz1@b1pU7WPO zuf9G4ZN;W|O?))xiR0&U34Ps#M}sAN$#E@rBBpyxcU=r*H!3u+KQ|EAH-CTJY}U5( zSB9EdQnVe>gUot{V5z;7`N_Ufo+e3SOarR*iRWyvxeYN54YHe6_lsZ#TSu-}H2Z^V z_g8W6%54nzg?;x{E;;_!Ahq2)#FSp|y%;cd#bqgD$4ZM(<-8d2H9G(5fR?KWyo- zu}AYG5&L~5#=i7@EvhMJ57L(j6a#=7UwhUnnB_;&+72S}lyGVcDimFH@nB)iG2~%Q zW66=(@oo|^k|)AsT<>cUnQ6~639j!JNc5alWoV?idcF=nR$KFzNn91rg}!&SDeTQh)!pHL4Mx8$B>S_Zt<5uI|N;p7ng0GS%?-WOZZVY!seh z#@fy*hnWn}Cs-2-W+Spib50YAX8FmqwwK7MZM8B%+lxi&XF}Se#f%Om9G%A2+!Trw zT!{S={PJehCx|){CDJo8;(QYM?$ed2X|5vvy3#IZ5<#9=FLJ>4n-J1=Lq;#7L)LfN2Z-QOf)7N79tQHjKsZ*&nr z33KyJ@x51EvCNWfeBmQYJ>OheX@F+YS8$RiPFcrx2U_0oS8{+8XSg@yzOUj*v}AtRpFb_B`U_Rw17o&<5~ zQtfaRuXfZI@;F#k&1d=<``}EJ_dbeEPxpj7B@5H6b8cy1PB_bxz@CV5j3)Zdo_QyO zm0rs^_m)-6Eh$oGhn<9MD-4c*P_KG04WQ0PB%%n9%qA$wEk|dy5ax|%1`c&=45PZY!7K3L5JAWyNk;VyZXGnl2<(`LbWGNlX$+rx!?(tCKqaM}cR*ctz;uDLWxF}3NRouNTW z-K@oQ*HvR5=o9Tw4V*^$CB@%+tNuJQ3$Sjvpk_7RqB+ISh~3;Di!xibt$pK&iR{eV$d>IRinFPZ{X8^$~@1nNFf6v(9Xp1kmeqgw~hEqc)D^-}h|1dvMXV{R~5~2OghF2Vul`FC2 zVbYjaM!IJZF8JIHoS0T&r1eFG+f~RZ^Ri<1n7#?BFyJMc}Mg zV@yi0*t20DZ}kfQ_Dvk6T-7r-Y?*u|6f>0+j3&J*WLZI-Ie)0ki5X{%~iNnuS z!8{vF&srwddl!7!QG zqs+On)?FC{Jfmitfk`9W;rP2&QR=QQ@ppZ^y+HS zuI(CkoqX;S~)8KM5ic_>oj>C8$qA$st~DM70m z?Tx#9rpoM4jQn4Wkq5N$3-dkuWq@YF>d4f6YxSfwRjKMS>2o!v0 zL}o&1W8S)=Iiq^dC5kr3Mi|c^AZpYYsJ?%9j==6bU}9@c^stYU|GFp6XSLrR&J8*_ zUidPMW=+ughSn2O{Ok`Or;t#JI`cqGJ|(D@KxP}>fNDYTH8{qs9iECLx_Gz zKPLPkzmx6Eoj5ow@Qmds!$Nq*m2IO2;W7;_vC*BYIAN>=JR{kLsC$s# zqn$)du)yEizw2U%U~!<=_1`XmaYC~8xwO6%(kBHSxJ&Ra1)bYX)q|aX!;lX$=SZw6 zs6d|jNNdxFmKcNESkPYveU}nNW+u08u_h5qNW`MsLA6VDaGpH=xMB7zaX1FgxRrAX z4gwYdh75*Ro-w(J^%oWQ-)CS#*;rRol>f$$GedhRnRv@qWe z3w%wBIPT3BhK3fy-;X$KDOSJ{!R!%al9s*A9yNS^Olz}-Y5FHB+^>USrou4yGv@>l z@f=;Ey9#RpugHJ0bHA_p_%bvuNlzmisOrcOiNm6ZEM+~AcFF!T(>YyRmzGJy+EFDl z(zT$^_IZ8D1)aCk9RXjp*DX${U@wl}( z8~d6q)sPD%Jy40<>zCx}g$|>*4owB%73&PHYitiYS<>iP8&W-3AnasvF8TVAX))Ge zX#9~z`b7B>jfnNGW4Vdd-ziHbon_Dr_!ic5sZ^SHddsuq5nmf()gL?h47Sio644U7 z>FPE-G{Zob*Iejdc(SAALw4*WIb6t!$^x8S!d>6Df|h`0^$-aXpr2AqvJcVsAm zZA)SbmIoHmG4Zp1}{DJ9 z0v7&0fhG~b`@9E*FkZ5~Ih)GFIp8~W+7NS~lRz@*Q_7dsWiu!#U~E;&2rS?klWjwZ zTgd2QXXtU{w$V?5BhK%nXlHdoYayt)vyzihbf-->V`ww$C5yIOM}aX(ABs(y+cwo> zv3Po%kzpdMUK-*A#VPr z$8u>vb;eE$S+x3fiD_#x{9TE!KR-(UJeJeZIE^IO5M@pA&D`^`SG8!)K^AmI<2*B& z8y|A*K#~?7gJ-yL%VJjf5jel-6SmOmA(yu25I+3+m%R5v*`Xf-9no&NG$$FzM+Ol!&lJtBVFD@PLW2IlkEfA1*PAX$XGZb|{3G^On{Y52=A0ywV583Bd`F z?QjqX=!LdyYDIIBk_2{JlLmVcVlw12Nqv*|B!m`Zl7@X`xB#lID9!i97{X~W7!Dc&vcmlm?3uBVxf^p}$ zm#5da>QAAzLLtfT+NaIEn4 zTsw}ilgA*a@6K5iXJROJ-6x#(RvlNX5Gex-o;?BC=1-ya3Z!O$4Ft9l(r&c@;P^n zKiE4>*m)4x4CEQKMpaeR$Rve8OGrvJI_Nws8ic!QSL27^HICb!RLnXg9$|w3;S_@m zOYiJ~%nrvfi6URLWvtJ23>~Eh^o@~V(FOrw;YHK&GiV54Wq_1mrs7whpfLePz3n{H z9{m-zLI5mLW~=BTjr8f3>wBACX*g=2#YKO}&2R&W-aEuuQ{wP#NS!8WgbOdY*W}U$ zQO>;6S3r2Gj7ezX`cwI48b&FkI?Z;C6sF${-wU;cU}aM}!|WWGb2r7bG(1i_S_w`H z4a{`bumddlBwJOn7lgT;seZ!~&a;wRarsw8S#bBSd6KQZ(Oh#J-v|$j0EK|J!F=x5 zAES^or3J&FZPz-hYE#ZF8c7A-0Q2}@2?7f+L5Xt}d_A??*ktl`HzkJK!%zqjIL|CM ziJ7z+%X{7Or86QU^C_Z5BI*J$J1Mse7=Rteh{Nuz0ia0To{E1oueVdF@<63j(eR?a zD!y+Nxd$W-=v^D!Y=3%yt}EtvmF#c6deN8Y0m=IG4^`KH;-D4e9^Ps_c37~#sUg?S z(=kCkRUHjakaAEkNZG@Cz%7US28M%?P%gE=7dr|G)51$L;0i%+!POM34Y3HQ9JZl- z1FBP5Ah09Mx#O&#uqYbhV9(%Gcy(x~CNXkNL!|w!1!v}5)yg_;xPjWU%EG$rXVlGl z2xx&zsNv1^k!$gjuU*?Md>O;mFfRv5w1ow}-TOef?UBa2vA$oqs0D7Mg zs8(QCD?q*t+%2lFm9#3pnP!B~V$_Z$Nvq0 zg%drtWy+3L(zi}Du-g-O4}v}Uaf`stI$$zsLxk()LBNs@2|Q3pxy3B$NKst>jct30 z9ww~!Kv<#movJD^>~=`HL!^ z;SJn__INcuv#1rZjAGPyeG+`|cLMLxrZ2}I1)Et&{mN|uxlUV~t+xT!rdD$*wRZob z0OH6!p0KTqZ!_zX{`3`f$f31;-4>0@)zRIlvo~W)6?P2TuNVt-y27^PUolOFXy0q2 z+wMF??&BHPvW+^PkBdn)j>uuv-VmH+acyqCyfQMlJD-BK!`gu6aH(5EK2xJ&+IuRE z;=sU22OS4?SyW#JsWKAy4Nl3VUp|M-qQ0GYN)jxZ%dbp88^*?OyVJWZ!k4JRm?XMv zuRMkH(a8qTW+e+`iCWUFG%A~jthsh_C7^80xQZ2lzEywgi{8NDwlv>!O zjKRPWhn>Wr=z~T;_(2!U+RmT;z13K;txDjVD(GS& z9AOhE1)CHrM4+?C#SbPXfSST!&yL=YkRc}73V@yj6WHBUEX4;5W(_RjyH}LHYo7P4 zitZ%N5!ldIk8Aa}vyQ=-5*z^>R$k2?QL1Bd5c-lnvhk;Ua8qT~fqluiX*8aFSz+oX zRE8V{*G=p^GxAw8t6(?RGJaU&6{J)g$ZC`=HN^O?oQiy6-Ql^9gMx^|+_ugN_k*(c zIhYYW#QYS${{D{ALY1R89p%}6cXrTls&5aTId>uIQ1H*S&~FSWupy4UCOAvsk05f869QUoZ5 zSaDJq_8c$3(&5bD)=#xLeJ3Pu+Jvb;l5a?S{ZOni|EJlb(=V4TUA@G)qm4#xQn+k8 z&1neMHv()5UWAZl-Mz#w+yxEZz)^}5e^b_@LLwTzB1A%6@J_}Dl*L`AmYF&^cJ*dB z*}1M`(Y}WPQ{n&~9z%{1*mZ^9bpe0j9kqO<>M6@QC)V=b^K=5Z;L7ZU?_A$xoW;8jjK@rxKI|U;#PWwMbEpbZoqy_ zvUMxT#@g<{Gh$HCRd-wZ1hmTPrcb;lGi93zS-Lj$2A=ZlFmvYIJpy}%O>f**`#O}T z;b{+BBtPe_B=k?CcnMZ-fePrSZlIQuA+-`JDNzteU87GVP!o&;Y46S;cs!%la2Z^* z-3`|*1I9gBaKQq&oTVEY4xUlf;tk^u0*vYzJf8_fqY=PoQ^`wy%sEl9n~@fn5kGoQ zhMqpdzm97rN1B8TD@)i1`Dw3wsX1h(VS@0}68gltxY~Zq7&uf?L81-H11IFWqu=qh zqK(eRecAp~*iXezx0vT>PpEFgFZI$ieaTrlySf_id8xzFW_iRL+1dq58{@nKp3Ynl zZAhPz>KXpIbym}rrew@-nxx$984&&^2kxC8N=ypg-e7%b>}MxG0AhS})9_5S zr@}$!n8D}#Ur`qL8-yH`!}zt80f+nxfV1PQ6g(pkHHH{)ZXE%bQV^RGmgEe)DKUk-aQ z%<lPgKgJ0iw!OkADc3>rPbS353{Ed@nVRTO zl~}z&?@(eo9O^e*zqVXQ^!dkkk(ovlhYtfYL98xP`8a=Avg@VM^cpms1o51(o@@}F z6XbHl-Ky+|XpKxTM1rT64H27W#89KBkXJavofW{58>xDD{~_@WgMn&_^Rn#@I}+v2+t1F=j^`S7Fjn1 z*Ci5l3&(T;5yrOAshP@0jUQbPKM7_BCxcr%be8qVPI~&-R`!A?>$2EQ>F?iITyD(B zE2WJ*d&kV~&L0TmA(WP{&fR#PX-;N3^Fe;ib*{QgF6F~vG0VIk;6B;-HywIS=+7iC ziTU|LxzWwPli!?`ic{LEF|o9!S_HBy)nw+}EBeInX@e^f;ed+0Ce&rPvL?;N9P3L% z4zs{_M$^fJJ?hRpCaJG)?k_pZ}|J~yPP#Ev*tE(GQ`Xj&5TjKseYPDi5 z-5srllt!@plDNmU=b3Db8d^Dc;+sy$Nuo#nAA9+dDyv!|^)5Dk6$k9SN2@5XQfvrp zUo@CX0o&<^tD7s{QewW*>m<2u`!)M4j0|c)yYgPHlO%4Z@k5NkD!rZTYB%QGPXe2q zox`UJ=Q}$L)evy+h-KHqsCg4Oyc~RHhXHvCYR=jU_|us&o(Nf-_5K8O-;*76#ewyM zY--2VjVYa-WM(6`XS#yUW>fy43(UF4u(^}S2DsUTp?LHsu`Z~CPWscs?ycTVoz1WK zbFkS{e34tvGez!n&3?6Zo|+b6LFU37AkHo9FvVioh9_B$QRFv+Pw@;fob^c@q)yBb zcjjCky(F>@1DU*SncoZ~Up>-fl$rQb6g&!po1Gz#@7VyT)e&Z}s2}QGJU5QHOOvS; zt{YVqi!ADR)(<$PiJ$|~!v=cp;n1lVe!;J|{h4z)2n3j@n(aD!{~6?mb1Zg9&yPn* zeJ`{4t-Yozw4s(&ctq&ghl9RDKW&g4O60*A+N(3jd+04Wq!)*N{FBTqY9cIau&XsH z?)!r_oo9~mPu~fWvsaP2CY-2I+QU&NGa+9i2?Lb}S)K*I2@5xg(B4V2u0TB0IW3+` z8x^UpiZo-i@j4}vYY93E2vy9)prd*IJQK=!hH^U5T5!+7s|c|8TxUIhJ@~$daAV5z z*4(4k_~T@>Y^`9ANRXmmu-A3Ip(=!A%#C0u$%FE}Oet^Rwz6 zN@}t!PtPffyE}{%qjInqdVQiu3D|#hHNNuH-a!=TG5D$$;H&P|HRk7;J>|bQeQNZD z-s-MfUwpP}WeL`mg=Bl&7@&(=dHufseZ6_$bSW+AChEvo2x}49L11IaOg9sLJDAuO zjxkFYhW4d*Dd~5^_urM{8HQLGAUB!Ra0l7IZBPvf5{BpaL?5qSMT_d`@u&0&=vyrc z$w}1r^B){j0`O0+sl@@v)|d6&&^S==)lrzGSpek!Qa>8NZ3NK8!!A)E3w43F?_hXG zLdRh~=GFLZQS=Ez>OEHSbyT;NblvTg69NnT#Wu{jA#Of)pIsUmqGg`5Ri}SgT!0Eo z1vKQg>75HzfK)pG7Q0HCXZvake9l)Au>iLO&hXz~9Bld7SYOz$lSxAq)L1iNSyRWA z(g)X}Y@TP(B)M@%JJ6@I%WFQ%fO`5|70ye7^ebC0!F7PcPwoCYS)=6PsQ%oJ&Flp= z)>E-S$@X6LY%KAcB+E3eYTl5>O}o0m`K{it>%6#eIStubQ?>{+^Bzvgh3dhX>zxZJ z03vvUQ?j~Rtup809^Tp;q>ONOBmf4hv^Q0}t&`fXg;jenN4D`S`RQ@vI66#Q$2IXh z^Bxu&hD%Vkaz6aAJkZz>?IqL%-Jq@5zMDIbG3TP`6V`|i;x<0|;N&?Y|GgiUAGLSjfm0^hfXb-fOZP85+0cW5#=fI61(ba<@u`6S{RV}5h0sw~$ zZ*}+v!=){(KCI8>UnBGhD9yi4)Fy zOrNlWB&b!G`tMsqGKJ;$hbX(@7+XDi)Ze5yoJ53JfajQCm~@vWd%?+hQtB#wA_WRn zaf;AQo05CyTXdG)M20Nlxr76tbI*C`osY%yZ7+KqI2}KR+02;KV7)^!_vyf)GBp(I zatf~2xnRMZdkYt5Fj3IkS^}jv+S|D&^lnffL_1U1X8WRGJ>GAl;@JR>d#HP2)eeG0+(9RrjBw+e0!aYcdA9-x1(whm6eXX6!=e?^2%PXi+d zF6yc<7y&AC-G5%3Hx`{`@?h?sX&Wvc1+DpcKB_Q2#DN*TNwpuOXT1-7W;QUskJT|0 zyBV*ux6LYlJ{m|q17P&>)4>%Ht5*$JG^iR~(qe~&_#2z)sq45#d<~m+EcHq5NuEkik~~Qw%3k1r{fagZ?ZN^ zEIBuQK(p>e^`Q9_jcgzg6zCtrH!29-Geu7)k|fcYV!gZeI=2uy1CSY}#i`kZsk3M< ze@DTi3+VZIGrxzTfU{`#M(_5+Mgzd=Z;M#)$Xq8ch5E;ib^y|}ue#frWcVSVKB05r zEGI*){rx-zYU$lw9`Xt2&0n`rsZc8pfa{`eiQ%jO0}$pc!YK_s-@zzyCxeDY@Oynt z@$CWi*K<7}7UBt0hnpIlTG8sN?1g+fS*y}05d1?E)^kWbadj2aHxZga&1oZecJ;+C z(bZB>HXkCdP{n7SRNm)QfUqhBwbkL~1B)xd5|op@5 zUAl_y)@i z$Dci?BJ1QHkewf>7+eO&hATu)CzET}NleSTm7C*#a$&%>oxtc}A(oihWK#b7;MYkV zE$kfZ-xUKU)=aQZ@e(_o7m`1S_{>^=yv5xtOkuZK=Y@wkyogG+{F|+eQmJC7#-#MD zTG*|VojX!Izy{YjNkK@RKY|A?nEA1W4%7@~9b=MWm?%`3io(4omtGOn(9F2eKaU2C z7M|L7p6Sg(xmf#OIn(5g2#}dt2V!XNj9?cHP0}a6KsxmIG1$y{f83apKpKJ8w5Oqj z3sPz7@a(6+Zee6L3h8au*;_VvCGrp7J4czT9stoO z6a6Pnf>p_|y`jT+S0C8P$?rpy$6zr~KCz=iCHw~fOVDVNo)raqh=z+8IA~Tit*rz| z6Db|TAI5x+^GApcw}JK)boZ+z@zo0%=3|QHNX-NEGz>o$Y8>5foj^%%#91G~GmZg3 zio-tM$zJFLLFj7f+-})(82=M0dd=F3&$A#9ubLH_%VW7XhZ2&woCaRGCXjFA&WWW*Ew51OO}C!1>1A(cCiK{wWSr{5rUsam zfn#Nn^YjtQ#!v-L9kN<QmuIjBd$*ajU2G~8w(?vk z)481^qxt)XlxPgByyIa(K<6;dl-S*{&TBF<1M&hC>r~-6Bf`LkFn5CBZ z4Qvy?&(Uw{A{ATI=l!S)l_M1V$b5r=SsO`vg1$#yH>i^%0%8GK|N1;(<1hE-kHwVtcs7w^N*jB5O@;gswy-sN}UzhlyQqI28i2*1k^Yxe1)kO;9hZ3(*?F!`Y{uLFg zeOo76KH9IwTi`fUK70H)J}Zh!4?bs1H?J#yrSbry7e4tha&jcA{$Q4~+hFr0@1&Ps zD_}*c+>D!EH#z1TRc@9WM2TSFVxWvcjl3r4n}WIW4-B0=X}%SdECK`b5+79cFLG{$lZENNqLR$=`+Iym+h_8!O}y zpAosHSUx#2F4E!1ou`-QZd{6#mt*EW-88GhGD#m!cKG_W+0g7P!L9b?3s9)2riBRO zur)#60aq$eT_5@XPW||@9ZeEVs{=YaN<5-8?-bR|9)h?}2-!qd?u!~?NzHn<9d*Jf zZL7!K-4lbc+Pp!20dK{;V+9P$MMZC7T4cjzoapL@Z(cK~!oZGs%u%RXe%mA^&|T?c zTD1GRhJGeT-JBWbw#1`7!8kp$k#!Ei<{R<-*vM)~54H|4<%ey4r_wS2PWSL{pt)1s zBNS?t2q&)9Ey8#qelYfJJ@r(W!@;vb`rOyAO=+ptXP8%FZ&CZvD)uviA2QQ}Z3B!= zxbOXx#|^3t93JWHEj%yg=N)j7GU!Q$j#L@)@73aCqvTxKu@&at8MzJG1v)NoMvvgE z@N!SC#x7C?s4btb)hQkm3gRnP^Yby578NbJ8XIt>s`B|i%b!YBk9<3%@iuUtorL z5Ka#&QH%<7`3AjQ%9|!z9uBbEqN30Kj6GVyg*$4`eKskdSsX#Bwo9`fAqL1M(Q~fG z)rN9U@S{o5P3t2*3nM} zK2JBiz+6a&Em$%^Vr7rSQY%D*_MLG$hHE=FlP8?G<|zkgFgHNn-Sb;^*6Hkj`;Ce? zA>*Rw9E`(|0a=fc=nKzVHgAlOb4`xb=9$$jwh6GbEL>eJtWA)MkQ8mX97|}oR{ac$ zoUzVr$yR$JttnltdH)%wLnV`6JKMh1Y*9~uz5Y1%=mtyS55<23`{#8Mi-}=}0%B6T zHzK+osgV{}W6Mo0j$KOKI#$$9uvL0NZ^Kbu@3Z}tla zxcKr6FYBDfmE&Mt(4ynFzihpqu%kfuMz&@F_NA)ak+@h9Y#r*!gHh3U+fx_Co4<@W z@>P_MfEbf^&aRK3&lP@aO4IO650;0vTSb)&w};rwtn^O1n8}Mu3+_XI%w!X2D(
gijG40X;L3Fo^?@ zvevSKM-#k;4X;s258llg9Er~iwmXwa!nMlpfLAO?LeS7ujW87FYy&7;eL`6-tkT#Z zJL3n(aS8!Fi59cRa&%md%YC^F#88tXG{ObpKdfz-u@O!DsEF`Xv_vD7K)(P&TCwR_$ndu(F?VK+IiNb=G_2zUcVhBNF%Pqf0sO zudI)d`?3M~EciV-sq$0=SfQy)>dvY#;+JCs2yeS6E^s^NC9L*HuSy%^H24rn3fIyF z3@g>g3WVR;_VUjjG?v~VD)J!yx{kZ4fMLM_<9l^6v9UAgEZ!seKG#!`dy9&PpR+7x z&kYt}VO?*W9%LXsvr}c&4^bd(ts^m$R=yU8Qd5(axN-TJTeZjTy?)b_Lm4{~=sqGN zAT1>tdhkULjMwO4k?@Vj?fKYLd*d*{Ap3xrQn5aIV(zi?g9Y;NWS+kUEvd^7M~80n zBBSYZX(Nf5=Rcbm1$O>dLz^9`H}mB+0?-Tm99Xhkor5E>cNUL*eBBvx;6(%?m9Lw- zi8Gj$YbMdO+K?F*5UcK-K@Y?<+L`z_#i&orgJ1_$YBc;+4!p>32RLZz^8cs3cmIbv zegDA6j6)^tq!0}?D%$~Nrktq^vO*;$hp=Lhh-E@fV>_4-D`=ecvzw!JhsKk? z5v3C1PBN)7BJpVV;X^x{lr-@RvJh$#i56p`YlZLLvdC=^1C~E$NuK^aQtOLOd4Yd= zA<;0Guld+@04fgg^D-~aqBESV@3D-Si&m}C42!~awc)=Uiah3&vC*hgjOi=s31C-t z`(_-(Q+ifBa9?gfqiqbNUgkq4Tojrf?gLXYKcg#yP11ea!8nODNA2^ zYVtP06USv`+g%`h1$9&e8Tk-@pm2Zx?6!exHPU6I#SQIo30h!wl(j? z)$#lEu$7zHj@b)QcXYmR^ER@tz=Oax@2)4510BdE*H(ASYI+v{y@r8bY)!GphkbK(?#ca&buSIZH7?8LdyQy*KiPHe*RTlDJ=cXAuM@*PrA1 z_|tb>4&P{K7vmSEGv*r&tfs6fL9s;B)nA5#8^B^Xf2B$?jzBrpuLZ+Ie7Op=jMtW1 z9$%yBl1QF;tJBjh8OmOpZ`Bai;|FETJVrOL4+pmVy^-o#-h3*8%g};F4j)x;IPaD= zOKR0D(L59EKa^7V)TREv74FzXXhApLZm=k=kX29I{+O>bTs>D<8=F97XcoF;dO|&c z;y}xN<(Ha9;pt6%jN0xL}%;$=P!Ie=k>u}2w_d=s_-pQY<0`C=Xh)Vnu$`_ z&ofL}1{|j}OOHH6B{_^9#jUSlcB^Mz-x!b&3wz&}8%K0-9y>Uif0zNsXwe@zCGNL$ zE(MPp)E1$1rPPn&HY8tMGCa>E)Nz2>J7?LdnUH!UBAg|Gt%S!aME#Ze50>4KHCIhy ziR3FZL!zijzk#yoAa27Na195B$NM$dZ4%K=5&Mt7g`nZO(y#fL-hI)9W5=%{)|gik@!RbWl}=i=b`D?BU%9>5SPaqylz9vn;~;h)N^$p0 z*YlKa{O}>&_rz_mduaqQ{4^Af`>>Vh3Ts#uiWp{I0V)*1kl!}SM*aqwc9RzVAtPl9 zs|>*)jpz&p_)$-AfdyS0<4?vC`}#u3oR$*J!YyuK&zFK(tSpA6(&v?40^Tx+OmkWR zs~Y0Os~iila`SrpY4mqM*o1oKUTh_Wy5E7t0K>WU!TcH+_f~kex1OMb`Ghupr1oBG z88&ngo^ojr7AJo&dz$bCvW{NKNP$Dz^fRQ~43diDO4!-EQ8zM%n%j;OIM)DRA*9m! z(f?q=LU+N%c9tW}8gojrY+GkfI9p-?a<|O<4NZSf5A$f}@!rS1ig@w?=%o)eiVht` z%GJZ*v8!R>JY@zM!S9h#%?V3*Zb*PQ!-f{cc?~;vN@o`<72}36*M^6hZo{j4zn3nJly2n`{&#INYGPG@}q;%3($$VoD605bQ%v;EG5eI_{Yp0 zuOWVZTzjT$0-+?DxJ&&}`Gz`cD)V~Hd-OmVjQbp`T>eVG?Xl*%X%^YjP;h7GMf#+~ zqQ_{@@ee2&tJZAZ6?wrqjpA2Jb7>UDzz|K4IW`^i#j2cR%+V7`#NTx<)AfDtns=9U z?G}faBnAeBpGaUT4d8I6r9zBCbV53(h6D)=+BW66Z&sYUmS*~WF$(p)_`I6n*?Qv& z3AP^GfM-XuOL%nPbqm>32z5fTfxwTAj0Xb{uEb9?GZz`qN@zpRpv(^9dJkDNn*G=e zFnZ4Qox^{|xb-TcFOf&5>!MFdd305HBoa1m!|2MG9l_!4x}ltM%-TuZgF+c5*^u@g z8BAA<%XPwaZ&1dxNTx{JqwU*S0>95)ZjqWHx7Qx4hMIxK4)74v^9Ad@np~>C-dJ*7 za^77kw=0{_5)Bi-9pWvs)?W#`D{3Z%p6A0o#jr5)hYGBvgXIZ;0+AEkcjES~v zO-vy7ta}taGrZM~xeZY0=kDtBdCu8_bd(4mFYDO!Lcy6P8fIm+WO zFwa@&dGsT4Vz>>(Lk&wN-0!=m?gIFp*6+8?S!RDyJ1a|1V2jktRp3HUA-+L3{(k#X z>~=v;xE;QePBJKC&g{;lABubvuPT;ke@3uK+n(Za1@U~&I+pM)L9568K=Z?gCriZD zl$_r}kfC6{4Jzj%`U@o?5LvWON?6^pl&M<;2IekH95D))f5}H&w-HjGvxZP=C}WH{ zI=G~?ce_auC{1r^!>@e=zh}N-U|c5-a|W1DK0ujjOYN@n<+70|AIieE?n^`05B!7K zllH>LNXr#MOA9RgA1XPhS#7Tyyz~U)_4o_lGX*bIA!%t6MSu!D;174IO)qmis2Dm6mo{els$t+1oSHKgkQ6r;InDA!mp z-w7kj)75Jn3asrJW+q@Es25svmdO9g|0>QJ3!5Q+<)k5G3YSa>^Yb$GvKH@v;(yK4 zi9A515hWCg!40<&1iW@y&-vD%ZECLY|5Km{r_wk7y_9A+YKaU45`GK6h^znA*k}&p z&8xRNnYoZz>s2epp>qFOJF<@GUX@i_tj1O36q{w;V{+(=B%BMa#jLrL;F|pj0_t+$ z9RN*UQ$1!e&Ww~_zvlLQ%<{zLUlb=shJu{ACmblW_mWJcgNPvZEg8kPCh7wKV<<^p;Lil8{dtW_wgOy!;*Rk#M0lJ@YAv*O%2D}?Tg_(_vL>L!BqrO z#@uoF#h(M>ZLW3Kh>Jm0G>nWegULOLyM1SP7yfivihmWWQOe+ULjhBO|Eq6y6J$qV z@p8_TF+C%Rsk6wOWTw9Y{+6^An0dXzZ3a3DxJU4|;-bR?KlquuWL# z+&Jw?f?D8*GZ47GJ$Ed@tf>C|^`wV5^e^Z4!1ClQEzgiR)d^e%K9i%Oof30?nq9HM zP0hgntLkp;vCshtOJF0!7@-f5)%FVFN8xG_1Od!5%q0J@HE~WsE|Wk{c&Hq!J9C)Y zc0DHpA(N#qFGP5@Jh;uABnU42`y#naf+q&@z4Y~Xv~V-Kc!Za3jhVTh;$OKTmyfBS zl1@Tq0%P;6g|%4W*IezRAp>#w_Pg(8^hh5n$u_4o#Nm1b_5gT3WcXKs)Ec{v z0M$H7dxYtdX;v6STJ2>UjPQ-rC1AFYC|B=9qN z^6Yl^OmcK75H-7zC`EQ}*Dt1~c=ba|Lr{hxR9!*zDclXnTq?7P23N;ksv4dS#`fIN zO1fh#W_u@{BUTGzsi=z6;5R=DjrREdlQDgbts{6^yk=ztL-K_-a~r)~`C`d>@5GV8 zv0}xM)F$@zU#Y~+K*3U`F(>6sa6-$_!*1-S5#@~e)97gz+@V`?TB4PoxZ}DE%n>n| zTXv1TkFN(ElVC;@qPgp&Neg2^NBl%4?z%|pQL)}s8J zp^CktEBbAffne7sG7kJAW#ykEh!$->pVvf`MYuKmOlO1Bz*es zNK_bQK^d-?oZ#iAA1#G2a()P?OY7AJ(1Gx|1Eh3=2>}wpe`h;foS%wkn?{c`;8*hG z?fMH6BAl(OSq==$CCGnwmjbg;+1kL=Upx3d*rFzaWKv?3Z8cyC7o{uYP;S) zzNl>pxTGgI$ypn@cj&wZb)ZEe0uVYxD#V-G`s_+DePyik${dGz1$WZQfR}sw`tB?N z4j8#K&{U}Al_%Xt^NVj{)~&_{Iwe-O9%6Po%thn*fW80?$Brtdgd}c{{GU8;DHLm3{p=d71M`~c1zw(}cLvyr(3!eN_C6|R6CQjV&Mn}n ziurUuOq+G9{J@4-eWNXJo($m52N#36Sdvc4HI_9LbSp40N;?a);?+aVPL7HCMj_C7 z|NHpWST&UAov5dddB@~Fc2;;e89L5ex5h$Q&H1I#c?EmcBGD4!yai9qFURYT(Qp3b=eVH z(wnE)&m}x1*brk4^-rj?B-|W=!_Jncyl1c)k=F}5z@!`AjxsGuG*{qUaUsTJ$Oe(H z$hyY4BKH3~T#K)JIh6xgM}8AaG%-~^E+=ZPxKsL2=6gwsf5NFFGS$zNm{{!Vi$zcI z6K2@Yc}zp1)&se@ANMxel)n2bb(-~r_6F~rO6QN?crK(;_dvbZ5ADcsuP$DSchH#} zW#$b4!-rHVtsM%mS%&;UUF!RDdE3NU9AfScbN(C2L@m-5T9xi-(NE%KR^##)=YP-f z(s!J>ME}IlycDZeR}aSj5S?;~KJT2k(vEar1=~fZYoPqlGt417+qC`@I-&jn&eCQp zMRssqQ{TdxD?%24)YHsC8=+ej@?lk0;tShIWy5@v=J(i6v;s`Je8AWMm#8E%iNuz zCjEeNC`~!I{M5p(3ypk5rX!@cTVc(Bp|q&f<#TxSEe45q@+JgZIU`%D!`bGRt>#YF ztBoWz(%iG_nOd3?kFcSsyqjjgz*x05Go_eA{&CY^J#KHb!M*!s=*tVVfgWByg)YZ9 zZWNph(No!v`-^f;Kd>cI><3+@3^!NKKF&QJeUr-Y`JQ;_`7ZbKeRG#b^VThqKR6Tq z{+vb#H&6vgoF@7UTx1kj(RP#vB+jER<9`)%bx+F|pUxd2LEG;TbcNAoo})e9UFe0? z*hfba!w->8s$io@t;=D<@=#CqE%0cg&hr}VzdOZTb+D&?#mI%a9aIl6Bm?Z{ROXBd zcj(GWl+AK$M8mlzYEmw^_B$ z(`I_zj~*^yJKTVDdWY{eltyVvcYlJSTlt%~V2q|FQ3?aaWx_5= zpbwo%_m{`Ws{D2K&mxIao_{Z9MM$*S-@5bRVbR<;B}7kfim3qf7)OJ44L=bECeORM z`y#yt?_EoW`#v;;tNBM8X2XE$$lQ=YAnK^0J*87p>3&Xa;m_m;B&6)2)9)RG&faM> zOx@uyW!-w0`I@MlCVD*U48^o!iRN@`G5lJtiP8BJQ_fJ`K&xR_S(&_l!jLs-TSlwq z#A~8{@q%3Z!+swFL1G7@`|Zgh=Hb1Rn}22{93zB{JrHRmd%Uie4H+esGz68?#f-_b zq7saew>+DHUR;OO!0{Lype@t^Ht7bd>r{lR_(!~ggAn*+Y2Ee{BkG_O!^bINjh)-7 zT}UIC$o*7n3FWxqKwM_QF^6P&d1B&5rFNfnTg7P4~+QA z;r1}2h~;OaRd?K!F@&?do&d?zewyiEm1MqXaPHKDj3?W`WI0;~BwS18QJ$b2qU+DT zpJ<=@cB~6yFa4cz)Iq+hpUNaNG}FEB#i!g?h}k7hkdDylPM}jzSpkcnQ!4L&F(@E7 z^8S&vSg~!+2PoBf?wd`w?lA7B75^)izB86&p*I9nCTclri@k430BSOVO)>6M32Q!I1tUR#opwuiL_{JgJQu- zWVPqoLmb~UlN|f$aO|~wZM?S}hdO|h3TA2@Y4EY|(%@v%g{@OHxSZ8khIQ))|J+rJ zN^DC_?Xe7kAd^QozJ^Q^MmEvfFnPEs{HL>P2SfYEM1k(okgoKs>bhfSBhcwvNVaxJ zot6=;c_DlB_^_O6mOWd+ubB|P9?;|ly-tlUm+81-ep)({9F_cLet_JY-Fy4h@Fx61 zu~9x#KS15N@5{@Tk;>3~$u>RnZs-j@pHMV@*|v?i+buNdHjxH5YcgT;$QwU1jn&^-e8(o-K0IEt&SeTGY3_*W9nS z9d?zzoJ)(_$j|Qa6Ab5f&h4cv)Wc{~Zb#|Q9c+sG+R#L% zP@LNi3{MTHKXQ&ZfGGbsMKya;A3#)u(*aWG<%E&Gnm8BSt;*qLk#kd3>+zkE zDY)1;hp_xU-)k%B^ham~kag@8s6M`(w|=*pMydQ!=@#%mINHw+KT(gooE^$(On#kn zd6M1YmSZXKYYYy2)H6w=3k}(QdGUo&u{_IyqCb@bzq(e~S>*-QQ`5_gd%OeY41lMJ zon(=9Nv+ocJboHV4xt{6znpces!--{FQdD>RgkBhERcPG)7`x76 z3D&7*wYBTS2y${Yh%>*;=mv%#G zNScArsMn;4pJSuD;(!~;WSPNbZkFh_(F3DBidATKfKe7k*Hx%*ZN7Rj>Z_q*-4*U~ zB*{82Fd)vrLum131<|@+=Z8x&<)WWvrk2NU)mSAnxq{CIn+c2MM&4^hY25tw?v{+G z?IHU}joS$dy*<0{*l_O2OQMUF|TqvR*~s zM2mFen#hCHXM0Nb2o9c8u!6nZgQ`EI2sIt+GLOecpueZmHE9+!3xc4r_kqhLI@~H% zQ2$)-h?XxG+5njikGiwlInP&qn$6|We6J!yq}H88hdH@XY36Ngr8&Qo)%c*!?p`^IJ`;9`6G>!(huC0j)#~~*DB>5an{}&S zfXDH#*-(uOgQ>K_O=lvg%s+S&X}yJ`$=oes=HcBj*R=E8_Z)iU2KMJ~i% z#n)0-v9}d(l*=G2rex3kgcc+uPO`Lk#`Mj6vcue09vL<1@Ok#brDOPsJowg++RSfD zM8F9R&-Zt9T%{sMrZ5%YpQw~O^+zL3Lbit3Q*>@xbx#$yC!!pra}`V?Ra;Iax=V`k zjrR3=|I{PIyW=Xe<77b>$biD_;jO3}Z|Ct7Nz4pA!Pnu!r%CjI0Ll+SK)TP&A-Db& z8IY_4k*)n5^z~8=~VgE%OplA6U~ZR^_o;gjhY#6M0fh=)|RyDIhDH zL6t*6P#KMef2~?)5-bux5|-|}ko?5o@HB=K$8?5MM?cX@6Ab%KzNdwiU|gpRfFYCa z5Nj1h!O*_CCZ;)l@nZARw-{#RuLa&LnV#DFI&W0VN1Jnt9{I6)(*1TSbWeAeic9yy z(PB2(ZB1nNRMkdV{Ddm!#QKCRr8%l)=JBUww6o0M9m8Y$JEm^|37bTPxpBnpv>gZC zAK_a?kKZXy1KmJEh~aAmAG_Q{=icN;AyIFpE{x{q88X{z=kMEx-Hx}*Oe*`(-AM6i z>hZ&PS#ZXP1Sea7Q)4657xi$wO@dCIJcpHM=oc3O3B1#M-*$oAV>HJXiSqsZNiI|I zGwJiI=+*4|A9#W78PEMaT2=|Sj4tHb!wMV+8Qq0osZ7}$z@~hCu?3my03szK#FYP? zN8br2>MNPOet6%xsNUemy-h!X0Xnm*p@|@#wJ8|SyX?7+wxxa;)t=P2;zeo0@k?em z5cA@d&sdk~$NcS^+-n}(IX?!{uuj%qQR5YH1k*~0X9SBU&iFp`tBYsN9C7OdD$TAV zlTOwwXNnFA3Z4zgFFykuhNDBAsOS1IIkBoENO>+S4!F-_=Hiiv13h^Owa(TkA8s)- ztHjvVA9By8!7_OyzZO&EByMvR<6v2dHbWTCGPrC>rU;`^lA=iU;&V-|tpJm9toC42!=v5p+@V#nZsseq}Y@H_E>w53S5Ix2m*6 zpmk{a=QS&s%4-J$*O*^NT8dMSUM8cIk62fCcVa68sjbyM+?`ArhB4H2N4lV8bnOqt z3J2=BLSx}cinCM6`(;;2LF5Rmf#0a)uWLxyIOy{GsR;? zqhyP&NA^#=_kP=e8O(6q_03{Pg?hTTFvgJ3RSeUj2D`WzDL2otOyoUh3*rp&jc%3d z2}~MqX|tV+9E1{(?mtD!?dfzJZSfx9kQ&r2g1fvco1U{YFdF64{N4+)m64Dy2Nd|F$(cnrwZbW9l}2vM;+DwjUQth`)cMsJ3W+ zf2p97C9r;9;zzNizh+lmeD3l_aIf~UYy_5hJA)-!y?{J0P{YVT`uj4FR=|L5lxf6cz{IN-S?CF_ zfE(9-{?g+ZZ}DX}ki*LY)_%%BnoCYl>Qi*y#8xwScD-_oMqZ3A@)^sPmVuJJFMCMH;$O088+yQ6_ z3S2U?2x-zl^rt|E@o7OO@+h_Sded%#E>zg1ED@HyxcL6zpd_%7^-C+Dj5e0YS)6r+ zSJ;ZZH&h5{>6VI+)XZPQz11YS^spIBfPF^unijN#M_ zVBcIv^wEz{3oc>S|Jvymf&&~OU2hM|T_{%V^_~PtYL_FaaPX##2*ksOaJ@=MlqA0l z#2(9=Gm%7)VLOI*yZkfO6NcvIO@vvgxTB*z`_%eGq8+~? zQ7iZ=%)}=!pfjMTvgvrEmr0iXSz|<6)xCZGVK?y{0QxE zW*~o;S?_^w-_PY)LfG33FLNa|sz-*3n{vw=?-+Tn@Q`+g;&~savq!KlM)Ux_Qk|0fYlWmG7yTQ^6dMB7i2rLwY~f(t z@)sa=JBsVwghZ+HB{PqY+zFT`QJRa4@2@ z7H3?qWm4m#1&60wRMS(FbxKa`(-Zv4F&)4i?vR@}mv=sUZtDaX-zO=PQm}?qFLps^ z%4Zlv&t87+ACG36YEA&H?*x(zraXur#TlY&9K6Xj^Jjt`rB&QOGO=&PVbuvg3Q=c95<<>L%P@XnhM+etC2wkodJdbl(WOB?hP<4uhJu;lm!9fAY;bn6`ro7y+5Ar%Y}VBt!2dVWN%lcg(K3YAE8}_7atho%TYuM{_1u=ilg3IsjMoqlwpV*#EMr&ZE zvygdTuJ*v*w1w$CnMLQDUiYJsC>P4KyvYh-5H;0xl1$Wk`{^dqMsAzx^yRK4+M2h3 zO#M>SUtQktS*u}I2I81!p;rgm83mAlJYtz(Bi$f=lrDqLCh)}p*I11@gjq?TsdKok z#^1)Bm_-Sn^uj){L>^Sgg&H)W?MXtSY{aq`Hwj~uC%R0#v-is*Y2hiaK32>%hmF6L ze)01vVvXz~#NHuwfSk=g7`31n;vAa7gX#MA!{6cAhxDGj^3ZHkO5q*9)35>a23mB6CvWRi)e0p zNNi|YI$I;5DL|bxvXwBNgZL@K_R2zEs5sLhYF$S(x>$)|`ipz3eDaM1{<$S^h>jB_ zZZqN3_Ta;bKHPUmy*_&a_O=OujMvc@08UB)}u<3-M z56H_M#1O3tBHf*}MunfC4N;DshHYX7r4RSpR-j;qkxWGZ#ms;(o`+~DN5BYN0M3qI zMT#g~52St*+c;)iR!ABN-;RotXk1liO_|O{68-L47oVv2a$renvP5+nXT$IAz(IMH6djZYq4tMVj+tPLH7@`xaBw_lD)TfsBak%U$d?S=Xq@ z$GKlGJ8j7R>jxtt+K>AksZZ6K1Ld*Cw(UnNZZ+&RRl>TVx@2-?ObQK(PT9-IOE-Vi zpSq@qmFYH_8;@v9vH#$jPp?yE@9fgWOcRptrMT@8l-z`Zm~vOyKzbuyU80drSqO5^ zE--G$rMP?#;mjjZl+aXHJYIcI*ok*lC2mICGaTSEBB{?FT%waP^JJ*oC6GDjc9?~7 zYjX+l?b2TfL}n2|00}(`TWQLVXa3@Vf9d!2(jV-@K*0*NEB>I`cCch1T39=YyPqS; z-1$OfbSj41uk>xqgyYXy24^ydnyGBJIotxetm2FGrd$zk%DV5(W#5)o%9|1Y=3fSYC=DHO>SQKR-JkLDN z_bUy(DYMSHiX(F5WFS$;gCHDbZdQ&vg2$sHx7X^RMq3`b^AO5QC zeBR58&;tziH(C8cI`Wr_HKT6mhCjIQemc$!eC!&G+VoE%@CS4^r65pJy+H-F>V>@a6N!m&t<2inb7z{n@OjY(=L-dPL{CP1e$<~r2j+63 z{@Qgnw-U~1KXWE(akPyVcS}#p-#n|KTfu$D54h9FBJ9b`DbUBc+^$|- z;J7t!ui(;f8zwMaI=Rb*so?KHj;bac%vASlhH7LYS-m+DRbj}U{Vgkb;mmQb;NOSS zM)nI(PwNZ13~T4Vl_OCB$8sSn#sEDli>*`&(am(E?Y`xrTDOfoxY$tOIV9;URuc~J+!FFU%}iZ;OhHFr38qL!4l=sxiWRfla{dMbZz_?U24tQ^~sK!(N1b~~jf3i@hj4%DwO{!qYWytht; zS#4*_w|eS#_-hsdYE{UBwutH*Y%DX`y?s<$C6=rEr5DN~A5>U{cv_Q5*u11&It z5x{+ypVtwy#7pz;7=@5ShyJ^2 zFTk+o^Gyr!1!cU(p3fi6RmCd%!CQts!J3&x2ZtsHwH#)o@7sm#Yf~j^9Vy!vrrPEn z{Bvz^kK-1_x&&@%@7Vh9Kj9DTZ20p3^OM7g|Nhngen^Eq1pobc>DmALg@5MwfAjFadHDao<2)OI ze$I*dvov$yx*tDXQeFS+?uCfU?~nhK8j$|^Muvl9{?EX16My{&XiGouhiyOq z;?O_8_P<~F-#q-!VAB5Q7yp39|2OC1%c4a5#s-DcKJt|)_{YZ5o>aEa>(BoOPXHC% diff --git a/assets/schema_input.json b/assets/schema_input.json index 7435ad64..c75133c8 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -1,7 +1,7 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/nf-core/spatialxe/master/assets/schema_input.json", - "title": "nf-core/spatialxe pipeline - params.input schema", + "$id": "https://raw.githubusercontent.com/nf-core/spatialaxe/master/assets/schema_input.json", + "title": "nf-core/spatialaxe pipeline - params.input schema", "description": "Schema for the file provided with params.input", "type": "array", "items": { diff --git a/assets/sendmail_template.txt b/assets/sendmail_template.txt index cd864042..dd49eb59 100644 --- a/assets/sendmail_template.txt +++ b/assets/sendmail_template.txt @@ -9,12 +9,12 @@ Content-Type: text/html; charset=utf-8 $email_html --nfcoremimeboundary -Content-Type: image/png;name="nf-core-spatialxe_logo.png" +Content-Type: image/png;name="nf-core-spatialaxe_logo.png" Content-Transfer-Encoding: base64 Content-ID: -Content-Disposition: inline; filename="nf-core-spatialxe_logo_light.png" +Content-Disposition: inline; filename="nf-core-spatialaxe_logo_light.png" -<% out << new File("$projectDir/assets/nf-core-spatialxe_logo_light.png"). +<% out << new File("$projectDir/assets/nf-core-spatialaxe_logo_light.png"). bytes. encodeBase64(). toString(). diff --git a/assets/slackreport.json b/assets/slackreport.json new file mode 100644 index 00000000..a2991f65 --- /dev/null +++ b/assets/slackreport.json @@ -0,0 +1,34 @@ +{ + "attachments": [ + { + "fallback": "Plain-text summary of the attachment.", + "color": "<% if (success) { %>good<% } else { %>danger<%} %>", + "author_name": "nf-core/spatialaxe ${version} - ${runName}", + "author_icon": "https://www.nextflow.io/docs/latest/_static/favicon.ico", + "text": "<% if (success) { %>Pipeline completed successfully!<% } else { %>Pipeline completed with errors<% } %>", + "fields": [ + { + "title": "Command used to launch the workflow", + "value": "```${commandLine}```", + "short": false + } + <% + if (!success) { %> + , + { + "title": "Full error message", + "value": "```${errorReport}```", + "short": false + }, + { + "title": "Pipeline configuration", + "value": "<% out << summary.collect{ k,v -> k == "hook_url" ? "_${k}_: (_hidden_)" : ( ( v.class.toString().contains('Path') || ( v.class.toString().contains('String') && v.contains('/') ) ) ? "_${k}_: `${v}`" : (v.class.toString().contains('DateTime') ? ("_${k}_: " + v.format(java.time.format.DateTimeFormatter.ofLocalizedDateTime(java.time.format.FormatStyle.MEDIUM))) : "_${k}_: ${v}") ) }.join(",\n") %>", + "short": false + } + <% } + %> + ], + "footer": "Completed at <% out << dateComplete.format(java.time.format.DateTimeFormatter.ofLocalizedDateTime(java.time.format.FormatStyle.MEDIUM)) %> (duration: ${duration})" + } + ] +} diff --git a/conf/base.config b/conf/base.config index 187a154e..47e506cb 100644 --- a/conf/base.config +++ b/conf/base.config @@ -1,6 +1,6 @@ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - nf-core/spatialxe Nextflow base config file + nf-core/spatialaxe Nextflow base config file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A 'blank slate' config file, appropriate for general use on most high performance compute environments. Assumes that all software is installed and available on @@ -15,7 +15,7 @@ process { memory = { 6.GB * task.attempt } time = { 4.h * task.attempt } - errorStrategy = { task.exitStatus in ((130..145) + 104 + (175..177)) ? 'retry' : 'finish' } + errorStrategy = { task.exitStatus in ((130..145) + 104 + 175) ? 'retry' : 'finish' } maxRetries = 1 maxErrors = '-1' diff --git a/conf/containers_conda_lock_files_amd64.config b/conf/containers_conda_lock_files_amd64.config deleted file mode 100644 index d3ee1b4e..00000000 --- a/conf/containers_conda_lock_files_amd64.config +++ /dev/null @@ -1,2 +0,0 @@ -process { withName: 'FASTQC' { container = 'modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt' } } -process { withName: 'MULTIQC' { container = 'modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt' } } diff --git a/conf/containers_conda_lock_files_arm64.config b/conf/containers_conda_lock_files_arm64.config deleted file mode 100644 index 2b90ac4f..00000000 --- a/conf/containers_conda_lock_files_arm64.config +++ /dev/null @@ -1,2 +0,0 @@ -process { withName: 'FASTQC' { container = 'modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt' } } -process { withName: 'MULTIQC' { container = 'modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt' } } diff --git a/conf/containers_docker_amd64.config b/conf/containers_docker_amd64.config deleted file mode 100644 index 65f1814a..00000000 --- a/conf/containers_docker_amd64.config +++ /dev/null @@ -1,2 +0,0 @@ -process { withName: 'FASTQC' { container = 'community.wave.seqera.io/library/fastqc:0.12.1--5cb1a2fa2f18c7c2' } } -process { withName: 'MULTIQC' { container = 'community.wave.seqera.io/library/multiqc:1.34--db7c73dae76bc9e6' } } diff --git a/conf/containers_docker_arm64.config b/conf/containers_docker_arm64.config deleted file mode 100644 index 6c845ba4..00000000 --- a/conf/containers_docker_arm64.config +++ /dev/null @@ -1,2 +0,0 @@ -process { withName: 'FASTQC' { container = 'community.wave.seqera.io/library/fastqc:0.12.1--e455e32f745abe68' } } -process { withName: 'MULTIQC' { container = 'community.wave.seqera.io/library/multiqc:1.34--d167b8012595a136' } } diff --git a/conf/containers_singularity_https_amd64.config b/conf/containers_singularity_https_amd64.config deleted file mode 100644 index 838f2484..00000000 --- a/conf/containers_singularity_https_amd64.config +++ /dev/null @@ -1,2 +0,0 @@ -process { withName: 'FASTQC' { container = 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/f2/f20b021476d1d87658820f971ebecc1e8cdbde0f338eb0d9cea2b0a8fc54a54b/data' } } -process { withName: 'MULTIQC' { container = 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/1b/1bef8af6be88c5733461959c46ac8ef73d18f65277f62a1695d0e1633054f9c2/data' } } diff --git a/conf/containers_singularity_https_arm64.config b/conf/containers_singularity_https_arm64.config deleted file mode 100644 index 090173be..00000000 --- a/conf/containers_singularity_https_arm64.config +++ /dev/null @@ -1,2 +0,0 @@ -process { withName: 'FASTQC' { container = 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/46/46daf2dad0169afd2ae047c3e50ed3776259f664bf07e5e06b045dc23449e994/data' } } -process { withName: 'MULTIQC' { container = 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/9a/9a1fec9662a152683e6fcae440d0ce20920b3b89dc62d1e3a52e73f92eba0969/data' } } diff --git a/conf/containers_singularity_oras_amd64.config b/conf/containers_singularity_oras_amd64.config deleted file mode 100644 index 773f3698..00000000 --- a/conf/containers_singularity_oras_amd64.config +++ /dev/null @@ -1,2 +0,0 @@ -process { withName: 'FASTQC' { container = 'oras://community.wave.seqera.io/library/fastqc:0.12.1--5c4bd442468d75dd' } } -process { withName: 'MULTIQC' { container = 'oras://community.wave.seqera.io/library/multiqc:1.34--4fc8657c816047c0' } } diff --git a/conf/containers_singularity_oras_arm64.config b/conf/containers_singularity_oras_arm64.config deleted file mode 100644 index 798cc638..00000000 --- a/conf/containers_singularity_oras_arm64.config +++ /dev/null @@ -1,2 +0,0 @@ -process { withName: 'FASTQC' { container = 'oras://community.wave.seqera.io/library/fastqc:0.12.1--127a87fc06499035' } } -process { withName: 'MULTIQC' { container = 'oras://community.wave.seqera.io/library/multiqc:1.34--7fbd82d945c06726' } } diff --git a/conf/igenomes.config b/conf/igenomes.config deleted file mode 100644 index 3f114377..00000000 --- a/conf/igenomes.config +++ /dev/null @@ -1,440 +0,0 @@ -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Nextflow config file for iGenomes paths -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Defines reference genomes using iGenome paths. - Can be used by any config that customises the base path using: - $params.igenomes_base / --igenomes_base ----------------------------------------------------------------------------------------- -*/ - -params { - // illumina iGenomes reference file paths - genomes { - 'GRCh37' { - fasta = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Annotation/README.txt" - mito_name = "MT" - macs_gsize = "2.7e9" - blacklist = "${projectDir}/assets/blacklists/GRCh37-blacklist.bed" - } - 'GRCh38' { - fasta = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Annotation/Genes/genes.bed" - mito_name = "chrM" - macs_gsize = "2.7e9" - blacklist = "${projectDir}/assets/blacklists/hg38-blacklist.bed" - } - 'CHM13' { - fasta = "${params.igenomes_base}/Homo_sapiens/UCSC/CHM13/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/CHM13/Sequence/BWAIndex/" - bwamem2 = "${params.igenomes_base}/Homo_sapiens/UCSC/CHM13/Sequence/BWAmem2Index/" - gtf = "${params.igenomes_base}/Homo_sapiens/NCBI/CHM13/Annotation/Genes/genes.gtf" - gff = "ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/009/914/755/GCF_009914755.1_T2T-CHM13v2.0/GCF_009914755.1_T2T-CHM13v2.0_genomic.gff.gz" - mito_name = "chrM" - } - 'GRCm38' { - fasta = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Annotation/README.txt" - mito_name = "MT" - macs_gsize = "1.87e9" - blacklist = "${projectDir}/assets/blacklists/GRCm38-blacklist.bed" - } - 'TAIR10' { - fasta = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Annotation/README.txt" - mito_name = "Mt" - } - 'EB2' { - fasta = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Annotation/README.txt" - } - 'UMD3.1' { - fasta = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Annotation/README.txt" - mito_name = "MT" - } - 'WBcel235' { - fasta = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Annotation/Genes/genes.bed" - mito_name = "MtDNA" - macs_gsize = "9e7" - } - 'CanFam3.1' { - fasta = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Annotation/README.txt" - mito_name = "MT" - } - 'GRCz10' { - fasta = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Annotation/Genes/genes.bed" - mito_name = "MT" - } - 'BDGP6' { - fasta = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Annotation/Genes/genes.bed" - mito_name = "M" - macs_gsize = "1.2e8" - } - 'EquCab2' { - fasta = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Annotation/README.txt" - mito_name = "MT" - } - 'EB1' { - fasta = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Annotation/README.txt" - } - 'Galgal4' { - fasta = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Annotation/Genes/genes.bed" - mito_name = "MT" - } - 'Gm01' { - fasta = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Annotation/README.txt" - } - 'Mmul_1' { - fasta = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Annotation/README.txt" - mito_name = "MT" - } - 'IRGSP-1.0' { - fasta = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Annotation/Genes/genes.bed" - mito_name = "Mt" - } - 'CHIMP2.1.4' { - fasta = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Annotation/README.txt" - mito_name = "MT" - } - 'Rnor_5.0' { - fasta = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Annotation/Genes/genes.bed" - mito_name = "MT" - } - 'Rnor_6.0' { - fasta = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Annotation/Genes/genes.bed" - mito_name = "MT" - } - 'R64-1-1' { - fasta = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Annotation/Genes/genes.bed" - mito_name = "MT" - macs_gsize = "1.2e7" - } - 'EF2' { - fasta = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Annotation/README.txt" - mito_name = "MT" - macs_gsize = "1.21e7" - } - 'Sbi1' { - fasta = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Annotation/README.txt" - } - 'Sscrofa10.2' { - fasta = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Annotation/README.txt" - mito_name = "MT" - } - 'AGPv3' { - fasta = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Annotation/Genes/genes.bed" - mito_name = "Mt" - } - 'hg38' { - fasta = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Annotation/Genes/genes.bed" - mito_name = "chrM" - macs_gsize = "2.7e9" - blacklist = "${projectDir}/assets/blacklists/hg38-blacklist.bed" - } - 'hg19' { - fasta = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Annotation/README.txt" - mito_name = "chrM" - macs_gsize = "2.7e9" - blacklist = "${projectDir}/assets/blacklists/hg19-blacklist.bed" - } - 'mm10' { - fasta = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Annotation/README.txt" - mito_name = "chrM" - macs_gsize = "1.87e9" - blacklist = "${projectDir}/assets/blacklists/mm10-blacklist.bed" - } - 'bosTau8' { - fasta = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Annotation/Genes/genes.bed" - mito_name = "chrM" - } - 'ce10' { - fasta = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Annotation/README.txt" - mito_name = "chrM" - macs_gsize = "9e7" - } - 'canFam3' { - fasta = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Annotation/README.txt" - mito_name = "chrM" - } - 'danRer10' { - fasta = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Annotation/Genes/genes.bed" - mito_name = "chrM" - macs_gsize = "1.37e9" - } - 'dm6' { - fasta = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Annotation/Genes/genes.bed" - mito_name = "chrM" - macs_gsize = "1.2e8" - } - 'equCab2' { - fasta = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Annotation/README.txt" - mito_name = "chrM" - } - 'galGal4' { - fasta = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Annotation/README.txt" - mito_name = "chrM" - } - 'panTro4' { - fasta = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Annotation/README.txt" - mito_name = "chrM" - } - 'rn6' { - fasta = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Annotation/Genes/genes.bed" - mito_name = "chrM" - } - 'sacCer3' { - fasta = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/BismarkIndex/" - readme = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Annotation/README.txt" - mito_name = "chrM" - macs_gsize = "1.2e7" - } - 'susScr3' { - fasta = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/BWAIndex/version0.6.0/" - bowtie2 = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/Bowtie2Index/" - star = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/STARIndex/" - bismark = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/BismarkIndex/" - gtf = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Annotation/Genes/genes.gtf" - bed12 = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Annotation/Genes/genes.bed" - readme = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Annotation/README.txt" - mito_name = "chrM" - } - } -} diff --git a/conf/igenomes_ignored.config b/conf/igenomes_ignored.config deleted file mode 100644 index b4034d82..00000000 --- a/conf/igenomes_ignored.config +++ /dev/null @@ -1,9 +0,0 @@ -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Nextflow config file for iGenomes paths -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Empty genomes dictionary to use when igenomes is ignored. ----------------------------------------------------------------------------------------- -*/ - -params.genomes = [:] diff --git a/conf/test.config b/conf/test.config index bfcc3864..119ad583 100644 --- a/conf/test.config +++ b/conf/test.config @@ -5,7 +5,7 @@ Defines input files and everything required to run a fast and simple pipeline test. Use as follows: - nextflow run nf-core/spatialxe -profile test, --outdir + nextflow run nf-core/spatialaxe -profile test, --outdir ---------------------------------------------------------------------------------------- */ @@ -25,6 +25,5 @@ params { // Input data // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets // TODO nf-core: Give any required params for the test so that command line flags are not needed - input = params.pipelines_testdata_base_path + 'viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv'// Genome references - genome = 'R64-1-1' + input = params.pipelines_testdata_base_path + 'viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' } diff --git a/conf/test_full.config b/conf/test_full.config index 4ddba9a2..783f993a 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -5,7 +5,7 @@ Defines input files and everything required to run a full size pipeline test. Use as follows: - nextflow run nf-core/spatialxe -profile test_full, --outdir + nextflow run nf-core/spatialaxe -profile test_full, --outdir ---------------------------------------------------------------------------------------- */ @@ -19,6 +19,6 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = params.pipelines_testdata_base_path + 'viralrecon/samplesheet/samplesheet_full_illumina_amplicon.csv' - // Genome references - genome = 'R64-1-1' + // Fasta references + fasta = params.pipelines_testdata_base_path + 'viralrecon/genome/NC_045512.2/GCF_009858895.2_ASM985889v3_genomic.200409.fna.gz' } diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md deleted file mode 100644 index f87187c8..00000000 --- a/docs/CONTRIBUTING.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: Contributing -markdownPlugin: checklist ---- - -# `nf-core/spatialxe`: Contributing guidelines - -Hi there! -Thanks for taking an interest in improving nf-core/spatialxe. - -This page describes the recommended nf-core way to contribute to both nf-core/spatialxe and nf-core pipelines in general, including: - -- [General contribution guidelines](#general-contribution-guidelines): common procedures or guides across all nf-core pipelines. -- [Pipeline-specific contribution guidelines](#pipeline-specific-contribution-guidelines): procedures or guides specific to the development conventions of nf-core/spatialxe. - -> [!NOTE] -> If you need help using or modifying nf-core/spatialxe, ask on the nf-core Slack [#spatialxe](https://nfcore.slack.com/channels/spatialxe) channel ([join our Slack here](https://nf-co.re/join/slack)). - -## General contribution guidelines - -### Contribution quick start - -To contribute code to any nf-core pipeline: - -- [ ] Ensure you have Nextflow, nf-core tools, and nf-test installed. See the [nf-core/tools repository](https://github.com/nf-core/tools) for instructions. -- [ ] Check whether a GitHub [issue](https://github.com/nf-core/spatialxe/issues) about your idea already exists. If an issue does not exist, create one so that others are aware you are working on it. -- [ ] [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the [nf-core/spatialxe repository](https://github.com/nf-core/spatialxe) to your GitHub account. -- [ ] Create a branch on your forked repository and make your changes following [pipeline conventions](#pipeline-contribution-conventions) (if applicable). -- [ ] To fix major bugs, name your branch `patch` and follow the [patch release](#patch-release) process. -- [ ] Update relevant documentation within the `docs/` folder, use nf-core/tools to update `nextflow_schema.json`, and update `CITATIONS.md`. -- [ ] Run and/or update tests. See [Testing](#testing) for more information. -- [ ] [Lint](#lint-tests) your code with nf-core/tools. -- [ ] Submit a pull request (PR) against the `dev` branch and request a review. - -If you are not used to this workflow with Git, see the [GitHub documentation](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests) or [Git resources](https://try.github.io/) for more information. - -## Use of AI and LLMs - -The nf-core stance on the use of AI and LLMs is that humans are still ultimately responsible for their submitted code, regardless of the tools they use. - -If you’re using AI tools, try to stick by these guidelines: - -- Keep PRs as small and focussed as possible -- Avoid any unnecessary changes, such as moving or refactoring code (unless that is the explicit intention of the PR) -- Review all generated code yourself before opening a PR, and ensure that you understand it -- Engage with the community review process and expect to make revisions - -For more detail, see the the [blog post](https://nf-co.re/blog/2026/statement-on-ai) for a statement from the nf-core/core team. - -### Getting help - -For further information and help, see the [nf-core/spatialxe documentation](https://nf-co.re/spatialxe/usage) or ask on the nf-core [#spatialxe](https://nfcore.slack.com/channels/spatialxe) Slack channel ([join our Slack here](https://nf-co.re/join/slack)). - -### GitHub Codespaces - -You can contribute to nf-core/spatialxe without installing a local development environment on your machine by using [GitHub Codespaces](https://github.com/codespaces). - -[GitHub Codespaces](https://github.com/codespaces) is an online developer environment that runs in your browser, complete with VS Code and a terminal. -Most nf-core repositories include a devcontainer configuration, which creates a GitHub Codespaces environment specifically for Nextflow development. -The environment includes pre-installed nf-core tools, Nextflow, and a few other helpful utilities via a Docker container. - -To get started, open the repository in [Codespaces](https://github.com/nf-core/spatialxe/codespaces). - -### Testing - -Once you have made your changes, run the pipeline with nf-test to test them locally. -For additional information, use the `--verbose` flag to view the Nextflow console log output. - -```bash -nf-test test --tag test --profile +docker --verbose -``` - -If you have added new functionality, ensure you update the test assertions in the `.nf.test` files in the `tests/` directory. -Update the snapshots with the following command: - -```bash -nf-test test --tag test --profile +docker --verbose --update-snapshots -``` - -When you create a pull request with changes, GitHub Actions will run automatic tests. -Pull requests are typically reviewed when these tests are passing. - -Two types of tests are typically run: - -#### Lint tests - -nf-core has a [set of guidelines](https://nf-co.re/docs/specifications/overview) which all pipelines must follow. -To enforce these, run linting with nf-core/tools: - -```bash -nf-core pipelines lint -``` - -If you encounter failures or warnings, follow the linked documentation printed to screen. -For more information about linting tests, see [nf-core/tools API documentation](https://nf-co.re/docs/nf-core-tools/api_reference/latest/pipeline_lint_tests/actions_awsfulltest). - -#### Pipeline tests - -Each nf-core pipeline should be set up with a minimal set of test data. -GitHub Actions runs the pipeline on this data to ensure it runs through and exits successfully. -If there are any failures then the automated tests fail. -These tests are run with the latest available version of Nextflow and the minimum required version specified in the pipeline code. - -### Patch release - -> [!WARNING] -> Only in the unlikely event of a release that contains a critical bug. - -- [ ] Create a new branch `patch` on your fork based on `upstream/main` or `upstream/master`. -- [ ] Fix the bug and use nf-core/tools to bump the version to the next semantic version, for example, `1.2.3` → `1.2.4`. -- [ ] Open a Pull Request from `patch` directly to `main`/`master` with the changes. - -### Pipeline contribution conventions - -nf-core semi-standardises how you write code and other contributions to make the nf-core/spatialxe code and processing logic more understandable for new contributors and to ensure quality. - -#### Add a new pipeline step - -To contribute a new step to the pipeline, follow the general nf-core coding procedure. -Please also refer to the [pipeline-specific contribution guidelines](#pipeline-specific-contribution-guidelines): - -- [ ] Define the corresponding [input channel](#channel-naming-schemes) into your new process from the expected previous process channel. -- [ ] Install a module with nf-core/tools, or write a local module (see [default processes resource requirements](#default-processes-resource-requirements)), and add it to the target `.nf`. -- [ ] Define the output channel if needed. Mix the version output channel into `ch_versions` and relevant files into `ch_multiqc`. -- [ ] Add new or updated parameters to `nextflow.config` with a [default value](#default-parameter-values). -- [ ] Add new or updated parameters and relevant help text to `nextflow_schema.json` with [nf-core/tools](#default-parameter-values). -- [ ] Add validation for relevant parameters to the pipeline utilisation section of `utils_nfcore_\_pipeline/main.nf` subworkflow. -- [ ] Perform local tests to validate that the new code works as expected. - - [ ] If applicable, add a new test in the `tests` directory. -- [ ] Update `usage.md`, `output.md`, and `citation.md` as appropriate. -- [ ] [Lint](lint) the code with nf-core/tools. -- [ ] Update any diagrams or pipeline images as necessary. -- [ ] Update MultiQC config `assets/multiqc_config.yml` so relevant suffixes, file name cleanup, and module plots are in the appropriate order. -- [ ] If applicable, create a [MultiQC](https://seqera.io/multiqc/) module. -- [ ] Add a description of the output files and, if relevant, images from the MultiQC report to `docs/output.md`. - -To update the minimum required Nextflow version, see the [Nextflow version bumping](#nextflow-version-bumping) section below. For more information about pipeline contributions, see [pipeline-specific contribution guidelines](#pipeline-specific-contribution-guidelines). - -#### Channel naming schemes - -Use the following naming schemes for channels to make the channel flow easier to understand: - -- Initial process channel: `ch_output_from_` -- Intermediate and terminal channels: `ch__for_` - -#### Default parameter values - -Parameters should be initialised and defined with default values within the `params` scope in `nextflow.config`. -They should also be documented in the pipeline JSON schema. - -To update `nextflow_schema.json`, run: - -```bash -nf-core pipelines schema build -``` - -The schema builder interface that loads in your browser should automatically update the defaults in the parameter documentation. - -#### Default processes resource requirements - -If you write a local module, specify a default set of resource requirements for the process. - -Sensible defaults for process resource requirements (CPUs, memory, time) should be defined in `conf/base.config`. -Specify these with generic `withLabel:` selectors, so they can be shared across multiple processes and steps of the pipeline. - -nf-core provides a set of standard labels that you should follow where possible, as seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/main/nf_core/pipeline-template/conf/base.config). -These labels define resource defaults for single-core processes, modules that require a GPU, and different levels of multi-core configurations with increasing memory requirements. - -Values assigned within these labels can be dynamically passed to a tool using the the `${task.cpus}` and `${task.memory}` Nextflow variables in the `script:` block of a module (see an example in the [modules repository](https://github.com/nf-core/modules/blob/bd1b6a40f55933d94b8c9ca94ec8c1ea0eaf4b82/modules/nf-core/samtools/bam2fq/main.nf#L30)). - -#### Nextflow version bumping - -If you use a new feature from core Nextflow, bump the minimum required Nextflow version in the pipeline with: - -```bash -nf-core pipelines bump-version --nextflow . -``` - -#### Images and figures guidelines - -If you update images or graphics, follow the nf-core [style guidelines](https://nf-co.re/docs/community/brand/workflow-schematics). - -## Pipeline specific contribution guidelines - - diff --git a/docs/README.md b/docs/README.md index 2f7c904b..c7b0845a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,6 @@ -# nf-core/spatialxe: Documentation +# nf-core/spatialaxe: Documentation -The nf-core/spatialxe documentation is split into the following pages: +The nf-core/spatialaxe documentation is split into the following pages: - [Usage](usage.md) - An overview of how the pipeline works, how to run it and a description of all of the different command-line flags. diff --git a/docs/images/nf-core-spatialaxe_logo_dark.png b/docs/images/nf-core-spatialaxe_logo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..52ecaa705a35b17ef9fa787c53abac0fd00f0178 GIT binary patch literal 31726 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%0A>XT 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�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 diff --git a/docs/output.md b/docs/output.md index 2a27145d..c04a4c25 100644 --- a/docs/output.md +++ b/docs/output.md @@ -1,4 +1,4 @@ -# nf-core/spatialxe: Output +# nf-core/spatialaxe: Output ## Introduction diff --git a/docs/usage.md b/docs/usage.md index 9050ce93..720208bc 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -1,6 +1,6 @@ -# nf-core/spatialxe: Usage +# nf-core/spatialaxe: Usage -## :warning: Please read this documentation on the nf-core website: [https://nf-co.re/spatialxe/usage](https://nf-co.re/spatialxe/usage) +## :warning: Please read this documentation on the nf-core website: [https://nf-co.re/spatialaxe/usage](https://nf-co.re/spatialaxe/usage) > _Documentation of pipeline parameters is generated automatically from the pipeline schema and can no longer be found in markdown files._ @@ -57,7 +57,7 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p The typical command for running the pipeline is as follows: ```bash -nextflow run nf-core/spatialxe --input ./samplesheet.csv --outdir ./results --genome GRCh37 -profile docker +nextflow run nf-core/spatialaxe --input ./samplesheet.csv --outdir ./results -profile docker ``` This will launch the pipeline with the `docker` configuration profile. See below for more information about profiles. @@ -76,12 +76,12 @@ 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/running/run-pipelines#configuring-pipelines), 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/usage/configuration#tuning-workflow-resources), other infrastructural tweaks (such as output directories), or module arguments (args). The above pipeline run specified with a params file in yaml format: ```bash -nextflow run nf-core/spatialxe -profile docker -params-file params.yaml +nextflow run nf-core/spatialaxe -profile docker -params-file params.yaml ``` with: @@ -89,7 +89,6 @@ with: ```yaml title="params.yaml" input: './samplesheet.csv' outdir: './results/' -genome: 'GRCh37' <...> ``` @@ -100,14 +99,14 @@ You can also generate such `YAML`/`JSON` files via [nf-core/launch](https://nf-c When you run the above command, Nextflow automatically pulls the pipeline code from GitHub and stores it as a cached version. When running the pipeline after this, it will always use the cached version if available - even if the pipeline has been updated since. To make sure that you're running the latest version of the pipeline, make sure that you regularly update the cached version of the pipeline: ```bash -nextflow pull nf-core/spatialxe +nextflow pull nf-core/spatialaxe ``` ### Reproducibility It is a good idea to specify the pipeline version when running the pipeline on your data. This ensures that a specific version of the pipeline code and software are used when you run your pipeline. If you keep using the same tag, you'll be running the same version of the pipeline, even if there have been changes to the code since. -First, go to the [nf-core/spatialxe releases page](https://github.com/nf-core/spatialxe/releases) and find the latest pipeline version - numeric only (eg. `1.3.1`). Then specify this when running the pipeline with `-r` (one hyphen) - eg. `-r 1.3.1`. Of course, you can switch to another version by changing the number after the `-r` flag. +First, go to the [nf-core/spatialaxe releases page](https://github.com/nf-core/spatialaxe/releases) and find the latest pipeline version - numeric only (eg. `1.3.1`). Then specify this when running the pipeline with `-r` (one hyphen) - eg. `-r 1.3.1`. Of course, you can switch to another version by changing the number after the `-r` flag. This version number will be logged in reports when you run the pipeline, so that you'll know what you used when you look back in the future. For example, at the bottom of the MultiQC reports. @@ -173,19 +172,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/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. +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. ### 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/running/configuration/nextflow-for-your-system#update-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/usage/configuration#updating-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/running/configuration/nextflow-for-your-system#modifying-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/usage/configuration#customising-tool-arguments) section of the nf-core website. ### nf-core/configs diff --git a/main.nf b/main.nf index 0ed1167a..95b6a591 100644 --- a/main.nf +++ b/main.nf @@ -1,11 +1,11 @@ #!/usr/bin/env nextflow /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - nf-core/spatialxe + nf-core/spatialaxe ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Github : https://github.com/nf-core/spatialxe - Website: https://nf-co.re/spatialxe - Slack : https://nfcore.slack.com/channels/spatialxe + Github : https://github.com/nf-core/spatialaxe + Website: https://nf-co.re/spatialaxe + Slack : https://nfcore.slack.com/channels/spatialaxe ---------------------------------------------------------------------------------------- */ @@ -15,22 +15,9 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { SPATIALXE } from './workflows/spatialxe' -include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_spatialxe_pipeline' -include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_spatialxe_pipeline' -include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_spatialxe_pipeline' - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - GENOME PARAMETER VALUES -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -// TODO nf-core: Remove this line if you don't need a FASTA file -// This is an example of how to use getGenomeAttribute() to fetch parameters -// from igenomes.config using `--genome` -params.fasta = getGenomeAttribute('fasta') - +include { SPATIALAXE } from './workflows/spatialaxe' +include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_spatialaxe_pipeline' +include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_spatialaxe_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NAMED WORKFLOWS FOR PIPELINE @@ -40,7 +27,7 @@ params.fasta = getGenomeAttribute('fasta') // // WORKFLOW: Run main analysis pipeline depending on type of input // -workflow NFCORE_SPATIALXE { +workflow NFCORE_SPATIALAXE { take: samplesheet // channel: samplesheet read in from --input @@ -50,15 +37,11 @@ workflow NFCORE_SPATIALXE { // // WORKFLOW: Run pipeline // - SPATIALXE ( - samplesheet, - params.multiqc_config, - params.multiqc_logo, - params.multiqc_methods_description, - params.outdir, + SPATIALAXE ( + samplesheet ) emit: - multiqc_report = SPATIALXE.out.multiqc_report // channel: /path/to/multiqc_report.html + multiqc_report = SPATIALAXE.out.multiqc_report // channel: /path/to/multiqc_report.html } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -87,7 +70,7 @@ workflow { // // WORKFLOW: Run main workflow // - NFCORE_SPATIALXE ( + NFCORE_SPATIALAXE ( PIPELINE_INITIALISATION.out.samplesheet ) // @@ -99,7 +82,8 @@ workflow { params.plaintext_email, params.outdir, params.monochrome_logs, - NFCORE_SPATIALXE.out.multiqc_report + params.hook_url, + NFCORE_SPATIALAXE.out.multiqc_report ) } diff --git a/modules.json b/modules.json index 09082eaf..cac08372 100644 --- a/modules.json +++ b/modules.json @@ -1,18 +1,18 @@ { - "name": "nf-core/spatialxe", - "homePage": "https://github.com/nf-core/spatialxe", + "name": "nf-core/spatialaxe", + "homePage": "https://github.com/nf-core/spatialaxe", "repos": { "https://github.com/nf-core/modules.git": { "modules": { "nf-core": { "fastqc": { "branch": "master", - "git_sha": "6d46786420b4d7bc88eba026eb389c0c5535d120", + "git_sha": "41dfa3f7c0ffabb96a6a813fe321c6d1cc5b6e46", "installed_by": ["modules"] }, "multiqc": { "branch": "master", - "git_sha": "008f9d3e61209bf995edac3ba531f54e269e1215", + "git_sha": "af27af1be706e6a2bb8fe454175b0cdf77f47b49", "installed_by": ["modules"] } } @@ -26,12 +26,12 @@ }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "a3fb7351b1fdb2b1de282b765816bbea190e86a8", + "git_sha": "271e7fc14eb1320364416d996fb077421f3faed2", "installed_by": ["subworkflows"] }, "utils_nfschema_plugin": { "branch": "master", - "git_sha": "fdc08b8b1ae74f56686ce21f7ea11ad11990ce57", + "git_sha": "4b406a74dc0449c0401ed87d5bfff4252fd277fd", "installed_by": ["subworkflows"] } } diff --git a/modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt b/modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt deleted file mode 100644 index 7770ccd5..00000000 --- a/modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt +++ /dev/null @@ -1,822 +0,0 @@ - -version: 6 -environments: -default: -channels: -- url: https://conda.anaconda.org/conda-forge/ -- url: https://conda.anaconda.org/bioconda/ -- url: https://conda.anaconda.org/bioconda/ -options: -pypi-prerelease-mode: if-necessary-or-explicit -packages: -linux-64: -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda -- conda: https://conda.anaconda.org/bioconda/noarch/fastqc-0.12.1-hdfd78af_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-13.2.1-h6083320_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjdk-25.0.2-ha668962_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda -packages: -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda -build_number: 20 -sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 -md5: a9f577daf3de00bca7c3c76c0ecbd1de -depends: -- __glibc >=2.17,<3.0.a0 -- libgomp >=7.5.0 -constrains: -- openmp_impl <0.0a0 -license: BSD-3-Clause -license_family: BSD -size: 28948 -timestamp: 1770939786096 -- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda -sha256: d88aa7ae766cf584e180996e92fef2aa7d8e0a0a5ab1d4d49c32390c1b5fff31 -md5: dcdc58c15961dbf17a0621312b01f5cb -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: LGPL-2.1-or-later -license_family: GPL -size: 584660 -timestamp: 1768327524772 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda -sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 -md5: d2ffd7602c02f2b316fd921d39876885 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: bzip2-1.0.6 -license_family: BSD -size: 260182 -timestamp: 1771350215188 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc -md5: 4492fd26db29495f0ba23f146cd5638d -depends: -- __unix -license: ISC -size: 147413 -timestamp: 1772006283803 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda -sha256: 06525fa0c4e4f56e771a3b986d0fdf0f0fc5a3270830ee47e127a5105bde1b9a -md5: bb6c4808bfa69d6f7f6b07e5846ced37 -depends: -- __glibc >=2.17,<3.0.a0 -- fontconfig >=2.15.0,<3.0a0 -- fonts-conda-ecosystem -- icu >=78.1,<79.0a0 -- libexpat >=2.7.3,<3.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 -- libgcc >=14 -- libglib >=2.86.3,<3.0a0 -- libpng >=1.6.53,<1.7.0a0 -- libstdcxx >=14 -- libxcb >=1.17.0,<2.0a0 -- libzlib >=1.3.1,<2.0a0 -- pixman >=0.46.4,<1.0a0 -- xorg-libice >=1.1.2,<2.0a0 -- xorg-libsm >=1.2.6,<2.0a0 -- xorg-libx11 >=1.8.12,<2.0a0 -- xorg-libxext >=1.3.6,<2.0a0 -- xorg-libxrender >=0.9.12,<0.10.0a0 -license: LGPL-2.1-only or MPL-1.1 -size: 989514 -timestamp: 1766415934926 -- conda: https://conda.anaconda.org/bioconda/noarch/fastqc-0.12.1-hdfd78af_0.tar.bz2 -sha256: 7cc26225d590540ae95cd24940ff42f2da7479dd4cd22ae9ab9298665d06790c -md5: c9f6a4b12229f7331f79c9a00dd6e240 -depends: -- font-ttf-dejavu-sans-mono -- fontconfig -- openjdk >=8.0.144 -- perl -license: GPL >=3 -size: 11664291 -timestamp: 1677946722445 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 -sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b -md5: 0c96522c6bdaed4b1566d11387caaf45 -license: BSD-3-Clause -license_family: BSD -size: 397370 -timestamp: 1566932522327 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 -sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c -md5: 34893075a5c9e55cdafac56607368fc6 -license: OFL-1.1 -license_family: Other -size: 96530 -timestamp: 1620479909603 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 -sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 -md5: 4d59c254e01d9cde7957100457e2d5fb -license: OFL-1.1 -license_family: Other -size: 700814 -timestamp: 1620479612257 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda -sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 -md5: 49023d73832ef61042f6a237cb2687e7 -license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 -license_family: Other -size: 1620504 -timestamp: 1727511233259 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda -sha256: aa4a44dba97151221100a637c7f4bde619567afade9c0265f8e1c8eed8d7bd8c -md5: 867127763fbe935bab59815b6e0b7b5c -depends: -- __glibc >=2.17,<3.0.a0 -- libexpat >=2.7.4,<3.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 -- libgcc >=14 -- libuuid >=2.41.3,<3.0a0 -- libzlib >=1.3.1,<2.0a0 -license: MIT -license_family: MIT -size: 270705 -timestamp: 1771382710863 -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 -sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 -md5: fee5683a3f04bd15cbd8318b096a27ab -depends: -- fonts-conda-forge -license: BSD-3-Clause -license_family: BSD -size: 3667 -timestamp: 1566974674465 -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda -sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 -md5: a7970cd949a077b7cb9696379d338681 -depends: -- font-ttf-ubuntu -- font-ttf-inconsolata -- font-ttf-dejavu-sans-mono -- font-ttf-source-code-pro -license: BSD-3-Clause -license_family: BSD -size: 4059 -timestamp: 1762351264405 -- conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda -sha256: aac402a8298f0c0cc528664249170372ef6b37ac39fdc92b40601a6aed1e32ff -md5: 3bf7b9fd5a7136126e0234db4b87c8b6 -depends: -- libgcc-ng >=12 -license: MIT -license_family: MIT -size: 77248 -timestamp: 1712692454246 -- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda -sha256: 25ba37da5c39697a77fce2c9a15e48cf0a84f1464ad2aafbe53d8357a9f6cc8c -md5: 2cd94587f3a401ae05e03a6caf09539d -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libstdcxx >=14 -license: LGPL-2.0-or-later -license_family: LGPL -size: 99596 -timestamp: 1755102025473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-13.2.1-h6083320_0.conda -sha256: 477f2c553f72165020d3c56740ba354be916c2f0b76fd9f535e83d698277d5ec -md5: 14470902326beee192e33719a2e8bb7f -depends: -- __glibc >=2.17,<3.0.a0 -- cairo >=1.18.4,<2.0a0 -- graphite2 >=1.3.14,<2.0a0 -- icu >=78.3,<79.0a0 -- libexpat >=2.7.4,<3.0a0 -- libfreetype >=2.14.2 -- libfreetype6 >=2.14.2 -- libgcc >=14 -- libglib >=2.86.4,<3.0a0 -- libstdcxx >=14 -- libzlib >=1.3.2,<2.0a0 -license: MIT -license_family: MIT -size: 2384060 -timestamp: 1774276284520 -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda -sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a -md5: c80d8a3b84358cb967fa81e7075fbc8a -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libstdcxx >=14 -license: MIT -license_family: MIT -size: 12723451 -timestamp: 1773822285671 -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda -sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 -md5: b38117a3c920364aff79f870c984b4a3 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -license: LGPL-2.1-or-later -size: 134088 -timestamp: 1754905959823 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-ha1258a1_0.conda -sha256: 3e307628ca3527448dd1cb14ad7bb9d04d1d28c7d4c5f97ba196ae984571dd25 -md5: fb53fb07ce46a575c5d004bbc96032c2 -depends: -- __glibc >=2.17,<3.0.a0 -- keyutils >=1.6.3,<2.0a0 -- libedit >=3.1.20250104,<3.2.0a0 -- libedit >=3.1.20250104,<4.0a0 -- libgcc >=14 -- libstdcxx >=14 -- openssl >=3.5.5,<4.0a0 -license: MIT -license_family: MIT -size: 1386730 -timestamp: 1769769569681 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda -sha256: 836ec4b895352110335b9fdcfa83a8dcdbe6c5fb7c06c4929130600caea91c0a -md5: 6f2e2c8f58160147c4d1c6f4c14cbac4 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libjpeg-turbo >=3.1.2,<4.0a0 -- libtiff >=4.7.1,<4.8.0a0 -license: MIT -license_family: MIT -size: 249959 -timestamp: 1768184673131 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda -sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1 -md5: a752488c68f2e7c456bcbd8f16eec275 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libstdcxx >=14 -license: Apache-2.0 -license_family: Apache -size: 261513 -timestamp: 1773113328888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda -sha256: 205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c -md5: 49c553b47ff679a6a1e9fc80b9c5a2d4 -depends: -- __glibc >=2.17,<3.0.a0 -- krb5 >=1.22.2,<1.23.0a0 -- libgcc >=14 -- libstdcxx >=14 -- libzlib >=1.3.1,<2.0a0 -license: Apache-2.0 -license_family: Apache -size: 4518030 -timestamp: 1770902209173 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda -sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 -md5: 6c77a605a7a689d17d4819c0f8ac9a00 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: MIT -license_family: MIT -size: 73490 -timestamp: 1761979956660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda -sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 -md5: c277e0a4d549b03ac1e9d6cbbe3d017b -depends: -- ncurses -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -- ncurses >=6.5,<7.0a0 -license: BSD-2-Clause -license_family: BSD -size: 134676 -timestamp: 1738479519902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda -sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5 -md5: e7f7ce06ec24cfcfb9e36d28cf82ba57 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -constrains: -- expat 2.7.4.* -license: MIT -license_family: MIT -size: 76798 -timestamp: 1771259418166 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda -sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 -md5: a360c33a5abe61c07959e449fa1453eb -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: MIT -license_family: MIT -size: 58592 -timestamp: 1769456073053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda -sha256: 38f014a7129e644636e46064ecd6b1945e729c2140e21d75bb476af39e692db2 -md5: e289f3d17880e44b633ba911d57a321b -depends: -- libfreetype6 >=2.14.3 -license: GPL-2.0-only OR FTL -size: 8049 -timestamp: 1774298163029 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda -sha256: 16f020f96da79db1863fcdd8f2b8f4f7d52f177dd4c58601e38e9182e91adf1d -md5: fb16b4b69e3f1dcfe79d80db8fd0c55d -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libpng >=1.6.55,<1.7.0a0 -- libzlib >=1.3.2,<2.0a0 -constrains: -- freetype >=2.14.3 -license: GPL-2.0-only OR FTL -size: 384575 -timestamp: 1774298162622 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda -sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 -md5: 0aa00f03f9e39fb9876085dee11a85d4 -depends: -- __glibc >=2.17,<3.0.a0 -- _openmp_mutex >=4.5 -constrains: -- libgcc-ng ==15.2.0=*_18 -- libgomp 15.2.0 he0feb66_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 1041788 -timestamp: 1771378212382 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda -sha256: e318a711400f536c81123e753d4c797a821021fb38970cebfb3f454126016893 -md5: d5e96b1ed75ca01906b3d2469b4ce493 -depends: -- libgcc 15.2.0 he0feb66_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 27526 -timestamp: 1771378224552 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_1.conda -sha256: a27e44168a1240b15659888ce0d9b938ed4bdb49e9ea68a7c1ff27bcea8b55ce -md5: bb26456332b07f68bf3b7622ed71c0da -depends: -- __glibc >=2.17,<3.0.a0 -- libffi >=3.5.2,<3.6.0a0 -- libgcc >=14 -- libiconv >=1.18,<2.0a0 -- libzlib >=1.3.1,<2.0a0 -- pcre2 >=10.47,<10.48.0a0 -constrains: -- glib 2.86.4 *_1 -license: LGPL-2.1-or-later -size: 4398701 -timestamp: 1771863239578 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda -sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 -md5: 239c5e9546c38a1e884d69effcf4c882 -depends: -- __glibc >=2.17,<3.0.a0 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 603262 -timestamp: 1771378117851 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda -sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f -md5: 915f5995e94f60e9a4826e0b0920ee88 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: LGPL-2.1-only -size: 790176 -timestamp: 1754908768807 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda -sha256: cc9aba923eea0af8e30e0f94f2ad7156e2984d80d1e8e7fe6be5a1f257f0eb32 -md5: 8397539e3a0bbd1695584fb4f927485a -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -constrains: -- jpeg <0.0.0a -license: IJG AND BSD-3-Clause AND Zlib -size: 633710 -timestamp: 1762094827865 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda -sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb -md5: c7c83eecbb72d88b940c249af56c8b17 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -constrains: -- xz 5.8.2.* -license: 0BSD -size: 113207 -timestamp: 1768752626120 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda -sha256: 36ade759122cdf0f16e2a2562a19746d96cf9c863ffaa812f2f5071ebbe9c03c -md5: 5f13ffc7d30ffec87864e678df9957b4 -depends: -- libgcc >=14 -- __glibc >=2.17,<3.0.a0 -- libzlib >=1.3.1,<2.0a0 -license: zlib-acknowledgement -size: 317669 -timestamp: 1770691470744 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda -sha256: 78668020064fdaa27e9ab65cd2997e2c837b564ab26ce3bf0e58a2ce1a525c6e -md5: 1b08cd684f34175e4514474793d44bcb -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc 15.2.0 he0feb66_18 -constrains: -- libstdcxx-ng ==15.2.0=*_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 5852330 -timestamp: 1771378262446 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda -sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0 -md5: cd5a90476766d53e901500df9215e927 -depends: -- __glibc >=2.17,<3.0.a0 -- lerc >=4.0.0,<5.0a0 -- libdeflate >=1.25,<1.26.0a0 -- libgcc >=14 -- libjpeg-turbo >=3.1.0,<4.0a0 -- liblzma >=5.8.1,<6.0a0 -- libstdcxx >=14 -- libwebp-base >=1.6.0,<2.0a0 -- libzlib >=1.3.1,<2.0a0 -- zstd >=1.5.7,<1.6.0a0 -license: HPND -size: 435273 -timestamp: 1762022005702 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda -sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee -md5: db409b7c1720428638e7c0d509d3e1b5 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: BSD-3-Clause -license_family: BSD -size: 40311 -timestamp: 1766271528534 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda -sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b -md5: aea31d2e5b1091feca96fcfe945c3cf9 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -constrains: -- libwebp 1.6.0 -license: BSD-3-Clause -license_family: BSD -size: 429011 -timestamp: 1752159441324 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda -sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa -md5: 92ed62436b625154323d40d5f2f11dd7 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -- pthread-stubs -- xorg-libxau >=1.0.11,<2.0a0 -- xorg-libxdmcp -license: MIT -license_family: MIT -size: 395888 -timestamp: 1727278577118 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda -sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c -md5: 5aa797f8787fe7a17d1b0821485b5adc -depends: -- libgcc-ng >=12 -license: LGPL-2.1-or-later -size: 100393 -timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda -sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 -md5: d87ff7921124eccd67248aa483c23fec -depends: -- __glibc >=2.17,<3.0.a0 -constrains: -- zlib 1.3.2 *_2 -license: Zlib -license_family: Other -size: 63629 -timestamp: 1774072609062 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda -sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 -md5: 47e340acb35de30501a76c7c799c41d7 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -license: X11 AND BSD-3-Clause -size: 891641 -timestamp: 1738195959188 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjdk-25.0.2-ha668962_0.conda -sha256: 3825a4c84676a8a5cc23b397a2911e4efa4a805daf2af764153bd904e142ec41 -md5: a41092b0177362dbe5eb2a18501e86c0 -depends: -- xorg-libx11 -- xorg-libxext -- xorg-libxi -- xorg-libxrender -- xorg-libxtst -- libstdcxx >=14 -- libgcc >=14 -- __glibc >=2.17,<3.0.a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 -- xorg-libxrender >=0.9.12,<0.10.0a0 -- libjpeg-turbo >=3.1.2,<4.0a0 -- giflib >=5.2.2,<5.3.0a0 -- xorg-libxrandr >=1.5.5,<2.0a0 -- harfbuzz >=12.3.2 -- fontconfig >=2.17.1,<3.0a0 -- fonts-conda-ecosystem -- xorg-libxtst >=1.2.5,<2.0a0 -- xorg-libxi >=1.8.2,<2.0a0 -- lcms2 >=2.18,<3.0a0 -- alsa-lib >=1.2.15.3,<1.3.0a0 -- libpng >=1.6.55,<1.7.0a0 -- xorg-libxt >=1.3.1,<2.0a0 -- libzlib >=1.3.1,<2.0a0 -- xorg-libxext >=1.3.7,<2.0a0 -- xorg-libx11 >=1.8.13,<2.0a0 -- libcups >=2.3.3,<2.4.0a0 -license: GPL-2.0-or-later WITH Classpath-exception-2.0 -license_family: GPL -size: 122465031 -timestamp: 1771443671180 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda -sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c -md5: f61eb8cd60ff9057122a3d338b99c00f -depends: -- __glibc >=2.17,<3.0.a0 -- ca-certificates -- libgcc >=14 -license: Apache-2.0 -license_family: Apache -size: 3164551 -timestamp: 1769555830639 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda -sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff -md5: 7a3bff861a6583f1889021facefc08b1 -depends: -- __glibc >=2.17,<3.0.a0 -- bzip2 >=1.0.8,<2.0a0 -- libgcc >=14 -- libzlib >=1.3.1,<2.0a0 -license: BSD-3-Clause -license_family: BSD -size: 1222481 -timestamp: 1763655398280 -- conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda -build_number: 7 -sha256: 9ec32b6936b0e37bcb0ed34f22ec3116e75b3c0964f9f50ecea5f58734ed6ce9 -md5: f2cfec9406850991f4e3d960cc9e3321 -depends: -- libgcc-ng >=12 -- libxcrypt >=4.4.36 -license: GPL-1.0-or-later OR Artistic-1.0-Perl -size: 13344463 -timestamp: 1703310653947 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda -sha256: 43d37bc9ca3b257c5dd7bf76a8426addbdec381f6786ff441dc90b1a49143b6a -md5: c01af13bdc553d1a8fbfff6e8db075f0 -depends: -- libgcc >=14 -- libstdcxx >=14 -- libgcc >=14 -- __glibc >=2.17,<3.0.a0 -license: MIT -license_family: MIT -size: 450960 -timestamp: 1754665235234 -- conda: https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda -sha256: 4ce2e1ee31a6217998f78c31ce7dc0a3e0557d9238b51d49dd20c52d467a126d -md5: f2c23a77b25efcad57d377b34bd84941 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- ncurses >=6.5,<7.0a0 -license: GPL-2.0-or-later AND LGPL-2.0-or-later -license_family: GPL -size: 593603 -timestamp: 1769710381284 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda -sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 -md5: b3c17d95b5a10c6e64a21fa17573e70e -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -license: MIT -license_family: MIT -size: 8252 -timestamp: 1726802366959 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda -sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b -md5: fb901ff28063514abb6046c9ec2c4a45 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -license: MIT -license_family: MIT -size: 58628 -timestamp: 1734227592886 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda -sha256: 277841c43a39f738927145930ff963c5ce4c4dacf66637a3d95d802a64173250 -md5: 1c74ff8c35dcadf952a16f752ca5aa49 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -- libuuid >=2.38.1,<3.0a0 -- xorg-libice >=1.1.2,<2.0a0 -license: MIT -license_family: MIT -size: 27590 -timestamp: 1741896361728 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda -sha256: 516d4060139dbb4de49a4dcdc6317a9353fb39ebd47789c14e6fe52de0deee42 -md5: 861fb6ccbc677bb9a9fb2468430b9c6a -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libxcb >=1.17.0,<2.0a0 -license: MIT -license_family: MIT -size: 839652 -timestamp: 1770819209719 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda -sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b -md5: b2895afaf55bf96a8c8282a2e47a5de0 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: MIT -license_family: MIT -size: 15321 -timestamp: 1762976464266 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda -sha256: 25d255fb2eef929d21ff660a0c687d38a6d2ccfbcbf0cc6aa738b12af6e9d142 -md5: 1dafce8548e38671bea82e3f5c6ce22f -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: MIT -license_family: MIT -size: 20591 -timestamp: 1762976546182 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda -sha256: 79c60fc6acfd3d713d6340d3b4e296836a0f8c51602327b32794625826bd052f -md5: 34e54f03dfea3e7a2dcf1453a85f1085 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- xorg-libx11 >=1.8.12,<2.0a0 -license: MIT -license_family: MIT -size: 50326 -timestamp: 1769445253162 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda -sha256: 83c4c99d60b8784a611351220452a0a85b080668188dce5dfa394b723d7b64f4 -md5: ba231da7fccf9ea1e768caf5c7099b84 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- xorg-libx11 >=1.8.12,<2.0a0 -license: MIT -license_family: MIT -size: 20071 -timestamp: 1759282564045 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda -sha256: 1a724b47d98d7880f26da40e45f01728e7638e6ec69f35a3e11f92acd05f9e7a -md5: 17dcc85db3c7886650b8908b183d6876 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -- xorg-libx11 >=1.8.10,<2.0a0 -- xorg-libxext >=1.3.6,<2.0a0 -- xorg-libxfixes >=6.0.1,<7.0a0 -license: MIT -license_family: MIT -size: 47179 -timestamp: 1727799254088 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda -sha256: 80ed047a5cb30632c3dc5804c7716131d767089f65877813d4ae855ee5c9d343 -md5: e192019153591938acf7322b6459d36e -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- xorg-libx11 >=1.8.12,<2.0a0 -- xorg-libxext >=1.3.6,<2.0a0 -- xorg-libxrender >=0.9.12,<0.10.0a0 -license: MIT -license_family: MIT -size: 30456 -timestamp: 1769445263457 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda -sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 -md5: 96d57aba173e878a2089d5638016dc5e -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -- xorg-libx11 >=1.8.10,<2.0a0 -license: MIT -license_family: MIT -size: 33005 -timestamp: 1734229037766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda -sha256: a8afba4a55b7b530eb5c8ad89737d60d60bc151a03fbef7a2182461256953f0e -md5: 279b0de5f6ba95457190a1c459a64e31 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -- xorg-libice >=1.1.1,<2.0a0 -- xorg-libsm >=1.2.4,<2.0a0 -- xorg-libx11 >=1.8.10,<2.0a0 -license: MIT -license_family: MIT -size: 379686 -timestamp: 1731860547604 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda -sha256: 752fdaac5d58ed863bbf685bb6f98092fe1a488ea8ebb7ed7b606ccfce08637a -md5: 7bbe9a0cc0df0ac5f5a8ad6d6a11af2f -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -- xorg-libx11 >=1.8.10,<2.0a0 -- xorg-libxext >=1.3.6,<2.0a0 -- xorg-libxi >=1.7.10,<2.0a0 -license: MIT -license_family: MIT -size: 32808 -timestamp: 1727964811275 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda -sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 -md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 -depends: -- __glibc >=2.17,<3.0.a0 -- libzlib >=1.3.1,<2.0a0 -license: BSD-3-Clause -license_family: BSD -size: 601375 -timestamp: 1764777111296 diff --git a/modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt b/modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt deleted file mode 100644 index cdc434ca..00000000 --- a/modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt +++ /dev/null @@ -1,769 +0,0 @@ - -version: 6 -environments: -default: -channels: -- url: https://conda.anaconda.org/conda-forge/ -- url: https://conda.anaconda.org/bioconda/ -- url: https://conda.anaconda.org/bioconda/ -options: -pypi-prerelease-mode: if-necessary-or-explicit -packages: -linux-aarch64: -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.15.3-he30d5cf_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h0b6afd8_1.conda -- conda: https://conda.anaconda.org/bioconda/noarch/fastqc-0.12.1-hdfd78af_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.14-hfae3067_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-13.2.1-h1134a53_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.86.4-hf53f6bf_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.55-h1abf092_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjdk-25.0.2-h488f50d_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.47-hf841c20_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/perl-5.32.1-7_h31becfc_perl5.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.6-h0808dbd_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.13-h63a1b12_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.7-he30d5cf_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.2-he30d5cf_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxi-1.8.2-h57736b2_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrandr-1.5.5-he30d5cf_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxt-1.3.1-h57736b2_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxtst-1.2.5-h57736b2_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda -packages: -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda -build_number: 20 -sha256: a2527b1d81792a0ccd2c05850960df119c2b6d8f5fdec97f2db7d25dc23b1068 -md5: 468fd3bb9e1f671d36c2cbc677e56f1d -depends: -- libgomp >=7.5.0 -constrains: -- openmp_impl <0.0a0 -license: BSD-3-Clause -license_family: BSD -size: 28926 -timestamp: 1770939656741 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.15.3-he30d5cf_0.conda -sha256: ea2233e2db9908c2e5f29d3ca420a546b4583253f4f70abb5494cdd676866d42 -md5: 4a98cbc4ade694520227402ff8880630 -depends: -- libgcc >=14 -license: LGPL-2.1-or-later -license_family: GPL -size: 615729 -timestamp: 1768327548407 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda -sha256: b3495077889dde6bb370938e7db82be545c73e8589696ad0843a32221520ad4c -md5: 840d8fc0d7b3209be93080bc20e07f2d -depends: -- libgcc >=14 -license: bzip2-1.0.6 -license_family: BSD -size: 192412 -timestamp: 1771350241232 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc -md5: 4492fd26db29495f0ba23f146cd5638d -depends: -- __unix -license: ISC -size: 147413 -timestamp: 1772006283803 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h0b6afd8_1.conda -sha256: 675db823f3d6fb6bf747fab3b0170ba99b269a07cf6df1e49fff2f9972be9cd1 -md5: 043c13ed3a18396994be9b4fab6572ad -depends: -- fontconfig >=2.15.0,<3.0a0 -- fonts-conda-ecosystem -- icu >=78.1,<79.0a0 -- libexpat >=2.7.3,<3.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 -- libgcc >=14 -- libglib >=2.86.3,<3.0a0 -- libpng >=1.6.53,<1.7.0a0 -- libstdcxx >=14 -- libxcb >=1.17.0,<2.0a0 -- libzlib >=1.3.1,<2.0a0 -- pixman >=0.46.4,<1.0a0 -- xorg-libice >=1.1.2,<2.0a0 -- xorg-libsm >=1.2.6,<2.0a0 -- xorg-libx11 >=1.8.12,<2.0a0 -- xorg-libxext >=1.3.6,<2.0a0 -- xorg-libxrender >=0.9.12,<0.10.0a0 -license: LGPL-2.1-only or MPL-1.1 -size: 927045 -timestamp: 1766416003626 -- conda: https://conda.anaconda.org/bioconda/noarch/fastqc-0.12.1-hdfd78af_0.tar.bz2 -sha256: 7cc26225d590540ae95cd24940ff42f2da7479dd4cd22ae9ab9298665d06790c -md5: c9f6a4b12229f7331f79c9a00dd6e240 -depends: -- font-ttf-dejavu-sans-mono -- fontconfig -- openjdk >=8.0.144 -- perl -license: GPL >=3 -size: 11664291 -timestamp: 1677946722445 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 -sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b -md5: 0c96522c6bdaed4b1566d11387caaf45 -license: BSD-3-Clause -license_family: BSD -size: 397370 -timestamp: 1566932522327 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 -sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c -md5: 34893075a5c9e55cdafac56607368fc6 -license: OFL-1.1 -license_family: Other -size: 96530 -timestamp: 1620479909603 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 -sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 -md5: 4d59c254e01d9cde7957100457e2d5fb -license: OFL-1.1 -license_family: Other -size: 700814 -timestamp: 1620479612257 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda -sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 -md5: 49023d73832ef61042f6a237cb2687e7 -license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 -license_family: Other -size: 1620504 -timestamp: 1727511233259 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda -sha256: 835aff8615dd8d8fff377679710ce81b8a2c47b6404e21a92fb349fda193a15c -md5: 0fed1ff55f4938a65907f3ecf62609db -depends: -- libexpat >=2.7.4,<3.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 -- libgcc >=14 -- libuuid >=2.41.3,<3.0a0 -- libzlib >=1.3.1,<2.0a0 -license: MIT -license_family: MIT -size: 279044 -timestamp: 1771382728182 -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 -sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 -md5: fee5683a3f04bd15cbd8318b096a27ab -depends: -- fonts-conda-forge -license: BSD-3-Clause -license_family: BSD -size: 3667 -timestamp: 1566974674465 -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda -sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 -md5: a7970cd949a077b7cb9696379d338681 -depends: -- font-ttf-ubuntu -- font-ttf-inconsolata -- font-ttf-dejavu-sans-mono -- font-ttf-source-code-pro -license: BSD-3-Clause -license_family: BSD -size: 4059 -timestamp: 1762351264405 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.2-h31becfc_0.conda -sha256: a79dc3bd54c4fb1f249942ee2d5b601a76ecf9614774a4cff9af49adfa458db2 -md5: 2f809afaf0ba1ea4135dce158169efac -depends: -- libgcc-ng >=12 -license: MIT -license_family: MIT -size: 82124 -timestamp: 1712692444545 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.14-hfae3067_2.conda -sha256: c9b1781fe329e0b77c5addd741e58600f50bef39321cae75eba72f2f381374b7 -md5: 4aa540e9541cc9d6581ab23ff2043f13 -depends: -- libgcc >=14 -- libstdcxx >=14 -license: LGPL-2.0-or-later -license_family: LGPL -size: 102400 -timestamp: 1755102000043 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-13.2.1-h1134a53_0.conda -sha256: e22f485fddaaea3ff4b6cae98e0197b9dccd2ed2770337ad6ff38a92afe04e59 -md5: 05d65a2cf410adc331c9ea61f59f1013 -depends: -- cairo >=1.18.4,<2.0a0 -- graphite2 >=1.3.14,<2.0a0 -- icu >=78.3,<79.0a0 -- libexpat >=2.7.4,<3.0a0 -- libfreetype >=2.14.2 -- libfreetype6 >=2.14.2 -- libgcc >=14 -- libglib >=2.86.4,<3.0a0 -- libstdcxx >=14 -- libzlib >=1.3.2,<2.0a0 -license: MIT -license_family: MIT -size: 2345732 -timestamp: 1774281448329 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda -sha256: 49ba6aed2c6b482bb0ba41078057555d29764299bc947b990708617712ef6406 -md5: 546da38c2fa9efacf203e2ad3f987c59 -depends: -- libgcc >=14 -- libstdcxx >=14 -license: MIT -license_family: MIT -size: 12837286 -timestamp: 1773822650615 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.3-h86ecc28_0.conda -sha256: 5ce830ca274b67de11a7075430a72020c1fb7d486161a82839be15c2b84e9988 -md5: e7df0aab10b9cbb73ab2a467ebfaf8c7 -depends: -- libgcc >=13 -license: LGPL-2.1-or-later -size: 129048 -timestamp: 1754906002667 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-hfd895c2_0.conda -sha256: b53999d888dda53c506b264e8c02b5f5c8e022c781eda0718f007339e6bc90ba -md5: d9ca108bd680ea86a963104b6b3e95ca -depends: -- keyutils >=1.6.3,<2.0a0 -- libedit >=3.1.20250104,<3.2.0a0 -- libedit >=3.1.20250104,<4.0a0 -- libgcc >=14 -- libstdcxx >=14 -- openssl >=3.5.5,<4.0a0 -license: MIT -license_family: MIT -size: 1517436 -timestamp: 1769773395215 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda -sha256: 379ef5e91a587137391a6149755d0e929f1a007d2dcb211318ac670a46c8596f -md5: bb960f01525b5e001608afef9d47b79c -depends: -- libgcc >=14 -- libjpeg-turbo >=3.1.2,<4.0a0 -- libtiff >=4.7.1,<4.8.0a0 -license: MIT -license_family: MIT -size: 293039 -timestamp: 1768184778398 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda -sha256: 8957fd460c1c132c8031f65fd5f56ec3807fd71b7cab2c5e2b0937b13404ab36 -md5: d13423b06447113a90b5b1366d4da171 -depends: -- libgcc >=14 -- libstdcxx >=14 -license: Apache-2.0 -license_family: Apache -size: 240444 -timestamp: 1773114901155 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda -sha256: 41b04f995c9f63af8c4065a35931e46cbc2fdd6b9bf7e4c19f90d53cbb2bc8e5 -md5: 67828c963b17db7dc989fe5d509ef04a -depends: -- krb5 >=1.22.2,<1.23.0a0 -- libgcc >=14 -- libstdcxx >=14 -- libzlib >=1.3.1,<2.0a0 -license: Apache-2.0 -license_family: Apache -size: 4553739 -timestamp: 1770903929794 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda -sha256: 48814b73bd462da6eed2e697e30c060ae16af21e9fbed30d64feaf0aad9da392 -md5: a9138815598fe6b91a1d6782ca657b0c -depends: -- libgcc >=14 -license: MIT -license_family: MIT -size: 71117 -timestamp: 1761979776756 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda -sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 -md5: fb640d776fc92b682a14e001980825b1 -depends: -- ncurses -- libgcc >=13 -- ncurses >=6.5,<7.0a0 -license: BSD-2-Clause -license_family: BSD -size: 148125 -timestamp: 1738479808948 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda -sha256: 995ce3ad96d0f4b5ed6296b051a0d7b6377718f325bc0e792fbb96b0e369dad7 -md5: 57f3b3da02a50a1be2a6fe847515417d -depends: -- libgcc >=14 -constrains: -- expat 2.7.4.* -license: MIT -license_family: MIT -size: 76564 -timestamp: 1771259530958 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda -sha256: 3df4c539449aabc3443bbe8c492c01d401eea894603087fca2917aa4e1c2dea9 -md5: 2f364feefb6a7c00423e80dcb12db62a -depends: -- libgcc >=14 -license: MIT -license_family: MIT -size: 55952 -timestamp: 1769456078358 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda -sha256: 752e4f66283d7deb4c6fd47d88df644d8daa2aaa825a54f3bf350a625190192a -md5: a229e22d4d8814a07702b0919d8e6701 -depends: -- libfreetype6 >=2.14.3 -license: GPL-2.0-only OR FTL -size: 8125 -timestamp: 1774301094057 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda -sha256: 8e6b27fe4eec4c2fa7b7769a21973734c8dba1de80086fb0213e58375ac09f4c -md5: b99ed99e42dafb27889483b3098cace7 -depends: -- libgcc >=14 -- libpng >=1.6.55,<1.7.0a0 -- libzlib >=1.3.2,<2.0a0 -constrains: -- freetype >=2.14.3 -license: GPL-2.0-only OR FTL -size: 422941 -timestamp: 1774301093473 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda -sha256: 43df385bedc1cab11993c4369e1f3b04b4ca5d0ea16cba6a0e7f18dbc129fcc9 -md5: 552567ea2b61e3a3035759b2fdb3f9a6 -depends: -- _openmp_mutex >=4.5 -constrains: -- libgcc-ng ==15.2.0=*_18 -- libgomp 15.2.0 h8acb6b2_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 622900 -timestamp: 1771378128706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda -sha256: 83bb0415f59634dccfa8335d4163d1f6db00a27b36666736f9842b650b92cf2f -md5: 4feebd0fbf61075a1a9c2e9b3936c257 -depends: -- libgcc 15.2.0 h8acb6b2_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 27568 -timestamp: 1771378136019 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.86.4-hf53f6bf_1.conda -sha256: afc503dbd04a5bf2709aa9d8318a03a8c4edb389f661ff280c3494bfef4341ec -md5: 4ac4372fc4d7f20630a91314cdac8afd -depends: -- libffi >=3.5.2,<3.6.0a0 -- libgcc >=14 -- libiconv >=1.18,<2.0a0 -- libzlib >=1.3.1,<2.0a0 -- pcre2 >=10.47,<10.48.0a0 -constrains: -- glib 2.86.4 *_1 -license: LGPL-2.1-or-later -size: 4512186 -timestamp: 1771863220969 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda -sha256: fc716f11a6a8525e27a5d332ef6a689210b0d2a4dd1133edc0f530659aa9faa6 -md5: 4faa39bf919939602e594253bd673958 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 588060 -timestamp: 1771378040807 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda -sha256: 1473451cd282b48d24515795a595801c9b65b567fe399d7e12d50b2d6cdb04d9 -md5: 5a86bf847b9b926f3a4f203339748d78 -depends: -- libgcc >=14 -license: LGPL-2.1-only -size: 791226 -timestamp: 1754910975665 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda -sha256: 84064c7c53a64291a585d7215fe95ec42df74203a5bf7615d33d49a3b0f08bb6 -md5: 5109d7f837a3dfdf5c60f60e311b041f -depends: -- libgcc >=14 -constrains: -- jpeg <0.0.0a -license: IJG AND BSD-3-Clause AND Zlib -size: 691818 -timestamp: 1762094728337 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda -sha256: 843c46e20519651a3e357a8928352b16c5b94f4cd3d5481acc48be2e93e8f6a3 -md5: 96944e3c92386a12755b94619bae0b35 -depends: -- libgcc >=14 -constrains: -- xz 5.8.2.* -license: 0BSD -size: 125916 -timestamp: 1768754941722 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.55-h1abf092_0.conda -sha256: c7378c6b79de4d571d00ad1caf0a4c19d43c9c94077a761abb6ead44d891f907 -md5: be4088903b94ea297975689b3c3aeb27 -depends: -- libgcc >=14 -- libzlib >=1.3.1,<2.0a0 -license: zlib-acknowledgement -size: 340156 -timestamp: 1770691477245 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda -sha256: 31fdb9ffafad106a213192d8319b9f810e05abca9c5436b60e507afb35a6bc40 -md5: f56573d05e3b735cb03efeb64a15f388 -depends: -- libgcc 15.2.0 h8acb6b2_18 -constrains: -- libstdcxx-ng ==15.2.0=*_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 5541411 -timestamp: 1771378162499 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda -sha256: 7ff79470db39e803e21b8185bc8f19c460666d5557b1378d1b1e857d929c6b39 -md5: 8c6fd84f9c87ac00636007c6131e457d -depends: -- lerc >=4.0.0,<5.0a0 -- libdeflate >=1.25,<1.26.0a0 -- libgcc >=14 -- libjpeg-turbo >=3.1.0,<4.0a0 -- liblzma >=5.8.1,<6.0a0 -- libstdcxx >=14 -- libwebp-base >=1.6.0,<2.0a0 -- libzlib >=1.3.1,<2.0a0 -- zstd >=1.5.7,<1.6.0a0 -license: HPND -size: 488407 -timestamp: 1762022048105 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda -sha256: c37a8e89b700646f3252608f8368e7eb8e2a44886b92776e57ad7601fc402a11 -md5: cf2861212053d05f27ec49c3784ff8bb -depends: -- libgcc >=14 -license: BSD-3-Clause -license_family: BSD -size: 43453 -timestamp: 1766271546875 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda -sha256: b03700a1f741554e8e5712f9b06dd67e76f5301292958cd3cb1ac8c6fdd9ed25 -md5: 24e92d0942c799db387f5c9d7b81f1af -depends: -- libgcc >=14 -constrains: -- libwebp 1.6.0 -license: BSD-3-Clause -license_family: BSD -size: 359496 -timestamp: 1752160685488 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda -sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b -md5: cd14ee5cca2464a425b1dbfc24d90db2 -depends: -- libgcc >=13 -- pthread-stubs -- xorg-libxau >=1.0.11,<2.0a0 -- xorg-libxdmcp -license: MIT -license_family: MIT -size: 397493 -timestamp: 1727280745441 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda -sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f -md5: b4df5d7d4b63579d081fd3a4cf99740e -depends: -- libgcc-ng >=12 -license: LGPL-2.1-or-later -size: 114269 -timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda -sha256: eb111e32e5a7313a5bf799c7fb2419051fa2fe7eff74769fac8d5a448b309f7f -md5: 502006882cf5461adced436e410046d1 -constrains: -- zlib 1.3.2 *_2 -license: Zlib -license_family: Other -size: 69833 -timestamp: 1774072605429 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda -sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 -md5: 182afabe009dc78d8b73100255ee6868 -depends: -- libgcc >=13 -license: X11 AND BSD-3-Clause -size: 926034 -timestamp: 1738196018799 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjdk-25.0.2-h488f50d_0.conda -sha256: 6fd2c872b275fa5d42a61a4b6dc28a819cde29f9048adb547363597432e0720e -md5: 27fdd5d67e235c20d23b2d66406497d3 -depends: -- xorg-libx11 -- xorg-libxext -- xorg-libxi -- xorg-libxrender -- xorg-libxtst -- libstdcxx >=14 -- libgcc >=14 -- libzlib >=1.3.1,<2.0a0 -- xorg-libxtst >=1.2.5,<2.0a0 -- libpng >=1.6.55,<1.7.0a0 -- alsa-lib >=1.2.15.3,<1.3.0a0 -- xorg-libx11 >=1.8.13,<2.0a0 -- xorg-libxi >=1.8.2,<2.0a0 -- xorg-libxrandr >=1.5.5,<2.0a0 -- lcms2 >=2.18,<3.0a0 -- xorg-libxrender >=0.9.12,<0.10.0a0 -- libcups >=2.3.3,<2.4.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 -- harfbuzz >=12.3.2 -- xorg-libxext >=1.3.7,<2.0a0 -- giflib >=5.2.2,<5.3.0a0 -- xorg-libxt >=1.3.1,<2.0a0 -- libjpeg-turbo >=3.1.2,<4.0a0 -- fontconfig >=2.17.1,<3.0a0 -- fonts-conda-ecosystem -license: GPL-2.0-or-later WITH Classpath-exception-2.0 -license_family: GPL -size: 106988620 -timestamp: 1771443741031 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda -sha256: 7f8048c0e75b2620254218d72b4ae7f14136f1981c5eb555ef61645a9344505f -md5: 25f5885f11e8b1f075bccf4a2da91c60 -depends: -- ca-certificates -- libgcc >=14 -license: Apache-2.0 -license_family: Apache -size: 3692030 -timestamp: 1769557678657 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.47-hf841c20_0.conda -sha256: 04df2cee95feba440387f33f878e9f655521e69f4be33a0cd637f07d3d81f0f9 -md5: 1a30c42e32ca0ea216bd0bfe6f842f0b -depends: -- bzip2 >=1.0.8,<2.0a0 -- libgcc >=14 -- libzlib >=1.3.1,<2.0a0 -license: BSD-3-Clause -license_family: BSD -size: 1166552 -timestamp: 1763655534263 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/perl-5.32.1-7_h31becfc_perl5.conda -build_number: 7 -sha256: d78296134263b5bf476cad838ded65451e7162db756f9997c5d06b08122572ed -md5: 17d019cb2a6c72073c344e98e40dfd61 -depends: -- libgcc-ng >=12 -- libxcrypt >=4.4.36 -license: GPL-1.0-or-later OR Artistic-1.0-Perl -size: 13338804 -timestamp: 1703310557094 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_1.conda -sha256: e6b0846a998f2263629cfeac7bca73565c35af13251969f45d385db537a514e4 -md5: 1587081d537bd4ae77d1c0635d465ba5 -depends: -- libgcc >=14 -- libstdcxx >=14 -- libgcc >=14 -license: MIT -license_family: MIT -size: 357913 -timestamp: 1754665583353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda -sha256: e9cbcbc94e151ada3d6dc365380aaaf591f65012c16d9a2abaea4b9b90adc402 -md5: ab7288cc39545556d1bc5e71ab2df9a9 -depends: -- libgcc >=14 -- ncurses >=6.5,<7.0a0 -license: GPL-2.0-or-later AND LGPL-2.0-or-later -license_family: GPL -size: 636733 -timestamp: 1769712412683 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda -sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba -md5: bb5a90c93e3bac3d5690acf76b4a6386 -depends: -- libgcc >=13 -license: MIT -license_family: MIT -size: 8342 -timestamp: 1726803319942 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda -sha256: a2ba1864403c7eb4194dacbfe2777acf3d596feae43aada8d1b478617ce45031 -md5: c8d8ec3e00cd0fd8a231789b91a7c5b7 -depends: -- libgcc >=13 -license: MIT -license_family: MIT -size: 60433 -timestamp: 1734229908988 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.6-h0808dbd_0.conda -sha256: b86a819cd16f90c01d9d81892155126d01555a20dabd5f3091da59d6309afd0a -md5: 2d1409c50882819cb1af2de82e2b7208 -depends: -- libgcc >=13 -- libuuid >=2.38.1,<3.0a0 -- xorg-libice >=1.1.2,<2.0a0 -license: MIT -license_family: MIT -size: 28701 -timestamp: 1741897678254 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.13-h63a1b12_0.conda -sha256: cf886160e2ff580d77f7eb8ec1a77c41c2c5b05343e329bc35f0ddf40b8d92ab -md5: 22dd10425ef181e80e130db50675d615 -depends: -- libgcc >=14 -- libxcb >=1.17.0,<2.0a0 -license: MIT -license_family: MIT -size: 869058 -timestamp: 1770819244991 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda -sha256: e9f6e931feeb2f40e1fdbafe41d3b665f1ab6cb39c5880a1fcf9f79a3f3c84a5 -md5: 1c246e1105000c3660558459e2fd6d43 -depends: -- libgcc >=14 -license: MIT -license_family: MIT -size: 16317 -timestamp: 1762977521691 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda -sha256: 128d72f36bcc8d2b4cdbec07507542e437c7d67f677b7d77b71ed9eeac7d6df1 -md5: bff06dcde4a707339d66d45d96ceb2e2 -depends: -- libgcc >=14 -license: MIT -license_family: MIT -size: 21039 -timestamp: 1762979038025 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.7-he30d5cf_0.conda -sha256: db2188bc0d844d4e9747bac7f6c1d067e390bd769c5ad897c93f1df759dc5dba -md5: fb42b683034619915863d68dd9df03a3 -depends: -- libgcc >=14 -- xorg-libx11 >=1.8.12,<2.0a0 -license: MIT -license_family: MIT -size: 52409 -timestamp: 1769446753771 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.2-he30d5cf_0.conda -sha256: 8cb9c88e25c57e47419e98f04f9ef3154ad96b9f858c88c570c7b91216a64d0e -md5: e8b4056544341daf1d415eaeae7a040c -depends: -- libgcc >=14 -- xorg-libx11 >=1.8.12,<2.0a0 -license: MIT -license_family: MIT -size: 20704 -timestamp: 1759284028146 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxi-1.8.2-h57736b2_0.conda -sha256: 7b587407ecb9ccd2bbaf0fb94c5dbdde4d015346df063e9502dc0ce2b682fb5e -md5: eeee3bdb31c6acde2b81ad1b8c287087 -depends: -- libgcc >=13 -- xorg-libx11 >=1.8.9,<2.0a0 -- xorg-libxext >=1.3.6,<2.0a0 -- xorg-libxfixes >=6.0.1,<7.0a0 -license: MIT -license_family: MIT -size: 48197 -timestamp: 1727801059062 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrandr-1.5.5-he30d5cf_0.conda -sha256: 9f5196665a8d72f4f119c40dcc4bafeb0b540b102cc7b8b299c2abf599e7919f -md5: 1f64c613f0b8d67e9fb0e165d898fb6b -depends: -- libgcc >=14 -- xorg-libx11 >=1.8.12,<2.0a0 -- xorg-libxext >=1.3.6,<2.0a0 -- xorg-libxrender >=0.9.12,<0.10.0a0 -license: MIT -license_family: MIT -size: 31122 -timestamp: 1769445286951 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda -sha256: ffd77ee860c9635a28cfda46163dcfe9224dc6248c62404c544ae6b564a0be1f -md5: ae2c2dd0e2d38d249887727db2af960e -depends: -- libgcc >=13 -- xorg-libx11 >=1.8.10,<2.0a0 -license: MIT -license_family: MIT -size: 33649 -timestamp: 1734229123157 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxt-1.3.1-h57736b2_0.conda -sha256: 7c109792b60720809a580612aba7f8eb2a0bd425b9fc078748a9d6ffc97cbfa8 -md5: a9e4852c8e0b68ee783e7240030b696f -depends: -- libgcc >=13 -- xorg-libice >=1.1.1,<2.0a0 -- xorg-libsm >=1.2.4,<2.0a0 -- xorg-libx11 >=1.8.9,<2.0a0 -license: MIT -license_family: MIT -size: 384752 -timestamp: 1731860572314 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxtst-1.2.5-h57736b2_3.conda -sha256: 6eaffce5a34fc0a16a21ddeaefb597e792a263b1b0c387c1ce46b0a967d558e1 -md5: c05698071b5c8e0da82a282085845860 -depends: -- libgcc >=13 -- xorg-libx11 >=1.8.9,<2.0a0 -- xorg-libxext >=1.3.6,<2.0a0 -- xorg-libxi >=1.7.10,<2.0a0 -license: MIT -license_family: MIT -size: 33786 -timestamp: 1727964907993 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda -sha256: 569990cf12e46f9df540275146da567d9c618c1e9c7a0bc9d9cfefadaed20b75 -md5: c3655f82dcea2aa179b291e7099c1fcc -depends: -- libzlib >=1.3.1,<2.0a0 -license: BSD-3-Clause -license_family: BSD -size: 614429 -timestamp: 1764777145593 diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 10851264..23e16634 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -1,40 +1,37 @@ process FASTQC { tag "${meta.id}" - label 'process_low' + label 'process_medium' conda "${moduleDir}/environment.yml" - container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container - ? 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' - : 'quay.io/biocontainers/fastqc:0.12.1--hdfd78af_0'}" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' : + 'biocontainers/fastqc:0.12.1--hdfd78af_0' }" input: - tuple val(meta), path(reads, stageAs: '?/*') + tuple val(meta), path(reads) output: tuple val(meta), path("*.html"), emit: html - tuple val(meta), path("*.zip"), emit: zip - tuple val("${task.process}"), val('fastqc'), eval('fastqc --version | sed "/FastQC v/!d; s/.*v//"'), emit: versions_fastqc, topic: versions + tuple val(meta), path("*.zip") , emit: zip + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" // Make list of old name and new name pairs to use for renaming in the bash while loop - def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[reads, "${prefix}.${reads.extension}"]] : reads.withIndex().collect { entry, index -> [entry, "${prefix}_${index + 1}.${entry.extension}"] } - def rename_to = old_new_pairs*.join(' ').join(' ') - def renamed_files = old_new_pairs.collect { _old_name, new_name -> new_name }.join(' ') + def old_new_pairs = reads instanceof Path || reads.size() == 1 ? [[ reads, "${prefix}.${reads.extension}" ]] : reads.withIndex().collect { entry, index -> [ entry, "${prefix}_${index + 1}.${entry.extension}" ] } + def rename_to = old_new_pairs*.join(' ').join(' ') + def renamed_files = old_new_pairs.collect{ _old_name, new_name -> new_name }.join(' ') // The total amount of allocated RAM by FastQC is equal to the number of threads defined (--threads) time the amount of RAM defined (--memory) // https://github.com/s-andrews/FastQC/blob/1faeea0412093224d7f6a07f777fad60a5650795/fastqc#L211-L222 - // Dividing the task.memory by task.cpus allows to stick to requested amount of RAM in the label - def memory_in_mb = task.memory - ? (task.memory.toUnit('MB') / task.cpus).intValue() - : null + // Dividing the task.memory by task.cpu allows to stick to requested amount of RAM in the label + def memory_in_mb = task.memory ? task.memory.toUnit('MB') / task.cpus : null // FastQC memory value allowed range (100 - 10000) def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb) - def fastqc_memory_arg = fastqc_memory ? "--memory ${fastqc_memory}" : '' """ printf "%s %s\\n" ${rename_to} | while read old_name new_name; do @@ -44,8 +41,13 @@ process FASTQC { fastqc \\ ${args} \\ --threads ${task.cpus} \\ - ${fastqc_memory_arg} \\ + --memory ${fastqc_memory} \\ ${renamed_files} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) + END_VERSIONS """ stub: @@ -53,5 +55,10 @@ process FASTQC { """ touch ${prefix}.html touch ${prefix}.zip + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) + END_VERSIONS """ } diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml index 2f6cfef6..c8d9d025 100644 --- a/modules/nf-core/fastqc/meta.yml +++ b/modules/nf-core/fastqc/meta.yml @@ -53,28 +53,13 @@ output: description: FastQC report archive pattern: "*_{fastqc.zip}" ontologies: [] - versions_fastqc: - - - ${task.process}: - type: string - description: The process the versions were collected from - - fastqc: - type: string - description: The tool name - - fastqc --version | sed "/FastQC v/!d; s/.*v//": - type: eval - description: The expression to obtain the version of the tool - -topics: versions: - - - ${task.process}: - type: string - description: The process the versions were collected from - - fastqc: - type: string - description: The tool name - - fastqc --version | sed "/FastQC v/!d; s/.*v//": - type: eval - description: The expression to obtain the version of the tool + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@drpatelh" - "@grst" @@ -85,27 +70,3 @@ maintainers: - "@grst" - "@ewels" - "@FelixKrueger" -containers: - docker: - linux/arm64: - name: community.wave.seqera.io/library/fastqc:0.12.1--e455e32f745abe68 - build_id: bd-e455e32f745abe68_1 - scan_id: sc-f102f736465af88c_1 - linux/amd64: - name: community.wave.seqera.io/library/fastqc:0.12.1--5cb1a2fa2f18c7c2 - build_id: bd-5cb1a2fa2f18c7c2_1 - scan_id: sc-0c0466326b6b77d2_1 - singularity: - linux/amd64: - name: oras://community.wave.seqera.io/library/fastqc:0.12.1--5c4bd442468d75dd - build_id: bd-5c4bd442468d75dd_1 - https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/f2/f20b021476d1d87658820f971ebecc1e8cdbde0f338eb0d9cea2b0a8fc54a54b/data - linux/arm64: - name: oras://community.wave.seqera.io/library/fastqc:0.12.1--127a87fc06499035 - build_id: bd-127a87fc06499035_1 - https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/46/46daf2dad0169afd2ae047c3e50ed3776259f664bf07e5e06b045dc23449e994/data - conda: - linux/amd64: - lock_file: modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt - linux/arm64: - lock_file: modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index 66c44da9..e9d79a07 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -30,7 +30,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert snapshot(process.out.versions).match() } ) } } @@ -58,7 +58,7 @@ nextflow_process { { assert process.out.zip[0][1][1] ==~ ".*/test_2_fastqc.zip" }, { assert path(process.out.html[0][1][0]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert snapshot(process.out.versions).match() } ) } } @@ -82,7 +82,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert snapshot(process.out.versions).match() } ) } } @@ -106,7 +106,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/test_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/test_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert snapshot(process.out.versions).match() } ) } } @@ -142,7 +142,7 @@ nextflow_process { { assert path(process.out.html[0][1][1]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][1][2]).text.contains("File typeConventional base calls") }, { assert path(process.out.html[0][1][3]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert snapshot(process.out.versions).match() } ) } } @@ -166,7 +166,7 @@ nextflow_process { { assert process.out.html[0][1] ==~ ".*/mysample_fastqc.html" }, { assert process.out.zip[0][1] ==~ ".*/mysample_fastqc.zip" }, { assert path(process.out.html[0][1]).text.contains("File typeConventional base calls") }, - { assert snapshot(sanitizeOutput(process.out).findAll { key, val -> key != 'html' && key != 'zip' }).match() } + { assert snapshot(process.out.versions).match() } ) } } diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap index c8ee120f..d5db3092 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test.snap +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -1,21 +1,15 @@ { "sarscov2 custom_prefix": { "content": [ - { - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ] - } + [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:39:14.518503" + "timestamp": "2024-07-22T11:02:16.374038" }, "sarscov2 single-end [fastq] - stub": { "content": [ @@ -39,11 +33,7 @@ ] ], "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "html": [ [ @@ -54,12 +44,8 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "zip": [ [ @@ -73,10 +59,10 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:39:19.309008" + "timestamp": "2024-07-22T11:02:24.993809" }, "sarscov2 custom_prefix - stub": { "content": [ @@ -100,11 +86,7 @@ ] ], "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "html": [ [ @@ -115,12 +97,8 @@ "mysample.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "zip": [ [ @@ -134,82 +112,58 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:39:44.94888" + "timestamp": "2024-07-22T11:03:10.93942" }, "sarscov2 interleaved [fastq]": { "content": [ - { - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ] - } + [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:38:45.168496" + "timestamp": "2024-07-22T11:01:42.355718" }, "sarscov2 paired-end [bam]": { "content": [ - { - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ] - } + [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:38:53.268919" + "timestamp": "2024-07-22T11:01:53.276274" }, "sarscov2 multiple [fastq]": { "content": [ - { - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ] - } + [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:39:05.050305" + "timestamp": "2024-07-22T11:02:05.527626" }, "sarscov2 paired-end [fastq]": { "content": [ - { - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ] - } + [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:38:37.2373" + "timestamp": "2024-07-22T11:01:31.188871" }, "sarscov2 paired-end [fastq] - stub": { "content": [ @@ -233,11 +187,7 @@ ] ], "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "html": [ [ @@ -248,12 +198,8 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "zip": [ [ @@ -267,10 +213,10 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:39:24.450398" + "timestamp": "2024-07-22T11:02:34.273566" }, "sarscov2 multiple [fastq] - stub": { "content": [ @@ -294,11 +240,7 @@ ] ], "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "html": [ [ @@ -309,12 +251,8 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "zip": [ [ @@ -328,28 +266,22 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:39:39.758762" + "timestamp": "2024-07-22T11:03:02.304411" }, "sarscov2 single-end [fastq]": { "content": [ - { - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] - ] - } + [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:38:29.555068" + "timestamp": "2024-07-22T11:01:19.095607" }, "sarscov2 interleaved [fastq] - stub": { "content": [ @@ -373,11 +305,7 @@ ] ], "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "html": [ [ @@ -388,12 +316,8 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "zip": [ [ @@ -407,10 +331,10 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:39:29.193136" + "timestamp": "2024-07-22T11:02:44.640184" }, "sarscov2 paired-end [bam] - stub": { "content": [ @@ -434,11 +358,7 @@ ] ], "2": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "html": [ [ @@ -449,12 +369,8 @@ "test.html:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "versions_fastqc": [ - [ - "FASTQC", - "fastqc", - "0.12.1" - ] + "versions": [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" ], "zip": [ [ @@ -468,9 +384,9 @@ } ], "meta": { - "nf-test": "0.9.2", - "nextflow": "25.10.0" + "nf-test": "0.9.0", + "nextflow": "24.04.3" }, - "timestamp": "2025-10-28T16:39:34.144919" + "timestamp": "2024-07-22T11:02:53.550742" } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt b/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt deleted file mode 100644 index 76190304..00000000 --- a/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt +++ /dev/null @@ -1,1552 +0,0 @@ - -version: 6 -environments: -default: -channels: -- url: https://conda.anaconda.org/conda-forge/ -- url: https://conda.anaconda.org/bioconda/ -- url: https://conda.anaconda.org/bioconda/ -options: -pypi-prerelease-mode: if-necessary-or-explicit -packages: -linux-64: -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.4-hecca717_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/kaleido-core-0.2.1-h3644ca4_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/mathjax-2.7.7-ha770c72_3.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda -- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.38-h29cc59b_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.118-h445c969_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py314h8ec4b1a_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.39.3-py310hffdcd12_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-compat-1.39.3-py310hbcd5346_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py314h2e6c369_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.2.28-py314h5bd0f2a_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py314h2e6c369_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.52.0-h04a0ce9_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.12.0-py314h67fec18_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda -packages: -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda -build_number: 20 -sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 -md5: a9f577daf3de00bca7c3c76c0ecbd1de -depends: -- __glibc >=2.17,<3.0.a0 -- libgomp >=7.5.0 -constrains: -- openmp_impl <0.0a0 -license: BSD-3-Clause -license_family: BSD -size: 28948 -timestamp: 1770939786096 -- conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda -sha256: a3967b937b9abf0f2a99f3173fa4630293979bd1644709d89580e7c62a544661 -md5: aaa2a381ccc56eac91d63b6c1240312f -depends: -- cpython -- python-gil -license: MIT -license_family: MIT -size: 8191 -timestamp: 1744137672556 -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda -sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 -md5: 2934f256a8acfe48f6ebb4fce6cde29c -depends: -- python >=3.9 -- typing-extensions >=4.0.0 -license: MIT -license_family: MIT -size: 18074 -timestamp: 1733247158254 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda -sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab -md5: c6b0543676ecb1fb2d7643941fe375f2 -depends: -- python >=3.10 -- python -license: MIT -license_family: MIT -size: 64927 -timestamp: 1773935801332 -- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda -noarch: generic -sha256: c31ab719d256bc6f89926131e88ecd0f0c5d003fe8481852c6424f4ec6c7eb29 -md5: a2ac7763a9ac75055b68f325d3255265 -depends: -- python >=3.14 -license: BSD-3-Clause AND MIT AND EPL-2.0 -size: 7514 -timestamp: 1767044983590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda -sha256: 3ad3500bff54a781c29f16ce1b288b36606e2189d0b0ef2f67036554f47f12b0 -md5: 8910d2c46f7e7b519129f486e0fe927a -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libstdcxx >=14 -- python >=3.14,<3.15.0a0 -- python_abi 3.14.* *_cp314 -constrains: -- libbrotlicommon 1.2.0 hb03c661_1 -license: MIT -license_family: MIT -size: 367376 -timestamp: 1764017265553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda -sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 -md5: d2ffd7602c02f2b316fd921d39876885 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: bzip2-1.0.6 -license_family: BSD -size: 260182 -timestamp: 1771350215188 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc -md5: 4492fd26db29495f0ba23f146cd5638d -depends: -- __unix -license: ISC -size: 147413 -timestamp: 1772006283803 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda -sha256: a6b118fd1ed6099dc4fc03f9c492b88882a780fadaef4ed4f93dc70757713656 -md5: 765c4d97e877cdbbb88ff33152b86125 -depends: -- python >=3.10 -license: ISC -size: 151445 -timestamp: 1772001170301 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda -sha256: d86dfd428b2e3c364fa90e07437c8405d635aa4ef54b25ab51d9c712be4112a5 -md5: 49ee13eb9b8f44d63879c69b8a40a74b -depends: -- python >=3.10 -license: MIT -license_family: MIT -size: 58510 -timestamp: 1773660086450 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda -sha256: 38cfe1ee75b21a8361c8824f5544c3866f303af1762693a178266d7f198e8715 -md5: ea8a6c3256897cc31263de9f455e25d9 -depends: -- python >=3.10 -- __unix -- python -license: BSD-3-Clause -license_family: BSD -size: 97676 -timestamp: 1764518652276 -- conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda -sha256: 8021c76eeadbdd5784b881b165242db9449783e12ce26d6234060026fd6a8680 -md5: b866ff7007b934d564961066c8195983 -depends: -- humanfriendly >=9.1 -- python >=3.9 -license: MIT -license_family: MIT -size: 43758 -timestamp: 1733928076798 -- conda: https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda -sha256: 59c9e29800b483b390467f90e82b0da3a4fbf0612efe1c90813fca232780e160 -md5: 071cf7b0ce333c81718b054066c15102 -depends: -- networkx >=2.0 -- numpy -- python >=3.9 -license: BSD-3-Clause -license_family: BSD -size: 39326 -timestamp: 1735759976140 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda -noarch: generic -sha256: 91b06300879df746214f7363d6c27c2489c80732e46a369eb2afc234bcafb44c -md5: 3bb89e4f795e5414addaa531d6b1500a -depends: -- python >=3.14,<3.15.0a0 -- python_abi * *_cp314 -license: Python-2.0 -size: 50078 -timestamp: 1770674447292 -- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.4-hecca717_0.conda -sha256: 0cc345e4dead417996ce9a1f088b28d858f03d113d43c1963d29194366dcce27 -md5: a0535741a4934b3e386051065c58761a -depends: -- __glibc >=2.17,<3.0.a0 -- libexpat 2.7.4 hecca717_0 -- libgcc >=14 -license: MIT -license_family: MIT -size: 145274 -timestamp: 1771259434699 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 -sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b -md5: 0c96522c6bdaed4b1566d11387caaf45 -license: BSD-3-Clause -license_family: BSD -size: 397370 -timestamp: 1566932522327 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 -sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c -md5: 34893075a5c9e55cdafac56607368fc6 -license: OFL-1.1 -license_family: Other -size: 96530 -timestamp: 1620479909603 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 -sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 -md5: 4d59c254e01d9cde7957100457e2d5fb -license: OFL-1.1 -license_family: Other -size: 700814 -timestamp: 1620479612257 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda -sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 -md5: 49023d73832ef61042f6a237cb2687e7 -license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 -license_family: Other -size: 1620504 -timestamp: 1727511233259 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda -sha256: aa4a44dba97151221100a637c7f4bde619567afade9c0265f8e1c8eed8d7bd8c -md5: 867127763fbe935bab59815b6e0b7b5c -depends: -- __glibc >=2.17,<3.0.a0 -- libexpat >=2.7.4,<3.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 -- libgcc >=14 -- libuuid >=2.41.3,<3.0a0 -- libzlib >=1.3.1,<2.0a0 -license: MIT -license_family: MIT -size: 270705 -timestamp: 1771382710863 -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda -sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 -md5: a7970cd949a077b7cb9696379d338681 -depends: -- font-ttf-ubuntu -- font-ttf-inconsolata -- font-ttf-dejavu-sans-mono -- font-ttf-source-code-pro -license: BSD-3-Clause -license_family: BSD -size: 4059 -timestamp: 1762351264405 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda -sha256: 84c64443368f84b600bfecc529a1194a3b14c3656ee2e832d15a20e0329b6da3 -md5: 164fc43f0b53b6e3a7bc7dce5e4f1dc9 -depends: -- python >=3.10 -- hyperframe >=6.1,<7 -- hpack >=4.1,<5 -- python -license: MIT -license_family: MIT -size: 95967 -timestamp: 1756364871835 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda -sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba -md5: 0a802cb9888dd14eeefc611f05c40b6e -depends: -- python >=3.9 -license: MIT -license_family: MIT -size: 30731 -timestamp: 1737618390337 -- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda -sha256: fa2071da7fab758c669e78227e6094f6b3608228740808a6de5d6bce83d9e52d -md5: 7fe569c10905402ed47024fc481bb371 -depends: -- __unix -- python >=3.9 -license: MIT -license_family: MIT -size: 73563 -timestamp: 1733928021866 -- conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda -sha256: 6c4343b376d0b12a4c75ab992640970d36c933cad1fd924f6a1181fa91710e80 -md5: daddf757c3ecd6067b9af1df1f25d89e -depends: -- python >=3.10 -license: MIT -license_family: MIT -size: 67994 -timestamp: 1766267728652 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda -sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 -md5: 8e6923fc12f1fe8f8c4e5c9f343256ac -depends: -- python >=3.9 -license: MIT -license_family: MIT -size: 17397 -timestamp: 1737618427549 -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda -sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a -md5: c80d8a3b84358cb967fa81e7075fbc8a -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libstdcxx >=14 -license: MIT -license_family: MIT -size: 12723451 -timestamp: 1773822285671 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda -sha256: ae89d0299ada2a3162c2614a9d26557a92aa6a77120ce142f8e0109bbf0342b0 -md5: 53abe63df7e10a6ba605dc5f9f961d36 -depends: -- python >=3.10 -license: BSD-3-Clause -license_family: BSD -size: 50721 -timestamp: 1760286526795 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda -sha256: 82ab2a0d91ca1e7e63ab6a4939356667ef683905dea631bc2121aa534d347b16 -md5: 080594bf4493e6bae2607e65390c520a -depends: -- python >=3.10 -- zipp >=3.20 -- python -license: Apache-2.0 -license_family: APACHE -size: 34387 -timestamp: 1773931568510 -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda -sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b -md5: 04558c96691bed63104678757beb4f8d -depends: -- markupsafe >=2.0 -- python >=3.10 -- python -license: BSD-3-Clause -license_family: BSD -size: 120685 -timestamp: 1764517220861 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda -sha256: db973a37d75db8e19b5f44bbbdaead0c68dde745407f281e2a7fe4db74ec51d7 -md5: ada41c863af263cc4c5fcbaff7c3e4dc -depends: -- attrs >=22.2.0 -- jsonschema-specifications >=2023.3.6 -- python >=3.10 -- referencing >=0.28.4 -- rpds-py >=0.25.0 -- python -license: MIT -license_family: MIT -size: 82356 -timestamp: 1767839954256 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda -sha256: 0a4f3b132f0faca10c89fdf3b60e15abb62ded6fa80aebfc007d05965192aa04 -md5: 439cd0f567d697b20a8f45cb70a1005a -depends: -- python >=3.10 -- referencing >=0.31.0 -- python -license: MIT -license_family: MIT -size: 19236 -timestamp: 1757335715225 -- conda: https://conda.anaconda.org/conda-forge/linux-64/kaleido-core-0.2.1-h3644ca4_0.tar.bz2 -sha256: 7f243680ca03eba7457b7a48f93a9440ba8181a8eac20a3eb5ef165ab6c96664 -md5: b3723b235b0758abaae8c82ce4d80146 -depends: -- __glibc >=2.17,<3.0.a0 -- expat >=2.2.10,<3.0.0a0 -- fontconfig -- fonts-conda-forge -- libgcc-ng >=9.3.0 -- mathjax 2.7.* -- nspr >=4.29,<5.0a0 -- nss >=3.62,<4.0a0 -- sqlite >=3.34.0,<4.0a0 -license: MIT -license_family: MIT -size: 62099926 -timestamp: 1615199463039 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda -sha256: 836ec4b895352110335b9fdcfa83a8dcdbe6c5fb7c06c4929130600caea91c0a -md5: 6f2e2c8f58160147c4d1c6f4c14cbac4 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libjpeg-turbo >=3.1.2,<4.0a0 -- libtiff >=4.7.1,<4.8.0a0 -license: MIT -license_family: MIT -size: 249959 -timestamp: 1768184673131 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda -sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c -md5: 18335a698559cdbcd86150a48bf54ba6 -depends: -- __glibc >=2.17,<3.0.a0 -- zstd >=1.5.7,<1.6.0a0 -constrains: -- binutils_impl_linux-64 2.45.1 -license: GPL-3.0-only -license_family: GPL -size: 728002 -timestamp: 1774197446916 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda -sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1 -md5: a752488c68f2e7c456bcbd8f16eec275 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libstdcxx >=14 -license: Apache-2.0 -license_family: Apache -size: 261513 -timestamp: 1773113328888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda -build_number: 5 -sha256: 18c72545080b86739352482ba14ba2c4815e19e26a7417ca21a95b76ec8da24c -md5: c160954f7418d7b6e87eaf05a8913fa9 -depends: -- libopenblas >=0.3.30,<0.3.31.0a0 -- libopenblas >=0.3.30,<1.0a0 -constrains: -- mkl <2026 -- liblapack 3.11.0 5*_openblas -- libcblas 3.11.0 5*_openblas -- blas 2.305 openblas -- liblapacke 3.11.0 5*_openblas -license: BSD-3-Clause -license_family: BSD -size: 18213 -timestamp: 1765818813880 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda -build_number: 5 -sha256: 0cbdcc67901e02dc17f1d19e1f9170610bd828100dc207de4d5b6b8ad1ae7ad8 -md5: 6636a2b6f1a87572df2970d3ebc87cc0 -depends: -- libblas 3.11.0 5_h4a7cf45_openblas -constrains: -- liblapacke 3.11.0 5*_openblas -- blas 2.305 openblas -- liblapack 3.11.0 5*_openblas -license: BSD-3-Clause -license_family: BSD -size: 18194 -timestamp: 1765818837135 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda -sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 -md5: 6c77a605a7a689d17d4819c0f8ac9a00 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: MIT -license_family: MIT -size: 73490 -timestamp: 1761979956660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda -sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5 -md5: e7f7ce06ec24cfcfb9e36d28cf82ba57 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -constrains: -- expat 2.7.4.* -license: MIT -license_family: MIT -size: 76798 -timestamp: 1771259418166 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda -sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 -md5: a360c33a5abe61c07959e449fa1453eb -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: MIT -license_family: MIT -size: 58592 -timestamp: 1769456073053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda -sha256: 38f014a7129e644636e46064ecd6b1945e729c2140e21d75bb476af39e692db2 -md5: e289f3d17880e44b633ba911d57a321b -depends: -- libfreetype6 >=2.14.3 -license: GPL-2.0-only OR FTL -size: 8049 -timestamp: 1774298163029 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda -sha256: 16f020f96da79db1863fcdd8f2b8f4f7d52f177dd4c58601e38e9182e91adf1d -md5: fb16b4b69e3f1dcfe79d80db8fd0c55d -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libpng >=1.6.55,<1.7.0a0 -- libzlib >=1.3.2,<2.0a0 -constrains: -- freetype >=2.14.3 -license: GPL-2.0-only OR FTL -size: 384575 -timestamp: 1774298162622 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda -sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 -md5: 0aa00f03f9e39fb9876085dee11a85d4 -depends: -- __glibc >=2.17,<3.0.a0 -- _openmp_mutex >=4.5 -constrains: -- libgcc-ng ==15.2.0=*_18 -- libgomp 15.2.0 he0feb66_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 1041788 -timestamp: 1771378212382 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda -sha256: e318a711400f536c81123e753d4c797a821021fb38970cebfb3f454126016893 -md5: d5e96b1ed75ca01906b3d2469b4ce493 -depends: -- libgcc 15.2.0 he0feb66_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 27526 -timestamp: 1771378224552 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda -sha256: d2c9fad338fd85e4487424865da8e74006ab2e2475bd788f624d7a39b2a72aee -md5: 9063115da5bc35fdc3e1002e69b9ef6e -depends: -- libgfortran5 15.2.0 h68bc16d_18 -constrains: -- libgfortran-ng ==15.2.0=*_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 27523 -timestamp: 1771378269450 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda -sha256: 539b57cf50ec85509a94ba9949b7e30717839e4d694bc94f30d41c9d34de2d12 -md5: 646855f357199a12f02a87382d429b75 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=15.2.0 -constrains: -- libgfortran 15.2.0 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 2482475 -timestamp: 1771378241063 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda -sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 -md5: 239c5e9546c38a1e884d69effcf4c882 -depends: -- __glibc >=2.17,<3.0.a0 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 603262 -timestamp: 1771378117851 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda -sha256: cc9aba923eea0af8e30e0f94f2ad7156e2984d80d1e8e7fe6be5a1f257f0eb32 -md5: 8397539e3a0bbd1695584fb4f927485a -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -constrains: -- jpeg <0.0.0a -license: IJG AND BSD-3-Clause AND Zlib -size: 633710 -timestamp: 1762094827865 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda -build_number: 5 -sha256: c723b6599fcd4c6c75dee728359ef418307280fa3e2ee376e14e85e5bbdda053 -md5: b38076eb5c8e40d0106beda6f95d7609 -depends: -- libblas 3.11.0 5_h4a7cf45_openblas -constrains: -- blas 2.305 openblas -- liblapacke 3.11.0 5*_openblas -- libcblas 3.11.0 5*_openblas -license: BSD-3-Clause -license_family: BSD -size: 18200 -timestamp: 1765818857876 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda -sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb -md5: c7c83eecbb72d88b940c249af56c8b17 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -constrains: -- xz 5.8.2.* -license: 0BSD -size: 113207 -timestamp: 1768752626120 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda -sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 -md5: 2c21e66f50753a083cbe6b80f38268fa -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: BSD-2-Clause -license_family: BSD -size: 92400 -timestamp: 1769482286018 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda -sha256: 199d79c237afb0d4780ccd2fbf829cea80743df60df4705202558675e07dd2c5 -md5: be43915efc66345cccb3c310b6ed0374 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libgfortran -- libgfortran5 >=14.3.0 -constrains: -- openblas >=0.3.30,<0.3.31.0a0 -license: BSD-3-Clause -license_family: BSD -size: 5927939 -timestamp: 1763114673331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda -sha256: 36ade759122cdf0f16e2a2562a19746d96cf9c863ffaa812f2f5071ebbe9c03c -md5: 5f13ffc7d30ffec87864e678df9957b4 -depends: -- libgcc >=14 -- __glibc >=2.17,<3.0.a0 -- libzlib >=1.3.1,<2.0a0 -license: zlib-acknowledgement -size: 317669 -timestamp: 1770691470744 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda -sha256: d716847b7deca293d2e49ed1c8ab9e4b9e04b9d780aea49a97c26925b28a7993 -md5: fd893f6a3002a635b5e50ceb9dd2c0f4 -depends: -- __glibc >=2.17,<3.0.a0 -- icu >=78.2,<79.0a0 -- libgcc >=14 -- libzlib >=1.3.1,<2.0a0 -license: blessing -size: 951405 -timestamp: 1772818874251 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda -sha256: 78668020064fdaa27e9ab65cd2997e2c837b564ab26ce3bf0e58a2ce1a525c6e -md5: 1b08cd684f34175e4514474793d44bcb -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc 15.2.0 he0feb66_18 -constrains: -- libstdcxx-ng ==15.2.0=*_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 5852330 -timestamp: 1771378262446 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda -sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0 -md5: cd5a90476766d53e901500df9215e927 -depends: -- __glibc >=2.17,<3.0.a0 -- lerc >=4.0.0,<5.0a0 -- libdeflate >=1.25,<1.26.0a0 -- libgcc >=14 -- libjpeg-turbo >=3.1.0,<4.0a0 -- liblzma >=5.8.1,<6.0a0 -- libstdcxx >=14 -- libwebp-base >=1.6.0,<2.0a0 -- libzlib >=1.3.1,<2.0a0 -- zstd >=1.5.7,<1.6.0a0 -license: HPND -size: 435273 -timestamp: 1762022005702 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda -sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee -md5: db409b7c1720428638e7c0d509d3e1b5 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: BSD-3-Clause -license_family: BSD -size: 40311 -timestamp: 1766271528534 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda -sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b -md5: aea31d2e5b1091feca96fcfe945c3cf9 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -constrains: -- libwebp 1.6.0 -license: BSD-3-Clause -license_family: BSD -size: 429011 -timestamp: 1752159441324 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda -sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa -md5: 92ed62436b625154323d40d5f2f11dd7 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -- pthread-stubs -- xorg-libxau >=1.0.11,<2.0a0 -- xorg-libxdmcp -license: MIT -license_family: MIT -size: 395888 -timestamp: 1727278577118 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda -sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 -md5: d87ff7921124eccd67248aa483c23fec -depends: -- __glibc >=2.17,<3.0.a0 -constrains: -- zlib 1.3.2 *_2 -license: Zlib -license_family: Other -size: 63629 -timestamp: 1774072609062 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda -sha256: 20e0892592a3e7c683e3d66df704a9425d731486a97c34fc56af4da1106b2b6b -md5: ba0a9221ce1063f31692c07370d062f3 -depends: -- importlib-metadata >=4.4 -- python >=3.10 -- python -license: BSD-3-Clause -license_family: BSD -size: 85893 -timestamp: 1770694658918 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda -sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e -md5: 5b5203189eb668f042ac2b0826244964 -depends: -- mdurl >=0.1,<1 -- python >=3.10 -license: MIT -license_family: MIT -size: 64736 -timestamp: 1754951288511 -- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda -sha256: c279be85b59a62d5c52f5dd9a4cd43ebd08933809a8416c22c3131595607d4cf -md5: 9a17c4307d23318476d7fbf0fedc0cde -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- python >=3.14,<3.15.0a0 -- python_abi 3.14.* *_cp314 -constrains: -- jinja2 >=3.0.0 -license: BSD-3-Clause -license_family: BSD -size: 27424 -timestamp: 1772445227915 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mathjax-2.7.7-ha770c72_3.tar.bz2 -sha256: 02fef69bde69db264a12f21386612262f545b6e3e68d8f1ccec19f3eaae58edf -md5: 86e69bd82c2a2c6fd29f5ab7e02b3691 -license: Apache-2.0 -license_family: Apache -size: 22281629 -timestamp: 1662784498331 -- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda -sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 -md5: 592132998493b3ff25fd7479396e8351 -depends: -- python >=3.9 -license: MIT -license_family: MIT -size: 14465 -timestamp: 1733255681319 -- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda -sha256: f005760b13093362fc9c997d603dd487de32ab2e821a3cbce52a42bcb8136517 -md5: 698a8a27c2b9d8a542c70cb47099a75e -depends: -- click -- coloredlogs -- humanize -- importlib-metadata -- jinja2 >=3.0.0 -- jsonschema -- markdown -- natsort -- numpy -- packaging -- pillow >=10.2.0 -- plotly >=5.18 -- polars-lts-cpu -- pyaml-env -- pydantic >=2.7.1 -- python >=3.8,!=3.14.1 -- python-dotenv -- python-kaleido 0.2.1 -- pyyaml >=4 -- requests -- rich >=10 -- rich-click -- spectra >=0.0.10 -- tiktoken -- tqdm -- typeguard -license: GPL-3.0-or-later -license_family: GPL3 -size: 4198799 -timestamp: 1765300743879 -- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda -sha256: 541fd4390a0687228b8578247f1536a821d9261389a65585af9d1a6f2a14e1e0 -md5: 30bec5e8f4c3969e2b1bd407c5e52afb -depends: -- python >=3.10 -- python -license: MIT -size: 280459 -timestamp: 1774380620329 -- conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda -sha256: aeb1548eb72e4f198e72f19d242fb695b35add2ac7b2c00e0d83687052867680 -md5: e941e85e273121222580723010bd4fa2 -depends: -- python >=3.9 -- python -license: MIT -license_family: MIT -size: 39262 -timestamp: 1770905275632 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda -sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 -md5: 47e340acb35de30501a76c7c799c41d7 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -license: X11 AND BSD-3-Clause -size: 891641 -timestamp: 1738195959188 -- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda -sha256: f6a82172afc50e54741f6f84527ef10424326611503c64e359e25a19a8e4c1c6 -md5: a2c1eeadae7a309daed9d62c96012a2b -depends: -- python >=3.11 -- python -constrains: -- numpy >=1.25 -- scipy >=1.11.2 -- matplotlib-base >=3.8 -- pandas >=2.0 -license: BSD-3-Clause -license_family: BSD -size: 1587439 -timestamp: 1765215107045 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.38-h29cc59b_0.conda -sha256: e3664264bd936c357523b55c71ed5a30263c6ba278d726a75b1eb112e6fb0b64 -md5: e235d5566c9cc8970eb2798dd4ecf62f -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libstdcxx >=14 -license: MPL-2.0 -license_family: MOZILLA -size: 228588 -timestamp: 1762348634537 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.118-h445c969_0.conda -sha256: 44dd98ffeac859d84a6dcba79a2096193a42fc10b29b28a5115687a680dd6aea -md5: 567fbeed956c200c1db5782a424e58ee -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libsqlite >=3.51.0,<4.0a0 -- libstdcxx >=14 -- libzlib >=1.3.1,<2.0a0 -- nspr >=4.38,<5.0a0 -license: MPL-2.0 -license_family: MOZILLA -size: 2057773 -timestamp: 1763485556350 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda -sha256: f2ba8cb0d86a6461a6bcf0d315c80c7076083f72c6733c9290086640723f79ec -md5: 36f5b7eb328bdc204954a2225cf908e2 -depends: -- python -- libstdcxx >=14 -- libgcc >=14 -- __glibc >=2.17,<3.0.a0 -- python_abi 3.14.* *_cp314 -- libcblas >=3.9.0,<4.0a0 -- liblapack >=3.9.0,<4.0a0 -- libblas >=3.9.0,<4.0a0 -constrains: -- numpy-base <0a0 -license: BSD-3-Clause -license_family: BSD -size: 8927860 -timestamp: 1773839233468 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda -sha256: 3900f9f2dbbf4129cf3ad6acf4e4b6f7101390b53843591c53b00f034343bc4d -md5: 11b3379b191f63139e29c0d19dee24cd -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libpng >=1.6.50,<1.7.0a0 -- libstdcxx >=14 -- libtiff >=4.7.1,<4.8.0a0 -- libzlib >=1.3.1,<2.0a0 -license: BSD-2-Clause -license_family: BSD -size: 355400 -timestamp: 1758489294972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda -sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c -md5: f61eb8cd60ff9057122a3d338b99c00f -depends: -- __glibc >=2.17,<3.0.a0 -- ca-certificates -- libgcc >=14 -license: Apache-2.0 -license_family: Apache -size: 3164551 -timestamp: 1769555830639 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda -sha256: c1fc0f953048f743385d31c468b4a678b3ad20caffdeaa94bed85ba63049fd58 -md5: b76541e68fea4d511b1ac46a28dcd2c6 -depends: -- python >=3.8 -- python -license: Apache-2.0 -license_family: APACHE -size: 72010 -timestamp: 1769093650580 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py314h8ec4b1a_0.conda -sha256: 9e6ec8f3213e8b7d64b0ad45f84c51a2c9eba4398efda31e196c9a56186133ee -md5: 79678378ae235e24b3aa83cee1b38207 -depends: -- python -- libgcc >=14 -- __glibc >=2.17,<3.0.a0 -- libwebp-base >=1.6.0,<2.0a0 -- zlib-ng >=2.3.3,<2.4.0a0 -- python_abi 3.14.* *_cp314 -- tk >=8.6.13,<8.7.0a0 -- libjpeg-turbo >=3.1.2,<4.0a0 -- libxcb >=1.17.0,<2.0a0 -- openjpeg >=2.5.4,<3.0a0 -- lcms2 >=2.18,<3.0a0 -- libtiff >=4.7.1,<4.8.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 -license: HPND -size: 1073026 -timestamp: 1770794002408 -- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda -sha256: c418d325359fc7a0074cea7f081ef1bce26e114d2da8a0154c5d27ecc87a08e7 -md5: 3e9427ee186846052e81fadde8ebe96a -depends: -- narwhals >=1.15.1 -- packaging -- python >=3.10 -constrains: -- ipywidgets >=7.6 -license: MIT -license_family: MIT -size: 5251872 -timestamp: 1772628857717 -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda -sha256: d332c2d5002fc440ae37ed9679ffc21b552f18d20232390005d1dd3bce0888d3 -md5: d5a4e013a30dd8dfde9ab39f45aaf9c1 -depends: -- polars-runtime-32 ==1.39.3 -- python >=3.10 -- python -constrains: -- numpy >=1.16.0 -- pyarrow >=7.0.0 -- fastexcel >=0.9 -- openpyxl >=3.0.0 -- xlsx2csv >=0.8.0 -- connectorx >=0.3.2 -- deltalake >=1.0.0 -- pyiceberg >=0.7.1 -- altair >=5.4.0 -- great_tables >=0.8.0 -- polars-runtime-32 ==1.39.3 -- polars-runtime-64 ==1.39.3 -- polars-runtime-compat ==1.39.3 -license: MIT -license_family: MIT -size: 533495 -timestamp: 1774207987966 -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda -sha256: e466fb31f67ba9bde18deafeb34263ca5eb25807f39ead0e9d753a8e82c4c4f4 -md5: ef0340e75068ac8ff96462749b5c98e7 -depends: -- polars >=1.34.0 -- polars-runtime-compat >=1.34.0 -license: MIT -license_family: MIT -size: 3902 -timestamp: 1760206808444 -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.39.3-py310hffdcd12_1.conda -noarch: python -sha256: 9744f8086bb0832998f5b01076f57ddc9efbe460e493b14303c3567dc4f401e7 -md5: f9327f9f2cfc4215f55b613e64afd3ba -depends: -- python -- libstdcxx >=14 -- libgcc >=14 -- __glibc >=2.17,<3.0.a0 -- _python_abi3_support 1.* -- cpython >=3.10 -constrains: -- __glibc >=2.17 -license: MIT -license_family: MIT -size: 37570276 -timestamp: 1774207987966 -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-compat-1.39.3-py310hbcd5346_1.conda -noarch: python -sha256: bf0b932713f0f27924f42159c98426e0073bb6145ed796eaa4cec79ca05363c7 -md5: 4b9b312453eebd6fbdbbe2a88fa1b5c4 -depends: -- python -- libgcc >=14 -- libstdcxx >=14 -- __glibc >=2.17,<3.0.a0 -- _python_abi3_support 1.* -- cpython >=3.10 -constrains: -- __glibc >=2.17 -license: MIT -license_family: MIT -size: 37224264 -timestamp: 1774207985377 -- conda: https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda -sha256: 4ce2e1ee31a6217998f78c31ce7dc0a3e0557d9238b51d49dd20c52d467a126d -md5: f2c23a77b25efcad57d377b34bd84941 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- ncurses >=6.5,<7.0a0 -license: GPL-2.0-or-later AND LGPL-2.0-or-later -license_family: GPL -size: 593603 -timestamp: 1769710381284 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda -sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 -md5: b3c17d95b5a10c6e64a21fa17573e70e -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=13 -license: MIT -license_family: MIT -size: 8252 -timestamp: 1726802366959 -- conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda -sha256: 58994e0d2ea8584cb399546e6f6896d771995e6121d1a7b6a2c9948388358932 -md5: e17be1016bcc3516827b836cd3e4d9dc -depends: -- python >=3.9 -- pyyaml >=5.0,<=7.0 -license: MIT -license_family: MIT -size: 14645 -timestamp: 1736766960536 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda -sha256: 868569d9505b7fe246c880c11e2c44924d7613a8cdcc1f6ef85d5375e892f13d -md5: c3946ed24acdb28db1b5d63321dbca7d -depends: -- typing-inspection >=0.4.2 -- typing_extensions >=4.14.1 -- python >=3.10 -- typing-extensions >=4.6.1 -- annotated-types >=0.6.0 -- pydantic-core ==2.41.5 -- python -license: MIT -license_family: MIT -size: 340482 -timestamp: 1764434463101 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py314h2e6c369_1.conda -sha256: 7e0ae379796e28a429f8e48f2fe22a0f232979d65ec455e91f8dac689247d39f -md5: 432b0716a1dfac69b86aa38fdd59b7e6 -depends: -- python -- typing-extensions >=4.6.0,!=4.7.0 -- libgcc >=14 -- __glibc >=2.17,<3.0.a0 -- python_abi 3.14.* *_cp314 -constrains: -- __glibc >=2.17 -license: MIT -license_family: MIT -size: 1943088 -timestamp: 1762988995556 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda -sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a -md5: 6b6ece66ebcae2d5f326c77ef2c5a066 -depends: -- python >=3.9 -license: BSD-2-Clause -license_family: BSD -size: 889287 -timestamp: 1750615908735 -- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda -sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 -md5: 461219d1a5bd61342293efa2c0c90eac -depends: -- __unix -- python >=3.9 -license: BSD-3-Clause -license_family: BSD -size: 21085 -timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda -build_number: 101 -sha256: cb0628c5f1732f889f53a877484da98f5a0e0f47326622671396fb4f2b0cd6bd -md5: c014ad06e60441661737121d3eae8a60 -depends: -- __glibc >=2.17,<3.0.a0 -- bzip2 >=1.0.8,<2.0a0 -- ld_impl_linux-64 >=2.36.1 -- libexpat >=2.7.3,<3.0a0 -- libffi >=3.5.2,<3.6.0a0 -- libgcc >=14 -- liblzma >=5.8.2,<6.0a0 -- libmpdec >=4.0.0,<5.0a0 -- libsqlite >=3.51.2,<4.0a0 -- libuuid >=2.41.3,<3.0a0 -- libzlib >=1.3.1,<2.0a0 -- ncurses >=6.5,<7.0a0 -- openssl >=3.5.5,<4.0a0 -- python_abi 3.14.* *_cp314 -- readline >=8.3,<9.0a0 -- tk >=8.6.13,<8.7.0a0 -- tzdata -- zstd >=1.5.7,<1.6.0a0 -license: Python-2.0 -size: 36702440 -timestamp: 1770675584356 -python_site_packages_path: lib/python3.14/site-packages -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda -sha256: 74e417a768f59f02a242c25e7db0aa796627b5bc8c818863b57786072aeb85e5 -md5: 130584ad9f3a513cdd71b1fdc1244e9c -depends: -- python >=3.10 -license: BSD-3-Clause -license_family: BSD -size: 27848 -timestamp: 1772388605021 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda -sha256: 233aebd94c704ac112afefbb29cf4170b7bc606e22958906f2672081bc50638a -md5: 235765e4ea0d0301c75965985163b5a1 -depends: -- cpython 3.14.3.* -- python_abi * *_cp314 -license: Python-2.0 -size: 50062 -timestamp: 1770674497152 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 -sha256: e17bf63a30aec33432f1ead86e15e9febde9fc40a7f869c0e766be8d2db44170 -md5: 310259a5b03ff02289d7705f39e2b1d2 -depends: -- kaleido-core 0.2.1.* -- python >=3.5 -license: MIT -license_family: MIT -size: 18320 -timestamp: 1615204747600 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda -build_number: 8 -sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 -md5: 0539938c55b6b1a59b560e843ad864a4 -constrains: -- python 3.14.* *_cp314 -license: BSD-3-Clause -license_family: BSD -size: 6989 -timestamp: 1752805904792 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda -sha256: b318fb070c7a1f89980ef124b80a0b5ccf3928143708a85e0053cde0169c699d -md5: 2035f68f96be30dc60a5dfd7452c7941 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- python >=3.14,<3.15.0a0 -- python_abi 3.14.* *_cp314 -- yaml >=0.2.5,<0.3.0a0 -license: MIT -license_family: MIT -size: 202391 -timestamp: 1770223462836 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda -sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 -md5: d7d95fc8287ea7bf33e0e7116d2b95ec -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- ncurses >=6.5,<7.0a0 -license: GPL-3.0-only -license_family: GPL -size: 345073 -timestamp: 1765813471974 -- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda -sha256: 0577eedfb347ff94d0f2fa6c052c502989b028216996b45c7f21236f25864414 -md5: 870293df500ca7e18bedefa5838a22ab -depends: -- attrs >=22.2.0 -- python >=3.10 -- rpds-py >=0.7.0 -- typing_extensions >=4.4.0 -- python -license: MIT -license_family: MIT -size: 51788 -timestamp: 1760379115194 -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.2.28-py314h5bd0f2a_0.conda -sha256: e085e336f1446f5263a3ec9747df8c719b6996753901181add50dc4fdd8bb2e8 -md5: 3c8b6a8c4d0ff5a264e9831eac4941f4 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- python >=3.14,<3.15.0a0 -- python_abi 3.14.* *_cp314 -license: Apache-2.0 AND CNRI-Python -license_family: PSF -size: 411924 -timestamp: 1772255161535 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda -sha256: 7813c38b79ae549504b2c57b3f33394cea4f2ad083f0994d2045c2e24cb538c5 -md5: c65df89a0b2e321045a9e01d1337b182 -depends: -- python >=3.10 -- certifi >=2017.4.17 -- charset-normalizer >=2,<4 -- idna >=2.5,<4 -- urllib3 >=1.21.1,<3 -- python -constrains: -- chardet >=3.0.2,<6 -license: Apache-2.0 -license_family: APACHE -size: 63602 -timestamp: 1766926974520 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda -sha256: b06ce84d6a10c266811a7d3adbfa1c11f13393b91cc6f8a5b468277d90be9590 -md5: 7a6289c50631d620652f5045a63eb573 -depends: -- markdown-it-py >=2.2.0 -- pygments >=2.13.0,<3.0.0 -- python >=3.10 -- typing_extensions >=4.0.0,<5.0.0 -- python -license: MIT -license_family: MIT -size: 208472 -timestamp: 1771572730357 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda -sha256: aa3fcb167321bae51998de2e94d199109c9024f25a5a063cb1c28d8f1af33436 -md5: 0c20a8ebcddb24a45da89d5e917e6cb9 -depends: -- python >=3.10 -- rich >=12 -- click >=8 -- typing-extensions >=4 -- __unix -- python -license: MIT -license_family: MIT -size: 64356 -timestamp: 1769850479089 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py314h2e6c369_0.conda -sha256: e53b0cbf3b324eaa03ca1fe1a688fdf4ab42cea9c25270b0a7307d8aaaa4f446 -md5: c1c368b5437b0d1a68f372ccf01cb133 -depends: -- python -- libgcc >=14 -- __glibc >=2.17,<3.0.a0 -- python_abi 3.14.* *_cp314 -constrains: -- __glibc >=2.17 -license: MIT -license_family: MIT -size: 376121 -timestamp: 1764543122774 -- conda: https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda -sha256: 7c65782d2511738e62c70462e89d65da4fa54d5a7e47c46667bcd27a59f81876 -md5: 472239e4eb7b5a84bb96b3ed7e3a596a -depends: -- colormath >=3.0.0 -- python >=3.9 -license: MIT -license_family: MIT -size: 22284 -timestamp: 1735770589188 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.52.0-h04a0ce9_0.conda -sha256: c9af81e7830d9c4b67a7f48e512d060df2676b29cac59e3b31f09dbfcee29c58 -md5: 7d9d7efe9541d4bb71b5934e8ee348ea -depends: -- __glibc >=2.17,<3.0.a0 -- icu >=78.2,<79.0a0 -- libgcc >=14 -- libsqlite 3.52.0 hf4e2dac_0 -- libzlib >=1.3.1,<2.0a0 -- ncurses >=6.5,<7.0a0 -- readline >=8.3,<9.0a0 -license: blessing -size: 203641 -timestamp: 1772818888368 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.12.0-py314h67fec18_3.conda -sha256: 7e395d67fd249d901beb1ae269057763c0d8c3ee5f7a348694bdb16d158a37d9 -md5: d705f9d8a1185a2b01cced191177a028 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libstdcxx >=14 -- python >=3.14,<3.15.0a0 -- python_abi 3.14.* *_cp314 -- regex >=2022.1.18 -- requests >=2.26.0 -constrains: -- __glibc >=2.17 -license: MIT -license_family: MIT -size: 939648 -timestamp: 1764028306357 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda -sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac -md5: cffd3bdd58090148f4cfcd831f4b26ab -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libzlib >=1.3.1,<2.0a0 -constrains: -- xorg-libx11 >=1.8.12,<2.0a0 -license: TCL -license_family: BSD -size: 3301196 -timestamp: 1769460227866 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda -sha256: 9ef8e47cf00e4d6dcc114eb32a1504cc18206300572ef14d76634ba29dfe1eb6 -md5: e5ce43272193b38c2e9037446c1d9206 -depends: -- python >=3.10 -- __unix -- python -license: MPL-2.0 and MIT -size: 94132 -timestamp: 1770153424136 -- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda -sha256: 39d8ae33c43cdb8f771373e149b0b4fae5a08960ac58dcca95b2f1642bb17448 -md5: 260af1b0a94f719de76b4e14094e9a3b -depends: -- importlib-metadata >=3.6 -- python >=3.10 -- typing-extensions >=4.10.0 -- typing_extensions >=4.14.0 -constrains: -- pytest >=7 -license: MIT -license_family: MIT -size: 36838 -timestamp: 1771532971545 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda -sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c -md5: edd329d7d3a4ab45dcf905899a7a6115 -depends: -- typing_extensions ==4.15.0 pyhcf101f3_0 -license: PSF-2.0 -license_family: PSF -size: 91383 -timestamp: 1756220668932 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda -sha256: 70db27de58a97aeb7ba7448366c9853f91b21137492e0b4430251a1870aa8ff4 -md5: a0a4a3035667fc34f29bfbd5c190baa6 -depends: -- python >=3.10 -- typing_extensions >=4.12.0 -license: MIT -license_family: MIT -size: 18923 -timestamp: 1764158430324 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda -sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 -md5: 0caa1af407ecff61170c9437a808404d -depends: -- python >=3.10 -- python -license: PSF-2.0 -license_family: PSF -size: 51692 -timestamp: 1756220668932 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda -sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c -md5: ad659d0a2b3e47e38d829aa8cad2d610 -license: LicenseRef-Public-Domain -size: 119135 -timestamp: 1767016325805 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda -sha256: af641ca7ab0c64525a96fd9ad3081b0f5bcf5d1cbb091afb3f6ed5a9eee6111a -md5: 9272daa869e03efe68833e3dc7a02130 -depends: -- backports.zstd >=1.0.0 -- brotli-python >=1.2.0 -- h2 >=4,<5 -- pysocks >=1.5.6,<2.0,!=1.5.7 -- python >=3.10 -license: MIT -license_family: MIT -size: 103172 -timestamp: 1767817860341 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda -sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b -md5: b2895afaf55bf96a8c8282a2e47a5de0 -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: MIT -license_family: MIT -size: 15321 -timestamp: 1762976464266 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda -sha256: 25d255fb2eef929d21ff660a0c687d38a6d2ccfbcbf0cc6aa738b12af6e9d142 -md5: 1dafce8548e38671bea82e3f5c6ce22f -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -license: MIT -license_family: MIT -size: 20591 -timestamp: 1762976546182 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda -sha256: 6d9ea2f731e284e9316d95fa61869fe7bbba33df7929f82693c121022810f4ad -md5: a77f85f77be52ff59391544bfe73390a -depends: -- libgcc >=14 -- __glibc >=2.17,<3.0.a0 -license: MIT -license_family: MIT -size: 85189 -timestamp: 1753484064210 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda -sha256: b4533f7d9efc976511a73ef7d4a2473406d7f4c750884be8e8620b0ce70f4dae -md5: 30cd29cb87d819caead4d55184c1d115 -depends: -- python >=3.10 -- python -license: MIT -license_family: MIT -size: 24194 -timestamp: 1764460141901 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda -sha256: ea4e50c465d70236408cb0bfe0115609fd14db1adcd8bd30d8918e0291f8a75f -md5: 2aadb0d17215603a82a2a6b0afd9a4cb -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libstdcxx >=14 -license: Zlib -license_family: Other -size: 122618 -timestamp: 1770167931827 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda -sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 -md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 -depends: -- __glibc >=2.17,<3.0.a0 -- libzlib >=1.3.1,<2.0a0 -license: BSD-3-Clause -license_family: BSD -size: 601375 -timestamp: 1764777111296 diff --git a/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt b/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt deleted file mode 100644 index a55a4d49..00000000 --- a/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt +++ /dev/null @@ -1,126 +0,0 @@ - -# This file may be used to create an environment using: -# $ conda create --name --file -# platform: linux-64 -@EXPLICIT -https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda#239c5e9546c38a1e884d69effcf4c882 -https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda#a9f577daf3de00bca7c3c76c0ecbd1de -https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda#0aa00f03f9e39fb9876085dee11a85d4 -https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda#d2ffd7602c02f2b316fd921d39876885 -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda#d87ff7921124eccd67248aa483c23fec -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda#4a13eeac0b5c8e5b8ab496e6c4ddd829 -https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda#18335a698559cdbcd86150a48bf54ba6 -https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.5-hecca717_0.conda#49f570f3bc4c874a06ea69b7225753af -https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda#a360c33a5abe61c07959e449fa1453eb -https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda#b88d90cad08e6bc8ad540cb310a761fb -https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda#2c21e66f50753a083cbe6b80f38268fa -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda#1b08cd684f34175e4514474793d44bcb -https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda#c80d8a3b84358cb967fa81e7075fbc8a -https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.0-hf4e2dac_0.conda#810d83373448da85c3f673fbcb7ad3a3 -https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42-h5347b49_0.conda#38ffe67b78c9d4de527be8315e5ada2c -https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda#47e340acb35de30501a76c7c799c41d7 -https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda#e18ad67cf881dcadee8b8d9e2f8e5f73 -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda#da1b85b6a87e141f5140bb9924cecab0 -https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda#0539938c55b6b1a59b560e843ad864a4 -https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda#d7d95fc8287ea7bf33e0e7116d2b95ec -https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda#cffd3bdd58090148f4cfcd831f4b26ab -https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda#ad659d0a2b3e47e38d829aa8cad2d610 -https://conda.anaconda.org/conda-forge/linux-64/python-3.14.4-habeac84_100_cp314.conda#a443f87920815d41bfe611296e507995 -https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.4-py314hd8ed1ab_100.conda#f111d4cfaf1fe9496f386bc98ae94452 -https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.4-h4df99d1_100.conda#e4e60721757979d01d3964122f674959 -https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f -https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda#0caa1af407ecff61170c9437a808404d -https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda#edd329d7d3a4ab45dcf905899a7a6115 -https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c -https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda#c6b0543676ecb1fb2d7643941fe375f2 -https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda#a2ac7763a9ac75055b68f325d3255265 -https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda#8910d2c46f7e7b519129f486e0fe927a -https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda#929471569c93acefb30282a22060dcd5 -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda#a9167b9571f3baa9d448faa2139d1089 -https://conda.anaconda.org/conda-forge/noarch/click-8.3.2-pyhc90fa1f_0.conda#4d18bc3af7cfcea97bd817164672a08c -https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 -https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda#b866ff7007b934d564961066c8195983 -https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda#a2c1eeadae7a309daed9d62c96012a2b -https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda#646855f357199a12f02a87382d429b75 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda#9063115da5bc35fdc3e1002e69b9ef6e -https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.32-pthreads_h94d23a6_0.conda#89d61bc91d3f39fda0ca10fcd3c68594 -https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-6_h4a7cf45_openblas.conda#6d6d225559bfa6e2f3c90ee9c03d4e2e -https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-6_h0358290_openblas.conda#36ae340a916635b97ac8a0655ace2a35 -https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-6_h47877c9_openblas.conda#881d801569b201c2e753f03c84b85e15 -https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda#36f5b7eb328bdc204954a2225cf908e2 -https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda#071cf7b0ce333c81718b054066c15102 -https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.5-hecca717_0.conda#7de50d165039df32d38be74c1b34a910 -https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 -https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 -https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb -https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 -https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda#eba48a68a1a2b9d3c0d9511548db85db -https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda#fb16b4b69e3f1dcfe79d80db8fd0c55d -https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda#e289f3d17880e44b633ba911d57a321b -https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda#867127763fbe935bab59815b6e0b7b5c -https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda#a7970cd949a077b7cb9696379d338681 -https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e -https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac -https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda#164fc43f0b53b6e3a7bc7dce5e4f1dc9 -https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda#daddf757c3ecd6067b9af1df1f25d89e -https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda#fb7130c190f9b4ec91219840a05ba3ac -https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.1-pyhcf101f3_0.conda#e1c36c6121a7c9c76f2f148f1e83b983 -https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda#080594bf4493e6bae2607e65390c520a -https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda#9a17c4307d23318476d7fbf0fedc0cde -https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda#04558c96691bed63104678757beb4f8d -https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py314h2e6c369_0.conda#c1c368b5437b0d1a68f372ccf01cb133 -https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda#870293df500ca7e18bedefa5838a22ab -https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda#439cd0f567d697b20a8f45cb70a1005a -https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda#ada41c863af263cc4c5fcbaff7c3e4dc -https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda#d5e96b1ed75ca01906b3d2469b4ce493 -https://conda.anaconda.org/conda-forge/linux-64/mathjax-2.7.7-ha770c72_3.tar.bz2#86e69bd82c2a2c6fd29f5ab7e02b3691 -https://conda.anaconda.org/conda-forge/linux-64/nspr-4.38-h29cc59b_0.conda#e235d5566c9cc8970eb2798dd4ecf62f -https://conda.anaconda.org/conda-forge/linux-64/nss-3.118-h445c969_0.conda#567fbeed956c200c1db5782a424e58ee -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.0-h04a0ce9_0.conda#dc540e5bd5616d83a1ec46af8315ff98 -https://conda.anaconda.org/conda-forge/linux-64/kaleido-core-0.2.1-h3644ca4_0.tar.bz2#b3723b235b0758abaae8c82ce4d80146 -https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda#6178c6f2fb254558238ef4e6c56fb782 -https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda#a752488c68f2e7c456bcbd8f16eec275 -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda#6c77a605a7a689d17d4819c0f8ac9a00 -https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda#aea31d2e5b1091feca96fcfe945c3cf9 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda#cd5a90476766d53e901500df9215e927 -https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda#6f2e2c8f58160147c4d1c6f4c14cbac4 -https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda#b3c17d95b5a10c6e64a21fa17573e70e -https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda#b2895afaf55bf96a8c8282a2e47a5de0 -https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda#1dafce8548e38671bea82e3f5c6ce22f -https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda#92ed62436b625154323d40d5f2f11dd7 -https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda#ba0a9221ce1063f31692c07370d062f3 -https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 -https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda#5b5203189eb668f042ac2b0826244964 -https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda#e941e85e273121222580723010bd4fa2 -https://conda.anaconda.org/conda-forge/noarch/packaging-26.1-pyhc364b38_0.conda#b8ae38639d323d808da535fb71e31be8 -https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda#11b3379b191f63139e29c0d19dee24cd -https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda#2aadb0d17215603a82a2a6b0afd9a4cb -https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py314h8ec4b1a_0.conda#76c4757c0ec9d11f969e8eb44899307b -https://conda.anaconda.org/conda-forge/noarch/narwhals-2.20.0-pyhcf101f3_0.conda#6cac1a50359219d786453c6fef819f98 -https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda#3e9427ee186846052e81fadde8ebe96a -https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.40.0-py310hffdcd12_0.conda#8eacf9ff4d4e1ca1b52f8f3ba3e0c993 -https://conda.anaconda.org/conda-forge/noarch/polars-1.40.0-pyh58ad624_0.conda#fd16be490f5403adfbf27dd4901bbe34 -https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-compat-1.40.0-py310hbcd5346_0.conda#03a6899e17bb731c8e21b08212f1a64c -https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda#ef0340e75068ac8ff96462749b5c98e7 -https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda#a77f85f77be52ff59391544bfe73390a -https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda#2035f68f96be30dc60a5dfd7452c7941 -https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda#e17be1016bcc3516827b836cd3e4d9dc -https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.3-py314h2e6c369_0.conda#1f3fd537f929b8d3236f9f0f0e7f7a32 -https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 -https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.3-pyhcf101f3_0.conda#f690e6f204efd2e5c06b57518a383d98 -https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda#130584ad9f3a513cdd71b1fdc1244e9c -https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2#310259a5b03ff02289d7705f39e2b1d2 -https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac -https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda#9272daa869e03efe68833e3dc7a02130 -https://conda.anaconda.org/conda-forge/noarch/requests-2.33.1-pyhcf101f3_0.conda#10afbb4dbf06ff959ad25a92ccee6e59 -https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda#16c18772b340887160c79a6acc022db0 -https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda#0242025a3c804966bf71aa04eee82f66 -https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda#0c20a8ebcddb24a45da89d5e917e6cb9 -https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda#472239e4eb7b5a84bb96b3ed7e3a596a -https://conda.anaconda.org/conda-forge/linux-64/regex-2026.4.4-py314h5bd0f2a_0.conda#4ffb42385183c854564f1f9adcf80a63 -https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.12.0-py314h67fec18_3.conda#d705f9d8a1185a2b01cced191177a028 -https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda#e5ce43272193b38c2e9037446c1d9206 -https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda#260af1b0a94f719de76b4e14094e9a3b -https://conda.anaconda.org/bioconda/noarch/multiqc-1.34-pyhdfd78af_0.conda#a7111ab9a6a6146b40cbce16655ac873 -https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda#09a970fbf75e8ed1aa633827ded6aa4f -https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda#f2c23a77b25efcad57d377b34bd84941 diff --git a/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt b/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt deleted file mode 100644 index a58231a0..00000000 --- a/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt +++ /dev/null @@ -1,1502 +0,0 @@ - -version: 6 -environments: -default: -channels: -- url: https://conda.anaconda.org/conda-forge/ -- url: https://conda.anaconda.org/bioconda/ -- url: https://conda.anaconda.org/bioconda/ -options: -pypi-prerelease-mode: if-necessary-or-explicit -packages: -linux-aarch64: -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py314h352cb57_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.7.4-hfae3067_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kaleido-core-0.2.1-he5a581e_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-5_haddc8a3_openblas.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-5_hd72aa62_openblas.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-5_h88aeb00_openblas.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.30-pthreads_h9d3fd7e_4.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.55-h1abf092_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py314hb76de3f_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mathjax-2.7.7-h8af1aa0_3.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda -- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.38-h3ad9384_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nss-3.118-h544fa81_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.3-py314haac167e_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.1.1-py314hac3e5ec_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-32-1.39.3-py310hff09b76_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-compat-1.39.3-py310hf00a4a2_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py314h451b6cc_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.3-hb06a95a_101_cp314.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py314h807365f_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.2.28-py314h51f160d_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.30.0-py314h02b7a91_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.52.0-hf1c7be2_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.12.0-py314h6a36e60_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-ng-2.3.3-ha7cb516_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda -packages: -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda -build_number: 20 -sha256: a2527b1d81792a0ccd2c05850960df119c2b6d8f5fdec97f2db7d25dc23b1068 -md5: 468fd3bb9e1f671d36c2cbc677e56f1d -depends: -- libgomp >=7.5.0 -constrains: -- openmp_impl <0.0a0 -license: BSD-3-Clause -license_family: BSD -size: 28926 -timestamp: 1770939656741 -- conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda -sha256: a3967b937b9abf0f2a99f3173fa4630293979bd1644709d89580e7c62a544661 -md5: aaa2a381ccc56eac91d63b6c1240312f -depends: -- cpython -- python-gil -license: MIT -license_family: MIT -size: 8191 -timestamp: 1744137672556 -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda -sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 -md5: 2934f256a8acfe48f6ebb4fce6cde29c -depends: -- python >=3.9 -- typing-extensions >=4.0.0 -license: MIT -license_family: MIT -size: 18074 -timestamp: 1733247158254 -- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda -sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab -md5: c6b0543676ecb1fb2d7643941fe375f2 -depends: -- python >=3.10 -- python -license: MIT -license_family: MIT -size: 64927 -timestamp: 1773935801332 -- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda -noarch: generic -sha256: c31ab719d256bc6f89926131e88ecd0f0c5d003fe8481852c6424f4ec6c7eb29 -md5: a2ac7763a9ac75055b68f325d3255265 -depends: -- python >=3.14 -license: BSD-3-Clause AND MIT AND EPL-2.0 -size: 7514 -timestamp: 1767044983590 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py314h352cb57_1.conda -sha256: 5a5b0cdcd7ed89c6a8fb830924967f6314a2b71944bc1ebc2c105781ba97aa75 -md5: a1b5c571a0923a205d663d8678df4792 -depends: -- libgcc >=14 -- libstdcxx >=14 -- python >=3.14,<3.15.0a0 -- python >=3.14,<3.15.0a0 *_cp314 -- python_abi 3.14.* *_cp314 -constrains: -- libbrotlicommon 1.2.0 he30d5cf_1 -license: MIT -license_family: MIT -size: 373193 -timestamp: 1764017486851 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda -sha256: b3495077889dde6bb370938e7db82be545c73e8589696ad0843a32221520ad4c -md5: 840d8fc0d7b3209be93080bc20e07f2d -depends: -- libgcc >=14 -license: bzip2-1.0.6 -license_family: BSD -size: 192412 -timestamp: 1771350241232 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc -md5: 4492fd26db29495f0ba23f146cd5638d -depends: -- __unix -license: ISC -size: 147413 -timestamp: 1772006283803 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda -sha256: a6b118fd1ed6099dc4fc03f9c492b88882a780fadaef4ed4f93dc70757713656 -md5: 765c4d97e877cdbbb88ff33152b86125 -depends: -- python >=3.10 -license: ISC -size: 151445 -timestamp: 1772001170301 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda -sha256: d86dfd428b2e3c364fa90e07437c8405d635aa4ef54b25ab51d9c712be4112a5 -md5: 49ee13eb9b8f44d63879c69b8a40a74b -depends: -- python >=3.10 -license: MIT -license_family: MIT -size: 58510 -timestamp: 1773660086450 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda -sha256: 38cfe1ee75b21a8361c8824f5544c3866f303af1762693a178266d7f198e8715 -md5: ea8a6c3256897cc31263de9f455e25d9 -depends: -- python >=3.10 -- __unix -- python -license: BSD-3-Clause -license_family: BSD -size: 97676 -timestamp: 1764518652276 -- conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda -sha256: 8021c76eeadbdd5784b881b165242db9449783e12ce26d6234060026fd6a8680 -md5: b866ff7007b934d564961066c8195983 -depends: -- humanfriendly >=9.1 -- python >=3.9 -license: MIT -license_family: MIT -size: 43758 -timestamp: 1733928076798 -- conda: https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda -sha256: 59c9e29800b483b390467f90e82b0da3a4fbf0612efe1c90813fca232780e160 -md5: 071cf7b0ce333c81718b054066c15102 -depends: -- networkx >=2.0 -- numpy -- python >=3.9 -license: BSD-3-Clause -license_family: BSD -size: 39326 -timestamp: 1735759976140 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda -noarch: generic -sha256: 91b06300879df746214f7363d6c27c2489c80732e46a369eb2afc234bcafb44c -md5: 3bb89e4f795e5414addaa531d6b1500a -depends: -- python >=3.14,<3.15.0a0 -- python_abi * *_cp314 -license: Python-2.0 -size: 50078 -timestamp: 1770674447292 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.7.4-hfae3067_0.conda -sha256: 5f087bef054c681edcaae84a8c2230585b938691e371ff92957a30707b7fcdf7 -md5: b304307db639831ad7caabd2eac6fca6 -depends: -- libexpat 2.7.4 hfae3067_0 -- libgcc >=14 -license: MIT -license_family: MIT -size: 137701 -timestamp: 1771259543650 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 -sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b -md5: 0c96522c6bdaed4b1566d11387caaf45 -license: BSD-3-Clause -license_family: BSD -size: 397370 -timestamp: 1566932522327 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 -sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c -md5: 34893075a5c9e55cdafac56607368fc6 -license: OFL-1.1 -license_family: Other -size: 96530 -timestamp: 1620479909603 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 -sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 -md5: 4d59c254e01d9cde7957100457e2d5fb -license: OFL-1.1 -license_family: Other -size: 700814 -timestamp: 1620479612257 -- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda -sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 -md5: 49023d73832ef61042f6a237cb2687e7 -license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 -license_family: Other -size: 1620504 -timestamp: 1727511233259 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda -sha256: 835aff8615dd8d8fff377679710ce81b8a2c47b6404e21a92fb349fda193a15c -md5: 0fed1ff55f4938a65907f3ecf62609db -depends: -- libexpat >=2.7.4,<3.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 -- libgcc >=14 -- libuuid >=2.41.3,<3.0a0 -- libzlib >=1.3.1,<2.0a0 -license: MIT -license_family: MIT -size: 279044 -timestamp: 1771382728182 -- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda -sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 -md5: a7970cd949a077b7cb9696379d338681 -depends: -- font-ttf-ubuntu -- font-ttf-inconsolata -- font-ttf-dejavu-sans-mono -- font-ttf-source-code-pro -license: BSD-3-Clause -license_family: BSD -size: 4059 -timestamp: 1762351264405 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda -sha256: 84c64443368f84b600bfecc529a1194a3b14c3656ee2e832d15a20e0329b6da3 -md5: 164fc43f0b53b6e3a7bc7dce5e4f1dc9 -depends: -- python >=3.10 -- hyperframe >=6.1,<7 -- hpack >=4.1,<5 -- python -license: MIT -license_family: MIT -size: 95967 -timestamp: 1756364871835 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda -sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba -md5: 0a802cb9888dd14eeefc611f05c40b6e -depends: -- python >=3.9 -license: MIT -license_family: MIT -size: 30731 -timestamp: 1737618390337 -- conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda -sha256: fa2071da7fab758c669e78227e6094f6b3608228740808a6de5d6bce83d9e52d -md5: 7fe569c10905402ed47024fc481bb371 -depends: -- __unix -- python >=3.9 -license: MIT -license_family: MIT -size: 73563 -timestamp: 1733928021866 -- conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda -sha256: 6c4343b376d0b12a4c75ab992640970d36c933cad1fd924f6a1181fa91710e80 -md5: daddf757c3ecd6067b9af1df1f25d89e -depends: -- python >=3.10 -license: MIT -license_family: MIT -size: 67994 -timestamp: 1766267728652 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda -sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 -md5: 8e6923fc12f1fe8f8c4e5c9f343256ac -depends: -- python >=3.9 -license: MIT -license_family: MIT -size: 17397 -timestamp: 1737618427549 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda -sha256: 49ba6aed2c6b482bb0ba41078057555d29764299bc947b990708617712ef6406 -md5: 546da38c2fa9efacf203e2ad3f987c59 -depends: -- libgcc >=14 -- libstdcxx >=14 -license: MIT -license_family: MIT -size: 12837286 -timestamp: 1773822650615 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda -sha256: ae89d0299ada2a3162c2614a9d26557a92aa6a77120ce142f8e0109bbf0342b0 -md5: 53abe63df7e10a6ba605dc5f9f961d36 -depends: -- python >=3.10 -license: BSD-3-Clause -license_family: BSD -size: 50721 -timestamp: 1760286526795 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda -sha256: 82ab2a0d91ca1e7e63ab6a4939356667ef683905dea631bc2121aa534d347b16 -md5: 080594bf4493e6bae2607e65390c520a -depends: -- python >=3.10 -- zipp >=3.20 -- python -license: Apache-2.0 -license_family: APACHE -size: 34387 -timestamp: 1773931568510 -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda -sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b -md5: 04558c96691bed63104678757beb4f8d -depends: -- markupsafe >=2.0 -- python >=3.10 -- python -license: BSD-3-Clause -license_family: BSD -size: 120685 -timestamp: 1764517220861 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda -sha256: db973a37d75db8e19b5f44bbbdaead0c68dde745407f281e2a7fe4db74ec51d7 -md5: ada41c863af263cc4c5fcbaff7c3e4dc -depends: -- attrs >=22.2.0 -- jsonschema-specifications >=2023.3.6 -- python >=3.10 -- referencing >=0.28.4 -- rpds-py >=0.25.0 -- python -license: MIT -license_family: MIT -size: 82356 -timestamp: 1767839954256 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda -sha256: 0a4f3b132f0faca10c89fdf3b60e15abb62ded6fa80aebfc007d05965192aa04 -md5: 439cd0f567d697b20a8f45cb70a1005a -depends: -- python >=3.10 -- referencing >=0.31.0 -- python -license: MIT -license_family: MIT -size: 19236 -timestamp: 1757335715225 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kaleido-core-0.2.1-he5a581e_0.tar.bz2 -sha256: d3c7f4797566e6f983d16c2a87063a18e4b2d819a66230190a21584d70042755 -md5: 4f0d284f5d11e04277b552eb1c172c7f -depends: -- __glibc >=2.17,<3.0.a0 -- expat >=2.2.10,<3.0.0a0 -- fontconfig -- fonts-conda-forge -- libgcc-ng >=9.3.0 -- mathjax 2.7.* -- nspr >=4.29,<5.0a0 -- nss >=3.62,<4.0a0 -- sqlite >=3.34.0,<4.0a0 -license: MIT -license_family: MIT -size: 65750397 -timestamp: 1615199465742 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda -sha256: 379ef5e91a587137391a6149755d0e929f1a007d2dcb211318ac670a46c8596f -md5: bb960f01525b5e001608afef9d47b79c -depends: -- libgcc >=14 -- libjpeg-turbo >=3.1.2,<4.0a0 -- libtiff >=4.7.1,<4.8.0a0 -license: MIT -license_family: MIT -size: 293039 -timestamp: 1768184778398 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda -sha256: 7abd913d81a9bf00abb699e8987966baa2065f5132e37e815f92d90fc6bba530 -md5: a21644fc4a83da26452a718dc9468d5f -depends: -- zstd >=1.5.7,<1.6.0a0 -constrains: -- binutils_impl_linux-aarch64 2.45.1 -license: GPL-3.0-only -license_family: GPL -size: 875596 -timestamp: 1774197520746 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda -sha256: 8957fd460c1c132c8031f65fd5f56ec3807fd71b7cab2c5e2b0937b13404ab36 -md5: d13423b06447113a90b5b1366d4da171 -depends: -- libgcc >=14 -- libstdcxx >=14 -license: Apache-2.0 -license_family: Apache -size: 240444 -timestamp: 1773114901155 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-5_haddc8a3_openblas.conda -build_number: 5 -sha256: 700f3c03d0fba8e687a345404a45fbabe781c1cf92242382f62cef2948745ec4 -md5: 5afcea37a46f76ec1322943b3c4dfdc0 -depends: -- libopenblas >=0.3.30,<0.3.31.0a0 -- libopenblas >=0.3.30,<1.0a0 -constrains: -- mkl <2026 -- libcblas 3.11.0 5*_openblas -- liblapack 3.11.0 5*_openblas -- liblapacke 3.11.0 5*_openblas -- blas 2.305 openblas -license: BSD-3-Clause -license_family: BSD -size: 18369 -timestamp: 1765818610617 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-5_hd72aa62_openblas.conda -build_number: 5 -sha256: 3fad5c9de161dccb4e42c8b1ae8eccb33f4ed56bccbcced9cbb0956ae7869e61 -md5: 0b2f1143ae2d0aa4c991959d0daaf256 -depends: -- libblas 3.11.0 5_haddc8a3_openblas -constrains: -- liblapack 3.11.0 5*_openblas -- liblapacke 3.11.0 5*_openblas -- blas 2.305 openblas -license: BSD-3-Clause -license_family: BSD -size: 18371 -timestamp: 1765818618899 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda -sha256: 48814b73bd462da6eed2e697e30c060ae16af21e9fbed30d64feaf0aad9da392 -md5: a9138815598fe6b91a1d6782ca657b0c -depends: -- libgcc >=14 -license: MIT -license_family: MIT -size: 71117 -timestamp: 1761979776756 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda -sha256: 995ce3ad96d0f4b5ed6296b051a0d7b6377718f325bc0e792fbb96b0e369dad7 -md5: 57f3b3da02a50a1be2a6fe847515417d -depends: -- libgcc >=14 -constrains: -- expat 2.7.4.* -license: MIT -license_family: MIT -size: 76564 -timestamp: 1771259530958 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda -sha256: 3df4c539449aabc3443bbe8c492c01d401eea894603087fca2917aa4e1c2dea9 -md5: 2f364feefb6a7c00423e80dcb12db62a -depends: -- libgcc >=14 -license: MIT -license_family: MIT -size: 55952 -timestamp: 1769456078358 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda -sha256: 752e4f66283d7deb4c6fd47d88df644d8daa2aaa825a54f3bf350a625190192a -md5: a229e22d4d8814a07702b0919d8e6701 -depends: -- libfreetype6 >=2.14.3 -license: GPL-2.0-only OR FTL -size: 8125 -timestamp: 1774301094057 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda -sha256: 8e6b27fe4eec4c2fa7b7769a21973734c8dba1de80086fb0213e58375ac09f4c -md5: b99ed99e42dafb27889483b3098cace7 -depends: -- libgcc >=14 -- libpng >=1.6.55,<1.7.0a0 -- libzlib >=1.3.2,<2.0a0 -constrains: -- freetype >=2.14.3 -license: GPL-2.0-only OR FTL -size: 422941 -timestamp: 1774301093473 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda -sha256: 43df385bedc1cab11993c4369e1f3b04b4ca5d0ea16cba6a0e7f18dbc129fcc9 -md5: 552567ea2b61e3a3035759b2fdb3f9a6 -depends: -- _openmp_mutex >=4.5 -constrains: -- libgcc-ng ==15.2.0=*_18 -- libgomp 15.2.0 h8acb6b2_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 622900 -timestamp: 1771378128706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda -sha256: 83bb0415f59634dccfa8335d4163d1f6db00a27b36666736f9842b650b92cf2f -md5: 4feebd0fbf61075a1a9c2e9b3936c257 -depends: -- libgcc 15.2.0 h8acb6b2_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 27568 -timestamp: 1771378136019 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_18.conda -sha256: 7dcd7dff2505d56fd5272a6e712ec912f50a46bf07dc6873a7e853694304e6e4 -md5: 41f261f5e4e2e8cbd236c2f1f15dae1b -depends: -- libgfortran5 15.2.0 h1b7bec0_18 -constrains: -- libgfortran-ng ==15.2.0=*_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 27587 -timestamp: 1771378169244 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_18.conda -sha256: 85347670dfb4a8d4c13cd7cae54138dcf2b1606b6bede42eef5507bf5f9660c6 -md5: 574d88ce3348331e962cfa5ed451b247 -depends: -- libgcc >=15.2.0 -constrains: -- libgfortran 15.2.0 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 1486341 -timestamp: 1771378148102 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda -sha256: fc716f11a6a8525e27a5d332ef6a689210b0d2a4dd1133edc0f530659aa9faa6 -md5: 4faa39bf919939602e594253bd673958 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 588060 -timestamp: 1771378040807 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda -sha256: 84064c7c53a64291a585d7215fe95ec42df74203a5bf7615d33d49a3b0f08bb6 -md5: 5109d7f837a3dfdf5c60f60e311b041f -depends: -- libgcc >=14 -constrains: -- jpeg <0.0.0a -license: IJG AND BSD-3-Clause AND Zlib -size: 691818 -timestamp: 1762094728337 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-5_h88aeb00_openblas.conda -build_number: 5 -sha256: 692222d186d3ffbc99eaf04b5b20181fd26aee1edec1106435a0a755c57cce86 -md5: 88d1e4133d1182522b403e9ba7435f04 -depends: -- libblas 3.11.0 5_haddc8a3_openblas -constrains: -- liblapacke 3.11.0 5*_openblas -- blas 2.305 openblas -- libcblas 3.11.0 5*_openblas -license: BSD-3-Clause -license_family: BSD -size: 18392 -timestamp: 1765818627104 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda -sha256: 843c46e20519651a3e357a8928352b16c5b94f4cd3d5481acc48be2e93e8f6a3 -md5: 96944e3c92386a12755b94619bae0b35 -depends: -- libgcc >=14 -constrains: -- xz 5.8.2.* -license: 0BSD -size: 125916 -timestamp: 1768754941722 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda -sha256: 57c0dd12d506e84541c4e877898bd2a59cca141df493d34036f18b2751e0a453 -md5: 7b9813e885482e3ccb1fa212b86d7fd0 -depends: -- libgcc >=14 -license: BSD-2-Clause -license_family: BSD -size: 114056 -timestamp: 1769482343003 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.30-pthreads_h9d3fd7e_4.conda -sha256: 794a7270ea049ec931537874cd8d2de0ef4b3cef71c055cfd8b4be6d2f4228b0 -md5: 11d7d57b7bdd01da745bbf2b67020b2e -depends: -- libgcc >=14 -- libgfortran -- libgfortran5 >=14.3.0 -constrains: -- openblas >=0.3.30,<0.3.31.0a0 -license: BSD-3-Clause -license_family: BSD -size: 4959359 -timestamp: 1763114173544 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.55-h1abf092_0.conda -sha256: c7378c6b79de4d571d00ad1caf0a4c19d43c9c94077a761abb6ead44d891f907 -md5: be4088903b94ea297975689b3c3aeb27 -depends: -- libgcc >=14 -- libzlib >=1.3.1,<2.0a0 -license: zlib-acknowledgement -size: 340156 -timestamp: 1770691477245 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda -sha256: 1ddaf91b44fae83856276f4cb7ce544ffe41d4b55c1e346b504c6b45f19098d6 -md5: 77891484f18eca74b8ad83694da9815e -depends: -- icu >=78.2,<79.0a0 -- libgcc >=14 -- libzlib >=1.3.1,<2.0a0 -license: blessing -size: 952296 -timestamp: 1772818881550 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda -sha256: 31fdb9ffafad106a213192d8319b9f810e05abca9c5436b60e507afb35a6bc40 -md5: f56573d05e3b735cb03efeb64a15f388 -depends: -- libgcc 15.2.0 h8acb6b2_18 -constrains: -- libstdcxx-ng ==15.2.0=*_18 -license: GPL-3.0-only WITH GCC-exception-3.1 -license_family: GPL -size: 5541411 -timestamp: 1771378162499 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda -sha256: 7ff79470db39e803e21b8185bc8f19c460666d5557b1378d1b1e857d929c6b39 -md5: 8c6fd84f9c87ac00636007c6131e457d -depends: -- lerc >=4.0.0,<5.0a0 -- libdeflate >=1.25,<1.26.0a0 -- libgcc >=14 -- libjpeg-turbo >=3.1.0,<4.0a0 -- liblzma >=5.8.1,<6.0a0 -- libstdcxx >=14 -- libwebp-base >=1.6.0,<2.0a0 -- libzlib >=1.3.1,<2.0a0 -- zstd >=1.5.7,<1.6.0a0 -license: HPND -size: 488407 -timestamp: 1762022048105 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda -sha256: c37a8e89b700646f3252608f8368e7eb8e2a44886b92776e57ad7601fc402a11 -md5: cf2861212053d05f27ec49c3784ff8bb -depends: -- libgcc >=14 -license: BSD-3-Clause -license_family: BSD -size: 43453 -timestamp: 1766271546875 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda -sha256: b03700a1f741554e8e5712f9b06dd67e76f5301292958cd3cb1ac8c6fdd9ed25 -md5: 24e92d0942c799db387f5c9d7b81f1af -depends: -- libgcc >=14 -constrains: -- libwebp 1.6.0 -license: BSD-3-Clause -license_family: BSD -size: 359496 -timestamp: 1752160685488 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda -sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b -md5: cd14ee5cca2464a425b1dbfc24d90db2 -depends: -- libgcc >=13 -- pthread-stubs -- xorg-libxau >=1.0.11,<2.0a0 -- xorg-libxdmcp -license: MIT -license_family: MIT -size: 397493 -timestamp: 1727280745441 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda -sha256: eb111e32e5a7313a5bf799c7fb2419051fa2fe7eff74769fac8d5a448b309f7f -md5: 502006882cf5461adced436e410046d1 -constrains: -- zlib 1.3.2 *_2 -license: Zlib -license_family: Other -size: 69833 -timestamp: 1774072605429 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda -sha256: 20e0892592a3e7c683e3d66df704a9425d731486a97c34fc56af4da1106b2b6b -md5: ba0a9221ce1063f31692c07370d062f3 -depends: -- importlib-metadata >=4.4 -- python >=3.10 -- python -license: BSD-3-Clause -license_family: BSD -size: 85893 -timestamp: 1770694658918 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda -sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e -md5: 5b5203189eb668f042ac2b0826244964 -depends: -- mdurl >=0.1,<1 -- python >=3.10 -license: MIT -license_family: MIT -size: 64736 -timestamp: 1754951288511 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py314hb76de3f_1.conda -sha256: 383c188496d13a55658c06e61e7d4cdff2c9f9d5a0648769fca8250bece7e0ef -md5: e5de3c36dd548b35ff2a8aa49208dcb3 -depends: -- libgcc >=14 -- python >=3.14,<3.15.0a0 -- python_abi 3.14.* *_cp314 -constrains: -- jinja2 >=3.0.0 -license: BSD-3-Clause -license_family: BSD -size: 27913 -timestamp: 1772446407659 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mathjax-2.7.7-h8af1aa0_3.tar.bz2 -sha256: 8fd4c79d6eda3d4cba73783114305a53a154ada4d1e334d4e02cb3521429599b -md5: 7b08314a6867a9d5648a1c3265e9eb8e -license: Apache-2.0 -license_family: Apache -size: 22257008 -timestamp: 1662784555011 -- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda -sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 -md5: 592132998493b3ff25fd7479396e8351 -depends: -- python >=3.9 -license: MIT -license_family: MIT -size: 14465 -timestamp: 1733255681319 -- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda -sha256: f005760b13093362fc9c997d603dd487de32ab2e821a3cbce52a42bcb8136517 -md5: 698a8a27c2b9d8a542c70cb47099a75e -depends: -- click -- coloredlogs -- humanize -- importlib-metadata -- jinja2 >=3.0.0 -- jsonschema -- markdown -- natsort -- numpy -- packaging -- pillow >=10.2.0 -- plotly >=5.18 -- polars-lts-cpu -- pyaml-env -- pydantic >=2.7.1 -- python >=3.8,!=3.14.1 -- python-dotenv -- python-kaleido 0.2.1 -- pyyaml >=4 -- requests -- rich >=10 -- rich-click -- spectra >=0.0.10 -- tiktoken -- tqdm -- typeguard -license: GPL-3.0-or-later -license_family: GPL3 -size: 4198799 -timestamp: 1765300743879 -- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda -sha256: 541fd4390a0687228b8578247f1536a821d9261389a65585af9d1a6f2a14e1e0 -md5: 30bec5e8f4c3969e2b1bd407c5e52afb -depends: -- python >=3.10 -- python -license: MIT -size: 280459 -timestamp: 1774380620329 -- conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda -sha256: aeb1548eb72e4f198e72f19d242fb695b35add2ac7b2c00e0d83687052867680 -md5: e941e85e273121222580723010bd4fa2 -depends: -- python >=3.9 -- python -license: MIT -license_family: MIT -size: 39262 -timestamp: 1770905275632 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda -sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 -md5: 182afabe009dc78d8b73100255ee6868 -depends: -- libgcc >=13 -license: X11 AND BSD-3-Clause -size: 926034 -timestamp: 1738196018799 -- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda -sha256: f6a82172afc50e54741f6f84527ef10424326611503c64e359e25a19a8e4c1c6 -md5: a2c1eeadae7a309daed9d62c96012a2b -depends: -- python >=3.11 -- python -constrains: -- numpy >=1.25 -- scipy >=1.11.2 -- matplotlib-base >=3.8 -- pandas >=2.0 -license: BSD-3-Clause -license_family: BSD -size: 1587439 -timestamp: 1765215107045 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.38-h3ad9384_0.conda -sha256: 78a06e89285fef242e272998b292c1e621e3ee3dd4fba62ec014e503c7ec118f -md5: 6dd4f07147774bf720075a210f8026b9 -depends: -- libgcc >=14 -- libstdcxx >=14 -license: MPL-2.0 -license_family: MOZILLA -size: 235140 -timestamp: 1762350120355 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nss-3.118-h544fa81_0.conda -sha256: 48942696889367ffd448f8dccfc080fb7e130b9938a4a3b6b20ef8e6af856463 -md5: 4540f9570d12db2150f42ba036154552 -depends: -- libgcc >=14 -- libsqlite >=3.51.0,<4.0a0 -- libstdcxx >=14 -- libzlib >=1.3.1,<2.0a0 -- nspr >=4.38,<5.0a0 -license: MPL-2.0 -license_family: MOZILLA -size: 2061869 -timestamp: 1763490303490 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.3-py314haac167e_0.conda -sha256: a6d42fd88afc57c3b0a57b21a12eff7492dfc419bb61ee3f74e9ba6261dabc88 -md5: 25d896c331481145720a21e5145fad65 -depends: -- python -- libgcc >=14 -- python 3.14.* *_cp314 -- libstdcxx >=14 -- libcblas >=3.9.0,<4.0a0 -- liblapack >=3.9.0,<4.0a0 -- python_abi 3.14.* *_cp314 -- libblas >=3.9.0,<4.0a0 -constrains: -- numpy-base <0a0 -license: BSD-3-Clause -license_family: BSD -size: 8008045 -timestamp: 1773839355275 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda -sha256: bd1bc8bdde5e6c5cbac42d462b939694e40b59be6d0698f668515908640c77b8 -md5: cea962410e327262346d48d01f05936c -depends: -- libgcc >=14 -- libpng >=1.6.50,<1.7.0a0 -- libstdcxx >=14 -- libtiff >=4.7.1,<4.8.0a0 -- libzlib >=1.3.1,<2.0a0 -license: BSD-2-Clause -license_family: BSD -size: 392636 -timestamp: 1758489353577 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda -sha256: 7f8048c0e75b2620254218d72b4ae7f14136f1981c5eb555ef61645a9344505f -md5: 25f5885f11e8b1f075bccf4a2da91c60 -depends: -- ca-certificates -- libgcc >=14 -license: Apache-2.0 -license_family: Apache -size: 3692030 -timestamp: 1769557678657 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda -sha256: c1fc0f953048f743385d31c468b4a678b3ad20caffdeaa94bed85ba63049fd58 -md5: b76541e68fea4d511b1ac46a28dcd2c6 -depends: -- python >=3.8 -- python -license: Apache-2.0 -license_family: APACHE -size: 72010 -timestamp: 1769093650580 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.1.1-py314hac3e5ec_0.conda -sha256: 1ca2d1616baad9bccb7ebc425ef2dcd6cebe742fbe91edf226fb606ad371ca0f -md5: d3c959c7efe560b2d7da459d69121fe9 -depends: -- python -- python 3.14.* *_cp314 -- libgcc >=14 -- zlib-ng >=2.3.3,<2.4.0a0 -- libwebp-base >=1.6.0,<2.0a0 -- tk >=8.6.13,<8.7.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 -- libtiff >=4.7.1,<4.8.0a0 -- lcms2 >=2.18,<3.0a0 -- python_abi 3.14.* *_cp314 -- openjpeg >=2.5.4,<3.0a0 -- libjpeg-turbo >=3.1.2,<4.0a0 -- libxcb >=1.17.0,<2.0a0 -license: HPND -size: 1051828 -timestamp: 1770794010335 -- conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda -sha256: c418d325359fc7a0074cea7f081ef1bce26e114d2da8a0154c5d27ecc87a08e7 -md5: 3e9427ee186846052e81fadde8ebe96a -depends: -- narwhals >=1.15.1 -- packaging -- python >=3.10 -constrains: -- ipywidgets >=7.6 -license: MIT -license_family: MIT -size: 5251872 -timestamp: 1772628857717 -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda -sha256: d332c2d5002fc440ae37ed9679ffc21b552f18d20232390005d1dd3bce0888d3 -md5: d5a4e013a30dd8dfde9ab39f45aaf9c1 -depends: -- polars-runtime-32 ==1.39.3 -- python >=3.10 -- python -constrains: -- numpy >=1.16.0 -- pyarrow >=7.0.0 -- fastexcel >=0.9 -- openpyxl >=3.0.0 -- xlsx2csv >=0.8.0 -- connectorx >=0.3.2 -- deltalake >=1.0.0 -- pyiceberg >=0.7.1 -- altair >=5.4.0 -- great_tables >=0.8.0 -- polars-runtime-32 ==1.39.3 -- polars-runtime-64 ==1.39.3 -- polars-runtime-compat ==1.39.3 -license: MIT -license_family: MIT -size: 533495 -timestamp: 1774207987966 -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda -sha256: e466fb31f67ba9bde18deafeb34263ca5eb25807f39ead0e9d753a8e82c4c4f4 -md5: ef0340e75068ac8ff96462749b5c98e7 -depends: -- polars >=1.34.0 -- polars-runtime-compat >=1.34.0 -license: MIT -license_family: MIT -size: 3902 -timestamp: 1760206808444 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-32-1.39.3-py310hff09b76_1.conda -noarch: python -sha256: c070be507c5a90df397a47ae0299660be437d5546d68f1bc0fa4402c9f07d59e -md5: 3c1a7c6b4ba8b9fb773ace9723f8a5db -depends: -- python -- libgcc >=14 -- libstdcxx >=14 -- _python_abi3_support 1.* -- cpython >=3.10 -constrains: -- __glibc >=2.17 -license: MIT -license_family: MIT -size: 34785466 -timestamp: 1774207998285 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-compat-1.39.3-py310hf00a4a2_1.conda -noarch: python -sha256: 683315f1a49e47ce72bf9462419733b40b588b2b3106552d95fd4cd994e174de -md5: dd3464e2132dc3a783e76e5078870c76 -depends: -- python -- libgcc >=14 -- libstdcxx >=14 -- _python_abi3_support 1.* -- cpython >=3.10 -constrains: -- __glibc >=2.17 -license: MIT -license_family: MIT -size: 34652491 -timestamp: 1774207996879 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda -sha256: e9cbcbc94e151ada3d6dc365380aaaf591f65012c16d9a2abaea4b9b90adc402 -md5: ab7288cc39545556d1bc5e71ab2df9a9 -depends: -- libgcc >=14 -- ncurses >=6.5,<7.0a0 -license: GPL-2.0-or-later AND LGPL-2.0-or-later -license_family: GPL -size: 636733 -timestamp: 1769712412683 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda -sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba -md5: bb5a90c93e3bac3d5690acf76b4a6386 -depends: -- libgcc >=13 -license: MIT -license_family: MIT -size: 8342 -timestamp: 1726803319942 -- conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda -sha256: 58994e0d2ea8584cb399546e6f6896d771995e6121d1a7b6a2c9948388358932 -md5: e17be1016bcc3516827b836cd3e4d9dc -depends: -- python >=3.9 -- pyyaml >=5.0,<=7.0 -license: MIT -license_family: MIT -size: 14645 -timestamp: 1736766960536 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda -sha256: 868569d9505b7fe246c880c11e2c44924d7613a8cdcc1f6ef85d5375e892f13d -md5: c3946ed24acdb28db1b5d63321dbca7d -depends: -- typing-inspection >=0.4.2 -- typing_extensions >=4.14.1 -- python >=3.10 -- typing-extensions >=4.6.1 -- annotated-types >=0.6.0 -- pydantic-core ==2.41.5 -- python -license: MIT -license_family: MIT -size: 340482 -timestamp: 1764434463101 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py314h451b6cc_1.conda -sha256: f8acb2d03ebe80fed0032b9a989fc9acfb6735e3cd3f8c704b72728cb31868f6 -md5: 28f5027a1e04d67aa13fac1c5ba79693 -depends: -- python -- typing-extensions >=4.6.0,!=4.7.0 -- libgcc >=14 -- python 3.14.* *_cp314 -- python_abi 3.14.* *_cp314 -constrains: -- __glibc >=2.17 -license: MIT -license_family: MIT -size: 1828339 -timestamp: 1762989038561 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda -sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a -md5: 6b6ece66ebcae2d5f326c77ef2c5a066 -depends: -- python >=3.9 -license: BSD-2-Clause -license_family: BSD -size: 889287 -timestamp: 1750615908735 -- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda -sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 -md5: 461219d1a5bd61342293efa2c0c90eac -depends: -- __unix -- python >=3.9 -license: BSD-3-Clause -license_family: BSD -size: 21085 -timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.3-hb06a95a_101_cp314.conda -build_number: 101 -sha256: 87e9dff5646aba87cecfbc08789634c855871a7325169299d749040b0923a356 -md5: 205011b36899ff0edf41b3db0eda5a44 -depends: -- bzip2 >=1.0.8,<2.0a0 -- ld_impl_linux-aarch64 >=2.36.1 -- libexpat >=2.7.3,<3.0a0 -- libffi >=3.5.2,<3.6.0a0 -- libgcc >=14 -- liblzma >=5.8.2,<6.0a0 -- libmpdec >=4.0.0,<5.0a0 -- libsqlite >=3.51.2,<4.0a0 -- libuuid >=2.41.3,<3.0a0 -- libzlib >=1.3.1,<2.0a0 -- ncurses >=6.5,<7.0a0 -- openssl >=3.5.5,<4.0a0 -- python_abi 3.14.* *_cp314 -- readline >=8.3,<9.0a0 -- tk >=8.6.13,<8.7.0a0 -- tzdata -- zstd >=1.5.7,<1.6.0a0 -license: Python-2.0 -size: 37305578 -timestamp: 1770674395875 -python_site_packages_path: lib/python3.14/site-packages -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda -sha256: 74e417a768f59f02a242c25e7db0aa796627b5bc8c818863b57786072aeb85e5 -md5: 130584ad9f3a513cdd71b1fdc1244e9c -depends: -- python >=3.10 -license: BSD-3-Clause -license_family: BSD -size: 27848 -timestamp: 1772388605021 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda -sha256: 233aebd94c704ac112afefbb29cf4170b7bc606e22958906f2672081bc50638a -md5: 235765e4ea0d0301c75965985163b5a1 -depends: -- cpython 3.14.3.* -- python_abi * *_cp314 -license: Python-2.0 -size: 50062 -timestamp: 1770674497152 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 -sha256: e17bf63a30aec33432f1ead86e15e9febde9fc40a7f869c0e766be8d2db44170 -md5: 310259a5b03ff02289d7705f39e2b1d2 -depends: -- kaleido-core 0.2.1.* -- python >=3.5 -license: MIT -license_family: MIT -size: 18320 -timestamp: 1615204747600 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda -build_number: 8 -sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 -md5: 0539938c55b6b1a59b560e843ad864a4 -constrains: -- python 3.14.* *_cp314 -license: BSD-3-Clause -license_family: BSD -size: 6989 -timestamp: 1752805904792 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py314h807365f_1.conda -sha256: 496b5e65dfdd0aaaaa5de0dcaaf3bceea00fcb4398acf152f89e567c82ec1046 -md5: 9ae2c92975118058bd720e9ba2bb7c58 -depends: -- libgcc >=14 -- python >=3.14,<3.15.0a0 -- python >=3.14,<3.15.0a0 *_cp314 -- python_abi 3.14.* *_cp314 -- yaml >=0.2.5,<0.3.0a0 -license: MIT -license_family: MIT -size: 195678 -timestamp: 1770223441816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda -sha256: fe695f9d215e9a2e3dd0ca7f56435ab4df24f5504b83865e3d295df36e88d216 -md5: 3d49cad61f829f4f0e0611547a9cda12 -depends: -- libgcc >=14 -- ncurses >=6.5,<7.0a0 -license: GPL-3.0-only -license_family: GPL -size: 357597 -timestamp: 1765815673644 -- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda -sha256: 0577eedfb347ff94d0f2fa6c052c502989b028216996b45c7f21236f25864414 -md5: 870293df500ca7e18bedefa5838a22ab -depends: -- attrs >=22.2.0 -- python >=3.10 -- rpds-py >=0.7.0 -- typing_extensions >=4.4.0 -- python -license: MIT -license_family: MIT -size: 51788 -timestamp: 1760379115194 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.2.28-py314h51f160d_0.conda -sha256: 2080ecea825e1ef91a2422cc0bc63e85db9e38908ed17657fb8f41de7a6eee71 -md5: 818aa2c9f6b3c808da5e7be22a9a424c -depends: -- libgcc >=14 -- python >=3.14,<3.15.0a0 -- python >=3.14,<3.15.0a0 *_cp314 -- python_abi 3.14.* *_cp314 -license: Apache-2.0 AND CNRI-Python -license_family: PSF -size: 408097 -timestamp: 1772255205521 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda -sha256: 7813c38b79ae549504b2c57b3f33394cea4f2ad083f0994d2045c2e24cb538c5 -md5: c65df89a0b2e321045a9e01d1337b182 -depends: -- python >=3.10 -- certifi >=2017.4.17 -- charset-normalizer >=2,<4 -- idna >=2.5,<4 -- urllib3 >=1.21.1,<3 -- python -constrains: -- chardet >=3.0.2,<6 -license: Apache-2.0 -license_family: APACHE -size: 63602 -timestamp: 1766926974520 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda -sha256: b06ce84d6a10c266811a7d3adbfa1c11f13393b91cc6f8a5b468277d90be9590 -md5: 7a6289c50631d620652f5045a63eb573 -depends: -- markdown-it-py >=2.2.0 -- pygments >=2.13.0,<3.0.0 -- python >=3.10 -- typing_extensions >=4.0.0,<5.0.0 -- python -license: MIT -license_family: MIT -size: 208472 -timestamp: 1771572730357 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda -sha256: aa3fcb167321bae51998de2e94d199109c9024f25a5a063cb1c28d8f1af33436 -md5: 0c20a8ebcddb24a45da89d5e917e6cb9 -depends: -- python >=3.10 -- rich >=12 -- click >=8 -- typing-extensions >=4 -- __unix -- python -license: MIT -license_family: MIT -size: 64356 -timestamp: 1769850479089 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.30.0-py314h02b7a91_0.conda -sha256: a587240f16eac7c6a80f9585cef679cd1cb9a287b8dfcdd36dcef1f7e7db15dc -md5: e7f6ed9e60043bb5cbcc527764897f0d -depends: -- python -- libgcc >=14 -- python_abi 3.14.* *_cp314 -constrains: -- __glibc >=2.17 -license: MIT -license_family: MIT -size: 376332 -timestamp: 1764543345455 -- conda: https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda -sha256: 7c65782d2511738e62c70462e89d65da4fa54d5a7e47c46667bcd27a59f81876 -md5: 472239e4eb7b5a84bb96b3ed7e3a596a -depends: -- colormath >=3.0.0 -- python >=3.9 -license: MIT -license_family: MIT -size: 22284 -timestamp: 1735770589188 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.52.0-hf1c7be2_0.conda -sha256: 4f8523f5341f0d9e1547085206c6c1f71f9fc7c277443ca363a8cf98add8fc01 -md5: d9634079df93a65ee045b3c75f35cae1 -depends: -- icu >=78.2,<79.0a0 -- libgcc >=14 -- libsqlite 3.52.0 h10b116e_0 -- libzlib >=1.3.1,<2.0a0 -- ncurses >=6.5,<7.0a0 -- readline >=8.3,<9.0a0 -license: blessing -size: 209416 -timestamp: 1772818891689 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.12.0-py314h6a36e60_3.conda -sha256: c1da41c79262b27efa168407cfecc47b20270e5fc071a8307f95a2c85fb94170 -md5: 55bf7b559202236157b14323b40f19e6 -depends: -- libgcc >=14 -- libstdcxx >=14 -- python >=3.14,<3.15.0a0 -- python_abi 3.14.* *_cp314 -- regex >=2022.1.18 -- requests >=2.26.0 -constrains: -- __glibc >=2.17 -license: MIT -license_family: MIT -size: 914402 -timestamp: 1764030357702 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda -sha256: e25c314b52764219f842b41aea2c98a059f06437392268f09b03561e4f6e5309 -md5: 7fc6affb9b01e567d2ef1d05b84aa6ed -depends: -- libgcc >=14 -- libzlib >=1.3.1,<2.0a0 -constrains: -- xorg-libx11 >=1.8.12,<2.0a0 -license: TCL -license_family: BSD -size: 3368666 -timestamp: 1769464148928 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda -sha256: 9ef8e47cf00e4d6dcc114eb32a1504cc18206300572ef14d76634ba29dfe1eb6 -md5: e5ce43272193b38c2e9037446c1d9206 -depends: -- python >=3.10 -- __unix -- python -license: MPL-2.0 and MIT -size: 94132 -timestamp: 1770153424136 -- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda -sha256: 39d8ae33c43cdb8f771373e149b0b4fae5a08960ac58dcca95b2f1642bb17448 -md5: 260af1b0a94f719de76b4e14094e9a3b -depends: -- importlib-metadata >=3.6 -- python >=3.10 -- typing-extensions >=4.10.0 -- typing_extensions >=4.14.0 -constrains: -- pytest >=7 -license: MIT -license_family: MIT -size: 36838 -timestamp: 1771532971545 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda -sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c -md5: edd329d7d3a4ab45dcf905899a7a6115 -depends: -- typing_extensions ==4.15.0 pyhcf101f3_0 -license: PSF-2.0 -license_family: PSF -size: 91383 -timestamp: 1756220668932 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda -sha256: 70db27de58a97aeb7ba7448366c9853f91b21137492e0b4430251a1870aa8ff4 -md5: a0a4a3035667fc34f29bfbd5c190baa6 -depends: -- python >=3.10 -- typing_extensions >=4.12.0 -license: MIT -license_family: MIT -size: 18923 -timestamp: 1764158430324 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda -sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 -md5: 0caa1af407ecff61170c9437a808404d -depends: -- python >=3.10 -- python -license: PSF-2.0 -license_family: PSF -size: 51692 -timestamp: 1756220668932 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda -sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c -md5: ad659d0a2b3e47e38d829aa8cad2d610 -license: LicenseRef-Public-Domain -size: 119135 -timestamp: 1767016325805 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda -sha256: af641ca7ab0c64525a96fd9ad3081b0f5bcf5d1cbb091afb3f6ed5a9eee6111a -md5: 9272daa869e03efe68833e3dc7a02130 -depends: -- backports.zstd >=1.0.0 -- brotli-python >=1.2.0 -- h2 >=4,<5 -- pysocks >=1.5.6,<2.0,!=1.5.7 -- python >=3.10 -license: MIT -license_family: MIT -size: 103172 -timestamp: 1767817860341 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda -sha256: e9f6e931feeb2f40e1fdbafe41d3b665f1ab6cb39c5880a1fcf9f79a3f3c84a5 -md5: 1c246e1105000c3660558459e2fd6d43 -depends: -- libgcc >=14 -license: MIT -license_family: MIT -size: 16317 -timestamp: 1762977521691 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda -sha256: 128d72f36bcc8d2b4cdbec07507542e437c7d67f677b7d77b71ed9eeac7d6df1 -md5: bff06dcde4a707339d66d45d96ceb2e2 -depends: -- libgcc >=14 -license: MIT -license_family: MIT -size: 21039 -timestamp: 1762979038025 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda -sha256: 66265e943f32ce02396ad214e27cb35f5b0490b3bd4f064446390f9d67fa5d88 -md5: 032d8030e4a24fe1f72c74423a46fb88 -depends: -- libgcc >=14 -license: MIT -license_family: MIT -size: 88088 -timestamp: 1753484092643 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda -sha256: b4533f7d9efc976511a73ef7d4a2473406d7f4c750884be8e8620b0ce70f4dae -md5: 30cd29cb87d819caead4d55184c1d115 -depends: -- python >=3.10 -- python -license: MIT -license_family: MIT -size: 24194 -timestamp: 1764460141901 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-ng-2.3.3-ha7cb516_1.conda -sha256: 638a3a41a4fbfed52d3c60c8ef5a3693b3f12a5b1a3f58fa29f5698d0a0702e2 -md5: f731af71c723065d91b4c01bb822641b -depends: -- libgcc >=14 -- libstdcxx >=14 -license: Zlib -license_family: Other -size: 121046 -timestamp: 1770167944449 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda -sha256: 569990cf12e46f9df540275146da567d9c618c1e9c7a0bc9d9cfefadaed20b75 -md5: c3655f82dcea2aa179b291e7099c1fcc -depends: -- libzlib >=1.3.1,<2.0a0 -license: BSD-3-Clause -license_family: BSD -size: 614429 -timestamp: 1764777145593 diff --git a/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt b/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt deleted file mode 100644 index f787dbe1..00000000 --- a/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt +++ /dev/null @@ -1,125 +0,0 @@ - -# This file may be used to create an environment using: -# $ conda create --name --file -# platform: linux-aarch64 -@EXPLICIT -https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda#4faa39bf919939602e594253bd673958 -https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda#468fd3bb9e1f671d36c2cbc677e56f1d -https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda#552567ea2b61e3a3035759b2fdb3f9a6 -https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda#840d8fc0d7b3209be93080bc20e07f2d -https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda#502006882cf5461adced436e410046d1 -https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda#c3655f82dcea2aa179b291e7099c1fcc -https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda#a21644fc4a83da26452a718dc9468d5f -https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.5-hfae3067_0.conda#05d1e0b30acd816a192c03dc6e164f4d -https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda#2f364feefb6a7c00423e80dcb12db62a -https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda#76298a9e6d71ee6e832a8d0d7373b261 -https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda#7b9813e885482e3ccb1fa212b86d7fd0 -https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.0-h022381a_0.conda#86db4036fd08bf34e991bf48a8af405d -https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42-h1022ec0_0.conda#a0b5de740d01c390bdbb46d7503c9fab -https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda#182afabe009dc78d8b73100255ee6868 -https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda#e18ad67cf881dcadee8b8d9e2f8e5f73 -https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.2-h546c87b_0.conda#3b129669089e4d6a5c6871dbb4669b99 -https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda#0539938c55b6b1a59b560e843ad864a4 -https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda#3d49cad61f829f4f0e0611547a9cda12 -https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda#7fc6affb9b01e567d2ef1d05b84aa6ed -https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda#ad659d0a2b3e47e38d829aa8cad2d610 -https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.4-hfd9ac0a_100_cp314.conda#3cfbe780f0f51cc8cba41db9f8a28bfe -https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.4-py314hd8ed1ab_100.conda#f111d4cfaf1fe9496f386bc98ae94452 -https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.4-h4df99d1_100.conda#e4e60721757979d01d3964122f674959 -https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f -https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda#0caa1af407ecff61170c9437a808404d -https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda#edd329d7d3a4ab45dcf905899a7a6115 -https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c -https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda#c6b0543676ecb1fb2d7643941fe375f2 -https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda#a2ac7763a9ac75055b68f325d3255265 -https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda#f56573d05e3b735cb03efeb64a15f388 -https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py314h352cb57_1.conda#a1b5c571a0923a205d663d8678df4792 -https://conda.anaconda.org/conda-forge/noarch/certifi-2026.4.22-pyhd8ed1ab_0.conda#929471569c93acefb30282a22060dcd5 -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda#a9167b9571f3baa9d448faa2139d1089 -https://conda.anaconda.org/conda-forge/noarch/click-8.3.2-pyhc90fa1f_0.conda#4d18bc3af7cfcea97bd817164672a08c -https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda#7fe569c10905402ed47024fc481bb371 -https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda#b866ff7007b934d564961066c8195983 -https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda#a2c1eeadae7a309daed9d62c96012a2b -https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_18.conda#574d88ce3348331e962cfa5ed451b247 -https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_18.conda#41f261f5e4e2e8cbd236c2f1f15dae1b -https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.32-pthreads_h9d3fd7e_0.conda#5d2ce5cf40443d055ec6d33840192265 -https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-6_haddc8a3_openblas.conda#652bb20bb4618cacd11e17ae070f47ce -https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-6_hd72aa62_openblas.conda#939e300b110db241a96a1bed438c315b -https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-6_h88aeb00_openblas.conda#e23a27b52fb320687239e2c5ae4d7540 -https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.3-py314haac167e_0.conda#25d896c331481145720a21e5145fad65 -https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda#071cf7b0ce333c81718b054066c15102 -https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.7.5-hfae3067_0.conda#d2bb0c889d94f2fdc5856392c3002976 -https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 -https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 -https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb -https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 -https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda#f51503ac45a4888bce71af9027a2ecc9 -https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda#b99ed99e42dafb27889483b3098cace7 -https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda#a229e22d4d8814a07702b0919d8e6701 -https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda#0fed1ff55f4938a65907f3ecf62609db -https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda#a7970cd949a077b7cb9696379d338681 -https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda#0a802cb9888dd14eeefc611f05c40b6e -https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda#8e6923fc12f1fe8f8c4e5c9f343256ac -https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda#164fc43f0b53b6e3a7bc7dce5e4f1dc9 -https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda#daddf757c3ecd6067b9af1df1f25d89e -https://conda.anaconda.org/conda-forge/noarch/idna-3.13-pyhcf101f3_0.conda#fb7130c190f9b4ec91219840a05ba3ac -https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.1-pyhcf101f3_0.conda#e1c36c6121a7c9c76f2f148f1e83b983 -https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda#080594bf4493e6bae2607e65390c520a -https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py314hb76de3f_1.conda#e5de3c36dd548b35ff2a8aa49208dcb3 -https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda#04558c96691bed63104678757beb4f8d -https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.30.0-py314h02b7a91_0.conda#e7f6ed9e60043bb5cbcc527764897f0d -https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda#870293df500ca7e18bedefa5838a22ab -https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda#439cd0f567d697b20a8f45cb70a1005a -https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda#ada41c863af263cc4c5fcbaff7c3e4dc -https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda#4feebd0fbf61075a1a9c2e9b3936c257 -https://conda.anaconda.org/conda-forge/linux-aarch64/mathjax-2.7.7-h8af1aa0_3.tar.bz2#7b08314a6867a9d5648a1c3265e9eb8e -https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.38-h3ad9384_0.conda#6dd4f07147774bf720075a210f8026b9 -https://conda.anaconda.org/conda-forge/linux-aarch64/nss-3.118-h544fa81_0.conda#4540f9570d12db2150f42ba036154552 -https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.53.0-he8854b5_0.conda#ad8164bdeece883b825c50639c0c4725 -https://conda.anaconda.org/conda-forge/linux-aarch64/kaleido-core-0.2.1-he5a581e_0.tar.bz2#4f0d284f5d11e04277b552eb1c172c7f -https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.4.1-he30d5cf_0.conda#a85ba48648f6868016f2741fd9170250 -https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda#d13423b06447113a90b5b1366d4da171 -https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda#a9138815598fe6b91a1d6782ca657b0c -https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda#24e92d0942c799db387f5c9d7b81f1af -https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda#8c6fd84f9c87ac00636007c6131e457d -https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda#bb960f01525b5e001608afef9d47b79c -https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda#bb5a90c93e3bac3d5690acf76b4a6386 -https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda#1c246e1105000c3660558459e2fd6d43 -https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda#bff06dcde4a707339d66d45d96ceb2e2 -https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda#cd14ee5cca2464a425b1dbfc24d90db2 -https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda#ba0a9221ce1063f31692c07370d062f3 -https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 -https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda#5b5203189eb668f042ac2b0826244964 -https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda#e941e85e273121222580723010bd4fa2 -https://conda.anaconda.org/conda-forge/noarch/packaging-26.1-pyhc364b38_0.conda#b8ae38639d323d808da535fb71e31be8 -https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda#cea962410e327262346d48d01f05936c -https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-ng-2.3.3-ha7cb516_1.conda#f731af71c723065d91b4c01bb822641b -https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.2.0-py314hac3e5ec_0.conda#87d58d103b47c4a8567b3d7666647684 -https://conda.anaconda.org/conda-forge/noarch/narwhals-2.20.0-pyhcf101f3_0.conda#6cac1a50359219d786453c6fef819f98 -https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda#3e9427ee186846052e81fadde8ebe96a -https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-32-1.40.0-py310hff09b76_0.conda#d5628a33ce7652511e38fc98643dc910 -https://conda.anaconda.org/conda-forge/noarch/polars-1.40.0-pyh58ad624_0.conda#fd16be490f5403adfbf27dd4901bbe34 -https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-compat-1.40.0-py310hf00a4a2_0.conda#a82af0fcbb72db253dc89a7a45279372 -https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda#ef0340e75068ac8ff96462749b5c98e7 -https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda#032d8030e4a24fe1f72c74423a46fb88 -https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py314h807365f_1.conda#9ae2c92975118058bd720e9ba2bb7c58 -https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda#e17be1016bcc3516827b836cd3e4d9dc -https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.46.3-py314h451b6cc_0.conda#1a2cb55be9a153ad6203bff6b787c240 -https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 -https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.3-pyhcf101f3_0.conda#f690e6f204efd2e5c06b57518a383d98 -https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda#130584ad9f3a513cdd71b1fdc1244e9c -https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2#310259a5b03ff02289d7705f39e2b1d2 -https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda#461219d1a5bd61342293efa2c0c90eac -https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda#9272daa869e03efe68833e3dc7a02130 -https://conda.anaconda.org/conda-forge/noarch/requests-2.33.1-pyhcf101f3_0.conda#10afbb4dbf06ff959ad25a92ccee6e59 -https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda#16c18772b340887160c79a6acc022db0 -https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda#0242025a3c804966bf71aa04eee82f66 -https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda#0c20a8ebcddb24a45da89d5e917e6cb9 -https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda#472239e4eb7b5a84bb96b3ed7e3a596a -https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.4.4-py314h51f160d_0.conda#88a3dbd279e6b1faf0cddb8397866864 -https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.12.0-py314h6a36e60_3.conda#55bf7b559202236157b14323b40f19e6 -https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda#e5ce43272193b38c2e9037446c1d9206 -https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda#260af1b0a94f719de76b4e14094e9a3b -https://conda.anaconda.org/bioconda/noarch/multiqc-1.34-pyhdfd78af_0.conda#a7111ab9a6a6146b40cbce16655ac873 -https://conda.anaconda.org/conda-forge/noarch/pip-26.0.1-pyh145f28c_0.conda#09a970fbf75e8ed1aa633827ded6aa4f -https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda#ab7288cc39545556d1bc5e71ab2df9a9 diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index 37e7612d..d02016a0 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::multiqc=1.34 + - bioconda::multiqc=1.32 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index e80e8cd8..c1158fb0 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -1,21 +1,24 @@ process MULTIQC { - tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" - container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/1b/1bef8af6be88c5733461959c46ac8ef73d18f65277f62a1695d0e1633054f9c2/data' - : 'community.wave.seqera.io/library/multiqc:1.34--db7c73dae76bc9e6'}" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/8c/8c6c120d559d7ee04c7442b61ad7cf5a9e8970be5feefb37d68eeaa60c1034eb/data' : + 'community.wave.seqera.io/library/multiqc:1.32--d58f60e4deb769bf' }" input: - tuple val(meta), path(multiqc_files, stageAs: "?/*"), path(multiqc_config, stageAs: "?/*"), path(multiqc_logo), path(replace_names), path(sample_names) + path multiqc_files, stageAs: "?/*" + path(multiqc_config) + path(extra_multiqc_config) + path(multiqc_logo) + path(replace_names) + path(sample_names) output: - tuple val(meta), path("*.html"), emit: report - tuple val(meta), path("*_data"), emit: data - tuple val(meta), path("*_plots"), emit: plots, optional: true - // MultiQC should not push its versions to the `versions` topic. Its input depends on the versions topic to be resolved thus outputting to the topic will let the pipeline hang forever - tuple val("${task.process}"), val('multiqc'), eval('multiqc --version | sed "s/.* //g"'), emit: versions + path "*multiqc_report.html", emit: report + path "*_data" , emit: data + path "*_plots" , optional:true, emit: plots + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -23,28 +26,38 @@ process MULTIQC { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ? "--filename ${task.ext.prefix}.html" : '' - def config = multiqc_config ? multiqc_config instanceof List ? "--config ${multiqc_config.join(' --config ')}" : "--config ${multiqc_config}" : "" + def config = multiqc_config ? "--config $multiqc_config" : '' + def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : '' def logo = multiqc_logo ? "--cl-config 'custom_logo: \"${multiqc_logo}\"'" : '' def replace = replace_names ? "--replace-names ${replace_names}" : '' def samples = sample_names ? "--sample-names ${sample_names}" : '' """ multiqc \\ --force \\ - ${args} \\ - ${config} \\ - ${prefix} \\ - ${logo} \\ - ${replace} \\ - ${samples} \\ + $args \\ + $config \\ + $prefix \\ + $extra_config \\ + $logo \\ + $replace \\ + $samples \\ . + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) + END_VERSIONS """ stub: """ mkdir multiqc_data - touch multiqc_data/.stub mkdir multiqc_plots - touch multiqc_plots/.stub touch multiqc_report.html + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) + END_VERSIONS """ } diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index 2facc627..ce30eb73 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -1,6 +1,6 @@ name: multiqc -description: Aggregate results from bioinformatics analyses across many samples - into a single report +description: Aggregate results from bioinformatics analyses across many samples into + a single report keywords: - QC - bioinformatics tools @@ -12,91 +12,74 @@ tools: It's a general use tool, perfect for summarising the output from numerous bioinformatics tools. homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ - licence: - - "GPL-3.0-or-later" + licence: ["GPL-3.0-or-later"] identifier: biotools:multiqc input: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'sample1', single_end:false ] - - multiqc_files: + - multiqc_files: + type: file + description: | + List of reports / files recognised by MultiQC, for example the html and zip output of FastQC + ontologies: [] + - multiqc_config: + type: file + description: Optional config yml for MultiQC + pattern: "*.{yml,yaml}" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML + - extra_multiqc_config: + type: file + description: Second optional config yml for MultiQC. Will override common sections + in multiqc_config. + pattern: "*.{yml,yaml}" + ontologies: + - edam: http://edamontology.org/format_3750 # YAML + - multiqc_logo: + type: file + description: Optional logo file for MultiQC + pattern: "*.{png}" + ontologies: [] + - replace_names: + type: file + description: | + Optional two-column sample renaming file. First column a set of + patterns, second column a set of corresponding replacements. Passed via + MultiQC's `--replace-names` option. + pattern: "*.{tsv}" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + - sample_names: + type: file + description: | + Optional TSV file with headers, passed to the MultiQC --sample_names + argument. + pattern: "*.{tsv}" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV +output: + report: + - "*multiqc_report.html": type: file - description: | - List of reports / files recognised by MultiQC, for example the html and zip output of FastQC + description: MultiQC report file + pattern: "multiqc_report.html" ontologies: [] - - multiqc_config: - type: file - description: Optional config yml for MultiQC - pattern: "*.{yml,yaml}" - ontologies: - - edam: http://edamontology.org/format_3750 - - multiqc_logo: + data: + - "*_data": + type: directory + description: MultiQC data dir + pattern: "multiqc_data" + plots: + - "*_plots": type: file - description: Optional logo file for MultiQC - pattern: "*.{png}" + description: Plots created by MultiQC + pattern: "*_data" ontologies: [] - - replace_names: - type: file - description: | - Optional two-column sample renaming file. First column a set of - patterns, second column a set of corresponding replacements. Passed via - MultiQC's `--replace-names` option. - pattern: "*.{tsv}" - ontologies: - - edam: http://edamontology.org/format_3475 - - sample_names: + versions: + - versions.yml: type: file - description: | - Optional TSV file with headers, passed to the MultiQC --sample_names - argument. - pattern: "*.{tsv}" + description: File containing software versions + pattern: "versions.yml" ontologies: - - edam: http://edamontology.org/format_3475 -output: - report: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'sample1', single_end:false ] - - "*.html": - type: file - description: MultiQC report file - pattern: ".html" - ontologies: [] - data: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'sample1', single_end:false ] - - "*_data": - type: directory - description: MultiQC data dir - pattern: "multiqc_data" - plots: - - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'sample1', single_end:false ] - - "*_plots": - type: file - description: Plots created by MultiQC - pattern: "*_plots" - ontologies: [] - versions: - - - ${task.process}: - type: string - description: The process the versions were collected from - - multiqc: - type: string - description: The tool name - - multiqc --version | sed "s/.* //g": - type: eval - description: The expression to obtain the version of the tool + - edam: http://edamontology.org/format_3750 # YAML authors: - "@abhi18av" - "@bunop" @@ -107,27 +90,3 @@ maintainers: - "@bunop" - "@drpatelh" - "@jfy133" -containers: - conda: - linux/amd64: - lock_file: modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt - linux/arm64: - lock_file: modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt - docker: - linux/amd64: - name: community.wave.seqera.io/library/multiqc:1.34--db7c73dae76bc9e6 - build_id: bd-db7c73dae76bc9e6_1 - scan_id: sc-66fc7138dbf1cf48_1 - linux/arm64: - name: community.wave.seqera.io/library/multiqc:1.34--d167b8012595a136 - build_id: bd-d167b8012595a136_1 - scan_id: sc-ac701dfa631a2af9_1 - singularity: - linux/amd64: - name: oras://community.wave.seqera.io/library/multiqc:1.34--4fc8657c816047c0 - build_id: bd-4fc8657c816047c0_1 - https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/1b/1bef8af6be88c5733461959c46ac8ef73d18f65277f62a1695d0e1633054f9c2/data - linux/arm64: - name: oras://community.wave.seqera.io/library/multiqc:1.34--7fbd82d945c06726 - build_id: bd-7fbd82d945c06726_1 - https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/9a/9a1fec9662a152683e6fcae440d0ce20920b3b89dc62d1e3a52e73f92eba0969/data diff --git a/modules/nf-core/multiqc/tests/custom_prefix.config b/modules/nf-core/multiqc/tests/custom_prefix.config deleted file mode 100644 index b30b1358..00000000 --- a/modules/nf-core/multiqc/tests/custom_prefix.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - withName: 'MULTIQC' { - ext.prefix = "custom_prefix" - } -} diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index 4cbdb95d..33316a7d 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -15,84 +15,25 @@ nextflow_process { when { process { """ - input[0] = channel.of([ - [ id: 'FASTQC' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), - [], - [], - [], - [] - ]) + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) + input[1] = [] + input[2] = [] + input[3] = [] + input[4] = [] + input[5] = [] """ } } then { - assert process.success - assert snapshot( - sanitizeOutput(process.out).collectEntries { key, val -> - if (key == "data") { - return [key, val.collect { [path(it[1]).list().collect { file(it.toString()).name }] }] - } - else if (key == "plots") { - return [key, val.collect { [ - "pdf", - path("${it[1]}/pdf").list().collect { file(it.toString()).name }, - "png", - path("${it[1]}/png").list().collect { file(it.toString()).name }, - "svg", - path("${it[1]}/svg").list().collect { file(it.toString()).name }] }] - } - else if (key == "report") { - return [key, file(val[0][1].toString()).name] - } - return [key, val] - } - ).match() - } - } - - test("sarscov2 single-end [fastqc] - custom prefix") { - config "./custom_prefix.config" - - when { - process { - """ - input[0] = channel.of([ - [ id: 'FASTQC' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), - [], - [], - [], - [] - ]) - """ - } + assertAll( + { assert process.success }, + { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, + { assert process.out.data[0] ==~ ".*/multiqc_data" }, + { assert snapshot(process.out.versions).match("multiqc_versions_single") } + ) } - then { - assert process.success - assert snapshot( - sanitizeOutput(process.out).collectEntries { key, val -> - if (key == "data") { - return [key, val.collect { [path(it[1]).list().collect { file(it.toString()).name }] }] - } - else if (key == "plots") { - return [key, val.collect { [ - "pdf", - path("${it[1]}/pdf").list().collect { file(it.toString()).name }, - "png", - path("${it[1]}/png").list().collect { file(it.toString()).name }, - "svg", - path("${it[1]}/svg").list().collect { file(it.toString()).name }] }] - } - else if (key == "report") { - return [key, file(val[0][1].toString()).name] - } - return [key, val] - } - ).match() - } } test("sarscov2 single-end [fastqc] [config]") { @@ -100,85 +41,23 @@ nextflow_process { when { process { """ - input[0] = channel.of([ - [ id: 'FASTQC' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), - file("https://raw.githubusercontent.com/nf-core/seqinspector/1.0.0/assets/multiqc_config.yml", checkIfExists: true), - [], - [], - [] - ]) - """ - } - } - - then { - assert process.success - assert snapshot( - sanitizeOutput(process.out).collectEntries { key, val -> - if (key == "data") { - return [key, val.collect { [path(it[1]).list().collect { file(it.toString()).name }] }] - } - else if (key == "plots") { - return [key, val.collect { [ - "pdf", - path("${it[1]}/pdf").list().collect { file(it.toString()).name }, - "png", - path("${it[1]}/png").list().collect { file(it.toString()).name }, - "svg", - path("${it[1]}/svg").list().collect { file(it.toString()).name }] }] - } - else if (key == "report") { - return [key, file(val[0][1].toString()).name] - } - return [key, val] - } - ).match() - } - } - - test("sarscov2 single-end [fastqc] [multiple configs]") { - - when { - process { - """ - input[0] = channel.of([ - [ id: 'FASTQC' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), - [ - file("https://raw.githubusercontent.com/nf-core/seqinspector/1.0.0/assets/multiqc_config.yml", checkIfExists: true), - file("https://raw.githubusercontent.com/nf-core/seqinspector/1.0.0/assets/multiqc_config.yml", checkIfExists: true) - ], - [], - [], - [] - ]) + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) + input[1] = Channel.of(file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true)) + input[2] = [] + input[3] = [] + input[4] = [] + input[5] = [] """ } } then { - assert process.success - assert snapshot( - sanitizeOutput(process.out).collectEntries { key, val -> - if (key == "data") { - return [key, val.collect { [path(it[1]).list().collect { file(it.toString()).name }] }] - } - else if (key == "plots") { - return [key, val.collect { [ - "pdf", - path("${it[1]}/pdf").list().collect { file(it.toString()).name }, - "png", - path("${it[1]}/png").list().collect { file(it.toString()).name }, - "svg", - path("${it[1]}/svg").list().collect { file(it.toString()).name }] }] - } - else if (key == "report") { - return [key, file(val[0][1].toString()).name] - } - return [key, val] - } - ).match() + assertAll( + { assert process.success }, + { assert process.out.report[0] ==~ ".*/multiqc_report.html" }, + { assert process.out.data[0] ==~ ".*/multiqc_data" }, + { assert snapshot(process.out.versions).match("multiqc_versions_config") } + ) } } @@ -189,23 +68,25 @@ nextflow_process { when { process { """ - input[0] = channel.of([ - [ id: 'FASTQC' ], - file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true), - [], - [], - [], - [] - ]) + input[0] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastqc/test_fastqc.zip', checkIfExists: true)) + input[1] = [] + input[2] = [] + input[3] = [] + input[4] = [] + input[5] = [] """ } } then { - assert process.success assertAll( - { assert snapshot(sanitizeOutput(process.out)).match() } + { assert process.success }, + { assert snapshot(process.out.report.collect { file(it).getName() } + + process.out.data.collect { file(it).getName() } + + process.out.plots.collect { file(it).getName() } + + process.out.versions ).match("multiqc_stub") } ) } + } } diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index 7c2f370f..a88bafd6 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -1,422 +1,41 @@ { - "sarscov2 single-end [fastqc] [multiple configs]": { + "multiqc_versions_single": { "content": [ - { - "data": [ - [ - [ - "fastqc-status-check-heatmap.txt", - "fastqc_overrepresented_sequences_plot.txt", - "fastqc_per_base_n_content_plot.txt", - "fastqc_per_base_sequence_quality_plot.txt", - "fastqc_per_sequence_gc_content_plot_Counts.txt", - "fastqc_per_sequence_gc_content_plot_Percentages.txt", - "fastqc_per_sequence_quality_scores_plot.txt", - "fastqc_sequence_counts_plot.txt", - "fastqc_sequence_duplication_levels_plot.txt", - "fastqc_sequence_length_distribution_plot.txt", - "fastqc_top_overrepresented_sequences_table.txt", - "llms-full.txt", - "multiqc.log", - "multiqc.parquet", - "multiqc_citations.txt", - "multiqc_data.json", - "multiqc_fastqc.txt", - "multiqc_general_stats.txt", - "multiqc_sources.txt" - ] - ] - ], - "plots": [ - [ - "pdf", - [ - "fastqc-status-check-heatmap.pdf", - "fastqc_overrepresented_sequences_plot.pdf", - "fastqc_per_base_n_content_plot.pdf", - "fastqc_per_base_sequence_quality_plot.pdf", - "fastqc_per_sequence_gc_content_plot_Counts.pdf", - "fastqc_per_sequence_gc_content_plot_Percentages.pdf", - "fastqc_per_sequence_quality_scores_plot.pdf", - "fastqc_sequence_counts_plot-cnt.pdf", - "fastqc_sequence_counts_plot-pct.pdf", - "fastqc_sequence_duplication_levels_plot.pdf", - "fastqc_sequence_length_distribution_plot.pdf", - "fastqc_top_overrepresented_sequences_table.pdf" - ], - "png", - [ - "fastqc-status-check-heatmap.png", - "fastqc_overrepresented_sequences_plot.png", - "fastqc_per_base_n_content_plot.png", - "fastqc_per_base_sequence_quality_plot.png", - "fastqc_per_sequence_gc_content_plot_Counts.png", - "fastqc_per_sequence_gc_content_plot_Percentages.png", - "fastqc_per_sequence_quality_scores_plot.png", - "fastqc_sequence_counts_plot-cnt.png", - "fastqc_sequence_counts_plot-pct.png", - "fastqc_sequence_duplication_levels_plot.png", - "fastqc_sequence_length_distribution_plot.png", - "fastqc_top_overrepresented_sequences_table.png" - ], - "svg", - [ - "fastqc-status-check-heatmap.svg", - "fastqc_overrepresented_sequences_plot.svg", - "fastqc_per_base_n_content_plot.svg", - "fastqc_per_base_sequence_quality_plot.svg", - "fastqc_per_sequence_gc_content_plot_Counts.svg", - "fastqc_per_sequence_gc_content_plot_Percentages.svg", - "fastqc_per_sequence_quality_scores_plot.svg", - "fastqc_sequence_counts_plot-cnt.svg", - "fastqc_sequence_counts_plot-pct.svg", - "fastqc_sequence_duplication_levels_plot.svg", - "fastqc_sequence_length_distribution_plot.svg", - "fastqc_top_overrepresented_sequences_table.svg" - ] - ] - ], - "report": "multiqc_report.html", - "versions": [ - [ - "MULTIQC", - "multiqc", - "1.34" - ] - ] - } + [ + "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" + ] ], - "timestamp": "2026-03-17T16:15:42.577775492", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" - } + "nf-test": "0.9.3", + "nextflow": "24.10.4" + }, + "timestamp": "2025-10-27T13:33:24.356715" }, - "sarscov2 single-end [fastqc]": { + "multiqc_stub": { "content": [ - { - "data": [ - [ - [ - "fastqc-status-check-heatmap.txt", - "fastqc_overrepresented_sequences_plot.txt", - "fastqc_per_base_n_content_plot.txt", - "fastqc_per_base_sequence_quality_plot.txt", - "fastqc_per_sequence_gc_content_plot_Counts.txt", - "fastqc_per_sequence_gc_content_plot_Percentages.txt", - "fastqc_per_sequence_quality_scores_plot.txt", - "fastqc_sequence_counts_plot.txt", - "fastqc_sequence_duplication_levels_plot.txt", - "fastqc_sequence_length_distribution_plot.txt", - "fastqc_top_overrepresented_sequences_table.txt", - "llms-full.txt", - "multiqc.log", - "multiqc.parquet", - "multiqc_citations.txt", - "multiqc_data.json", - "multiqc_fastqc.txt", - "multiqc_general_stats.txt", - "multiqc_software_versions.txt", - "multiqc_sources.txt" - ] - ] - ], - "plots": [ - [ - "pdf", - [ - "fastqc-status-check-heatmap.pdf", - "fastqc_overrepresented_sequences_plot.pdf", - "fastqc_per_base_n_content_plot.pdf", - "fastqc_per_base_sequence_quality_plot.pdf", - "fastqc_per_sequence_gc_content_plot_Counts.pdf", - "fastqc_per_sequence_gc_content_plot_Percentages.pdf", - "fastqc_per_sequence_quality_scores_plot.pdf", - "fastqc_sequence_counts_plot-cnt.pdf", - "fastqc_sequence_counts_plot-pct.pdf", - "fastqc_sequence_duplication_levels_plot.pdf", - "fastqc_sequence_length_distribution_plot.pdf", - "fastqc_top_overrepresented_sequences_table.pdf" - ], - "png", - [ - "fastqc-status-check-heatmap.png", - "fastqc_overrepresented_sequences_plot.png", - "fastqc_per_base_n_content_plot.png", - "fastqc_per_base_sequence_quality_plot.png", - "fastqc_per_sequence_gc_content_plot_Counts.png", - "fastqc_per_sequence_gc_content_plot_Percentages.png", - "fastqc_per_sequence_quality_scores_plot.png", - "fastqc_sequence_counts_plot-cnt.png", - "fastqc_sequence_counts_plot-pct.png", - "fastqc_sequence_duplication_levels_plot.png", - "fastqc_sequence_length_distribution_plot.png", - "fastqc_top_overrepresented_sequences_table.png" - ], - "svg", - [ - "fastqc-status-check-heatmap.svg", - "fastqc_overrepresented_sequences_plot.svg", - "fastqc_per_base_n_content_plot.svg", - "fastqc_per_base_sequence_quality_plot.svg", - "fastqc_per_sequence_gc_content_plot_Counts.svg", - "fastqc_per_sequence_gc_content_plot_Percentages.svg", - "fastqc_per_sequence_quality_scores_plot.svg", - "fastqc_sequence_counts_plot-cnt.svg", - "fastqc_sequence_counts_plot-pct.svg", - "fastqc_sequence_duplication_levels_plot.svg", - "fastqc_sequence_length_distribution_plot.svg", - "fastqc_top_overrepresented_sequences_table.svg" - ] - ] - ], - "report": "multiqc_report.html", - "versions": [ - [ - "MULTIQC", - "multiqc", - "1.34" - ] - ] - } + [ + "multiqc_report.html", + "multiqc_data", + "multiqc_plots", + "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" + ] ], - "timestamp": "2026-03-17T16:21:17.072841555", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" - } + "nf-test": "0.9.3", + "nextflow": "24.10.4" + }, + "timestamp": "2025-10-27T13:34:11.103619" }, - "sarscov2 single-end [fastqc] - stub": { + "multiqc_versions_config": { "content": [ - { - "data": [ - [ - { - "id": "FASTQC" - }, - [ - ".stub:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "plots": [ - [ - { - "id": "FASTQC" - }, - [ - ".stub:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ] - ], - "report": [ - [ - { - "id": "FASTQC" - }, - "multiqc_report.html:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "versions": [ - [ - "MULTIQC", - "multiqc", - "1.34" - ] - ] - } + [ + "versions.yml:md5,737bb2c7cad54ffc2ec020791dc48b8f" + ] ], - "timestamp": "2026-02-26T15:14:39.789193051", "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" - } - }, - "sarscov2 single-end [fastqc] [config]": { - "content": [ - { - "data": [ - [ - [ - "fastqc-status-check-heatmap.txt", - "fastqc_overrepresented_sequences_plot.txt", - "fastqc_per_base_n_content_plot.txt", - "fastqc_per_base_sequence_quality_plot.txt", - "fastqc_per_sequence_gc_content_plot_Counts.txt", - "fastqc_per_sequence_gc_content_plot_Percentages.txt", - "fastqc_per_sequence_quality_scores_plot.txt", - "fastqc_sequence_counts_plot.txt", - "fastqc_sequence_duplication_levels_plot.txt", - "fastqc_sequence_length_distribution_plot.txt", - "fastqc_top_overrepresented_sequences_table.txt", - "llms-full.txt", - "multiqc.log", - "multiqc.parquet", - "multiqc_citations.txt", - "multiqc_data.json", - "multiqc_fastqc.txt", - "multiqc_general_stats.txt", - "multiqc_sources.txt" - ] - ] - ], - "plots": [ - [ - "pdf", - [ - "fastqc-status-check-heatmap.pdf", - "fastqc_overrepresented_sequences_plot.pdf", - "fastqc_per_base_n_content_plot.pdf", - "fastqc_per_base_sequence_quality_plot.pdf", - "fastqc_per_sequence_gc_content_plot_Counts.pdf", - "fastqc_per_sequence_gc_content_plot_Percentages.pdf", - "fastqc_per_sequence_quality_scores_plot.pdf", - "fastqc_sequence_counts_plot-cnt.pdf", - "fastqc_sequence_counts_plot-pct.pdf", - "fastqc_sequence_duplication_levels_plot.pdf", - "fastqc_sequence_length_distribution_plot.pdf", - "fastqc_top_overrepresented_sequences_table.pdf" - ], - "png", - [ - "fastqc-status-check-heatmap.png", - "fastqc_overrepresented_sequences_plot.png", - "fastqc_per_base_n_content_plot.png", - "fastqc_per_base_sequence_quality_plot.png", - "fastqc_per_sequence_gc_content_plot_Counts.png", - "fastqc_per_sequence_gc_content_plot_Percentages.png", - "fastqc_per_sequence_quality_scores_plot.png", - "fastqc_sequence_counts_plot-cnt.png", - "fastqc_sequence_counts_plot-pct.png", - "fastqc_sequence_duplication_levels_plot.png", - "fastqc_sequence_length_distribution_plot.png", - "fastqc_top_overrepresented_sequences_table.png" - ], - "svg", - [ - "fastqc-status-check-heatmap.svg", - "fastqc_overrepresented_sequences_plot.svg", - "fastqc_per_base_n_content_plot.svg", - "fastqc_per_base_sequence_quality_plot.svg", - "fastqc_per_sequence_gc_content_plot_Counts.svg", - "fastqc_per_sequence_gc_content_plot_Percentages.svg", - "fastqc_per_sequence_quality_scores_plot.svg", - "fastqc_sequence_counts_plot-cnt.svg", - "fastqc_sequence_counts_plot-pct.svg", - "fastqc_sequence_duplication_levels_plot.svg", - "fastqc_sequence_length_distribution_plot.svg", - "fastqc_top_overrepresented_sequences_table.svg" - ] - ] - ], - "report": "multiqc_report.html", - "versions": [ - [ - "MULTIQC", - "multiqc", - "1.34" - ] - ] - } - ], - "timestamp": "2026-03-17T16:15:30.372239611", - "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" - } - }, - "sarscov2 single-end [fastqc] - custom prefix": { - "content": [ - { - "data": [ - [ - [ - "fastqc-status-check-heatmap.txt", - "fastqc_overrepresented_sequences_plot.txt", - "fastqc_per_base_n_content_plot.txt", - "fastqc_per_base_sequence_quality_plot.txt", - "fastqc_per_sequence_gc_content_plot_Counts.txt", - "fastqc_per_sequence_gc_content_plot_Percentages.txt", - "fastqc_per_sequence_quality_scores_plot.txt", - "fastqc_sequence_counts_plot.txt", - "fastqc_sequence_duplication_levels_plot.txt", - "fastqc_sequence_length_distribution_plot.txt", - "fastqc_top_overrepresented_sequences_table.txt", - "llms-full.txt", - "multiqc.log", - "multiqc.parquet", - "multiqc_citations.txt", - "multiqc_data.json", - "multiqc_fastqc.txt", - "multiqc_general_stats.txt", - "multiqc_software_versions.txt", - "multiqc_sources.txt" - ] - ] - ], - "plots": [ - [ - "pdf", - [ - "fastqc-status-check-heatmap.pdf", - "fastqc_overrepresented_sequences_plot.pdf", - "fastqc_per_base_n_content_plot.pdf", - "fastqc_per_base_sequence_quality_plot.pdf", - "fastqc_per_sequence_gc_content_plot_Counts.pdf", - "fastqc_per_sequence_gc_content_plot_Percentages.pdf", - "fastqc_per_sequence_quality_scores_plot.pdf", - "fastqc_sequence_counts_plot-cnt.pdf", - "fastqc_sequence_counts_plot-pct.pdf", - "fastqc_sequence_duplication_levels_plot.pdf", - "fastqc_sequence_length_distribution_plot.pdf", - "fastqc_top_overrepresented_sequences_table.pdf" - ], - "png", - [ - "fastqc-status-check-heatmap.png", - "fastqc_overrepresented_sequences_plot.png", - "fastqc_per_base_n_content_plot.png", - "fastqc_per_base_sequence_quality_plot.png", - "fastqc_per_sequence_gc_content_plot_Counts.png", - "fastqc_per_sequence_gc_content_plot_Percentages.png", - "fastqc_per_sequence_quality_scores_plot.png", - "fastqc_sequence_counts_plot-cnt.png", - "fastqc_sequence_counts_plot-pct.png", - "fastqc_sequence_duplication_levels_plot.png", - "fastqc_sequence_length_distribution_plot.png", - "fastqc_top_overrepresented_sequences_table.png" - ], - "svg", - [ - "fastqc-status-check-heatmap.svg", - "fastqc_overrepresented_sequences_plot.svg", - "fastqc_per_base_n_content_plot.svg", - "fastqc_per_base_sequence_quality_plot.svg", - "fastqc_per_sequence_gc_content_plot_Counts.svg", - "fastqc_per_sequence_gc_content_plot_Percentages.svg", - "fastqc_per_sequence_quality_scores_plot.svg", - "fastqc_sequence_counts_plot-cnt.svg", - "fastqc_sequence_counts_plot-pct.svg", - "fastqc_sequence_duplication_levels_plot.svg", - "fastqc_sequence_length_distribution_plot.svg", - "fastqc_top_overrepresented_sequences_table.svg" - ] - ] - ], - "report": "custom_prefix.html", - "versions": [ - [ - "MULTIQC", - "multiqc", - "1.34" - ] - ] - } - ], - "timestamp": "2026-03-17T16:15:18.189023981", - "meta": { - "nf-test": "0.9.4", - "nextflow": "25.10.4" - } + "nf-test": "0.9.3", + "nextflow": "24.10.4" + }, + "timestamp": "2025-10-27T13:34:04.615233" } } \ No newline at end of file diff --git a/modules/nf-core/multiqc/tests/nextflow.config b/modules/nf-core/multiqc/tests/nextflow.config index 374dfef2..c537a6a3 100644 --- a/modules/nf-core/multiqc/tests/nextflow.config +++ b/modules/nf-core/multiqc/tests/nextflow.config @@ -1,6 +1,5 @@ process { withName: 'MULTIQC' { ext.prefix = null - ext.args = '-p' } } diff --git a/nextflow.config b/nextflow.config index e081c0c2..db1e4c85 100644 --- a/nextflow.config +++ b/nextflow.config @@ -1,6 +1,6 @@ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - nf-core/spatialxe Nextflow config file + nf-core/spatialaxe Nextflow config file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Default config options for all compute environments ---------------------------------------------------------------------------------------- @@ -13,11 +13,6 @@ params { // Input options input = null - // References - genome = null - igenomes_base = 's3://ngi-igenomes/igenomes/' - igenomes_ignore = false - // MultiQC options multiqc_config = null multiqc_title = null @@ -32,6 +27,7 @@ params { email_on_fail = null plaintext_email = false monochrome_logs = false + hook_url = System.getenv('HOOK_URL') help = false help_full = false show_hidden = false @@ -52,10 +48,6 @@ 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' @@ -176,13 +168,13 @@ profiles { // Load nf-core custom profiles from different institutions // If params.custom_config_base is set AND either the NXF_OFFLINE environment variable is not set or params.custom_config_base is a local path, the nfcore_custom.config file from the specified base path is included. -// Load nf-core/spatialxe custom profiles from different institutions. +// Load nf-core/spatialaxe custom profiles from different institutions. includeConfig params.custom_config_base && (!System.getenv('NXF_OFFLINE') || !params.custom_config_base.startsWith('http')) ? "${params.custom_config_base}/nfcore_custom.config" : "/dev/null" -// Load nf-core/spatialxe custom profiles from different institutions. +// Load nf-core/spatialaxe custom profiles from different institutions. // TODO nf-core: Optionally, you can add a pipeline-specific nf-core config at https://github.com/nf-core/configs -// includeConfig params.custom_config_base && (!System.getenv('NXF_OFFLINE') || !params.custom_config_base.startsWith('http')) ? "${params.custom_config_base}/pipeline/spatialxe.config" : "/dev/null" +// includeConfig params.custom_config_base && (!System.getenv('NXF_OFFLINE') || !params.custom_config_base.startsWith('http')) ? "${params.custom_config_base}/pipeline/spatialaxe.config" : "/dev/null" // Set default registry for Apptainer, Docker, Podman, Charliecloud and Singularity independent of -profile // Will not be used unless Apptainer / Docker / Podman / Charliecloud / Singularity are enabled @@ -193,8 +185,7 @@ podman.registry = 'quay.io' singularity.registry = 'quay.io' charliecloud.registry = 'quay.io' -// Load igenomes.config if required -includeConfig !params.igenomes_ignore ? 'conf/igenomes.config' : 'conf/igenomes_ignored.config' + // Export these variables to prevent local Python/R libraries from conflicting with those in the container // The JULIA depot path has been adjusted to a fixed path `/usr/local/share/julia` that needs to be used for packages in the container. @@ -238,7 +229,7 @@ dag { } manifest { - name = 'nf-core/spatialxe' + name = 'nf-core/spatialaxe' contributors = [ // TODO nf-core: Update the field with the details of the contributors to your pipeline. New with Nextflow version 24.10.0 [ @@ -249,6 +240,14 @@ manifest { contribution: [], // List of contribution types ('author', 'maintainer' or 'contributor') orcid: '' ], + [ + name: ' Dongze He', + affiliation: '', + email: '', + github: '', + contribution: [], // List of contribution types ('author', 'maintainer' or 'contributor') + orcid: '' + ], [ name: ' Florian Heyl', affiliation: '', @@ -258,11 +257,11 @@ manifest { orcid: '' ], ] - homePage = 'https://github.com/nf-core/spatialxe' + homePage = 'https://github.com/nf-core/spatialaxe' description = """A pipeline for spatialomics Xenium In Situ data.""" mainScript = 'main.nf' defaultBranch = 'master' - nextflowVersion = '!>=25.10.4' + nextflowVersion = '!>=25.04.0' version = '1.0.0' doi = '' } @@ -276,5 +275,6 @@ validation { defaultIgnoreParams = ["genomes"] monochromeLogs = params.monochrome_logs } + // Load modules.config for DSL2 module specific options includeConfig 'conf/modules.config' diff --git a/nextflow_schema.json b/nextflow_schema.json index 5d9dff39..b63b23b9 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,7 +1,7 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/nf-core/spatialxe/master/nextflow_schema.json", - "title": "nf-core/spatialxe pipeline parameters", + "$id": "https://raw.githubusercontent.com/nf-core/spatialaxe/master/nextflow_schema.json", + "title": "nf-core/spatialaxe pipeline parameters", "description": "A pipeline for spatialomics Xenium In Situ data.", "type": "object", "$defs": { @@ -20,7 +20,7 @@ "mimetype": "text/csv", "pattern": "^\\S+\\.csv$", "description": "Path to comma-separated file containing information about the samples in the experiment.", - "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row. See [usage docs](https://nf-co.re/spatialxe/usage#samplesheet-input).", + "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row. See [usage docs](https://nf-co.re/spatialaxe/usage#samplesheet-input).", "fa_icon": "fas fa-file-csv" }, "outdir": { @@ -43,44 +43,6 @@ } } }, - "reference_genome_options": { - "title": "Reference genome options", - "type": "object", - "fa_icon": "fas fa-dna", - "description": "Reference genome related files and options required for the workflow.", - "properties": { - "genome": { - "type": "string", - "description": "Name of iGenomes reference.", - "fa_icon": "fas fa-book", - "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details." - }, - "fasta": { - "type": "string", - "format": "file-path", - "exists": true, - "mimetype": "text/plain", - "pattern": "^\\S+\\.fn?a(sta)?(\\.gz)?$", - "description": "Path to FASTA genome file.", - "help_text": "This parameter is *mandatory* if `--genome` is not specified. If you don't have a BWA index available this will be generated for you automatically. Combine with `--save_reference` to save BWA index for future runs.", - "fa_icon": "far fa-file-code" - }, - "igenomes_ignore": { - "type": "boolean", - "description": "Do not load the iGenomes reference config.", - "fa_icon": "fas fa-ban", - "hidden": true, - "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." - }, - "igenomes_base": { - "type": "string", - "description": "The base path to the igenomes reference files", - "fa_icon": "fas fa-ban", - "hidden": true, - "default": "s3://ngi-igenomes/igenomes/" - } - } - }, "institutional_config_options": { "title": "Institutional config options", "type": "object", @@ -179,6 +141,13 @@ "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 + }, "multiqc_config": { "type": "string", "format": "file-path", @@ -236,9 +205,6 @@ { "$ref": "#/$defs/input_output_options" }, - { - "$ref": "#/$defs/reference_genome_options" - }, { "$ref": "#/$defs/institutional_config_options" }, diff --git a/nf-test.config b/nf-test.config index f7aaeb4a..3a1fff59 100644 --- a/nf-test.config +++ b/nf-test.config @@ -1,35 +1,21 @@ 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 = [ - '.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', - ] + triggers 'nextflow.config', 'nf-test.config', 'conf/test.config', 'tests/nextflow.config', 'tests/.nftignore' // load the necessary plugins plugins { diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 2d0ac5c2..6d4c7d0c 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -22,8 +22,8 @@ "@id": "./", "@type": "Dataset", "creativeWorkStatus": "Stable", - "datePublished": "2026-04-30T13:33:23+00:00", - "description": "

\n \n \n \"nf-core/spatialxe\"\n \n

\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/nf-core/spatialxe)\n[![GitHub Actions CI Status](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialxe/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/spatialxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialxe/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/spatialxe/results)[![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/nf-core/spatialxe)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23spatialxe-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/spatialxe)[![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/spatialxe** is a bioinformatics pipeline that ...\n\n\n\n\n1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/))\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 nf-core/spatialxe \\\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\nFor more details and further functionality, please refer to the [usage documentation](https://nf-co.re/spatialxe/usage) and the [parameter documentation](https://nf-co.re/spatialxe/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/spatialxe/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/spatialxe/output).\n\n## Credits\n\nnf-core/spatialxe was originally written by Sameesh Kher, Florian Heyl.\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\nFor further information or help, don't hesitate to get in touch on the [Slack `#spatialxe` channel](https://nfcore.slack.com/channels/spatialxe) (you can join with [this invite](https://nf-co.re/join/slack)).\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\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", + "datePublished": "2026-05-27T11:32:06+00:00", + "description": "

\n \n \n \"nf-core/spatialaxe\"\n \n

\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/nf-core/spatialaxe)\n[![GitHub Actions CI Status](https://github.com/nf-core/spatialaxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialaxe/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/spatialaxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialaxe/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/spatialaxe/results)[![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.04.0-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.5.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.5.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/nf-core/spatialaxe)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23spatialaxe-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/spatialaxe)[![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/spatialaxe** is a bioinformatics pipeline that ...\n\n\n\n\n1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/))\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 nf-core/spatialaxe \\\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/spatialaxe/usage) and the [parameter documentation](https://nf-co.re/spatialaxe/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/spatialaxe/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/spatialaxe/output).\n\n## Credits\n\nnf-core/spatialaxe was originally written by Sameesh Kher, Dongze He, Florian Heyl.\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\nFor further information or help, don't hesitate to get in touch on the [Slack `#spatialaxe` channel](https://nfcore.slack.com/channels/spatialaxe) (you can join with [this invite](https://nf-co.re/join/slack)).\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\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" @@ -92,17 +92,17 @@ "@id": ".prettierignore" } ], - "isBasedOn": "https://github.com/nf-core/spatialxe", + "isBasedOn": "https://github.com/nf-core/spatialaxe", "license": "MIT", "mainEntity": { "@id": "main.nf" }, "mentions": [ { - "@id": "#1c52c7cb-def3-43c9-9e10-865c2cf0ba78" + "@id": "#350de0e1-0abf-424d-9eb6-051f491f4baa" } ], - "name": "nf-core/spatialxe" + "name": "nf-core/spatialaxe" }, { "@id": "ro-crate-metadata.json", @@ -121,17 +121,13 @@ }, { "@id": "main.nf", - "@type": ["File", "SoftwareSourceCode", "ComputationalWorkflow"], - "contributor": [ - { - "@id": "https://orcid.org/0009-0008-2420-6464" - }, - { - "@id": "https://orcid.org/0000-0002-3651-5685" - } + "@type": [ + "File", + "SoftwareSourceCode", + "ComputationalWorkflow" ], "dateCreated": "", - "dateModified": "2026-04-30T13:33:23Z", + "dateModified": "2026-05-27T13:32:06Z", "dct:conformsTo": "https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE/", "keywords": [ "nf-core", @@ -144,16 +140,25 @@ "transcriptomics", "xenium" ], - "license": ["MIT"], - "name": ["nf-core/spatialxe"], + "license": [ + "MIT" + ], + "name": [ + "nf-core/spatialaxe" + ], "programmingLanguage": { "@id": "https://w3id.org/workflowhub/workflow-ro-crate#nextflow" }, "sdPublisher": { "@id": "https://nf-co.re/" }, - "url": ["https://github.com/nf-core/spatialxe", "https://nf-co.re/spatialxe/1.0.0/"], - "version": ["1.0.0"] + "url": [ + "https://github.com/nf-core/spatialaxe", + "https://nf-co.re/spatialaxe/1.0.0/" + ], + "version": [ + "1.0.0" + ] }, { "@id": "https://w3id.org/workflowhub/workflow-ro-crate#nextflow", @@ -165,26 +170,26 @@ "url": { "@id": "https://www.nextflow.io/" }, - "version": "!>=25.10.4" + "version": "!>=25.04.0" }, { - "@id": "#1c52c7cb-def3-43c9-9e10-865c2cf0ba78", + "@id": "#350de0e1-0abf-424d-9eb6-051f491f4baa", "@type": "TestSuite", "instance": [ { - "@id": "#162edd3a-9c52-463a-94f5-78ed109f8513" + "@id": "#aaeb7942-345e-41b5-b9c9-3426cbb5b252" } ], "mainEntity": { "@id": "main.nf" }, - "name": "Test suite for nf-core/spatialxe" + "name": "Test suite for nf-core/spatialaxe" }, { - "@id": "#162edd3a-9c52-463a-94f5-78ed109f8513", + "@id": "#aaeb7942-345e-41b5-b9c9-3426cbb5b252", "@type": "TestInstance", - "name": "GitHub Actions workflow for testing nf-core/spatialxe", - "resource": "repos/nf-core/spatialxe/actions/workflows/nf-test.yml", + "name": "GitHub Actions workflow for testing nf-core/spatialaxe", + "resource": "repos/nf-core/spatialaxe/actions/workflows/nf-test.yml", "runsOn": { "@id": "https://w3id.org/ro/terms/test#GithubService" }, @@ -308,16 +313,6 @@ "@type": "Organization", "name": "nf-core", "url": "https://nf-co.re/" - }, - { - "@id": "https://orcid.org/0009-0008-2420-6464", - "@type": "Person", - "name": "Sameesh Kher" - }, - { - "@id": "https://orcid.org/0000-0002-3651-5685", - "@type": "Person", - "name": "Florian Heyl" } ] -} +} \ No newline at end of file diff --git a/subworkflows/local/utils_nfcore_spatialxe_pipeline/main.nf b/subworkflows/local/utils_nfcore_spatialaxe_pipeline/main.nf similarity index 85% rename from subworkflows/local/utils_nfcore_spatialxe_pipeline/main.nf rename to subworkflows/local/utils_nfcore_spatialaxe_pipeline/main.nf index c60249c8..d3605f40 100644 --- a/subworkflows/local/utils_nfcore_spatialxe_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_spatialaxe_pipeline/main.nf @@ -1,5 +1,5 @@ // -// Subworkflow with functionality specific to the nf-core/spatialxe pipeline +// Subworkflow with functionality specific to the nf-core/spatialaxe pipeline // /* @@ -14,6 +14,7 @@ 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' @@ -53,9 +54,6 @@ workflow PIPELINE_INITIALISATION { // // Validate parameters and generate parameter summary to stdout // - - def before_text = "" - def after_text = "" before_text = """ -\033[2m----------------------------------------------------\033[0m- \033[0;32m,--.\033[0;30m/\033[0;32m,-.\033[0m @@ -63,7 +61,7 @@ workflow PIPELINE_INITIALISATION { \033[0;34m |\\ | |__ __ / ` / \\ |__) |__ \033[0;33m} {\033[0m \033[0;34m | \\| | \\__, \\__/ | \\ |___ \033[0;32m\\`-._,-`-,\033[0m \033[0;32m`._,._,\'\033[0m -\033[0;35m nf-core/spatialxe ${workflow.manifest.version}\033[0m +\033[0;35m nf-core/spatialaxe ${workflow.manifest.version}\033[0m -\033[2m----------------------------------------------------\033[0m- """ after_text = """${workflow.manifest.doi ? "\n* The pipeline\n" : ""}${workflow.manifest.doi.tokenize(",").collect { doi -> " https://doi.org/${doi.trim().replace('https://doi.org/','')}"}.join("\n")}${workflow.manifest.doi ? "\n" : ""} @@ -71,12 +69,8 @@ workflow PIPELINE_INITIALISATION { https://doi.org/10.1038/s41587-020-0439-x * Software dependencies - https://github.com/nf-core/spatialxe/blob/master/CITATIONS.md + https://github.com/nf-core/spatialaxe/blob/master/CITATIONS.md """ - 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 ( @@ -98,17 +92,12 @@ workflow PIPELINE_INITIALISATION { nextflow_cli_args ) - // - // Custom validation for pipeline parameters - // - validateInputParameters() - // // Create channel from input file provided through params.input // channel - .fromList(samplesheetToList(input, "${projectDir}/assets/schema_input.json")) + .fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) .map { meta, fastq_1, fastq_2 -> if (!fastq_2) { @@ -146,6 +135,7 @@ workflow PIPELINE_COMPLETION { plaintext_email // boolean: Send plain-text email instead of HTML outdir // path: Path to output directory where results will be published monochrome_logs // boolean: Disable ANSI colour codes in log output + hook_url // string: hook URL for notifications multiqc_report // string: Path to MultiQC report main: @@ -169,11 +159,13 @@ 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 for common issues: https://nf-co.re/docs/running/troubleshooting" + log.error "Pipeline failed. Please refer to troubleshooting docs: https://nf-co.re/docs/usage/troubleshooting" } } @@ -182,12 +174,6 @@ workflow PIPELINE_COMPLETION { FUNCTIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -// -// Check and validate pipeline parameters -// -def validateInputParameters() { - genomeExistsError() -} // // Validate channels from input samplesheet @@ -204,31 +190,6 @@ def validateInputSamplesheet(input) { return [ metas[0], fastqs ] } // -// Get attribute from genome config file e.g. fasta -// -def getGenomeAttribute(attribute) { - if (params.genomes && params.genome && params.genomes.containsKey(params.genome)) { - if (params.genomes[ params.genome ].containsKey(attribute)) { - return params.genomes[ params.genome ][ attribute ] - } - } - return null -} - -// -// Exit pipeline if incorrect --genome key provided -// -def genomeExistsError() { - if (params.genomes && params.genome && !params.genomes.containsKey(params.genome)) { - def error_string = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " Genome '${params.genome}' not found in any config files provided to the pipeline.\n" + - " Currently, the available genome keys are:\n" + - " ${params.genomes.keySet().join(", ")}\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - error(error_string) - } -} -// // Generate methods description for MultiQC // def toolCitationText() { diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index afca5439..2f30e9a4 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 } /* @@ -353,3 +353,67 @@ 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 deleted file mode 100644 index 8940d32d..00000000 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 859d1030..00000000 --- a/subworkflows/nf-core/utils_nfcore_pipeline/tests/main.nf.test.snap +++ /dev/null @@ -1,19 +0,0 @@ -{ - "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_nfschema_plugin/main.nf b/subworkflows/nf-core/utils_nfschema_plugin/main.nf index 1df8b76f..ee4738c8 100644 --- a/subworkflows/nf-core/utils_nfschema_plugin/main.nf +++ b/subworkflows/nf-core/utils_nfschema_plugin/main.nf @@ -38,7 +38,7 @@ workflow UTILS_NFSCHEMA_PLUGIN { } log.info paramsHelp( help_options, - (params.help instanceof String && params.help != "true") ? params.help : "", + params.help instanceof String ? params.help : "", ) exit 0 } @@ -71,3 +71,4 @@ workflow UTILS_NFSCHEMA_PLUGIN { emit: dummy_emit = true } + diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config index f6537cc3..8d8c7371 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.6.1" + id "nf-schema@2.5.1" } validation { diff --git a/tests/default.nf.test b/tests/default.nf.test index d5000f57..d5c769bc 100644 --- a/tests/default.nf.test +++ b/tests/default.nf.test @@ -13,19 +13,19 @@ nextflow_pipeline { } then { - // 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 + // 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') assertAll( + { assert workflow.success}, { assert snapshot( // 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_spatialxe_software_mqc_versions.yml"), + removeNextflowVersion("$outputDir/pipeline_info/nf_core_spatialaxe_software_mqc_versions.yml"), // All stable path name, with a relative path - stable_path, + stable_name, // All files with stable contents - stable_content + stable_path ).match() } ) } diff --git a/tests/nextflow.config b/tests/nextflow.config index caf25a7b..3288deec 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/spatialxe/' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/spatialaxe' } aws.client.anonymous = true // fixes S3 access issues on self-hosted runners diff --git a/workflows/spatialaxe.nf b/workflows/spatialaxe.nf new file mode 100644 index 00000000..14b265a2 --- /dev/null +++ b/workflows/spatialaxe.nf @@ -0,0 +1,115 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + IMPORT MODULES / SUBWORKFLOWS / FUNCTIONS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ +include { FASTQC } from '../modules/nf-core/fastqc/main' +include { MULTIQC } from '../modules/nf-core/multiqc/main' +include { paramsSummaryMap } from 'plugin/nf-schema' +include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' +include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' +include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_spatialaxe_pipeline' + +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + RUN MAIN WORKFLOW +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +workflow SPATIALAXE { + + take: + ch_samplesheet // channel: samplesheet read in from --input + main: + + ch_versions = channel.empty() + ch_multiqc_files = channel.empty() + // + // MODULE: Run FastQC + // + FASTQC ( + ch_samplesheet + ) + ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}) + ch_versions = ch_versions.mix(FASTQC.out.versions.first()) + + // + // Collate and save software 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')}" + } + + softwareVersionsToYAML(ch_versions.mix(topic_versions.versions_file)) + .mix(topic_versions_string) + .collectFile( + storeDir: "${params.outdir}/pipeline_info", + name: 'nf_core_' + 'spatialaxe_software_' + 'mqc_' + 'versions.yml', + sort: true, + newLine: true + ).set { ch_collated_versions } + + + // + // MODULE: MultiQC + // + ch_multiqc_config = channel.fromPath( + "$projectDir/assets/multiqc_config.yml", checkIfExists: true) + ch_multiqc_custom_config = params.multiqc_config ? + channel.fromPath(params.multiqc_config, checkIfExists: true) : + channel.empty() + ch_multiqc_logo = params.multiqc_logo ? + channel.fromPath(params.multiqc_logo, checkIfExists: true) : + channel.empty() + + summary_params = paramsSummaryMap( + workflow, parameters_schema: "nextflow_schema.json") + ch_workflow_summary = channel.value(paramsSummaryMultiqc(summary_params)) + ch_multiqc_files = ch_multiqc_files.mix( + ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) + ch_multiqc_custom_methods_description = params.multiqc_methods_description ? + file(params.multiqc_methods_description, checkIfExists: true) : + file("$projectDir/assets/methods_description_template.yml", checkIfExists: true) + ch_methods_description = channel.value( + methodsDescriptionText(ch_multiqc_custom_methods_description)) + + ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) + ch_multiqc_files = ch_multiqc_files.mix( + ch_methods_description.collectFile( + name: 'methods_description_mqc.yaml', + sort: true + ) + ) + + MULTIQC ( + ch_multiqc_files.collect(), + ch_multiqc_config.toList(), + ch_multiqc_custom_config.toList(), + ch_multiqc_logo.toList(), + [], + [] + ) + + emit:multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html + versions = ch_versions // channel: [ path(versions.yml) ] + +} + +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + THE END +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ diff --git a/workflows/spatialxe.nf b/workflows/spatialxe.nf deleted file mode 100644 index d9a6a306..00000000 --- a/workflows/spatialxe.nf +++ /dev/null @@ -1,101 +0,0 @@ -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - IMPORT MODULES / SUBWORKFLOWS / FUNCTIONS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ -include { FASTQC } from '../modules/nf-core/fastqc/main' -include { MULTIQC } from '../modules/nf-core/multiqc/main' -include { paramsSummaryMap } from 'plugin/nf-schema' -include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' -include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' -include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_spatialxe_pipeline' - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - RUN MAIN WORKFLOW -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - -workflow SPATIALXE { - - take: - ch_samplesheet // channel: samplesheet read in from --input - multiqc_config - multiqc_logo - multiqc_methods_description - outdir - - main: - - def ch_versions = channel.empty() - def ch_multiqc_files = channel.empty() - // - // MODULE: Run FastQC - // - FASTQC(ch_samplesheet) - ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.map{ _meta, file -> file }) - - // - // Collate and save software 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: "${outdir}/pipeline_info", - name: 'nf_core_' + 'spatialxe_software_' + 'mqc_' + 'versions.yml', - sort: true, - newLine: true - ) - - // - // MODULE: MultiQC - // - ch_multiqc_files = ch_multiqc_files.mix(ch_collated_versions) - def ch_summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") - def ch_workflow_summary = channel.value(paramsSummaryMultiqc(ch_summary_params)) - ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) - def ch_multiqc_custom_methods_description = multiqc_methods_description - ? file(multiqc_methods_description, checkIfExists: true) - : file("${projectDir}/assets/methods_description_template.yml", checkIfExists: true) - def ch_methods_description = channel.value(methodsDescriptionText(ch_multiqc_custom_methods_description)) - ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml', sort: true)) - MULTIQC( - ch_multiqc_files.flatten().collect().map { files -> - [ - [id: 'spatialxe'], - files, - multiqc_config - ? file(multiqc_config, checkIfExists: true) - : file("${projectDir}/assets/multiqc_config.yml", checkIfExists: true), - multiqc_logo ? file(multiqc_logo, checkIfExists: true) : [], - [], - [], - ] - } - ) - emit:multiqc_report = MULTIQC.out.report.map { _meta, report -> [report] }.toList() // channel: /path/to/multiqc_report.html - versions = ch_versions // channel: [ path(versions.yml) ] -} - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - THE END -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ From 01560ce4402d27b084c4a1f6f801199a8f4fb9ab Mon Sep 17 00:00:00 2001 From: f641l Date: Wed, 27 May 2026 13:36:29 +0200 Subject: [PATCH 4/4] Template update for nf-core/tools version 3.5.2 --- ro-crate-metadata.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ro-crate-metadata.json b/ro-crate-metadata.json index 6d4c7d0c..47269b35 100644 --- a/ro-crate-metadata.json +++ b/ro-crate-metadata.json @@ -22,7 +22,7 @@ "@id": "./", "@type": "Dataset", "creativeWorkStatus": "Stable", - "datePublished": "2026-05-27T11:32:06+00:00", + "datePublished": "2026-05-27T11:36:27+00:00", "description": "

\n \n \n \"nf-core/spatialaxe\"\n \n

\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/nf-core/spatialaxe)\n[![GitHub Actions CI Status](https://github.com/nf-core/spatialaxe/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/spatialaxe/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/spatialaxe/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/spatialaxe/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/spatialaxe/results)[![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.04.0-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.5.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.5.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/nf-core/spatialaxe)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23spatialaxe-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/spatialaxe)[![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/spatialaxe** is a bioinformatics pipeline that ...\n\n\n\n\n1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/))\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 nf-core/spatialaxe \\\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/spatialaxe/usage) and the [parameter documentation](https://nf-co.re/spatialaxe/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/spatialaxe/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/spatialaxe/output).\n\n## Credits\n\nnf-core/spatialaxe was originally written by Sameesh Kher, Dongze He, Florian Heyl.\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\nFor further information or help, don't hesitate to get in touch on the [Slack `#spatialaxe` channel](https://nfcore.slack.com/channels/spatialaxe) (you can join with [this invite](https://nf-co.re/join/slack)).\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\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": [ { @@ -99,7 +99,7 @@ }, "mentions": [ { - "@id": "#350de0e1-0abf-424d-9eb6-051f491f4baa" + "@id": "#93095c81-90d0-4005-8fe8-257133b523b7" } ], "name": "nf-core/spatialaxe" @@ -127,7 +127,7 @@ "ComputationalWorkflow" ], "dateCreated": "", - "dateModified": "2026-05-27T13:32:06Z", + "dateModified": "2026-05-27T13:36:27Z", "dct:conformsTo": "https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE/", "keywords": [ "nf-core", @@ -173,11 +173,11 @@ "version": "!>=25.04.0" }, { - "@id": "#350de0e1-0abf-424d-9eb6-051f491f4baa", + "@id": "#93095c81-90d0-4005-8fe8-257133b523b7", "@type": "TestSuite", "instance": [ { - "@id": "#aaeb7942-345e-41b5-b9c9-3426cbb5b252" + "@id": "#662205d5-7986-4a2b-99ae-86639b5bf728" } ], "mainEntity": { @@ -186,7 +186,7 @@ "name": "Test suite for nf-core/spatialaxe" }, { - "@id": "#aaeb7942-345e-41b5-b9c9-3426cbb5b252", + "@id": "#662205d5-7986-4a2b-99ae-86639b5bf728", "@type": "TestInstance", "name": "GitHub Actions workflow for testing nf-core/spatialaxe", "resource": "repos/nf-core/spatialaxe/actions/workflows/nf-test.yml",