From f957830863260fa1448c83f9b46adba4bd32c4dc Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Thu, 30 Apr 2026 13:33:32 +0000 Subject: [PATCH] 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 | 8 +- .pre-commit-config.yaml | 16 +- .prettierignore | 2 - CHANGELOG.md | 2 +- README.md | 12 +- assets/adaptivecard.json | 67 - 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/images/nf-core-methylseq_logo_dark.png | Bin 66253 -> 30206 bytes docs/images/nf-core-methylseq_logo_light.png | Bin 67072 -> 25721 bytes 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 | 45 +- .../utils_nfcore_methylseq_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/methylseq.nf | 84 +- 69 files changed, 6290 insertions(+), 752 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 a7a92058..00000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,125 +0,0 @@ -# `nf-core/methylseq`: Contributing Guidelines - -Hi there! -Many thanks for taking an interest in improving nf-core/methylseq. - -We try to manage the required tasks for nf-core/methylseq 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/methylseq then the best place to ask is on the nf-core Slack [#methylseq](https://nfcore.slack.com/channels/methylseq) channel ([join our Slack here](https://nf-co.re/join/slack)). - -## Contribution workflow - -If you'd like to write some code for nf-core/methylseq, the standard workflow is as follows: - -1. Check that there isn't already an issue about your idea in the [nf-core/methylseq issues](https://github.com/nf-core/methylseq/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/methylseq repository](https://github.com/nf-core/methylseq) 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/methylseq documentation](https://nf-co.re/methylseq/usage) and don't hesitate to get in touch on the nf-core Slack [#methylseq](https://nfcore.slack.com/channels/methylseq) channel ([join our Slack here](https://nf-co.re/join/slack)). - -## Pipeline contribution conventions - -To make the `nf-core/methylseq` 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/methylseq/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 36c0c759..f2e0c68e 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/methylseq/tree/master/.github/CONTRIBUTING.md) +Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/methylseq/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/methylseq/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/methylseq/tree/master/docs/CONTRIBUTING.md) - [ ] If necessary, also make a PR on the nf-core/methylseq _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 8b995ed7..3eb9535b 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/methylseq/work-${{ steps.revision.outputs.revision }} + nextflow_config: | + plugins { + id 'nf-slack@0.5.0' + } + slack { + enabled = true + bot { + token = '${{ secrets.NFSLACK_BOT_TOKEN }}' + channel = 'methylseq' + } + onStart { + enabled = false + } + onComplete { + message = ':white_check_mark: *methylseq/test_full* completed successfully! :tada:' + } + onError { + message = ':x: *methylseq/test_full* failed :crying_cat_face:' + } + } parameters: | { - "hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}", "outdir": "s3://${{ vars.AWS_S3_BUCKET }}/methylseq/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 92106797..b6f665e2 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 80d5cc35..3011570b 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 9129cb1f..2ff00716 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 0a789e27..0d905e0d 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -3,8 +3,12 @@ lint: - lib/nfcore_external_java_deps.jar - conf/modules.config - .github/workflows/ci.yml + files_unchanged: + - docs/images/nf-core-methylseq_logo_light.png + - docs/images/nf-core-methylseq_logo_dark.png + - assets/nf-core-methylseq_logo_light.png modules_config: false -nf_core_version: 3.5.1 +nf_core_version: 4.0.2 repository_type: pipeline template: author: Phil Ewels, Sateesh Peri @@ -15,4 +19,4 @@ template: name: methylseq org: nf-core outdir: . - version: 4.2.0dev + version: 4.3.0dev 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 3b893d4c..ce92df70 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). -## v4.2.0dev - [date] +## v4.3.0dev - [date] Initial release of nf-core/methylseq, created with the [nf-core](https://nf-co.re/) template. diff --git a/README.md b/README.md index 87666575..72135e4c 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ [![GitHub Actions Linting Status](https://github.com/nf-core/methylseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/methylseq/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/methylseq/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/images/nf-core-methylseq_logo_dark.png b/docs/images/nf-core-methylseq_logo_dark.png index c32c1691c8169047371972401b04947558296e2d..ffcd2246987b35da03b4d5cff930ebad1780d1b5 100644 GIT binary patch literal 30206 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 O{ID1^bd~@7x_&316 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. > [!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 c4fb17c6..cf06185f 100644 --- a/main.nf +++ b/main.nf @@ -51,7 +51,11 @@ workflow NFCORE_METHYLSEQ { // WORKFLOW: Run pipeline // METHYLSEQ ( - samplesheet + samplesheet, + params.multiqc_config, + params.multiqc_logo, + params.multiqc_methods_description, + params.outdir, ) emit: multiqc_report = METHYLSEQ.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_METHYLSEQ.out.multiqc_report ) } diff --git a/modules.json b/modules.json index c47abb3f..f3d47306 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 818564fa..a86767be 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 = """Methylation (Bisulfite-Sequencing) Best Practice analysis pipeline, part of the nf-core community.""" mainScript = 'main.nf' defaultBranch = 'master' - nextflowVersion = '!>=25.04.0' - version = '4.2.0dev' + nextflowVersion = '!>=25.10.4' + version = '4.3.0dev' 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 98ead83a..7d09cfd8 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 3dc0cf8e..6345b7cf 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", @@ -22,8 +22,8 @@ "@id": "./", "@type": "Dataset", "creativeWorkStatus": "InProgress", - "datePublished": "2025-11-20T09:31:57+00:00", - "description": "

\n \n \n \"nf-core/methylseq\"\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/methylseq)\n[![GitHub Actions CI Status](https://github.com/nf-core/methylseq/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/methylseq/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/methylseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/methylseq/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/methylseq/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/methylseq)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23methylseq-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/methylseq)[![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/methylseq** 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/methylseq \\\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/methylseq/usage) and the [parameter documentation](https://nf-co.re/methylseq/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/methylseq/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/methylseq/output).\n\n## Credits\n\nnf-core/methylseq was originally written by Phil Ewels, Sateesh Peri.\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 `#methylseq` channel](https://nfcore.slack.com/channels/methylseq) (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-04-30T13:33:23+00:00", + "description": "

\n \n \n \"nf-core/methylseq\"\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/methylseq)\n[![GitHub Actions CI Status](https://github.com/nf-core/methylseq/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/methylseq/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/methylseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/methylseq/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/methylseq/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/methylseq)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23methylseq-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/methylseq)[![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/methylseq** 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/methylseq \\\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/methylseq/usage) and the [parameter documentation](https://nf-co.re/methylseq/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/methylseq/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/methylseq/output).\n\n## Credits\n\nnf-core/methylseq was originally written by Phil Ewels, Sateesh Peri.\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 `#methylseq` channel](https://nfcore.slack.com/channels/methylseq) (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": "#1fdba120-779f-482d-8b84-8e51a228acf6" + "@id": "#7c499607-ec4a-439c-97eb-e2b28fca6be9" } ], "name": "nf-core/methylseq" @@ -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,13 +122,16 @@ { "@id": "main.nf", "@type": ["File", "SoftwareSourceCode", "ComputationalWorkflow"], - "creator": [ + "contributor": [ { - "@id": "#phil.ewels@scilifelab.se" + "@id": "#1277b4a9-4762-483f-b179-e3cae45984be" + }, + { + "@id": "https://orcid.org/0000-0002-9879-9070" } ], "dateCreated": "", - "dateModified": "2025-11-20T09:31:57Z", + "dateModified": "2026-04-30T13:33:23Z", "dct:conformsTo": "https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE/", "keywords": [ "nf-core", @@ -140,14 +143,11 @@ "epigenomics", "methyl-seq", "pbat", - "rrbs" + "rastair", + "rrbs", + "taps" ], "license": ["MIT"], - "maintainer": [ - { - "@id": "#phil.ewels@scilifelab.se" - } - ], "name": ["nf-core/methylseq"], "programmingLanguage": { "@id": "https://w3id.org/workflowhub/workflow-ro-crate#nextflow" @@ -156,7 +156,7 @@ "@id": "https://nf-co.re/" }, "url": ["https://github.com/nf-core/methylseq", "https://nf-co.re/methylseq/dev/"], - "version": ["4.2.0dev"] + "version": ["4.3.0dev"] }, { "@id": "https://w3id.org/workflowhub/workflow-ro-crate#nextflow", @@ -168,14 +168,14 @@ "url": { "@id": "https://www.nextflow.io/" }, - "version": "!>=25.04.0" + "version": "!>=25.10.4" }, { - "@id": "#1fdba120-779f-482d-8b84-8e51a228acf6", + "@id": "#7c499607-ec4a-439c-97eb-e2b28fca6be9", "@type": "TestSuite", "instance": [ { - "@id": "#2e218dd9-9ac0-45fb-ba09-f6ec99264bed" + "@id": "#36109f77-b2c6-4bcc-85b4-8e91b966094b" } ], "mainEntity": { @@ -184,7 +184,7 @@ "name": "Test suite for nf-core/methylseq" }, { - "@id": "#2e218dd9-9ac0-45fb-ba09-f6ec99264bed", + "@id": "#36109f77-b2c6-4bcc-85b4-8e91b966094b", "@type": "TestInstance", "name": "GitHub Actions workflow for testing nf-core/methylseq", "resource": "repos/nf-core/methylseq/actions/workflows/nf-test.yml", @@ -313,10 +313,15 @@ "url": "https://nf-co.re/" }, { - "@id": "#phil.ewels@scilifelab.se", + "@id": "#1277b4a9-4762-483f-b179-e3cae45984be", "@type": "Person", "email": "phil.ewels@scilifelab.se", "name": "Phil Ewels" + }, + { + "@id": "https://orcid.org/0000-0002-9879-9070", + "@type": "Person", + "name": "Sateesh Peri" } ] } diff --git a/subworkflows/local/utils_nfcore_methylseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_methylseq_pipeline/main.nf index 0375f6ec..9605222b 100644 --- a/subworkflows/local/utils_nfcore_methylseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_methylseq_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/methylseq/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 56122367..0a47107d 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_methylseq_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 7c611d39..75ff69ba 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/methylseq' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/methylseq/' } aws.client.anonymous = true // fixes S3 access issues on self-hosted runners diff --git a/workflows/methylseq.nf b/workflows/methylseq.nf index 5416924d..5aa1af65 100644 --- a/workflows/methylseq.nf +++ b/workflows/methylseq.nf @@ -20,23 +20,25 @@ workflow METHYLSEQ { 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 METHYLSEQ { "${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_' + 'methylseq_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: 'methylseq'], + 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) ] - } /*