From 08047bd5b5e503d5aa6e4842b7239ef889d5076f Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Thu, 30 Apr 2026 13:33:18 +0000 Subject: [PATCH 01/14] 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 | 2 +- .pre-commit-config.yaml | 16 +- .prettierignore | 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/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 | 8 +- nextflow_schema.json | 8 - nf-test.config | 26 +- ro-crate-metadata.json | 54 +- .../utils_nfcore_chipseq_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/chipseq.nf | 84 +- 66 files changed, 6302 insertions(+), 739 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 97c8c97fe..237c9ed08 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 e12954c5d..000000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,125 +0,0 @@ -# `nf-core/chipseq`: Contributing Guidelines - -Hi there! -Many thanks for taking an interest in improving nf-core/chipseq. - -We try to manage the required tasks for nf-core/chipseq 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/chipseq then the best place to ask is on the nf-core Slack [#chipseq](https://nfcore.slack.com/channels/chipseq) channel ([join our Slack here](https://nf-co.re/join/slack)). - -## Contribution workflow - -If you'd like to write some code for nf-core/chipseq, the standard workflow is as follows: - -1. Check that there isn't already an issue about your idea in the [nf-core/chipseq issues](https://github.com/nf-core/chipseq/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/chipseq repository](https://github.com/nf-core/chipseq) 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/chipseq documentation](https://nf-co.re/chipseq/usage) and don't hesitate to get in touch on the nf-core Slack [#chipseq](https://nfcore.slack.com/channels/chipseq) channel ([join our Slack here](https://nf-co.re/join/slack)). - -## Pipeline contribution conventions - -To make the `nf-core/chipseq` 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/chipseq/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 2f34f87d1..ae5cde48e 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/chipseq/tree/master/.github/CONTRIBUTING.md) +Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/chipseq/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/chipseq/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/chipseq/tree/master/docs/CONTRIBUTING.md) - [ ] If necessary, also make a PR on the nf-core/chipseq _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 34085279f..e2833ee97 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 3b9724c76..ad686e8e8 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 f8da7346c..ad350f45c 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/chipseq/work-${{ steps.revision.outputs.revision }} + nextflow_config: | + plugins { + id 'nf-slack@0.5.0' + } + slack { + enabled = true + bot { + token = '${{ secrets.NFSLACK_BOT_TOKEN }}' + channel = 'chipseq' + } + onStart { + enabled = false + } + onComplete { + message = ':white_check_mark: *chipseq/test_full* completed successfully! :tada:' + } + onError { + message = ':x: *chipseq/test_full* failed :crying_cat_face:' + } + } parameters: | { - "hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}", "outdir": "s3://${{ vars.AWS_S3_BUCKET }}/chipseq/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 6a0a829be..e57796b09 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 a043d2c91..36b751bfc 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 6adb0fff4..172de6f37 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 45884ff90..a7bf4fc21 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 3392746e2..ca6979705 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 7a527a346..8738ffc99 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 e6e9bc269..5b0c24f75 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 c98d76ec7..efd72d653 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 431d3d445..78d5dbe05 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 e8560fc7c..ea30827ec 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 a42ce0162..cc2b1a778 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 028d101dc..000c7cc0a 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -3,7 +3,7 @@ lint: - config_defaults: - params.bamtools_filter_se_config - params.bamtools_filter_pe_config -nf_core_version: 3.5.1 +nf_core_version: 4.0.2 repository_type: pipeline template: author: Espinosa-Carrasco J, Patel H, Wang C, Ewels P diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d06777a8f..f51e1a28d 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 dd749d43d..63cde500e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,4 @@ email_template.html -adaptivecard.json -slackreport.json .nextflow* work/ data/ diff --git a/README.md b/README.md index ecdd4fa33..2b300c3fd 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ [![GitHub Actions Linting Status](https://github.com/nf-core/chipseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/chipseq/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/chipseq/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.XXXXXXX-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.XXXXXXX) [![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com) -[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.04.0-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/) -[![nf-core template version](https://img.shields.io/badge/nf--core_template-3.5.1-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/3.5.1) +[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.10.4-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/) +[![nf-core template version](https://img.shields.io/badge/nf--core_template-4.0.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/4.0.2) [![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) [![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/) [![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/) @@ -30,13 +30,13 @@ --> + workflows use the "tube map" design for that. See https://nf-co.re/docs/community/brand/workflow-schematics#examples for examples. --> 1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) ## Usage > [!NOTE] -> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data. +> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/get_started/environment_setup/overview) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/get_started/run-your-first-pipeline) with `-profile test` before running the workflow on actual data. diff --git a/docs/usage.md b/docs/usage.md index 0cb856e19..f2aa4e210 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -76,7 +76,7 @@ If you wish to repeatedly use the same parameters for multiple runs, rather than Pipeline settings can be provided in a `yaml` or `json` file via `-params-file `. > [!WARNING] -> Do not use `-c ` to specify parameters as this will result in errors. Custom config files specified with `-c` must only be used for [tuning process resource specifications](https://nf-co.re/docs/usage/configuration#tuning-workflow-resources), other infrastructural tweaks (such as output directories), or module arguments (args). +> Do not use `-c ` to specify parameters as this will result in errors. Custom config files specified with `-c` must only be used for [tuning process resource specifications](https://nf-co.re/docs/running/run-pipelines#configuring-pipelines), other infrastructural tweaks (such as output directories), or module arguments (args). The above pipeline run specified with a params file in yaml format: @@ -173,19 +173,19 @@ Specify the path to a specific config file (this is a core Nextflow command). Se Whilst the default requirements set within the pipeline will hopefully work for most people and with most input data, you may find that you want to customise the compute resources that the pipeline requests. Each step in the pipeline has a default set of requirements for number of CPUs, memory and time. For most of the pipeline steps, if the job exits with any of the error codes specified [here](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/conf/base.config#L18) it will automatically be resubmitted with higher resources request (2 x original, then 3 x original). If it still fails after the third attempt then the pipeline execution is stopped. -To change the resource requests, please see the [max resources](https://nf-co.re/docs/usage/configuration#max-resources) and [tuning workflow resources](https://nf-co.re/docs/usage/configuration#tuning-workflow-resources) section of the nf-core website. +To change the resource requests, please see the [max resources](https://nf-co.re/docs/running/configuration/nextflow-for-your-system#set-max-resources) and [customise process resources](https://nf-co.re/docs/running/configuration/nextflow-for-your-system#customize-process-resources) section of the nf-core website. ### Custom Containers In some cases, you may wish to change the container or conda environment used by a pipeline steps for a particular tool. By default, nf-core pipelines use containers and software from the [biocontainers](https://biocontainers.pro/) or [bioconda](https://bioconda.github.io/) projects. However, in some cases the pipeline specified version maybe out of date. -To use a different container from the default container or conda environment specified in a pipeline, please see the [updating tool versions](https://nf-co.re/docs/usage/configuration#updating-tool-versions) section of the nf-core website. +To use a different container from the default container or conda environment specified in a pipeline, please see the [updating tool versions](https://nf-co.re/docs/running/configuration/nextflow-for-your-system#update-tool-versions) section of the nf-core website. ### Custom Tool Arguments A pipeline might not always support every possible argument or option of a particular tool used in pipeline. Fortunately, nf-core pipelines provide some freedom to users to insert additional parameters that the pipeline does not include by default. -To learn how to provide additional arguments to a particular tool of the pipeline, please see the [customising tool arguments](https://nf-co.re/docs/usage/configuration#customising-tool-arguments) section of the nf-core website. +To learn how to provide additional arguments to a particular tool of the pipeline, please see the [customising tool arguments](https://nf-co.re/docs/running/configuration/nextflow-for-your-system#modifying-tool-arguments) section of the nf-core website. ### nf-core/configs diff --git a/main.nf b/main.nf index e8ad255c6..f7c59182e 100644 --- a/main.nf +++ b/main.nf @@ -51,7 +51,11 @@ workflow NFCORE_CHIPSEQ { // WORKFLOW: Run pipeline // CHIPSEQ ( - samplesheet + samplesheet, + params.multiqc_config, + params.multiqc_logo, + params.multiqc_methods_description, + params.outdir, ) emit: multiqc_report = CHIPSEQ.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_CHIPSEQ.out.multiqc_report ) } diff --git a/modules.json b/modules.json index a7569c43e..f95f280d2 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 000000000..7770ccd5f --- /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 000000000..cdc434cad --- /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 23e16634c..10851264c 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 c8d9d025a..2f6cfef6d 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 e9d79a074..66c44da9b 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 d5db3092f..c8ee120f5 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 000000000..761903040 --- /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 000000000..a55a4d49d --- /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 000000000..a58231a01 --- /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 000000000..f787dbe1e --- /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 d02016a00..37e7612d4 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 c1158fb08..e80e8cd8d 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 ce30eb732..2facc627b 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 000000000..b30b1358b --- /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 33316a7dd..4cbdb95d4 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 a88bafd67..7c2f370f3 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 c537a6a3e..374dfef2c 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 f165b01a8..8e1e52240 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' @@ -275,7 +278,7 @@ manifest { description = """ChIP-seq peak-calling and differential analysis pipeline.""" mainScript = 'main.nf' defaultBranch = 'master' - nextflowVersion = '!>=25.04.0' + nextflowVersion = '!>=25.10.4' version = '2.2.0dev' doi = '' } @@ -289,6 +292,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 48c29e13a..939c6909b 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 3a1fff59f..f7aaeb4a1 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 95d503fdb..095add454 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:32:09+00:00", - "description": "

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

\n \n \n \"nf-core/chipseq\"\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/chipseq)\n[![GitHub Actions CI Status](https://github.com/nf-core/chipseq/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/chipseq/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/chipseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/chipseq/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/chipseq/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/chipseq)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23chipseq-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/chipseq)[![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/chipseq** 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/chipseq \\\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/chipseq/usage) and the [parameter documentation](https://nf-co.re/chipseq/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/chipseq/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/chipseq/output).\n\n## Credits\n\nnf-core/chipseq was originally written by Espinosa-Carrasco J, Patel H, Wang C, Ewels P.\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 `#chipseq` channel](https://nfcore.slack.com/channels/chipseq) (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": "#1ddbeb47-8f2a-4972-98b8-23edd9c5d667" + "@id": "#ea0ac36e-383c-4529-95b9-b899ff51d4f6" } ], "name": "nf-core/chipseq" @@ -112,7 +112,7 @@ }, "conformsTo": [ { - "@id": "https://w3id.org/ro/crate/1.1" + "@id": "https://w3id.org/ro/crate/1.2" }, { "@id": "https://w3id.org/workflowhub/workflow-ro-crate/1.0" @@ -122,8 +122,22 @@ { "@id": "main.nf", "@type": ["File", "SoftwareSourceCode", "ComputationalWorkflow"], + "contributor": [ + { + "@id": "#e692d0bd-48a1-49a8-b913-65eefc747832" + }, + { + "@id": "#b415b9ca-03cf-493d-b9b4-51da22004162" + }, + { + "@id": "#ac2a9f71-4f44-4e8c-ae13-f81fe238567a" + }, + { + "@id": "#7ab020c0-cfa1-482d-b84a-0a1bb9410c77" + } + ], "dateCreated": "", - "dateModified": "2025-11-20T09:32:09Z", + "dateModified": "2026-04-30T13:33:09Z", "dct:conformsTo": "https://bioschemas.org/profiles/ComputationalWorkflow/1.0-RELEASE/", "keywords": [ "nf-core", @@ -155,14 +169,14 @@ "url": { "@id": "https://www.nextflow.io/" }, - "version": "!>=25.04.0" + "version": "!>=25.10.4" }, { - "@id": "#1ddbeb47-8f2a-4972-98b8-23edd9c5d667", + "@id": "#ea0ac36e-383c-4529-95b9-b899ff51d4f6", "@type": "TestSuite", "instance": [ { - "@id": "#2f24e21d-b87e-4302-9dd1-a8a7508dd033" + "@id": "#2c5bc320-faaf-4aaf-865e-1b3f7e37cb6e" } ], "mainEntity": { @@ -171,7 +185,7 @@ "name": "Test suite for nf-core/chipseq" }, { - "@id": "#2f24e21d-b87e-4302-9dd1-a8a7508dd033", + "@id": "#2c5bc320-faaf-4aaf-865e-1b3f7e37cb6e", "@type": "TestInstance", "name": "GitHub Actions workflow for testing nf-core/chipseq", "resource": "repos/nf-core/chipseq/actions/workflows/nf-test.yml", @@ -298,6 +312,26 @@ "@type": "Organization", "name": "nf-core", "url": "https://nf-co.re/" + }, + { + "@id": "#e692d0bd-48a1-49a8-b913-65eefc747832", + "@type": "Person", + "name": "Espinosa-Carrasco J" + }, + { + "@id": "#b415b9ca-03cf-493d-b9b4-51da22004162", + "@type": "Person", + "name": "Patel H" + }, + { + "@id": "#ac2a9f71-4f44-4e8c-ae13-f81fe238567a", + "@type": "Person", + "name": "Wang C" + }, + { + "@id": "#7ab020c0-cfa1-482d-b84a-0a1bb9410c77", + "@type": "Person", + "name": "Ewels P" } ] } diff --git a/subworkflows/local/utils_nfcore_chipseq_pipeline/main.nf b/subworkflows/local/utils_nfcore_chipseq_pipeline/main.nf index c70a9532b..65f5f23e2 100644 --- a/subworkflows/local/utils_nfcore_chipseq_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_chipseq_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/chipseq/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 2f30e9a46..afca54390 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 000000000..8940d32d1 --- /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 000000000..859d1030f --- /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 ee4738c8d..1df8b76fb 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 8d8c73718..f6537cc33 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 735b5ccae..f71713dc2 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_chipseq_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 bed87c26b..58bbbb502 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/chipseq' + pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/chipseq/' } aws.client.anonymous = true // fixes S3 access issues on self-hosted runners diff --git a/workflows/chipseq.nf b/workflows/chipseq.nf index 50dbb4960..2a0e16bae 100644 --- a/workflows/chipseq.nf +++ b/workflows/chipseq.nf @@ -20,23 +20,25 @@ workflow CHIPSEQ { 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 CHIPSEQ { "${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_' + 'chipseq_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: 'chipseq'], + files, + multiqc_config + ? file(multiqc_config, checkIfExists: true) + : file("${projectDir}/assets/multiqc_config.yml", checkIfExists: true), + multiqc_logo ? file(multiqc_logo, checkIfExists: true) : [], + [], + [], + ] + } ) - - emit:multiqc_report = MULTIQC.out.report.toList() // channel: /path/to/multiqc_report.html + emit:multiqc_report = MULTIQC.out.report.map { _meta, report -> [report] }.toList() // channel: /path/to/multiqc_report.html versions = ch_versions // channel: [ path(versions.yml) ] - } /* From 4ba93696b18109225913004bb7bbdab637da8a50 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Mon, 18 May 2026 18:11:32 +0200 Subject: [PATCH 02/14] Make lint happy --- workflows/chipseq.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/chipseq.nf b/workflows/chipseq.nf index 57313166f..bd78381b0 100644 --- a/workflows/chipseq.nf +++ b/workflows/chipseq.nf @@ -84,7 +84,7 @@ workflow CHIPSEQ { main: def ch_versions = channel.empty() def ch_multiqc_files = channel.empty() - + // JSON files required by BAMTools for alignment filtering ch_bamtools_filter_se_config = file(params.bamtools_filter_se_config) ch_bamtools_filter_pe_config = file(params.bamtools_filter_pe_config) From 6f98bcac4522c021eaa575ae186a29e9b1b3488e Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Mon, 18 May 2026 18:11:51 +0200 Subject: [PATCH 03/14] Add .gitignore to files_unchanged --- .nf-core.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.nf-core.yml b/.nf-core.yml index 000c7cc0a..2bc7adacb 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,4 +1,6 @@ lint: + files_unchanged: + - .gitignore nextflow_config: - config_defaults: - params.bamtools_filter_se_config From c7ece543a3139b2d51482b0ab8447a8be65119b4 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Mon, 18 May 2026 18:22:54 +0200 Subject: [PATCH 04/14] Fix logos --- assets/nf-core-chipseq_logo_light.png | Bin 77165 -> 74751 bytes docs/images/nf-core-chipseq_logo_dark.png | Bin 27741 -> 27491 bytes ro-crate-metadata.json | 8 ++++++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/assets/nf-core-chipseq_logo_light.png b/assets/nf-core-chipseq_logo_light.png index ef93395ecd5bbb73aa3eeca0359b65461ce3389e..3e1bba158871435fe9be646ec32522d34910e487 100644 GIT binary patch literal 74751 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 JceCHg{{wFPEFb^? diff --git a/docs/images/nf-core-chipseq_logo_dark.png b/docs/images/nf-core-chipseq_logo_dark.png index b72c0163a6cc6bacc1eee30a8e038e50e3ba76cf..7227f7b7b91c2b731cd696434c48929306627f0b 100644 GIT binary patch literal 27491 zcmdSAbyu6+^F18g3M3S#SfIF+;%+G|P~6?!-Q9viDN?jRDHL~iFYfLXcX#sS{(OIL z;#n*IBV$;Ot-{!<`5;~0Z|_CGFZ3Kv5KplXLM#u>Iav#G^bhP;@XSy za%Qr{iO~X!pNw>K>;~Z1JMZOOm4_!^yRlFaY**5d%=GWVGNUHnd`HtnJd(0Jkz((`0CBKmu zf4Q!^+MksH-$>yfIT^_d%xfX?X;cWAUpcz?{832~7vs?=k*f3L+Z(=%jz;}s`dCt$ zU-dQp4a!Phxy;S4-tYU;BwBN$udtJnY|_i*l4YccYg^(ozlm0C(N8`10v}^?Oe#gX z%-YjCoY8wI^N32)j{r+No6p6?eIA>}Sk08PX@tzu>Q1suC=P`iP>DV4TDBA)^~Jq^ z2w<{HwfV{h+!yC|y91*0ev8W5ENp)Oz$#xFBChJ0d6I>escY5*%h_YKFn8w_Mv%ai z6JVfXQvMYQ&Qt!1Pe$J5T%q5pfAr~Cf4Oa~Bdpl42~$Q5U$H6}g)z7&P)q_bl=j!z z7{7zpYmS9GYD$`^$JofRyjQz`^g@=)uCUqKokun%6?*Xh|324re3M8(WN{#Jt{?x| zgyiVs!CzMbndzdy_pe$ExMl2+mg-9Xm*%U02U*cc6Wh-aLyZ5_JZBjbel03<{Srs@ zD^)4f4`9RwxIr?MV4*-C0#xD<2q6F(m=!w|BRd{cG+s@cGKY-*-%7>Jb^WVquk_;% zz?3xU>^m`JFsc6qSSGlcMn7ZxGyQ4O}ihoZHy zYR2kHiBO;fDtbu*5W}cif<;8uRBiK)w15h0)5M_lcHmBaP`sAfIuGrCHtg8=gxWJy0a(?LRNsCst7}65QHD_j194|$)E+TWp?7{4LmAoW`y6h}{}V2> zyi@Sb$mHaJ^qP1rqm1M$S^#<*YO!C_`i7&+?iya|b}agTy60}^c6B`)WxUF18nSbObP71NX?iixvTu~#JFsBxHYR!35(@X`>LvY8!`tN;PcHKo}hmLJ{&I1M?UCeEL5SGi$CH zwDSnpPsc40zf?i zu{!*(*StKS8+gdMDi~U~q)D`bC};KeB5{IIU7yQlG;+~6iVE?>5xMok81zdC!H6Xx zi>HU2w+NpcsJb-}`t&|fRM$D$iPz~vf~uPKFK^l-&?^Ce=B@0Rr9m+5?n_e!+`X1*9pxeAWibYR_5`A zw|Ksy2$_L%-#fFRw!Bnn(PG#8s*LM;*!Ax#9PS#N^ zr<)gxH*Vz}M2zku1eq?KwC!2M`@byd?VTYY3mV5<0SpDoWS+>4b5LcVZ-TMEjG41x zNsh@cet@NO620w1OPpB;_lhFtpZPt{65+^SU(}I-D+NOLR?f%%YVo*IYhMXmBK&kR zf?rh=li!DT^nkNfTr#_cD3JP%03^`7L~0p!$WE>uS7;gF`i*KO0VEw8I*srXg8m+= z%2clV7WSO#=5pr`ZN2>k0zZPu`3|boA{J(*o5?NmGk5^|NK|UN6$B3gA4ecggL96h ze@~09hnYoXO?rW6IRT?29mr7{Z0<+?2v`;GdQcAhd%0&2Mw)l*kosm9J=7-KzYXd5 z%amZ10em${g@ru+cFX=suYe!aC&yEjp|rbL>$WLU3G|YztEcOm8`fYP^A=|LH9ES# zSkzPEf#--~3kVqX<{V+_xK9#JCX{`STBup5Y1Kp6qgvnkwPc6w-83;2zM~dWAxPO& z&$f(@qBi_ki%;w?$G+e8WSzuhxUyw>=2pHx`&7~Nk7?hjH+UA|ySfD|?ERArsdZi> zJRs~FLgz-%v)8U&rB(=wXor>V#S5cK_6!_T^s3bOqVU`K@!tLBvPX(6r{z?`OTTv@ zRI(oqr@?8_<6vfFU1vgAv7lOTd(ncKC}7{R>Xh9ms;Bv%foaPk!t2wQ2CCXjg3I(o z5YMCgQo1D>4kdT>Tz1uzO72+wW>Ij(;=zpRc4Mt2W1iTSZtg0q8t{-q9_Lbkvb4}- zRJ-BM#&X!k2_OyMc**A)vqMrZ2ZTckDis_8as!4?zPtOi9*M!O$@E!=}>(q1xR; zFO94!pf?btX%};Gp_#nz_nGqvGnncce~t3b_a)x&57tIXICFDF?NNid%UNBSl$lO| zyay6GZ=+9|7o-zIlP-(lKx)FI?xDRCP3M=sKoPFz$XV3K9#PFXz|xp?gBx@w=& znV!KDUcxo^UkHs_jQ6Q(&3}UKsIZuax|y6edGR;dP%6^_j{qwRF+RlTzbpIv6%crg z;Zy`zkeXoSC!0@byBJNH_0z%7$U9e<*Yu)lZ;e^@`Q;d>R^1hM5n@IB*SKZ%9~e4s zCXk?=)+*4A_X}bP)TAgJSnI*TkAwLGy7%$10Ug`8V{1c&ucE*Ww|0hIcpzJ%1gD?0 z>3rcr9e#CG8abodN}51mXt~YOtVHw3Z!8v5i;s%HJ$C8~CiBT%jYBVW|JQnjzwu4@ z$~;S3n7DaHR5N7ZbVU7BGIr9shx<2iKdY7dVRCt6cu9`;T6@HJ@M`evPD| zL%%4+?5UFS#A~N_0hI3ZIrjB$i5pSb|MWY4LNm zsicAV7k#=g9Xxnr^fVD!=i`#-SfQ5hArnylV+U1`ktc@uulwlXtqmA&_-Bdj`P9 z_Rg6>_duKfi#P9w51j*Jj63DzrC^9E>AQECYx5Sr`3L3)Qh|2LZBmkR+HA#5hyZmO zPtOM`D~QJo11}I%uLETd*xe;HYxie{hu%7U2<_d8AX^Y|fBv;p4xHrLTZxmI zT>D~uht7oyGDkc6T_q;oEAd_m*$EiL!OF}9 zAKrpRaI##;bMm3LQU&hxQ7y=44b(q>045@m6~9as7r)HX*gL=!>t=T@!p*>Z9K;PuRJF8KNk^UW{pB}Wl)yO?IF#J=J>etJpwwl$}3awHy=%Skf?K@as zYHnaqL3{{YA3GeSY4~Z$`-5Hs0YC^-Pi7foxk{1oo0a7r@#+;lSa;RL+xwCAuTAFB$42%y`EswcKXzzM*6HST7`M zz+^!+w`AzjH*o6Fa|m<|)kX+A*8?myrtKL741SMs4ZftBk(@Mty zpcTlSL*f(({Tig|9w%^AJ$o7()PM+KOdAc^`FWC%E z2C;<*XgxR2VsCnnOCNN5y|?OP*Ha)gAR59O4rF72C)*Blo@i)j4YJ?Uy`!3q39M6xbtF_+3dM(y^)jZ$i(r1h- zr<5#0p9*hTNv798LB`jR+OuzO+1rSkzsCVJ1$BKM=h(JHNH@d~H#!^J5R8sw6okWD zVrwF~dHzJ;DJYUgJl%w${AEiUw4OAC>IJ8Q^?s{28q1b)SSi z$BmD)cV1w|xsJSF6N;S2+B9h>6aW!O6ZT6Bzewg2H;)EMY`(rRA_#MgW5jQtUq~Bn z>9<@L$2X{`GqNF7d_yp-O7kW@xk51Y!#R$k9+||wZwnS{&hNr~+J{HWxssu~$ic9* zHd^V&<;OIsz^e+8Z6eDXSyHP=!V=EE7%KDy77m=)dvtTvxU{MccKVq3hR?&{x!0}l zhd0M^YgGpstM6-sbYw87#Gx-T4~WL^&v~PJ=RO`m6RL#9?QRE40{HkWFM^}(!`KS! zQ0D#zRaoDl0@%?yiSoM3m{S-DRcsgkApeau=|_qN5v2eo0$8(!_DUS@ADSrncMV+n zZ6^1b$sUxsQ3w-6SYj!%TTD0KE65!iE=8~m-_FalQ3h&i9&8rE=JZMuvABCT5c}3G z?TD(e$|wDN&WNbC(2|wMZR(3i%W&UCml5}PL$BqM&2l@a_iN(316hh)COH*U+q|(38*)+G;F>{JUeMGfnu_ zv^YDle3}!NtA65_UQi3(CDK2$&*9z@909cm=1pkRN+(a|4V>9282Z|tqP*RWfBsT6 zlVFSpRA~GOQS_E~YDz|FW~Yw`Hk4ic;3jI8I2_usv;%3oVuKp?#t##^-kX(_zT6E(DrOmRSG%*V)^Nr ze4AWOh3A%1%skAr+!LgHKcl~DmW=|Ir}~db)&JgzTcw|pOExOn_=$betn+NG!h>zy zFX6{>oZ)s+3UF~M*=JJ?F6dqerSey2&DY$CA9}b-8ljQ7S)QAzicOD)|b8@RcQ`rSgsA67)QMF$tBH zdY|*7gCOg6!bCEF)uLc>C9Ks<23dzBtId7x-!bxZcf4eRD$(=F8_AkX0whTi0&_8)eOW!iNmtR(v8_$pjFC8ZLqso+*TYXF{qDG$xDG_c`~e6ihhS+?W6|BaSvYD4or1B-5FRs$(4>9+z? zhuhJCx4!Wc(w%i2@^i5gllI_8nC9+wDs|T|{ix4+O*3?)?X`@kXrzM-INlGrQz6VI z)VzviTEkr(?xiPKan44-UY|r6{(YmxQq06V&DY3r+5M6?ap)&@bapM#1hXG#x@3-> z6IGJwfYM*7HzoFmaOvHx5O*uo@;qHs#Y6}?vZ(eW{;I2^yb*cAv)JcuRsg4O>OPv4 z%_xW;Xwc*x{5negeIPxQ?qFlrucsRuDylzb{7^%_M^U8!jTf9xg&&eM1^ytXeH8n0{v~-rl?0zv-bLK_lEuFH5&I!;~2f zZdUGHgu{?Q#IpJziBO3yG5#A3s%~*k4{sQ~g*|O~+WU%T!-K7DHh+aT7wDH4^Fpsm zmle(7^_7MQ63SKTc3tn5>>cOO2v4FdC;UhOYXXzopv%PHAr7iTy1%}&xkb&IxV*u^ z8Jk}6*RX1n6r{kyqO6xEOKRO|y7dPcK8$KGJA3I8d3!Eq)2@&V=PE!6A|E#^M)(}2PC zTTgcwPC578i*UK7UC`aA3_UJqvOLc=Gm1Ur@}|q=XtLZ&8&%T1&?oOaw3+@IV#(RJ1_*u_l+sKM@h1*}(3)K9zy^JqZB;U(s-M zT)RJsu6@xJ9))9y5enhcZwi1(epPpaF0}*c==hhzqOIa^# z5@^tTQhy(mF%yssua$Wpbj3jFeB##?mqu&{p5pr0^8^-~E+gM^hZ|Sj3z!@qPaf(! z3D*Ok6=N=p_r+3Hxc7EH$G4nM%M$uKeJvmD8_@He{Lejo+E6MB#{<@dIl9@u#mcNX zsc)?L6>Ks8#`z^lz#+T&vOMR783;jRSzZa>#^tO%_ zj-)O1sDyB6C_d;_{^MrqCh!k&h0um-!Nq@`cgo8yuMgYi-tT`6(~RTN1gJmo7fqYXsV!UTy$)t- zNfwT!FXbTo84Wd8+eO@CM)@aFJ+HsVJHufLujsv2{%gbvK+*f^(`#54tW90Bw4~T# zkWPL*tfz$8ue_^|4e;Rh*ppyB*Se)nqGh)XV=kkUvhFrDtvgXi$s`LqQzocdShzSJ zO!lhpYsXv1MdgoFJ;7IfJ15Mb!!2k!})l2;WF1b6EBAA

IQqHzsi*h_&Kr)oAQx8fnv9yLFm)-3U2_mi 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 literal 27741 zcmd3N^;=tA&~30l@s#3FAh;8pQrwEQxLa|D;_mLn9SX%=f_t$-fZ{I2U5nez``z!k zf5ZJH&lB5cX7-%3*Q{9+sq|R}3!MZV003agev(uH01&kR00d+-ApDbmeR5;)H{Mnf z5=ycX5|m0#4(3+2W&nUkw(IwG=3r%_ArW5iGFY$0v5vc%cWh=;I)mF zmBw!Q*QiH;Lf?_M+h`~V3zZxqr8#77Er-^%I-h7tT#mYPNH zOX~Xp4YIzBb4*K&qz#z}S#&?cflI6(fVyE@YPeG zTF*_rY-PwNQYa%YD`kOsE%<9+d*AzTk6LbF#=-)HV}mMP*@~ zLMA54N

U_0Rs~eOY4dxv`hmlZsrD%an>`q(A>`iOzigbYO`{{kr?W8IxyHE8J_= zmD%lt_KTu`up;vau*CcKsl0r^{jV`b8^vro0kf>eH+d!$hmws5@ja|Ywp4G8#l39= zFzKcGd~Gw%vs0Jd0pa(@k0^MDHy|ye)T+sDP(wahG4E~H{KTS$FQ{Bz5D4#U4QKOf-8>p|J@6OSGfe~Kf@$% z+qO#!VGqB5o8rqQwTRLJ&~^f^LoGE4=4uSx4{H2R1j$YK5|QQq^C7F{E_thYno1xw z(r^HT8o+_EVG!^ZC>p~V;QI5NCBXaLOpV&6!)yG#i0<0oKkZ>OTL1YD06dM78t~{g zJk#UmRm+|Lz#PsysDN~4b{a$kN-(av${WJIb)nF$m%TyVyi=t+{Q;K`fd69VvNk}U z;}HiGE`w$g8%r7i)$y2sJ11gh@Kl}{u5=UM^RxX7zd zdsoL_^ooD&8N|rq5f|}+TPP&ElojZYKiN((HZ0>hR3?k5qhsbMH(y|nIQ}oix@=-a zb@HM*wQyS_AT}#gQh5q7o-z?2fJ)qjsuh9AtG~#jcH5$STKDTUy`H)2HEWvLU@&9~}X+4M5(v;MFy~h#rs?g=J^#* ze~YE#1pc>uL?&L0*(T6MJb+$=duwu0c+CJ!?^}3;1{3_VyjPGJ+Bh^0b?b~@U<8AD zk#zrS5fxR#kX4a8LICbou+Tu)@(1#1OPb)7P`JZ&A&_{rqPKz(el7=3_u3^AB(eXy zU_|s60YAYT7ljxQ$jG>>a2gV;F(t+DpNF92GC~`vX+QuqJJ!H?+UFr|9a)T2_-e|5 z8Sav3HRx!rGiKl_XlG~y0aT>^v{y3Rs;CEs77_1f^

S{-JpC|L%5Sko&30;F2@9 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\n \n \n \"nf-core/chipseq\"\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/chipseq)\n[![GitHub Actions CI Status](https://github.com/nf-core/chipseq/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/chipseq/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/chipseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/chipseq/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/chipseq/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/chipseq)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23chipseq-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/chipseq)[![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/chipseq** 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/chipseq \\\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/chipseq/usage) and the [parameter documentation](https://nf-co.re/chipseq/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/chipseq/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/chipseq/output).\n\n## Credits\n\nnf-core/chipseq was originally written by Espinosa-Carrasco J, Patel H, Wang C, Ewels P.\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 `#chipseq` channel](https://nfcore.slack.com/channels/chipseq) (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", + "description": "

\n \n \n \"nf-core/chipseq\"\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/chipseq)\n[![GitHub Actions CI Status](https://github.com/nf-core/chipseq/actions/workflows/nf-test.yml/badge.svg)](https://github.com/nf-core/chipseq/actions/workflows/nf-test.yml)\n[![GitHub Actions Linting Status](https://github.com/nf-core/chipseq/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/chipseq/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/chipseq/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.3240506-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.3240506)\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/chipseq)\n\n[![Get help on Slack](http://img.shields.io/badge/slack-nf--core%20%23chipseq-4A154B?labelColor=000000&logo=slack)](https://nfcore.slack.com/channels/chipseq)[![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**nfcore/chipseq** is a bioinformatics analysis pipeline used for Chromatin ImmunoPrecipitation sequencing (ChIP-seq) data.\n\nOn release, automated continuous integration tests run the pipeline on a [full-sized dataset](https://github.com/nf-core/test-datasets/tree/chipseq#full-test-dataset-origin) on the AWS cloud infrastructure. The dataset consists of FoxA1 (transcription factor) and EZH2 (histone,mark) IP experiments from _Franco et al. 2015_ ([GEO: GSE59530](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE59530), [PMID: 25752574](https://pubmed.ncbi.nlm.nih.gov/25752574/)) and _Popovic et al. 2014_ ([GEO: GSE57632](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE57632), [PMID: 25188243](https://pubmed.ncbi.nlm.nih.gov/25188243/)), respectively. This ensures that the pipeline runs on AWS, has sensible resource allocation defaults set to run on real-world datasets, and permits the persistent storage of results to benchmark between pipeline releases and other analysis sources. The results obtained from running the full-sized tests can be viewed on the [nf-core website](https://nf-co.re/chipseq/results).\n\nThe pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It uses Docker/Singularity containers making installation trivial and results highly reproducible. The [Nextflow DSL2](https://www.nextflow.io/docs/latest/dsl2.html) implementation of this pipeline uses one container per process which makes it much easier to maintain and update software dependencies. Where possible, these processes have been submitted to and installed from [nf-core/modules](https://github.com/nf-core/modules) in order to make them available to all nf-core pipelines, and to everyone within the Nextflow community!\n\n## Online videos\n\nA short talk about the history, current status and functionality on offer in this pipeline was given by Jose Espinosa-Carrasco ([@joseespinosa](https://github.com/joseespinosa)) on [26th July 2022](https://nf-co.re/events/2022/bytesize-chipseq) as part of the nf-core/bytesize series.\n\nYou can find numerous talks on the [nf-core events page](https://nf-co.re/events) from various topics including writing pipelines/modules in Nextflow DSL2, using nf-core tooling, running nf-core pipelines as well as more generic content like contributing to Github. Please check them out!\n\n## Pipeline summary\n\n![nf-core/chipseq metro map](docs/images/nf-core-chipseq_metro_map_grey.png)\n\n1. Raw read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/))\n2. Adapter trimming ([`Trim Galore!`](https://www.bioinformatics.babraham.ac.uk/projects/trim_galore/))\n3. Choice of multiple aligners\n 1.([`BWA`](https://sourceforge.net/projects/bio-bwa/files/))\n 2.([`Chromap`](https://github.com/haowenz/chromap))\n 3.([`Bowtie2`](http://bowtie-bio.sourceforge.net/bowtie2/index.shtml))\n 4.([`STAR`](https://github.com/alexdobin/STAR))\n4. Mark duplicates ([`picard`](https://broadinstitute.github.io/picard/))\n5. Merge alignments from multiple libraries of the same sample ([`picard`](https://broadinstitute.github.io/picard/))\n 1. Re-mark duplicates ([`picard`](https://broadinstitute.github.io/picard/))\n 2. Filtering to remove:\n - reads mapping to blacklisted regions ([`SAMtools`](https://sourceforge.net/projects/samtools/files/samtools/), [`BEDTools`](https://github.com/arq5x/bedtools2/))\n - reads that are marked as duplicates ([`SAMtools`](https://sourceforge.net/projects/samtools/files/samtools/))\n - reads that are not marked as primary alignments ([`SAMtools`](https://sourceforge.net/projects/samtools/files/samtools/))\n - reads that are unmapped ([`SAMtools`](https://sourceforge.net/projects/samtools/files/samtools/))\n - reads that map to multiple locations ([`SAMtools`](https://sourceforge.net/projects/samtools/files/samtools/))\n - reads containing > 4 mismatches ([`BAMTools`](https://github.com/pezmaster31/bamtools))\n - reads that have an insert size > 2kb ([`BAMTools`](https://github.com/pezmaster31/bamtools); _paired-end only_)\n - reads that map to different chromosomes ([`Pysam`](http://pysam.readthedocs.io/en/latest/installation.html); _paired-end only_)\n - reads that arent in FR orientation ([`Pysam`](http://pysam.readthedocs.io/en/latest/installation.html); _paired-end only_)\n - reads where only one read of the pair fails the above criteria ([`Pysam`](http://pysam.readthedocs.io/en/latest/installation.html); _paired-end only_)\n 3. Alignment-level QC and estimation of library complexity ([`picard`](https://broadinstitute.github.io/picard/), [`Preseq`](http://smithlabresearch.org/software/preseq/))\n 4. Create normalised bigWig files scaled to 1 million mapped reads ([`BEDTools`](https://github.com/arq5x/bedtools2/), [`bedGraphToBigWig`](http://hgdownload.soe.ucsc.edu/admin/exe/))\n 5. Generate gene-body meta-profile from bigWig files ([`deepTools`](https://deeptools.readthedocs.io/en/develop/content/tools/plotProfile.html))\n 6. Calculate genome-wide IP enrichment relative to control ([`deepTools`](https://deeptools.readthedocs.io/en/develop/content/tools/plotFingerprint.html))\n 7. Calculate strand cross-correlation peak and ChIP-seq quality measures including NSC and RSC ([`phantompeakqualtools`](https://github.com/kundajelab/phantompeakqualtools))\n 8. Call broad/narrow peaks ([`MACS3`](https://github.com/macs3-project/MACS))\n 9. Annotate peaks relative to gene features ([`HOMER`](http://homer.ucsd.edu/homer/download.html))\n 10. Create consensus peakset across all samples and create tabular file to aid in the filtering of the data ([`BEDTools`](https://github.com/arq5x/bedtools2/))\n 11. Count reads in consensus peaks ([`featureCounts`](http://bioinf.wehi.edu.au/featureCounts/))\n 12. PCA and clustering ([`R`](https://www.r-project.org/), [`DESeq2`](https://bioconductor.org/packages/release/bioc/html/DESeq2.html))\n6. Create IGV session file containing bigWig tracks, peaks and differential sites for data visualisation ([`IGV`](https://software.broadinstitute.org/software/igv/)).\n7. Present QC for raw read, alignment, peak-calling and differential binding results ([`MultiQC`](http://multiqc.info/), [`R`](https://www.r-project.org/))\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\nTo run on your data, prepare a tab-separated samplesheet with your input data. Please follow the [documentation on samplesheets](https://nf-co.re/chipseq/usage#samplesheet-input) for more details. An example samplesheet for running the pipeline looks as follows:\n\n```csv title=\"samplesheet.csv\"\nsample,fastq_1,fastq_2,replicate,antibody,control,control_replicate\nWT_BCATENIN_IP,BLA203A1_S27_L006_R1_001.fastq.gz,,1,BCATENIN,WT_INPUT,1\nWT_BCATENIN_IP,BLA203A25_S16_L001_R1_001.fastq.gz,,2,BCATENIN,WT_INPUT,2\nWT_BCATENIN_IP,BLA203A25_S16_L002_R1_001.fastq.gz,,2,BCATENIN,WT_INPUT,2\nWT_BCATENIN_IP,BLA203A25_S16_L003_R1_001.fastq.gz,,2,BCATENIN,WT_INPUT,2\nWT_BCATENIN_IP,BLA203A49_S40_L001_R1_001.fastq.gz,,3,BCATENIN,WT_INPUT,3\nWT_INPUT,BLA203A6_S32_L006_R1_001.fastq.gz,,1,,,\nWT_INPUT,BLA203A30_S21_L001_R1_001.fastq.gz,,2,,,\nWT_INPUT,BLA203A30_S21_L002_R1_001.fastq.gz,,2,,,\nWT_INPUT,BLA203A31_S21_L003_R1_001.fastq.gz,,3,,,\n```\n\nNow, you can run the pipeline using:\n\n```bash\nnextflow run nf-core/chipseq --input samplesheet.csv --outdir --genome GRCh37 -profile \n```\n\nSee [usage docs](https://nf-co.re/chipseq/usage) for all of the available options when running the pipeline.\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/chipseq/usage) and the [parameter documentation](https://nf-co.re/chipseq/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/chipseq/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/chipseq/output).\n\n## Credits\n\nThese scripts were originally written by Chuan Wang ([@chuan-wang](https://github.com/chuan-wang)) and Phil Ewels ([@ewels](https://github.com/ewels)) for use at the [National Genomics Infrastructure](https://portal.scilifelab.se/genomics/) at [SciLifeLab](http://www.scilifelab.se/) in Stockholm, Sweden. The pipeline was re-implemented by Harshil Patel ([@drpatelh](https://github.com/drpatelh)) from [Seqera Labs, Spain](https://seqera.io/) and converted to Nextflow DSL2 by Jose Espinosa-Carrasco ([@JoseEspinosa](https://github.com/JoseEspinosa)) from [The Comparative Bioinformatics Group](https://www.crg.eu/en/cedric_notredame) at [The Centre for Genomic Regulation, Spain](https://www.crg.eu/).\n\nThe pipeline workflow diagram was designed by Sarah Guinchard ([@G-Sarah](https://github.com/G-Sarah)).\n\nMany thanks to others who have helped out and contributed along the way too, including (but not limited to):\n[@apeltzer](https://github.com/apeltzer), [@bc2zb](https://github.com/bc2zb), [@bjlang](https://github.com/bjlang),\n[@crickbabs](https://github.com/crickbabs), [@drejom](https://github.com/drejom),\n[@houghtos](https://github.com/houghtos), [@KevinMenden](https://github.com/KevinMenden),\n[@mashehu](https://github.com/mashehu), [@pditommaso](https://github.com/pditommaso),\n[@Rotholandus](https://github.com/Rotholandus), [@sofiahaglund](https://github.com/sofiahaglund),\n[@tiagochst](https://github.com/tiagochst), [@winni2k](https://github.com/winni2k) and [@Kevin-Brockers](https://github.com/Kevin-Brockers).\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 `#chipseq` channel](https://nfcore.slack.com/channels/chipseq) (you can join with [this invite](https://nf-co.re/join/slack)).\n\n## Citations\n\nIf you use nf-core/chipseq for your analysis, please cite it using the following doi: [10.5281/zenodo.3240506](https://doi.org/10.5281/zenodo.3240506)\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" @@ -121,7 +121,11 @@ }, { "@id": "main.nf", - "@type": ["File", "SoftwareSourceCode", "ComputationalWorkflow"], + "@type": [ + "File", + "SoftwareSourceCode", + "ComputationalWorkflow" + ], "contributor": [ { "@id": "#e692d0bd-48a1-49a8-b913-65eefc747832" From 1745964229046cf0ee037a7a78be84b56affd184 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Mon, 18 May 2026 18:28:47 +0200 Subject: [PATCH 05/14] Fix container_config to make nf-core lint happy --- conf/containers_conda_lock_files_amd64.config | 1 - conf/containers_conda_lock_files_arm64.config | 1 - conf/containers_docker_amd64.config | 1 - conf/containers_docker_arm64.config | 1 - conf/containers_singularity_https_amd64.config | 1 - conf/containers_singularity_https_arm64.config | 1 - conf/containers_singularity_oras_amd64.config | 1 - conf/containers_singularity_oras_arm64.config | 1 - 8 files changed, 8 deletions(-) diff --git a/conf/containers_conda_lock_files_amd64.config b/conf/containers_conda_lock_files_amd64.config index d3ee1b4ee..4e138a661 100644 --- a/conf/containers_conda_lock_files_amd64.config +++ b/conf/containers_conda_lock_files_amd64.config @@ -1,2 +1 @@ process { withName: 'FASTQC' { container = 'modules/nf-core/fastqc/.conda-lock/linux_amd64-bd-5cb1a2fa2f18c7c2_1.txt' } } -process { withName: 'MULTIQC' { container = 'modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-db7c73dae76bc9e6_1.txt' } } diff --git a/conf/containers_conda_lock_files_arm64.config b/conf/containers_conda_lock_files_arm64.config index 2b90ac4fc..ab0f3cfff 100644 --- a/conf/containers_conda_lock_files_arm64.config +++ b/conf/containers_conda_lock_files_arm64.config @@ -1,2 +1 @@ process { withName: 'FASTQC' { container = 'modules/nf-core/fastqc/.conda-lock/linux_arm64-bd-e455e32f745abe68_1.txt' } } -process { withName: 'MULTIQC' { container = 'modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-d167b8012595a136_1.txt' } } diff --git a/conf/containers_docker_amd64.config b/conf/containers_docker_amd64.config index 65f1814a0..803e0504f 100644 --- a/conf/containers_docker_amd64.config +++ b/conf/containers_docker_amd64.config @@ -1,2 +1 @@ process { withName: 'FASTQC' { container = 'community.wave.seqera.io/library/fastqc:0.12.1--5cb1a2fa2f18c7c2' } } -process { withName: 'MULTIQC' { container = 'community.wave.seqera.io/library/multiqc:1.34--db7c73dae76bc9e6' } } diff --git a/conf/containers_docker_arm64.config b/conf/containers_docker_arm64.config index 6c845ba4b..b0dd70c81 100644 --- a/conf/containers_docker_arm64.config +++ b/conf/containers_docker_arm64.config @@ -1,2 +1 @@ process { withName: 'FASTQC' { container = 'community.wave.seqera.io/library/fastqc:0.12.1--e455e32f745abe68' } } -process { withName: 'MULTIQC' { container = 'community.wave.seqera.io/library/multiqc:1.34--d167b8012595a136' } } diff --git a/conf/containers_singularity_https_amd64.config b/conf/containers_singularity_https_amd64.config index 838f2484f..390d5d7f7 100644 --- a/conf/containers_singularity_https_amd64.config +++ b/conf/containers_singularity_https_amd64.config @@ -1,2 +1 @@ process { withName: 'FASTQC' { container = 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/f2/f20b021476d1d87658820f971ebecc1e8cdbde0f338eb0d9cea2b0a8fc54a54b/data' } } -process { withName: 'MULTIQC' { container = 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/1b/1bef8af6be88c5733461959c46ac8ef73d18f65277f62a1695d0e1633054f9c2/data' } } diff --git a/conf/containers_singularity_https_arm64.config b/conf/containers_singularity_https_arm64.config index 090173be1..a3d806f0d 100644 --- a/conf/containers_singularity_https_arm64.config +++ b/conf/containers_singularity_https_arm64.config @@ -1,2 +1 @@ process { withName: 'FASTQC' { container = 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/46/46daf2dad0169afd2ae047c3e50ed3776259f664bf07e5e06b045dc23449e994/data' } } -process { withName: 'MULTIQC' { container = 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/9a/9a1fec9662a152683e6fcae440d0ce20920b3b89dc62d1e3a52e73f92eba0969/data' } } diff --git a/conf/containers_singularity_oras_amd64.config b/conf/containers_singularity_oras_amd64.config index 773f3698b..754d5aa06 100644 --- a/conf/containers_singularity_oras_amd64.config +++ b/conf/containers_singularity_oras_amd64.config @@ -1,2 +1 @@ process { withName: 'FASTQC' { container = 'oras://community.wave.seqera.io/library/fastqc:0.12.1--5c4bd442468d75dd' } } -process { withName: 'MULTIQC' { container = 'oras://community.wave.seqera.io/library/multiqc:1.34--4fc8657c816047c0' } } diff --git a/conf/containers_singularity_oras_arm64.config b/conf/containers_singularity_oras_arm64.config index 798cc638d..1714d9d97 100644 --- a/conf/containers_singularity_oras_arm64.config +++ b/conf/containers_singularity_oras_arm64.config @@ -1,2 +1 @@ process { withName: 'FASTQC' { container = 'oras://community.wave.seqera.io/library/fastqc:0.12.1--127a87fc06499035' } } -process { withName: 'MULTIQC' { container = 'oras://community.wave.seqera.io/library/multiqc:1.34--7fbd82d945c06726' } } From f15835b9c6624e5040b9471371b7cf01883270a1 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Mon, 18 May 2026 18:38:32 +0200 Subject: [PATCH 06/14] Add logos to files unchanged --- .nf-core.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.nf-core.yml b/.nf-core.yml index 2bc7adacb..3e3942813 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,6 +1,8 @@ lint: files_unchanged: - .gitignore + - assets/nf-core-chipseq_logo_light.png + - assets/nf-core-chipseq_logo_dark.png nextflow_config: - config_defaults: - params.bamtools_filter_se_config From 6abe34d4863e6f9a21aeedb322c69275774251bf Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Mon, 18 May 2026 18:44:54 +0200 Subject: [PATCH 07/14] Fix path to dark logo in files unchanged --- .nf-core.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nf-core.yml b/.nf-core.yml index 3e3942813..00989144a 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -2,7 +2,7 @@ lint: files_unchanged: - .gitignore - assets/nf-core-chipseq_logo_light.png - - assets/nf-core-chipseq_logo_dark.png + - docs/images/nf-core-chipseq_logo_dark.png nextflow_config: - config_defaults: - params.bamtools_filter_se_config From b3083ac5b44d471295b522b56962fc97da28d5b4 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Mon, 18 May 2026 19:01:51 +0200 Subject: [PATCH 08/14] Increase disk size for nf-test to avoid no space left on device errors --- .github/workflows/nf-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index efd72d653..d9083dc9c 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -30,6 +30,7 @@ jobs: runs-on: # use self-hosted runners - runs-on=${{ github.run_id }}-nf-test-changes - runner=4cpu-linux-x64 + - disk=large outputs: shard: ${{ steps.set-shards.outputs.shard }} total_shards: ${{ steps.set-shards.outputs.total_shards }} From ae7d0f3a821ea98845050786854502eb02c3d962 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Mon, 18 May 2026 19:22:55 +0200 Subject: [PATCH 09/14] Increase max shardings --- .github/workflows/nf-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index d9083dc9c..b3b3cf019 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -51,7 +51,7 @@ jobs: env: NFT_VER: ${{ env.NFT_VER }} with: - max_shards: 7 + max_shards: 15 - name: debug run: | From d8c9b38e1f6d25e89347e062c787856a5973de96 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Mon, 18 May 2026 22:05:16 +0200 Subject: [PATCH 10/14] Disk large in the proper instance for nf-test ci --- .github/workflows/nf-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index b3b3cf019..707a7e5df 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -30,7 +30,6 @@ jobs: runs-on: # use self-hosted runners - runs-on=${{ github.run_id }}-nf-test-changes - runner=4cpu-linux-x64 - - disk=large outputs: shard: ${{ steps.set-shards.outputs.shard }} total_shards: ${{ steps.set-shards.outputs.total_shards }} @@ -51,7 +50,7 @@ jobs: env: NFT_VER: ${{ env.NFT_VER }} with: - max_shards: 15 + max_shards: 7 - name: debug run: | @@ -65,6 +64,7 @@ jobs: runs-on: # use self-hosted runners - runs-on=${{ github.run_id }}-nf-test - runner=4cpu-linux-x64 + - disk=large strategy: fail-fast: false matrix: From b2984aa3aaadf8b9e7e4f32c69f8203beb63b17b Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Mon, 18 May 2026 22:06:34 +0200 Subject: [PATCH 11/14] Update changelog --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8b1cd362..2d3459b10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,11 +20,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [[PR #493](https://github.com/nf-core/chipseq/pull/493)] - Follow up to #487. - [[PR #493](https://github.com/nf-core/chipseq/pull/493)] - Follow up to #487. - [[#492](https://github.com/nf-core/chipseq/issues/492), [#417](https://github.com/nf-core/chipseq/issues/417)] - Refactor local modules to nf-core standard. -- [[#416](https://github.com/nf-core/chipseq/issues/416)] - Moved the KHMER_UNIQUEKMERS logic to prepare_genome +- [[#416](https://github.com/nf-core/chipseq/issues/416)] - Moved the `KHMER_UNIQUEKMERS` logic to prepare_genome - [[#440](https://github.com/nf-core/chipseq/issues/440), [#510](https://github.com/nf-core/chipseq/issues/510)] - Fix naming collisions when sample and replicate combination is identical for multiple antibodies see. -- [[#467](https://github.com/nf-core/chipseq/issues/467), [#510](https://github.com/nf-core/chipseq/issues/510)] - - Restrict the usage to one IP against one control replicate. +- [[#467](https://github.com/nf-core/chipseq/issues/467), [#510](https://github.com/nf-core/chipseq/issues/510)] - Restrict the usage to one IP against one control replicate. +- [[PR #514](https://github.com/nf-core/chipseq/pull/514)] - Updated pipeline template to [nf-core/tools 4.0.2](https://github.com/nf-core/tools/releases/tag/4.0.2) ### Parameters From 14fb098751d0d599ee22fd5a5220b150767ba9d7 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Mon, 18 May 2026 22:23:24 +0200 Subject: [PATCH 12/14] Increase shards again --- .github/workflows/nf-test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index 707a7e5df..8a04197d2 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -30,6 +30,7 @@ jobs: runs-on: # use self-hosted runners - runs-on=${{ github.run_id }}-nf-test-changes - runner=4cpu-linux-x64 + - disk=large outputs: shard: ${{ steps.set-shards.outputs.shard }} total_shards: ${{ steps.set-shards.outputs.total_shards }} @@ -50,7 +51,7 @@ jobs: env: NFT_VER: ${{ env.NFT_VER }} with: - max_shards: 7 + max_shards: 15 - name: debug run: | From 5e89a6a85437c3c1324d0ba736af81a7179c52d8 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Tue, 19 May 2026 16:02:31 +0200 Subject: [PATCH 13/14] Increase volume size for nf-test --- .github/workflows/nf-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index 8a04197d2..7195b0582 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -30,7 +30,7 @@ jobs: runs-on: # use self-hosted runners - runs-on=${{ github.run_id }}-nf-test-changes - runner=4cpu-linux-x64 - - disk=large + - volume=40gb outputs: shard: ${{ steps.set-shards.outputs.shard }} total_shards: ${{ steps.set-shards.outputs.total_shards }} @@ -51,7 +51,7 @@ jobs: env: NFT_VER: ${{ env.NFT_VER }} with: - max_shards: 15 + max_shards: 7 - name: debug run: | From 53de5f2c94ee517c2fcb0b1a61990c72b6188379 Mon Sep 17 00:00:00 2001 From: JoseEspinosa Date: Tue, 19 May 2026 18:36:02 +0200 Subject: [PATCH 14/14] Increase volume size for nf-test --- .github/workflows/nf-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index 7195b0582..bfe7c97b5 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -30,7 +30,6 @@ jobs: runs-on: # use self-hosted runners - runs-on=${{ github.run_id }}-nf-test-changes - runner=4cpu-linux-x64 - - volume=40gb outputs: shard: ${{ steps.set-shards.outputs.shard }} total_shards: ${{ steps.set-shards.outputs.total_shards }} @@ -66,6 +65,7 @@ jobs: - runs-on=${{ github.run_id }}-nf-test - runner=4cpu-linux-x64 - disk=large + - volume=40gb strategy: fail-fast: false matrix: