diff --git a/.github/actions/nf-test-action/action.yml b/.github/actions/nf-test-action/action.yml index 0eba1ed473c9..eb561f6eb33a 100644 --- a/.github/actions/nf-test-action/action.yml +++ b/.github/actions/nf-test-action/action.yml @@ -17,7 +17,7 @@ inputs: runs: using: "composite" steps: - - uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4 + - uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4 with: distribution: "temurin" java-version: "17" @@ -30,7 +30,7 @@ runs: - name: Set up Python uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5 with: - python-version: "3.11" + python-version: "3.13" - name: Set up nf-test uses: nf-core/setup-nf-test@v1 @@ -38,14 +38,6 @@ runs: version: "${{ env.NFT_VER }}" install-pdiff: true - - name: Install dependencies from universe repo - if: contains(inputs.profile, 'singularity') - shell: bash - run: | - sudo add-apt-repository universe - sudo apt-get update - sudo apt-get install -y uidmap squashfs-tools - - name: Setup apptainer if: contains(inputs.profile, 'singularity') uses: eWaterCycle/setup-apptainer@3f706d898c9db585b1d741b4692e66755f3a1b40 #v2 diff --git a/.github/skip_nf_test.json b/.github/skip_nf_test.json index d09e471ca83b..f1681b7112b8 100644 --- a/.github/skip_nf_test.json +++ b/.github/skip_nf_test.json @@ -18,6 +18,8 @@ "modules/nf-core/cellranger/mkvdjref", "modules/nf-core/cellranger/multi", "modules/nf-core/cellranger/vdj", + "modules/nf-core/cellrangerarc/mkref", + "modules/nf-core/cellrangerarc/count", "modules/nf-core/cellrangerarc/mkgtf", "modules/nf-core/checkqc", "modules/nf-core/coreograph", @@ -31,7 +33,6 @@ "modules/nf-core/deepvariant/rundeepvariant", "modules/nf-core/deepvariant/vcfstatsreport", "modules/nf-core/doubletdetection", - "modules/nf-core/ensemblvep/vep", "modules/nf-core/fastk/fastk", "modules/nf-core/fastk/histex", "modules/nf-core/fastk/merge", @@ -74,6 +75,8 @@ "modules/nf-core/spaceranger/mkref", "modules/nf-core/spotiflow", "modules/nf-core/svanalyzer/svbenchmark", + "modules/nf-core/svtk/rdtest2vcf", + "modules/nf-core/svtk/standardize", "modules/nf-core/universc", "modules/nf-core/vt/decompose", "modules/nf-core/wittyer", @@ -85,8 +88,7 @@ "subworkflows/nf-core/deepvariant", "subworkflows/nf-core/fasta_newick_epang_gappa", "subworkflows/nf-core/fastq_align_bamcmp_bwa", - "subworkflows/nf-core/fastq_align_bwa", - "subworkflows/nf-core/vcf_annotate_ensemblvep" + "subworkflows/nf-core/fastq_align_bwa" ], "docker": ["modules/nf-core/parabricks", "subworkflows/nf-core/deepvariant/tests/equality"], "singularity": [ diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 53d0df3bec4d..a28be5ecba78 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -85,28 +85,24 @@ jobs: with: script: | return [...new Set(${{ steps.filter.outputs.modules_files }} + .filter(x => x.endsWith('main.nf')) .map(path => path .replace('modules/nf-core/', '') - .split('/') - .slice(0, 2) - .filter(x => !x.startsWith('main.nf') && x !== 'tests' && x !== 'templates' && x !== 'meta.yml' && x !== 'environment.yml' && !x.endsWith('.md')) - .join('/')) + .replace(/\/main\.nf$/, '') ) - ]; + )]; - name: Get subworkflow name uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 id: subworkflow_names with: script: | return [...new Set(${{ steps.filter.outputs.subworkflows_files }} + .filter(x => x.endsWith('main.nf')) .map(path => path .replace('subworkflows/nf-core/', '') - .split('/') - .slice(0, 2) - .filter(x => !x.startsWith('main.nf') && x !== 'tests' && x !== 'templates' && x !== 'meta.yml' && x !== 'environment.yml' && !x.endsWith('.md')) - .join('/')) + .replace(/\/main\.nf$/, '') ) - ]; + )]; - name: debug run: | @@ -122,7 +118,7 @@ jobs: - image=ubuntu22-full-x64 name: nf-core lint modules needs: nf-core-changes - if: ${{ (needs.nf-core-changes.outputs.modules == 'true') }} + if: ${{ needs.nf-core-changes.outputs.modules_files != '[]' }} strategy: fail-fast: false matrix: @@ -149,7 +145,7 @@ jobs: - name: Install pip run: python -m pip install --upgrade pip - - uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4 + - uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4 with: distribution: "temurin" java-version: "17" @@ -170,7 +166,7 @@ jobs: - image=ubuntu22-full-x64 name: nf-core lint subworkflows needs: nf-core-changes - if: ${{ (needs.nf-core-changes.outputs.subworkflows == 'true') }} + if: ${{ needs.nf-core-changes.outputs.subworkflows_files != '[]' }} strategy: fail-fast: false matrix: diff --git a/.github/workflows/nf-test-gpu.yml b/.github/workflows/nf-test-gpu.yml index 349227eb1106..fa7bd453c7f6 100644 --- a/.github/workflows/nf-test-gpu.yml +++ b/.github/workflows/nf-test-gpu.yml @@ -127,7 +127,7 @@ jobs: confirm-pass-gpu: runs-on: - runs-on=${{ github.run_id }}-confirm-pass-gpu - - runner=4cpu-linux-x64 + - runner=2cpu-linux-x64 - image=ubuntu22-full-x64 needs: [nf-test-gpu] if: always() diff --git a/.github/workflows/pytest-workflow.yml b/.github/workflows/pytest-workflow.yml index 3033309643c6..2cdff6f5606a 100644 --- a/.github/workflows/pytest-workflow.yml +++ b/.github/workflows/pytest-workflow.yml @@ -100,12 +100,8 @@ jobs: tags: bwa/samse - profile: conda tags: cellpose - - profile: conda - tags: cellrangerarc/count - profile: conda tags: cellrangerarc/mkfastq - - profile: conda - tags: cellrangerarc/mkref - profile: conda tags: cellrangeratac/count - profile: conda @@ -228,6 +224,8 @@ jobs: tags: subworkflows/fasta_clean_fcs - profile: conda tags: svanalyzer/svbenchmark + - profile: conda + tags: svtk/standardize - profile: conda tags: universc - profile: singularity @@ -255,7 +253,7 @@ jobs: - name: Install Python dependencies run: python -m pip install --upgrade pip pytest-workflow cryptography - - uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4 + - uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4 with: distribution: "temurin" java-version: "17" diff --git a/.github/workflows/update-gpu-snapshot.yml b/.github/workflows/update-gpu-snapshot.yml new file mode 100644 index 000000000000..8f8581f7d096 --- /dev/null +++ b/.github/workflows/update-gpu-snapshot.yml @@ -0,0 +1,99 @@ +name: update-gpu-snapshot +run-name: update gpu snapshot (automated) +on: + issue_comment: + types: [created] + +env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # renovate: datasource=github-releases depName=askimed/nf-test versioning=semver + NFT_VER: "0.9.2" + NXF_ANSI_LOG: false + # renovate: datasource=github-releases depName=nextflow/nextflow versioning=semver + NXF_VER: "24.10.2" + +jobs: + update-gpu-snapshot: + # Only run if comment is on a PR with the main repo, and if it contains the magic keywords + if: > + contains(github.event.comment.html_url, '/pull/') && + contains(github.event.comment.body, '@nf-core-bot update gpu snapshot') && + github.repository == 'nf-core/modules' + runs-on: "runs-on=${{ github.run_id }}/family=g4dn.xlarge/image=ubuntu24-gpu-x64" + steps: + # indication that the snapshot is being updated + - name: React on comment + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + with: + comment-id: ${{ github.event.comment.id }} + reactions: eyes + # Use the @nf-core-bot token to check out so we can push later + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + with: + token: ${{ secrets.nf_core_bot_auth_token }} + + - name: Get the test path from the comment (after "@nf-core-bot update gpu snapshot path:") + id: get-test-path + run: | + echo "test_path=$(echo ${{ github.event.comment.body }} | grep -oP 'path:\s*\K[^ ]+')" >> $GITHUB_OUTPUT + + - name: if test path is empty, exit + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + if: steps.get-test-path.outputs.test_path == '' + with: + comment-id: ${{ github.event.comment.id }} + reactions: "-1" + + - name: if test path is empty, exit + if: steps.get-test-path.outputs.test_path == '' + run: exit 0 + + # Action runs on the issue comment, so we don't get the PR by default + # Use the gh cli to check out the PR + - name: Checkout Pull Request + run: gh pr checkout ${{ github.event.issue.number }} + env: + GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }} + + - uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4 + with: + distribution: "temurin" + java-version: "17" + + - name: Set up Nextflow + uses: nf-core/setup-nextflow@v2 + with: + version: "${{ env.NXF_VER }}" + + - name: Set up Python + uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5 + with: + python-version: "3.13" + + - name: Set up nf-test + uses: nf-core/setup-nf-test@v1 + with: + version: "${{ env.NFT_VER }}" + install-pdiff: true + + - name: Update gpu snapshot + id: update-gpu-snapshot + run: | + nf-test test \ + --profile=docker,gpu \ + --verbose \ + --ci \ + --update-snapshot \ + --filter process,workflow \ + --tag gpu \ + ${{ steps.get-test-path.outputs.test_path }} + + - name: Commit & push changes + run: | + git config user.email "core@nf-co.re" + git config user.name "nf-core-bot" + git config push.default upstream + git add . + git status + git commit -m "[automated] Update gpu snapshot" + git push diff --git a/.github/workflows/wave.yml b/.github/workflows/wave.yml index f029c3a24e45..7297b30b1e92 100644 --- a/.github/workflows/wave.yml +++ b/.github/workflows/wave.yml @@ -31,7 +31,7 @@ jobs: - name: Find conda differences id: conda-diff - uses: tj-actions/changed-files@823fcebdb31bb35fdf2229d9f769b400309430d0 # v46 + uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46 with: json: true escape_json: false @@ -40,7 +40,7 @@ jobs: - name: Find Dockerfile differences id: docker-diff - uses: tj-actions/changed-files@823fcebdb31bb35fdf2229d9f769b400309430d0 # v46 + uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46 with: json: true escape_json: false diff --git a/modules/nf-core/artic/guppyplex/environment.yml b/modules/nf-core/artic/guppyplex/environment.yml index fd739b2cf0d6..9c016bcf2e1f 100644 --- a/modules/nf-core/artic/guppyplex/environment.yml +++ b/modules/nf-core/artic/guppyplex/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::artic=1.2.3 + - bioconda::artic=1.6.2 diff --git a/modules/nf-core/artic/guppyplex/main.nf b/modules/nf-core/artic/guppyplex/main.nf index e2c2f16ca068..8b4f819bda8a 100644 --- a/modules/nf-core/artic/guppyplex/main.nf +++ b/modules/nf-core/artic/guppyplex/main.nf @@ -4,8 +4,8 @@ process ARTIC_GUPPYPLEX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/artic:1.2.3--pyhdfd78af_0' : - 'biocontainers/artic:1.2.3--pyhdfd78af_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5a747cc579edfc0cb2176b749afc02550ab5de678ae6a40d2cfadeba6c0de25d/data' : + 'community.wave.seqera.io/library/artic:1.6.2--d4956cdc155b8612' }" input: tuple val(meta), path(fastq_dir) diff --git a/modules/nf-core/artic/guppyplex/tests/main.nf.test.snap b/modules/nf-core/artic/guppyplex/tests/main.nf.test.snap index 93a3828d4ee4..da0ef8580c7c 100644 --- a/modules/nf-core/artic/guppyplex/tests/main.nf.test.snap +++ b/modules/nf-core/artic/guppyplex/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] ], "1": [ - "versions.yml:md5,9ac5b3d9c4223377c632a78e7e727718" + "versions.yml:md5,2a341fa8dedc91b0567c7f0d2d2b06c6" ], "fastq": [ [ @@ -22,15 +22,15 @@ ] ], "versions": [ - "versions.yml:md5,9ac5b3d9c4223377c632a78e7e727718" + "versions.yml:md5,2a341fa8dedc91b0567c7f0d2d2b06c6" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "24.10.5" }, - "timestamp": "2025-03-01T21:05:25.082921858" + "timestamp": "2025-04-01T18:10:48.250223227" }, "sarscov2 - fastq": { "content": [ @@ -44,7 +44,7 @@ ] ], "1": [ - "versions.yml:md5,9ac5b3d9c4223377c632a78e7e727718" + "versions.yml:md5,2a341fa8dedc91b0567c7f0d2d2b06c6" ], "fastq": [ [ @@ -55,14 +55,14 @@ ] ], "versions": [ - "versions.yml:md5,9ac5b3d9c4223377c632a78e7e727718" + "versions.yml:md5,2a341fa8dedc91b0567c7f0d2d2b06c6" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "24.10.5" }, - "timestamp": "2025-03-01T20:33:57.000960789" + "timestamp": "2025-04-01T18:10:05.440090167" } } \ No newline at end of file diff --git a/modules/nf-core/artic/minion/environment.yml b/modules/nf-core/artic/minion/environment.yml index a0a6221d7722..c4ed3fd375a0 100644 --- a/modules/nf-core/artic/minion/environment.yml +++ b/modules/nf-core/artic/minion/environment.yml @@ -4,5 +4,5 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::artic=1.6.1 - - bioconda::htslib=1.17 + - bioconda::artic=1.6.2 + - bioconda::htslib=1.17 # can't be updated due to dependency issues diff --git a/modules/nf-core/artic/minion/main.nf b/modules/nf-core/artic/minion/main.nf index 2f9a7c9ccf6b..77bffb24f63d 100644 --- a/modules/nf-core/artic/minion/main.nf +++ b/modules/nf-core/artic/minion/main.nf @@ -4,8 +4,8 @@ process ARTIC_MINION { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/artic:1.6.1--pyhdfd78af_0' : - 'biocontainers/artic:1.6.1--pyhdfd78af_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5a747cc579edfc0cb2176b749afc02550ab5de678ae6a40d2cfadeba6c0de25d/data' : + 'community.wave.seqera.io/library/artic:1.6.2--d4956cdc155b8612' }" input: tuple val(meta), path(fastq) diff --git a/modules/nf-core/artic/minion/tests/main.nf.test.snap b/modules/nf-core/artic/minion/tests/main.nf.test.snap index eae31144b6d4..980aa7ea885a 100644 --- a/modules/nf-core/artic/minion/tests/main.nf.test.snap +++ b/modules/nf-core/artic/minion/tests/main.nf.test.snap @@ -57,7 +57,7 @@ ], "11": [ - "versions.yml:md5,f76ecd36f1daeb56daeb64400adf160b" + "versions.yml:md5,a23b17af33ceec7bef2296a0bfb27d19" ], "2": [ [ @@ -258,20 +258,20 @@ ] ], "versions": [ - "versions.yml:md5,f76ecd36f1daeb56daeb64400adf160b" + "versions.yml:md5,a23b17af33ceec7bef2296a0bfb27d19" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "24.10.5" }, - "timestamp": "2025-03-02T13:22:56.372935027" + "timestamp": "2025-04-01T18:17:05.880162679" }, "sarscov2 - fastq": { "content": [ [ - "versions.yml:md5,f76ecd36f1daeb56daeb64400adf160b" + "versions.yml:md5,a23b17af33ceec7bef2296a0bfb27d19" ], [ [ @@ -372,8 +372,8 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "24.10.5" }, - "timestamp": "2025-03-02T13:25:08.780155357" + "timestamp": "2025-04-01T18:16:19.688747943" } } \ No newline at end of file diff --git a/modules/nf-core/bandage/image/environment.yml b/modules/nf-core/bandage/image/environment.yml index 7a672e39b7ac..06aba8a73ef5 100644 --- a/modules/nf-core/bandage/image/environment.yml +++ b/modules/nf-core/bandage/image/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bandage=0.8.1 + - bioconda::bandage=0.9.0 diff --git a/modules/nf-core/bandage/image/main.nf b/modules/nf-core/bandage/image/main.nf index f6801d0a3a61..016cb9c447d0 100644 --- a/modules/nf-core/bandage/image/main.nf +++ b/modules/nf-core/bandage/image/main.nf @@ -4,8 +4,8 @@ process BANDAGE_IMAGE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bandage:0.8.1--hc9558a2_2' : - 'biocontainers/bandage:0.8.1--hc9558a2_2' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/3e/3eabbd074e3bc45e2643783450330cae3afc6697fefc635755ab964dc43665a1/data' : + 'community.wave.seqera.io/library/bandage:0.9.0--4f0567049a14ea6d' }" input: tuple val(meta), path(gfa) @@ -27,7 +27,7 @@ process BANDAGE_IMAGE { cat <<-END_VERSIONS > versions.yml "${task.process}": - bandage: \$(echo \$(Bandage --version 2>&1) | sed 's/^.*Version: //; s/ .*\$//') + bandage: \$(echo \$(export QT_QPA_PLATFORM=offscreen; Bandage --version 2>&1) | sed 's/^.*Version: //; s/ .*\$//') END_VERSIONS """ } diff --git a/modules/nf-core/bandage/image/tests/main.nf.test.snap b/modules/nf-core/bandage/image/tests/main.nf.test.snap index 1f260eca921b..b25bc3443f57 100644 --- a/modules/nf-core/bandage/image/tests/main.nf.test.snap +++ b/modules/nf-core/bandage/image/tests/main.nf.test.snap @@ -10,13 +10,13 @@ "" ], [ - "versions.yml:md5,443fd5f11eb36f013a1863e66d0eea21" + "versions.yml:md5,fbde52dd28ce0b0245e301c7a3fd4629" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-26T15:18:46.613049" + "timestamp": "2025-04-02T14:07:25.265702735" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/annotate/environment.yml b/modules/nf-core/bcftools/annotate/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/annotate/environment.yml +++ b/modules/nf-core/bcftools/annotate/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/annotate/main.nf b/modules/nf-core/bcftools/annotate/main.nf index b6b73309b893..8ab067d80bd0 100644 --- a/modules/nf-core/bcftools/annotate/main.nf +++ b/modules/nf-core/bcftools/annotate/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_ANNOTATE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(input), path(index), path(annotations), path(annotations_index) diff --git a/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap b/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap index 16828b6ce04f..63e0d9d5a4ea 100644 --- a/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/annotate/tests/main.nf.test.snap @@ -23,79 +23,16 @@ ], [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T14:02:05.809043894" + "timestamp": "2025-04-01T12:55:30.265471036" }, - "bcf": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test_ann.bcf" - ] - ], - [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-12T16:39:33.331888" - }, - "sarscov2 - [vcf, [], annotation, annotation_tbi], [], [] - vcf_output": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz" - ] - ], - [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" - ] - ], - "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" - }, - "timestamp": "2024-11-06T14:01:32.326248064" - }, - "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [], [] - vcf_output": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz" - ] - ], - [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" - ] - ], - "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" - }, - "timestamp": "2024-11-06T14:01:17.821142466" - }, - "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [], [] - vcf_gz_index_tbi - stub": { + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [], [] - stub": { "content": [ { "0": [ @@ -108,31 +45,19 @@ ] ], "1": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "2": [ ], "3": [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" ], "csi": [ ], "tbi": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "vcf": [ [ @@ -144,62 +69,57 @@ ] ], "versions": [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" ] } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T14:03:12.574479421" + "timestamp": "2025-04-01T12:55:48.340271359" }, - "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [], [] - stub": { + "bcf": { "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" - ], - "csi": [ - - ], - "tbi": [ - - ], - "vcf": [ - [ - { - "id": "test", - "single_end": false - }, - "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "versions": [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + [ + [ + { + "id": "test", + "single_end": false + }, + "test_ann.bcf" ] - } + ], + [ + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" + ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T14:02:38.89910979" + "timestamp": "2025-04-01T12:55:37.270860052" + }, + "sarscov2 - [vcf, [], annotation, annotation_tbi], [], [] - vcf_output": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz" + ] + ], + [ + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-01T12:55:12.451788461" }, "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [], [] - vcf_gz_index - stub": { "content": [ @@ -226,7 +146,7 @@ ] ], "3": [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" ], "csi": [ [ @@ -250,15 +170,15 @@ ] ], "versions": [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" ] } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T14:02:49.803045339" + "timestamp": "2025-04-01T12:55:52.305248991" }, "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [], [] - vcf_gz_index_csi - stub": { "content": [ @@ -285,7 +205,7 @@ ] ], "3": [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" ], "csi": [ [ @@ -309,15 +229,15 @@ ] ], "versions": [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" ] } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T14:03:00.654715777" + "timestamp": "2025-04-01T12:55:59.210314307" }, "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [], [] - vcf_gz_index": { "content": [ @@ -343,14 +263,14 @@ ] ], [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T14:01:45.446114465" + "timestamp": "2025-04-01T12:55:19.532491092" }, "sarscov2 - [vcf, [], annotation, annotation_tbi], header, rename_chrs - vcf_gz_index": { "content": [ @@ -364,14 +284,35 @@ ] ], [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T13:58:14.280394724" + "timestamp": "2025-04-01T12:55:44.331095545" + }, + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [], [] - vcf_output": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz" + ] + ], + [ + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-01T12:55:08.604415962" }, "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [], [] - vcf_gz_index_csi": { "content": [ @@ -397,13 +338,72 @@ ] ], [ - "versions.yml:md5,ea53f98610d42597cf384ff1fa3eb204" + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-01T12:55:23.309288135" + }, + "sarscov2 - [vcf, tbi, annotation, annotation_tbi], [], [] - vcf_gz_index_tbi - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" + ], + "csi": [ + + ], + "tbi": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "single_end": false + }, + "test_vcf.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,6f2d10eb553ef65b43a9bd4844c6aa35" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T14:01:55.70445216" + "timestamp": "2025-04-01T12:56:06.054536287" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/call/environment.yml b/modules/nf-core/bcftools/call/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/call/environment.yml +++ b/modules/nf-core/bcftools/call/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/call/main.nf b/modules/nf-core/bcftools/call/main.nf index bbb807aa0fe6..cb6790fae1c6 100644 --- a/modules/nf-core/bcftools/call/main.nf +++ b/modules/nf-core/bcftools/call/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_CALL { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(index) diff --git a/modules/nf-core/bcftools/call/tests/main.nf.test.snap b/modules/nf-core/bcftools/call/tests/main.nf.test.snap index 661f339a329c..977b1fc07d96 100644 --- a/modules/nf-core/bcftools/call/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/call/tests/main.nf.test.snap @@ -24,7 +24,7 @@ ] ], "3": [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ], "csi": [ [ @@ -48,15 +48,15 @@ ] ], "versions": [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T14:04:21.229055797" + "timestamp": "2025-04-01T13:04:24.254705466" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi": { "content": [ @@ -82,14 +82,14 @@ ] ], [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T14:03:23.262696017" + "timestamp": "2025-04-01T13:03:59.28663659" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index - stub": { "content": [ @@ -116,7 +116,7 @@ ] ], "3": [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ], "csi": [ [ @@ -140,15 +140,15 @@ ] ], "versions": [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T15:55:33.974136118" + "timestamp": "2025-04-01T13:04:17.359594287" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi - stub": { "content": [ @@ -175,7 +175,7 @@ ], "3": [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ], "csi": [ @@ -199,15 +199,15 @@ ] ], "versions": [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T14:04:31.830619665" + "timestamp": "2025-04-01T13:04:27.978617504" }, "sarscov2 - [vcf, tbi], vcf, tsv, []": { "content": [ @@ -221,27 +221,27 @@ ] ], [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:14:59.554229257" + "timestamp": "2025-04-01T13:04:03.898844714" }, "sarscov2 - [vcf, tbi], [], [], [] - stub": { "content": [ "out.vcf.gz", [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:15:04.51091878" + "timestamp": "2025-04-01T13:04:10.669558689" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index": { "content": [ @@ -267,14 +267,14 @@ ], [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T08:07:33.605528054" + "timestamp": "2025-04-01T13:03:48.669131563" }, "sarscov2 - [vcf, tbi], [], [], []": { "content": [ @@ -288,14 +288,14 @@ ] ], [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:14:54.133768522" + "timestamp": "2025-04-01T13:03:41.236931778" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi": { "content": [ @@ -321,13 +321,13 @@ ], [ - "versions.yml:md5,b58bd6083a4bfe915e9e5df7d2f29f9a" + "versions.yml:md5,f334a077a9dce5b398e8ba2ac9f77c97" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T14:03:12.081958194" + "timestamp": "2025-04-01T13:03:55.541423348" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/concat/environment.yml b/modules/nf-core/bcftools/concat/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/concat/environment.yml +++ b/modules/nf-core/bcftools/concat/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/concat/main.nf b/modules/nf-core/bcftools/concat/main.nf index 8a0328cf633d..fc756e11d824 100644 --- a/modules/nf-core/bcftools/concat/main.nf +++ b/modules/nf-core/bcftools/concat/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_CONCAT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcfs), path(tbi) diff --git a/modules/nf-core/bcftools/concat/tests/main.nf.test.snap b/modules/nf-core/bcftools/concat/tests/main.nf.test.snap index 4f6cf8abaa57..fc3630e1d1ed 100644 --- a/modules/nf-core/bcftools/concat/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/concat/tests/main.nf.test.snap @@ -21,14 +21,14 @@ ], [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-26T11:03:36.575719606" + "timestamp": "2025-04-01T13:07:59.602632725" }, "homo_sapiens - [[vcf1, vcf2], []]": { "content": [ @@ -48,7 +48,7 @@ ], "3": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ], "csi": [ @@ -65,15 +65,15 @@ ] ], "versions": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.3" + "nextflow": "24.10.5" }, - "timestamp": "2025-01-27T13:59:01.079183608" + "timestamp": "2025-04-01T13:08:10.612937747" }, "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - stub": { "content": [ @@ -93,7 +93,7 @@ ], "3": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ], "csi": [ @@ -110,15 +110,15 @@ ] ], "versions": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.3" + "nextflow": "24.10.5" }, - "timestamp": "2025-01-27T13:53:58.83709764" + "timestamp": "2025-04-01T13:08:14.560167356" }, "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index - stub": { "content": [ @@ -143,7 +143,7 @@ ] ], "3": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ], "csi": [ [ @@ -165,15 +165,15 @@ ] ], "versions": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-26T11:04:11.178539482" + "timestamp": "2025-04-01T13:08:21.582631265" }, "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi": { "content": [ @@ -197,14 +197,14 @@ ] ], [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-26T11:03:44.618596639" + "timestamp": "2025-04-01T13:08:06.771571575" }, "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]]": { "content": [ @@ -224,7 +224,7 @@ ], "3": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ], "csi": [ @@ -241,15 +241,15 @@ ] ], "versions": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.3" + "nextflow": "24.10.5" }, - "timestamp": "2025-01-27T13:52:50.457367833" + "timestamp": "2025-04-01T13:07:47.748357665" }, "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index": { "content": [ @@ -273,14 +273,14 @@ ], [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-26T11:03:21.607274757" + "timestamp": "2025-04-01T13:07:55.303850698" }, "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_tbi - stub": { "content": [ @@ -305,7 +305,7 @@ ], "3": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ], "csi": [ @@ -327,15 +327,15 @@ ] ], "versions": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-26T11:04:27.332133878" + "timestamp": "2025-04-01T13:08:32.675839006" }, "homo_sapiens - [[vcf1, vcf2], [tbi1, tbi2]] - vcf_gz_index_csi - stub": { "content": [ @@ -360,7 +360,7 @@ ] ], "3": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ], "csi": [ [ @@ -382,14 +382,14 @@ ] ], "versions": [ - "versions.yml:md5,c6e19f105510a46af1c5da9064e2e659" + "versions.yml:md5,6640b543bdeba692970e302474aaee22" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-26T11:04:19.745768656" + "timestamp": "2025-04-01T13:08:25.698924757" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/consensus/environment.yml b/modules/nf-core/bcftools/consensus/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/consensus/environment.yml +++ b/modules/nf-core/bcftools/consensus/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/consensus/main.nf b/modules/nf-core/bcftools/consensus/main.nf index 303be28dbb0d..bcff83114da7 100644 --- a/modules/nf-core/bcftools/consensus/main.nf +++ b/modules/nf-core/bcftools/consensus/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_CONSENSUS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(tbi), path(fasta), path(mask) diff --git a/modules/nf-core/bcftools/consensus/tests/main.nf.test.snap b/modules/nf-core/bcftools/consensus/tests/main.nf.test.snap index 1a23bd6d22e2..564303f08dd9 100644 --- a/modules/nf-core/bcftools/consensus/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/consensus/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] ], "1": [ - "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + "versions.yml:md5,f23de3ce430443d1a74a0da8bf1951eb" ], "fasta": [ [ @@ -22,15 +22,15 @@ ] ], "versions": [ - "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + "versions.yml:md5,f23de3ce430443d1a74a0da8bf1951eb" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.3" + "nextflow": "24.10.5" }, - "timestamp": "2024-12-20T15:38:55.13767915" + "timestamp": "2025-04-01T13:15:31.674308506" }, "bcftools - test": { "content": [ @@ -44,7 +44,7 @@ ] ], "1": [ - "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + "versions.yml:md5,f23de3ce430443d1a74a0da8bf1951eb" ], "fasta": [ [ @@ -55,15 +55,15 @@ ] ], "versions": [ - "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + "versions.yml:md5,f23de3ce430443d1a74a0da8bf1951eb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-20T13:56:00.789333465" + "timestamp": "2025-04-01T13:15:23.26111289" }, "bcftools - test - no mask": { "content": [ @@ -77,7 +77,7 @@ ] ], "1": [ - "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + "versions.yml:md5,f23de3ce430443d1a74a0da8bf1951eb" ], "fasta": [ [ @@ -88,14 +88,14 @@ ] ], "versions": [ - "versions.yml:md5,b5e1ca5013c29fa37855fe929fb21a65" + "versions.yml:md5,f23de3ce430443d1a74a0da8bf1951eb" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-20T13:56:07.531646148" + "timestamp": "2025-04-01T13:15:27.500207988" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/convert/environment.yml b/modules/nf-core/bcftools/convert/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/convert/environment.yml +++ b/modules/nf-core/bcftools/convert/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/convert/main.nf b/modules/nf-core/bcftools/convert/main.nf index 7f4cb06da2ae..7ac883756453 100644 --- a/modules/nf-core/bcftools/convert/main.nf +++ b/modules/nf-core/bcftools/convert/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_CONVERT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(input), path(input_index) diff --git a/modules/nf-core/bcftools/convert/tests/main.nf.test.snap b/modules/nf-core/bcftools/convert/tests/main.nf.test.snap index 3aa96d9affc8..b8d35c32169f 100644 --- a/modules/nf-core/bcftools/convert/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/convert/tests/main.nf.test.snap @@ -13,14 +13,14 @@ ], [ - "versions.yml:md5,b75cebea54ac69688ff5d1cbb0dda84f" + "versions.yml:md5,7c65c5f994949a183a87f21cdcb82a86" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nextflow": "24.10.5" }, - "timestamp": "2024-11-22T11:50:55.026578232" + "timestamp": "2025-04-01T13:16:36.968705335" }, "homo_sapiens - vcf1, tbi, [], fasta - to hap": { "content": [ @@ -49,14 +49,14 @@ ] ], [ - "versions.yml:md5,b75cebea54ac69688ff5d1cbb0dda84f" + "versions.yml:md5,7c65c5f994949a183a87f21cdcb82a86" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nextflow": "24.10.5" }, - "timestamp": "2024-11-22T11:51:02.355109034" + "timestamp": "2025-04-01T13:16:44.372525199" }, "homo_sapiens - vcf1, tbi, [], fasta - to hap - stub": { "content": [ @@ -104,7 +104,7 @@ ], "9": [ - "versions.yml:md5,b75cebea54ac69688ff5d1cbb0dda84f" + "versions.yml:md5,7c65c5f994949a183a87f21cdcb82a86" ], "bcf": [ @@ -149,15 +149,15 @@ ], "versions": [ - "versions.yml:md5,b75cebea54ac69688ff5d1cbb0dda84f" + "versions.yml:md5,7c65c5f994949a183a87f21cdcb82a86" ] } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-21T15:49:01.988438909" + "timestamp": "2025-04-01T13:17:00.867024505" }, "homo_sapiens - vcf1, tbi, bed, fasta - to gvcf - stub": { "content": [ @@ -200,7 +200,7 @@ ] ], "9": [ - "versions.yml:md5,b75cebea54ac69688ff5d1cbb0dda84f" + "versions.yml:md5,7c65c5f994949a183a87f21cdcb82a86" ], "bcf": [ @@ -240,15 +240,15 @@ ] ], "versions": [ - "versions.yml:md5,b75cebea54ac69688ff5d1cbb0dda84f" + "versions.yml:md5,7c65c5f994949a183a87f21cdcb82a86" ] } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-21T14:41:45.395930996" + "timestamp": "2025-04-01T13:17:05.391247025" }, "homo_sapiens - vcf1, tbi, [], fasta - to bcf - stub": { "content": [ @@ -291,7 +291,7 @@ ], "9": [ - "versions.yml:md5,b75cebea54ac69688ff5d1cbb0dda84f" + "versions.yml:md5,7c65c5f994949a183a87f21cdcb82a86" ], "bcf": [ @@ -331,15 +331,15 @@ ], "versions": [ - "versions.yml:md5,b75cebea54ac69688ff5d1cbb0dda84f" + "versions.yml:md5,7c65c5f994949a183a87f21cdcb82a86" ] } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-21T14:41:16.321899559" + "timestamp": "2025-04-01T13:16:53.506018396" }, "homo_sapiens - vcf1, tbi, bed, fasta - to gvcf": { "content": [ @@ -355,13 +355,13 @@ "test3.vcf.gz.csi" ], [ - "versions.yml:md5,b75cebea54ac69688ff5d1cbb0dda84f" + "versions.yml:md5,7c65c5f994949a183a87f21cdcb82a86" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nextflow": "24.10.5" }, - "timestamp": "2024-11-22T11:51:10.259936966" + "timestamp": "2025-04-01T13:16:49.158792906" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/csq/environment.yml b/modules/nf-core/bcftools/csq/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/csq/environment.yml +++ b/modules/nf-core/bcftools/csq/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/csq/main.nf b/modules/nf-core/bcftools/csq/main.nf index 38a348cda8a8..07216bc884b1 100644 --- a/modules/nf-core/bcftools/csq/main.nf +++ b/modules/nf-core/bcftools/csq/main.nf @@ -5,8 +5,8 @@ process BCFTOOLS_CSQ { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_1': - 'biocontainers/bcftools:1.20--h8b25389_1' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: diff --git a/modules/nf-core/bcftools/csq/tests/main.nf.test.snap b/modules/nf-core/bcftools/csq/tests/main.nf.test.snap index 8997e0dec824..f013b5c195e4 100644 --- a/modules/nf-core/bcftools/csq/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/csq/tests/main.nf.test.snap @@ -2,14 +2,14 @@ "homo_sapiens": { "content": [ "807319f441f639c33708781757da53ee", - [ - "versions.yml:md5,13a1a38a47f60c47fd15a32552492bbf" - ] + [ + "versions.yml:md5,020387d0de94edd20447c236d1d8843c" + ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-06T16:02:00.380988135" + "timestamp": "2025-04-01T13:19:10.581188283" } -} +} \ No newline at end of file diff --git a/modules/nf-core/bcftools/filter/environment.yml b/modules/nf-core/bcftools/filter/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/filter/environment.yml +++ b/modules/nf-core/bcftools/filter/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/filter/main.nf b/modules/nf-core/bcftools/filter/main.nf index 36cbf8c2be26..e7a24ae44100 100644 --- a/modules/nf-core/bcftools/filter/main.nf +++ b/modules/nf-core/bcftools/filter/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_FILTER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(tbi) diff --git a/modules/nf-core/bcftools/filter/tests/main.nf.test.snap b/modules/nf-core/bcftools/filter/tests/main.nf.test.snap index 640907e42097..a9f51f98b09a 100644 --- a/modules/nf-core/bcftools/filter/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/filter/tests/main.nf.test.snap @@ -17,7 +17,7 @@ ], "3": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ], "csi": [ @@ -34,15 +34,15 @@ ] ], "versions": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-10-08T09:14:47.394005264" + "timestamp": "2025-04-01T13:22:24.959966433" }, "sarscov2 - vcf_gz_index_tbi - stub": { "content": [ @@ -67,7 +67,7 @@ ], "3": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ], "csi": [ @@ -89,15 +89,15 @@ ] ], "versions": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T13:59:08.235854993" + "timestamp": "2025-04-01T13:22:50.239958906" }, "vcf": { "content": [ @@ -117,7 +117,7 @@ ], "3": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ], "csi": [ @@ -134,15 +134,15 @@ ] ], "versions": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T15:20:28.427974818" + "timestamp": "2025-04-01T13:21:54.690638665" }, "bcf output": { "content": [ @@ -162,7 +162,7 @@ ], "3": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ], "csi": [ @@ -179,15 +179,15 @@ ] ], "versions": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T15:20:34.049236749" + "timestamp": "2025-04-01T13:22:20.154869487" }, "sarscov2 - vcf_gz_index": { "content": [ @@ -211,14 +211,14 @@ ], [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T08:09:49.837854646" + "timestamp": "2025-04-01T13:22:01.831439795" }, "sarscov2 - vcf_gz_index_csi": { "content": [ @@ -242,14 +242,14 @@ ], [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T13:57:19.513365022" + "timestamp": "2025-04-01T13:22:05.859541512" }, "vcf - stub": { "content": [ @@ -269,7 +269,7 @@ ], "3": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ], "csi": [ @@ -286,15 +286,15 @@ ] ], "versions": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T15:29:55.846566153" + "timestamp": "2025-04-01T13:22:32.075222142" }, "sarscov2 - vcf_gz_index - stub": { "content": [ @@ -319,7 +319,7 @@ ] ], "3": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ], "csi": [ [ @@ -341,15 +341,15 @@ ] ], "versions": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T15:59:37.636874258" + "timestamp": "2025-04-01T13:22:36.252356698" }, "sarscov2 - vcf_gz_index_csi - stub": { "content": [ @@ -374,7 +374,7 @@ ] ], "3": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ], "csi": [ [ @@ -396,15 +396,15 @@ ] ], "versions": [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T13:58:46.36278584" + "timestamp": "2025-04-01T13:22:43.303679805" }, "sarscov2 - vcf_gz_index_tbi": { "content": [ @@ -428,13 +428,13 @@ ] ], [ - "versions.yml:md5,9a336d1ee26b527d7a2bdbeead155f64" + "versions.yml:md5,0edcb48d30832d2ebc2895c773a4183a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T13:57:34.748836577" + "timestamp": "2025-04-01T13:22:13.144377611" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/index/environment.yml b/modules/nf-core/bcftools/index/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/index/environment.yml +++ b/modules/nf-core/bcftools/index/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/index/main.nf b/modules/nf-core/bcftools/index/main.nf index 408e584c8cef..66d824a1be8f 100644 --- a/modules/nf-core/bcftools/index/main.nf +++ b/modules/nf-core/bcftools/index/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_INDEX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf) diff --git a/modules/nf-core/bcftools/index/tests/main.nf.test.snap b/modules/nf-core/bcftools/index/tests/main.nf.test.snap index b6f7b7003cce..19cdce7aadd0 100644 --- a/modules/nf-core/bcftools/index/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/index/tests/main.nf.test.snap @@ -14,7 +14,7 @@ ], "2": [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + "versions.yml:md5,0679fa7bdb181a09497bb5d0e0208e7e" ], "csi": [ [ @@ -28,15 +28,15 @@ ], "versions": [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + "versions.yml:md5,0679fa7bdb181a09497bb5d0e0208e7e" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-03T11:43:09.347303629" + "timestamp": "2025-04-01T13:27:09.068494316" }, "sarscov2 - vcf - tbi": { "content": [ @@ -49,14 +49,14 @@ ] ], [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + "versions.yml:md5,0679fa7bdb181a09497bb5d0e0208e7e" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-03T11:42:46.38669168" + "timestamp": "2025-04-01T13:27:02.067535809" }, "sarscov2 - vcf - tbi - stub": { "content": [ @@ -73,7 +73,7 @@ ] ], "2": [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + "versions.yml:md5,0679fa7bdb181a09497bb5d0e0208e7e" ], "csi": [ @@ -87,15 +87,15 @@ ] ], "versions": [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + "versions.yml:md5,0679fa7bdb181a09497bb5d0e0208e7e" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-03T11:43:32.494612317" + "timestamp": "2025-04-01T13:27:13.198252226" }, "sarscov2 - vcf - csi": { "content": [ @@ -108,13 +108,13 @@ ] ], [ - "versions.yml:md5,b4ea0f633dba7f5992fbf41b518f98e9" + "versions.yml:md5,0679fa7bdb181a09497bb5d0e0208e7e" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-03T11:42:33.652109509" + "timestamp": "2025-04-01T13:26:58.059916648" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/isec/environment.yml b/modules/nf-core/bcftools/isec/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/isec/environment.yml +++ b/modules/nf-core/bcftools/isec/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/isec/main.nf b/modules/nf-core/bcftools/isec/main.nf index 80d18721b725..8e865a5ac377 100644 --- a/modules/nf-core/bcftools/isec/main.nf +++ b/modules/nf-core/bcftools/isec/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_ISEC { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcfs), path(tbis) diff --git a/modules/nf-core/bcftools/isec/tests/main.nf.test.snap b/modules/nf-core/bcftools/isec/tests/main.nf.test.snap index 817ca2dc9ab0..ab5e5d7ac29e 100644 --- a/modules/nf-core/bcftools/isec/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/isec/tests/main.nf.test.snap @@ -2,7 +2,7 @@ "sarscov2 - [[vcf1.gz, vcf2.gz], [tbi1, tbi2]]": { "content": [ [ - "versions.yml:md5,c5b5a1204cf56fec79d17e1913eaca27" + "versions.yml:md5,a3eb0a5248f50944c4df3dd78f64fcfa" ], [ "0000.vcf.gz", @@ -20,10 +20,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-07-03T16:32:18.167072863" + "timestamp": "2025-04-01T13:34:51.49520705" }, "sarscov2 - [[vcf1, vcf2], [tbi1, tbi2]] - stub": { "content": [ @@ -44,7 +44,7 @@ ] ], "1": [ - "versions.yml:md5,c5b5a1204cf56fec79d17e1913eaca27" + "versions.yml:md5,a3eb0a5248f50944c4df3dd78f64fcfa" ], "results": [ [ @@ -62,14 +62,14 @@ ] ], "versions": [ - "versions.yml:md5,c5b5a1204cf56fec79d17e1913eaca27" + "versions.yml:md5,a3eb0a5248f50944c4df3dd78f64fcfa" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-07-03T09:45:52.881120953" + "timestamp": "2025-04-01T13:34:55.788476598" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/merge/environment.yml b/modules/nf-core/bcftools/merge/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/merge/environment.yml +++ b/modules/nf-core/bcftools/merge/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/merge/main.nf b/modules/nf-core/bcftools/merge/main.nf index facb14ea1316..bcca1036c5d3 100644 --- a/modules/nf-core/bcftools/merge/main.nf +++ b/modules/nf-core/bcftools/merge/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_MERGE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcfs), path(tbis) diff --git a/modules/nf-core/bcftools/merge/tests/main.nf.test.snap b/modules/nf-core/bcftools/merge/tests/main.nf.test.snap index b3b62556313f..5f2ac39ec56f 100644 --- a/modules/nf-core/bcftools/merge/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/merge/tests/main.nf.test.snap @@ -4,14 +4,14 @@ "e0de448dc8e712956a03ce68d79a0b3a", "test.vcf.gz.tbi", [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T12:34:16.977726522" + "timestamp": "2025-04-01T13:36:57.808346534" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf output - stub": { "content": [ @@ -28,7 +28,7 @@ ], "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ], "index": [ @@ -42,28 +42,28 @@ ] ], "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T13:17:34.532910365" + "timestamp": "2025-04-01T13:37:26.710546205" }, "sarscov2 - [vcf, tbi], [], [], bed": { "content": [ "febdcfb851dcfc83d8248520830aef10", [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T13:29:48.630057872" + "timestamp": "2025-04-01T13:37:02.283952426" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index - stub": { "content": [ @@ -85,7 +85,7 @@ ] ], "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ], "index": [ [ @@ -104,28 +104,28 @@ ] ], "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T13:17:59.983157569" + "timestamp": "2025-04-01T13:37:47.351607982" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf output": { "content": [ "57bb84274f336465d0a0946b532093b0", [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T13:29:05.528412678" + "timestamp": "2025-04-01T13:36:29.065115273" }, "sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output - stub": { "content": [ @@ -142,7 +142,7 @@ ], "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ], "index": [ @@ -156,15 +156,15 @@ ] ], "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T11:58:46.619657457" + "timestamp": "2025-04-01T13:37:42.876870714" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - tbi index - stub": { "content": [ @@ -186,7 +186,7 @@ ] ], "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ], "index": [ [ @@ -205,15 +205,15 @@ ] ], "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T13:18:12.848227353" + "timestamp": "2025-04-01T13:37:56.095127856" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - stub": { "content": [ @@ -230,7 +230,7 @@ ], "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ], "index": [ @@ -244,42 +244,42 @@ ] ], "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T11:23:15.794389239" + "timestamp": "2025-04-01T13:37:30.988068166" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index": { "content": [ "e0de448dc8e712956a03ce68d79a0b3a", "test.vcf.gz.csi", [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T11:57:16.850641473" + "timestamp": "2025-04-01T13:36:53.522123382" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output": { "content": [ "e0de448dc8e712956a03ce68d79a0b3a", [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T11:56:27.949031071" + "timestamp": "2025-04-01T13:36:33.357373822" }, "sarscov2 - [vcf, tbi], [], [], bed - stub": { "content": [ @@ -296,7 +296,7 @@ ], "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ], "index": [ @@ -310,28 +310,28 @@ ] ], "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T13:18:19.273064822" + "timestamp": "2025-04-01T13:38:00.615531476" }, "sarscov2 - [vcf, tbi], [], [], [] - bcf output": { "content": [ "test.bcf", [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T11:56:38.567500859" + "timestamp": "2025-04-01T13:36:37.68065343" }, "sarscov2 - [vcf, tbi], [], [], [] - bcf output - stub": { "content": [ @@ -348,7 +348,7 @@ ], "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ], "index": [ @@ -362,15 +362,15 @@ ] ], "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T13:17:47.356328326" + "timestamp": "2025-04-01T13:37:35.402926588" }, "sarscov2 - [vcf, tbi], [], [], [] - one sample - stub": { "content": [ @@ -387,7 +387,7 @@ ], "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ], "index": [ @@ -401,15 +401,15 @@ ] ], "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T15:13:18.708495878" + "timestamp": "2025-04-01T13:38:13.018206068" }, "homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output - stub": { "content": [ @@ -426,7 +426,7 @@ ], "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ], "index": [ @@ -440,55 +440,55 @@ ] ], "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T13:56:45.706125286" + "timestamp": "2025-04-01T13:38:08.718741834" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - index": { "content": [ "e0de448dc8e712956a03ce68d79a0b3a", "test.vcf.gz.csi", [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T12:33:43.639646108" + "timestamp": "2025-04-01T13:36:49.114421247" }, "homo_sapiens - [vcf, tbi], fasta, fai, bed - vcf.gz output": { "content": [ "645b7f7f9131bfe350a9ec3cf82c17fe", [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T13:55:44.299812124" + "timestamp": "2025-04-01T13:37:13.928323894" }, "sarscov2 - [vcf, tbi], [], [], [] - one sample": { "content": [ "2a374cf02f0c32cf607646167e7f153b", [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T15:37:38.491844702" + "timestamp": "2025-04-01T13:37:18.074920523" }, "sarscov2 - [vcf, tbi], [], [], [] - stub": { "content": [ @@ -505,7 +505,7 @@ ], "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ], "index": [ @@ -519,15 +519,15 @@ ] ], "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T13:17:28.188178904" + "timestamp": "2025-04-01T13:37:22.322283619" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf.gz output - csi index - stub": { "content": [ @@ -549,7 +549,7 @@ ] ], "2": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ], "index": [ [ @@ -568,40 +568,40 @@ ] ], "versions": [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T13:18:06.430943593" + "timestamp": "2025-04-01T13:37:51.791248219" }, "sarscov2 - [vcf, tbi], [], [], []": { "content": [ "e0de448dc8e712956a03ce68d79a0b3a", [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T12:31:03.893007442" + "timestamp": "2025-04-01T13:36:21.537368529" }, "sarscov2 - [vcf, tbi], [], [], [] - bcf.gz output": { "content": [ "test.bcf.gz", [ - "versions.yml:md5,d2c0a30d9a4cc6df89a464ae82e0c38a" + "versions.yml:md5,ba7e9c7697d692c11c76006d21a8411f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-05T11:56:56.416361069" + "timestamp": "2025-04-01T13:36:41.94604183" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/mpileup/environment.yml b/modules/nf-core/bcftools/mpileup/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/mpileup/environment.yml +++ b/modules/nf-core/bcftools/mpileup/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/mpileup/main.nf b/modules/nf-core/bcftools/mpileup/main.nf index fbac5cedb468..f712b5183e4e 100644 --- a/modules/nf-core/bcftools/mpileup/main.nf +++ b/modules/nf-core/bcftools/mpileup/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_MPILEUP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(bam), path(intervals) diff --git a/modules/nf-core/bcftools/mpileup/tests/main.nf.test.snap b/modules/nf-core/bcftools/mpileup/tests/main.nf.test.snap index a7726898826d..08c87e2f8116 100644 --- a/modules/nf-core/bcftools/mpileup/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/mpileup/tests/main.nf.test.snap @@ -72,14 +72,14 @@ "bam_fasta_false_versions": { "content": [ [ - "versions.yml:md5,6af9a67cd12c721ccc9702c17bc2f3a5" + "versions.yml:md5,489c9d000145be40205442e6c1be70a5" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:14:23.424052671" + "timestamp": "2025-04-01T13:44:46.083414473" }, "bam_fasta_false_stub.bcftools_stats.txt": { "content": [ @@ -94,14 +94,14 @@ "bam_bed_fasta_false_versions": { "content": [ [ - "versions.yml:md5,6af9a67cd12c721ccc9702c17bc2f3a5" + "versions.yml:md5,489c9d000145be40205442e6c1be70a5" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:14:44.101963218" + "timestamp": "2025-04-01T13:45:06.213311379" }, "bam_bed_fasta_false.vcf.gz": { "content": [ @@ -116,14 +116,14 @@ "bam_bed_fasta_true_versions": { "content": [ [ - "versions.yml:md5,6af9a67cd12c721ccc9702c17bc2f3a5" + "versions.yml:md5,489c9d000145be40205442e6c1be70a5" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:14:38.630394619" + "timestamp": "2025-04-01T13:45:01.634976363" }, "bam_fasta_false.vcf.gz": { "content": [ @@ -208,14 +208,14 @@ "bam_fasta_false_stub_versions": { "content": [ [ - "versions.yml:md5,6af9a67cd12c721ccc9702c17bc2f3a5" + "versions.yml:md5,489c9d000145be40205442e6c1be70a5" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:14:28.530439931" + "timestamp": "2025-04-01T13:44:50.214889195" }, "bam_bed_fasta_true.bcftools_stats.txt": { "content": [ @@ -240,14 +240,14 @@ "bam_bed_fasta_false_stub_versions": { "content": [ [ - "versions.yml:md5,6af9a67cd12c721ccc9702c17bc2f3a5" + "versions.yml:md5,489c9d000145be40205442e6c1be70a5" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:14:49.139377519" + "timestamp": "2025-04-01T13:45:10.356826049" }, "bam_bed_fasta_true.mpileup.gz": { "content": [ @@ -262,13 +262,13 @@ "bam_bed_fasta_true_stub_versions": { "content": [ [ - "versions.yml:md5,6af9a67cd12c721ccc9702c17bc2f3a5" + "versions.yml:md5,489c9d000145be40205442e6c1be70a5" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:14:33.646218607" + "timestamp": "2025-04-01T13:44:57.520283217" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/norm/environment.yml b/modules/nf-core/bcftools/norm/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/norm/environment.yml +++ b/modules/nf-core/bcftools/norm/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/norm/main.nf b/modules/nf-core/bcftools/norm/main.nf index bd7a2501278c..3b226f274840 100644 --- a/modules/nf-core/bcftools/norm/main.nf +++ b/modules/nf-core/bcftools/norm/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_NORM { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(tbi) diff --git a/modules/nf-core/bcftools/norm/tests/main.nf.test.snap b/modules/nf-core/bcftools/norm/tests/main.nf.test.snap index 3be52116a9d9..b71721a73657 100644 --- a/modules/nf-core/bcftools/norm/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/norm/tests/main.nf.test.snap @@ -17,7 +17,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -34,15 +34,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:38:42.639095032" + "timestamp": "2025-04-01T14:02:35.039667679" }, "sarscov2 - [ vcf, [] ], fasta - stub": { "content": [ @@ -62,7 +62,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -79,15 +79,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:38:05.448449893" + "timestamp": "2025-04-01T14:02:19.531714933" }, "sarscov2 - [ vcf, tbi ], fasta - vcf output": { "content": [ @@ -107,7 +107,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -124,15 +124,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:37:12.741719961" + "timestamp": "2025-04-01T14:01:53.57043182" }, "sarscov2 - [ vcf, [] ], fasta - vcf_gz_index - stub": { "content": [ @@ -157,7 +157,7 @@ ] ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ [ @@ -179,15 +179,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:39:22.875147941" + "timestamp": "2025-04-01T14:02:53.457953524" }, "sarscov2 - [ vcf, tbi ], fasta - vcf_gz output": { "content": [ @@ -206,14 +206,14 @@ ], [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T08:15:23.38765384" + "timestamp": "2025-04-01T14:02:00.719886153" }, "sarscov2 - [ vcf, [] ], fasta": { "content": [ @@ -233,7 +233,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -250,15 +250,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:36:21.519977754" + "timestamp": "2025-04-01T14:01:23.75323253" }, "sarscov2 - [ vcf, tbi ], fasta - vcf output -stub": { "content": [ @@ -278,7 +278,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -295,15 +295,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:38:27.8230994" + "timestamp": "2025-04-01T14:02:30.863210572" }, "sarscov2 - [ vcf, tbi ], fasta - bcf_gz output": { "content": [ @@ -313,7 +313,7 @@ { "id": "test" }, - "test_norm.bcf:md5,f35545c26a788b5eb697d9c0490339d9" + "test_norm.bcf:md5,bf88706ef69c44ca9e287bc953ba3593" ] ], "1": [ @@ -323,7 +323,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -336,19 +336,19 @@ { "id": "test" }, - "test_norm.bcf:md5,f35545c26a788b5eb697d9c0490339d9" + "test_norm.bcf:md5,bf88706ef69c44ca9e287bc953ba3593" ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:37:53.942403192" + "timestamp": "2025-04-01T14:02:12.325415263" }, "sarscov2 - [ vcf, [] ], fasta - vcf_gz_index_csi - stub": { "content": [ @@ -373,7 +373,7 @@ ] ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ [ @@ -395,15 +395,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T13:56:05.3799488" + "timestamp": "2025-04-01T14:03:00.652023677" }, "sarscov2 - [ vcf, [] ], fasta - vcf_gz_index_tbi": { "content": [ @@ -443,7 +443,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -460,15 +460,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:36:58.39445154" + "timestamp": "2025-04-01T14:01:46.207313323" }, "sarscov2 - [ vcf, tbi ], fasta -stub": { "content": [ @@ -488,7 +488,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -505,15 +505,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:38:16.259516142" + "timestamp": "2025-04-01T14:02:26.686137644" }, "sarscov2 - [ vcf, tbi ], fasta - bcf_gz output - stub": { "content": [ @@ -533,7 +533,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -550,15 +550,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:39:10.503208929" + "timestamp": "2025-04-01T14:02:46.406125297" }, "sarscov2 - [ vcf, [] ], fasta - vcf_gz_index": { "content": [ @@ -603,7 +603,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -620,15 +620,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:38:59.121377258" + "timestamp": "2025-04-01T14:02:39.213092385" }, "sarscov2 - [ vcf, [] ], fasta - vcf_gz_index_tbi - stub": { "content": [ @@ -653,7 +653,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -675,15 +675,15 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T13:56:16.404380471" + "timestamp": "2025-04-01T14:03:07.888046412" }, "sarscov2 - [ vcf, [] ], fasta - vcf_gz_index_csi": { "content": [ @@ -728,7 +728,7 @@ ], "3": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ], "csi": [ @@ -745,14 +745,14 @@ ] ], "versions": [ - "versions.yml:md5,ff760495922469e56d0fc3372773000d" + "versions.yml:md5,cb38669b7069800497b0706a09932aec" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:37:42.141945244" + "timestamp": "2025-04-01T14:02:04.993236789" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/pluginimputeinfo/environment.yml b/modules/nf-core/bcftools/pluginimputeinfo/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/pluginimputeinfo/environment.yml +++ b/modules/nf-core/bcftools/pluginimputeinfo/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/pluginimputeinfo/main.nf b/modules/nf-core/bcftools/pluginimputeinfo/main.nf index b5dd93e60e25..70f4b7496c8c 100644 --- a/modules/nf-core/bcftools/pluginimputeinfo/main.nf +++ b/modules/nf-core/bcftools/pluginimputeinfo/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_PLUGINIMPUTEINFO { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_1': - 'biocontainers/bcftools:1.20--h8b25389_1' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(index) diff --git a/modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test.snap b/modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test.snap index 8e3b4e953891..f80b9cb95cac 100644 --- a/modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/pluginimputeinfo/tests/main.nf.test.snap @@ -24,7 +24,7 @@ ] ], "3": [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ], "csi": [ [ @@ -48,15 +48,15 @@ ] ], "versions": [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-10T21:42:24.860002123" + "timestamp": "2025-04-01T14:05:04.190234681" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi": { "content": [ @@ -82,14 +82,14 @@ ] ], [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-10T21:41:28.801236995" + "timestamp": "2025-04-01T14:04:36.397866108" }, "sarscov2 - [vcf, tbi], [], []": { "content": [ @@ -103,14 +103,14 @@ ] ], [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-10T21:25:19.761202429" + "timestamp": "2025-04-01T14:03:15.741219914" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index - stub": { "content": [ @@ -137,7 +137,7 @@ ] ], "3": [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ], "csi": [ [ @@ -161,15 +161,15 @@ ] ], "versions": [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-10T21:42:05.180443538" + "timestamp": "2025-04-01T14:04:56.580036692" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi - stub": { "content": [ @@ -196,7 +196,7 @@ ], "3": [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ], "csi": [ @@ -220,15 +220,15 @@ ] ], "versions": [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-10T21:42:49.144650301" + "timestamp": "2025-04-01T14:05:08.923241281" }, "sarscov2 - [vcf, tbi], vcf, tsv, []": { "content": [ @@ -242,27 +242,27 @@ ] ], [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-10T21:41:40.973896543" + "timestamp": "2025-04-01T14:04:44.100934271" }, "sarscov2 - [vcf, tbi], [], [], [] - stub": { "content": [ "out_vcf.vcf", [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-10T21:41:53.257327022" + "timestamp": "2025-04-01T14:04:51.836211102" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index": { "content": [ @@ -288,14 +288,14 @@ ], [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-10T21:41:05.386430406" + "timestamp": "2025-04-01T14:03:23.697136729" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi": { "content": [ @@ -321,13 +321,13 @@ ], [ - "versions.yml:md5,6e1da2ba6a2af2d4b74f8d2efb05a3e7" + "versions.yml:md5,3ee8831d520a04064c87941bc5a46b2f" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-10T21:41:17.063459898" + "timestamp": "2025-04-01T14:04:28.601609527" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/pluginscatter/environment.yml b/modules/nf-core/bcftools/pluginscatter/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/pluginscatter/environment.yml +++ b/modules/nf-core/bcftools/pluginscatter/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/pluginscatter/main.nf b/modules/nf-core/bcftools/pluginscatter/main.nf index b3b6691d8ecf..95a07b1a677f 100644 --- a/modules/nf-core/bcftools/pluginscatter/main.nf +++ b/modules/nf-core/bcftools/pluginscatter/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_PLUGINSCATTER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(tbi) diff --git a/modules/nf-core/bcftools/pluginscatter/tests/main.nf.test.snap b/modules/nf-core/bcftools/pluginscatter/tests/main.nf.test.snap index 3168f91be58f..4b33f7c922b7 100644 --- a/modules/nf-core/bcftools/pluginscatter/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/pluginscatter/tests/main.nf.test.snap @@ -21,7 +21,7 @@ ], "3": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ], "csi": [ @@ -42,15 +42,15 @@ ], "versions": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T15:09:19.199443051" + "timestamp": "2025-04-01T14:05:55.658059628" }, "homo_sapiens - sites per chunk": { "content": [ @@ -79,7 +79,7 @@ ], "3": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ], "csi": [ @@ -105,15 +105,15 @@ ], "versions": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:39:46.012676995" + "timestamp": "2025-04-01T14:05:13.744915526" }, "homo_sapiens - sites per chunk - vcf_gz_index_csi - stub": { "content": [ @@ -146,7 +146,7 @@ ] ], "3": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ], "csi": [ [ @@ -176,15 +176,15 @@ ], "versions": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T15:10:12.470969127" + "timestamp": "2025-04-01T14:06:11.27976016" }, "homo_sapiens - scatter file": { "content": [ @@ -207,7 +207,7 @@ ], "3": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ], "csi": [ @@ -227,15 +227,15 @@ ], "versions": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:40:25.33705743" + "timestamp": "2025-04-01T14:05:44.276242643" }, "homo_sapiens - scatter file - stub": { "content": [ @@ -259,7 +259,7 @@ ], "3": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ], "csi": [ @@ -280,15 +280,15 @@ ], "versions": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T15:09:41.478631999" + "timestamp": "2025-04-01T14:06:02.926688297" }, "homo_sapiens - sites per chunk - vcf_gz_index - stub": { "content": [ @@ -321,7 +321,7 @@ ] ], "3": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ], "csi": [ [ @@ -351,15 +351,15 @@ ], "versions": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T15:09:59.976006697" + "timestamp": "2025-04-01T14:06:06.99784338" }, "vcf_gz_index_tbi": { "content": [ @@ -382,14 +382,14 @@ ] ], [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-06T10:27:48.127273006" + "timestamp": "2025-04-01T14:05:29.650945585" }, "homo_sapiens - sites per chunk - vcf_gz_index_tbi - stub": { "content": [ @@ -422,7 +422,7 @@ ], "3": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ], "csi": [ @@ -452,15 +452,15 @@ ] ], "versions": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T15:10:37.027506409" + "timestamp": "2025-04-01T14:06:18.223399542" }, "vcf_gz_index": { "content": [ @@ -483,14 +483,14 @@ ], [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-06T10:24:46.201810185" + "timestamp": "2025-04-01T14:05:21.026776365" }, "vcf_gz_index_csi": { "content": [ @@ -513,14 +513,14 @@ ], [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-06T10:27:20.636624541" + "timestamp": "2025-04-01T14:05:25.336641966" }, "homo_sapiens - scatter": { "content": [ @@ -540,7 +540,7 @@ ], "3": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ], "csi": [ @@ -557,15 +557,15 @@ ], "versions": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T14:40:12.621284696" + "timestamp": "2025-04-01T14:05:37.031808453" }, "homo_sapiens - sites per chunk - stub": { "content": [ @@ -589,7 +589,7 @@ ], "3": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ], "csi": [ @@ -610,14 +610,14 @@ ], "versions": [ - "versions.yml:md5,9a7bd26da80241e2116a237c7704eabf" + "versions.yml:md5,2a9760179472323d4a0aff1de24f6454" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T15:08:56.987822348" + "timestamp": "2025-04-01T14:05:48.465950294" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/pluginsplit/environment.yml b/modules/nf-core/bcftools/pluginsplit/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/pluginsplit/environment.yml +++ b/modules/nf-core/bcftools/pluginsplit/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/pluginsplit/main.nf b/modules/nf-core/bcftools/pluginsplit/main.nf index e541df114edd..95ec5de8d7a7 100644 --- a/modules/nf-core/bcftools/pluginsplit/main.nf +++ b/modules/nf-core/bcftools/pluginsplit/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_PLUGINSPLIT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf, stageAs: "input/*"), path(tbi, stageAs: "input/*") diff --git a/modules/nf-core/bcftools/pluginsplit/tests/main.nf.test.snap b/modules/nf-core/bcftools/pluginsplit/tests/main.nf.test.snap index b915b7cf24ff..5ae11646ddfd 100644 --- a/modules/nf-core/bcftools/pluginsplit/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/pluginsplit/tests/main.nf.test.snap @@ -21,7 +21,7 @@ ], "3": [ - "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + "versions.yml:md5,b423d3a22a27c76c3b661ba6f02f42b2" ], "csi": [ @@ -42,15 +42,15 @@ ] ], "versions": [ - "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + "versions.yml:md5,b423d3a22a27c76c3b661ba6f02f42b2" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nextflow": "24.10.5" }, - "timestamp": "2024-11-20T14:56:54.383979416" + "timestamp": "2025-04-01T14:07:55.106801187" }, "homo_sapiens - [ vcf, tbi ], [], groups, regions, targets - tbi": { "content": [ @@ -112,7 +112,7 @@ ], "3": [ - "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + "versions.yml:md5,b423d3a22a27c76c3b661ba6f02f42b2" ], "csi": [ @@ -142,15 +142,15 @@ ] ], "versions": [ - "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + "versions.yml:md5,b423d3a22a27c76c3b661ba6f02f42b2" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nextflow": "24.10.5" }, - "timestamp": "2024-11-20T14:57:11.163588435" + "timestamp": "2025-04-01T14:08:06.953248081" }, "homo_sapiens - [ vcf, tbi ], samples, [], [], []": { "content": [ @@ -174,7 +174,7 @@ ], "3": [ - "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + "versions.yml:md5,b423d3a22a27c76c3b661ba6f02f42b2" ], "csi": [ @@ -195,15 +195,15 @@ ] ], "versions": [ - "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + "versions.yml:md5,b423d3a22a27c76c3b661ba6f02f42b2" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nextflow": "24.10.5" }, - "timestamp": "2024-11-20T14:56:27.978161766" + "timestamp": "2025-04-01T14:07:33.810970536" }, "homo_sapiens - [ vcf, tbi ], [], groups, regions, targets -stub": { "content": [ @@ -227,7 +227,7 @@ ], "3": [ - "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + "versions.yml:md5,b423d3a22a27c76c3b661ba6f02f42b2" ], "csi": [ @@ -248,14 +248,14 @@ ] ], "versions": [ - "versions.yml:md5,8625f8c08503e47d029d48430c0bfccc" + "versions.yml:md5,b423d3a22a27c76c3b661ba6f02f42b2" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nextflow": "24.10.5" }, - "timestamp": "2024-11-20T14:57:02.456908152" + "timestamp": "2025-04-01T14:08:02.530972889" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/plugintag2tag/environment.yml b/modules/nf-core/bcftools/plugintag2tag/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/plugintag2tag/environment.yml +++ b/modules/nf-core/bcftools/plugintag2tag/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/plugintag2tag/main.nf b/modules/nf-core/bcftools/plugintag2tag/main.nf index b326c7dc487c..5001661eea92 100644 --- a/modules/nf-core/bcftools/plugintag2tag/main.nf +++ b/modules/nf-core/bcftools/plugintag2tag/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_PLUGINTAG2TAG { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(index) diff --git a/modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test.snap b/modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test.snap index 651601fb2b0d..1f63d100a52d 100644 --- a/modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/plugintag2tag/tests/main.nf.test.snap @@ -24,7 +24,7 @@ ] ], "3": [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ], "csi": [ [ @@ -48,15 +48,15 @@ ] ], "versions": [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-28T15:44:33.996543" + "timestamp": "2025-04-01T14:08:55.259282821" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi": { "content": [ @@ -82,14 +82,14 @@ ] ], [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-28T15:42:43.348779" + "timestamp": "2025-04-01T14:08:32.604644796" }, "sarscov2 - [vcf, tbi], [], []": { "content": [ @@ -103,14 +103,14 @@ ] ], [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-28T13:48:35.163391" + "timestamp": "2025-04-01T14:08:10.969839053" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index - stub": { "content": [ @@ -137,7 +137,7 @@ ] ], "3": [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ], "csi": [ [ @@ -161,28 +161,15 @@ ] ], "versions": [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-28T15:44:06.056403" - }, - "sarscov2 - [vcf, tbi], [], [] - stub": { - "content": [ - "out.vcf", - [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-28T13:45:59.170948" + "timestamp": "2025-04-01T14:08:51.144054002" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi - stub": { "content": [ @@ -209,7 +196,7 @@ ], "3": [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ], "csi": [ @@ -233,15 +220,15 @@ ] ], "versions": [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-28T15:45:00.60121" + "timestamp": "2025-04-01T14:09:02.368894385" }, "sarscov2 - [vcf, tbi], vcf, tsv, []": { "content": [ @@ -255,27 +242,27 @@ ] ], [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-28T15:43:10.164895" + "timestamp": "2025-04-01T14:08:39.853150291" }, "sarscov2 - [vcf, tbi], [], [], [] - stub": { "content": [ "out.vcf", [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-28T15:43:37.881451" + "timestamp": "2025-04-01T14:08:43.90765949" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index": { "content": [ @@ -301,14 +288,14 @@ ], [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-28T15:41:46.905606" + "timestamp": "2025-04-01T14:08:18.282237234" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi": { "content": [ @@ -334,13 +321,13 @@ ], [ - "versions.yml:md5,0206fd0262717f5283f961e147fb9759" + "versions.yml:md5,9ff5c94e03f6e826ee6e880d3b7456f5" ] ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-28T15:42:15.499991" + "timestamp": "2025-04-01T14:08:25.610882259" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/query/environment.yml b/modules/nf-core/bcftools/query/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/query/environment.yml +++ b/modules/nf-core/bcftools/query/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/query/main.nf b/modules/nf-core/bcftools/query/main.nf index 58019f4d8668..52be34b1a505 100644 --- a/modules/nf-core/bcftools/query/main.nf +++ b/modules/nf-core/bcftools/query/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_QUERY { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(tbi) diff --git a/modules/nf-core/bcftools/query/tests/main.nf.test.snap b/modules/nf-core/bcftools/query/tests/main.nf.test.snap index 3ead1f2c5c05..beee2ef24c58 100644 --- a/modules/nf-core/bcftools/query/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/query/tests/main.nf.test.snap @@ -10,27 +10,27 @@ ] ], [ - "versions.yml:md5,3d93ea9cd5d314743254618b49e4bd16" + "versions.yml:md5,e0542833ae6a03a85611e22dbf0921b6" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:15:44.916249758" + "timestamp": "2025-04-01T14:09:16.570707353" }, "sarscov2 - [vcf, tbi], [], [], [] - stub": { "content": [ "out.txt", [ - "versions.yml:md5,3d93ea9cd5d314743254618b49e4bd16" + "versions.yml:md5,e0542833ae6a03a85611e22dbf0921b6" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:15:49.932359271" + "timestamp": "2025-04-01T14:09:23.462432361" }, "sarscov2 - [vcf, tbi], [], [], []": { "content": [ @@ -43,13 +43,13 @@ ] ], [ - "versions.yml:md5,3d93ea9cd5d314743254618b49e4bd16" + "versions.yml:md5,e0542833ae6a03a85611e22dbf0921b6" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:15:39.930697926" + "timestamp": "2025-04-01T14:09:09.337957177" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/reheader/environment.yml b/modules/nf-core/bcftools/reheader/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/reheader/environment.yml +++ b/modules/nf-core/bcftools/reheader/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/reheader/main.nf b/modules/nf-core/bcftools/reheader/main.nf index 9cf6d0d38be1..37062ab141a5 100644 --- a/modules/nf-core/bcftools/reheader/main.nf +++ b/modules/nf-core/bcftools/reheader/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_REHEADER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(header), path(samples) diff --git a/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap b/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap index 87a3654a5477..fc8dfd58b189 100644 --- a/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/reheader/tests/main.nf.test.snap @@ -20,14 +20,14 @@ ] ], [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-03T10:09:05.955833763" + "timestamp": "2025-04-01T14:09:50.163995386" }, "sarscov2 - [vcf, [], []], fai - vcf.gz output - index -stub": { "content": [ @@ -51,7 +51,7 @@ ] ], "2": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ], "index": [ [ @@ -72,15 +72,15 @@ ] ], "versions": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-03T09:52:41.444952182" + "timestamp": "2025-04-01T14:10:22.786980419" }, "sarscov2 - [vcf, [], []], fai - vcf.gz output - tbi index -stub": { "content": [ @@ -104,7 +104,7 @@ ] ], "2": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ], "index": [ [ @@ -125,15 +125,15 @@ ] ], "versions": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-03T09:53:04.314827944" + "timestamp": "2025-04-01T14:10:30.908145496" }, "sarscov2 - [vcf, [], []], fai - vcf output": { "content": [ @@ -151,7 +151,7 @@ ], "2": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ], "index": [ @@ -166,15 +166,15 @@ ] ], "versions": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-03T09:50:41.983008108" + "timestamp": "2025-04-01T14:09:27.878225575" }, "sarscov2 - [vcf, [], []], fai - bcf output": { "content": [ @@ -192,7 +192,7 @@ ], "2": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ], "index": [ @@ -207,15 +207,15 @@ ] ], "versions": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-03T09:51:43.072513252" + "timestamp": "2025-04-01T14:09:57.340213283" }, "sarscov2 - [vcf, [], []], fai - vcf.gz output": { "content": [ @@ -233,7 +233,7 @@ ], "2": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ], "index": [ @@ -248,15 +248,15 @@ ] ], "versions": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-03T09:50:53.055630152" + "timestamp": "2025-04-01T14:09:32.00582809" }, "sarscov2 - [vcf, [], []], fai - vcf.gz output - index": { "content": [ @@ -279,14 +279,14 @@ ] ], [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-03T10:08:37.999924355" + "timestamp": "2025-04-01T14:09:38.993337881" }, "sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index -stub": { "content": [ @@ -310,7 +310,7 @@ ] ], "2": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ], "index": [ [ @@ -331,28 +331,28 @@ ] ], "versions": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-03T09:52:52.512269206" + "timestamp": "2025-04-01T14:10:26.882028182" }, "sarscov2 - [vcf, [], []], fai - stub": { "content": [ "tested.vcf", [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:16:36.337112514" + "timestamp": "2025-04-01T14:10:15.695515447" }, "sarscov2 - [vcf, [], []], fai - vcf.gz output - csi index": { "content": [ @@ -375,14 +375,14 @@ ] ], [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-03T10:08:55.434831174" + "timestamp": "2025-04-01T14:09:43.054413402" }, "sarscov2 - [vcf, [], samples], fai": { "content": [ @@ -400,7 +400,7 @@ ], "2": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ], "index": [ @@ -415,15 +415,15 @@ ] ], "versions": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-03T09:52:12.216002665" + "timestamp": "2025-04-01T14:10:11.620196263" }, "sarscov2 - [vcf, header, []], []": { "content": [ @@ -441,7 +441,7 @@ ], "2": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ], "index": [ @@ -456,14 +456,14 @@ ] ], "versions": [ - "versions.yml:md5,486e3d4ebc1dbf5c0a4dfaebae12ea34" + "versions.yml:md5,61e09a272da74ae6a9ddb0195cfd491a" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-09-03T09:51:54.062386022" + "timestamp": "2025-04-01T14:10:04.588597619" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/roh/environment.yml b/modules/nf-core/bcftools/roh/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/roh/environment.yml +++ b/modules/nf-core/bcftools/roh/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/roh/main.nf b/modules/nf-core/bcftools/roh/main.nf index ac96eef54f34..a884600371c5 100644 --- a/modules/nf-core/bcftools/roh/main.nf +++ b/modules/nf-core/bcftools/roh/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_ROH { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(tbi) diff --git a/modules/nf-core/bcftools/roh/tests/main.nf.test.snap b/modules/nf-core/bcftools/roh/tests/main.nf.test.snap index 3b008a01e989..d2d0fbd14845 100644 --- a/modules/nf-core/bcftools/roh/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/roh/tests/main.nf.test.snap @@ -7,30 +7,30 @@ { "id": "test" }, - "test.roh:md5,853de778be3030754be40e11be0aa557" + "test.roh:md5,c6151714701971c414f43242028d6644" ] ], "1": [ - "versions.yml:md5,684b9cddcfaf57299e6e245b12b7d710" + "versions.yml:md5,bebe8b809113814bd900c719e63ca541" ], "roh": [ [ { "id": "test" }, - "test.roh:md5,853de778be3030754be40e11be0aa557" + "test.roh:md5,c6151714701971c414f43242028d6644" ] ], "versions": [ - "versions.yml:md5,684b9cddcfaf57299e6e245b12b7d710" + "versions.yml:md5,bebe8b809113814bd900c719e63ca541" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-26T14:19:06.961553" + "timestamp": "2025-04-01T14:10:35.126856008" }, "test-bcftools-roh-stub": { "content": [ @@ -44,7 +44,7 @@ ] ], "1": [ - "versions.yml:md5,684b9cddcfaf57299e6e245b12b7d710" + "versions.yml:md5,bebe8b809113814bd900c719e63ca541" ], "roh": [ [ @@ -55,14 +55,14 @@ ] ], "versions": [ - "versions.yml:md5,684b9cddcfaf57299e6e245b12b7d710" + "versions.yml:md5,bebe8b809113814bd900c719e63ca541" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-26T14:19:11.161719" + "timestamp": "2025-04-01T14:10:42.12971505" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/sort/environment.yml b/modules/nf-core/bcftools/sort/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/sort/environment.yml +++ b/modules/nf-core/bcftools/sort/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/sort/main.nf b/modules/nf-core/bcftools/sort/main.nf index 7d4c9b8e9df3..6cbd09b593a7 100644 --- a/modules/nf-core/bcftools/sort/main.nf +++ b/modules/nf-core/bcftools/sort/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_SORT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf) diff --git a/modules/nf-core/bcftools/sort/tests/main.nf.test.snap b/modules/nf-core/bcftools/sort/tests/main.nf.test.snap index f38272cb2874..f092dbf591fa 100644 --- a/modules/nf-core/bcftools/sort/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/sort/tests/main.nf.test.snap @@ -22,7 +22,7 @@ ], "3": [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ], "csi": [ @@ -44,15 +44,15 @@ ] ], "versions": [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:06:05.201680777" + "timestamp": "2025-04-01T14:11:26.694501734" }, "vcf": { "content": [ @@ -72,7 +72,7 @@ ], "3": [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ], "csi": [ @@ -89,15 +89,15 @@ ] ], "versions": [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:04:43.889971134" + "timestamp": "2025-04-01T14:10:49.218451505" }, "sarscov2 - vcf_gz_index": { "content": [ @@ -121,14 +121,14 @@ ], [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:04:55.385964497" + "timestamp": "2025-04-01T14:10:56.259159613" }, "sarscov2 - vcf_gz_index_csi": { "content": [ @@ -152,14 +152,14 @@ ], [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:05:06.662818922" + "timestamp": "2025-04-01T14:11:00.358141543" }, "sarscov2 - vcf_gz_index - stub": { "content": [ @@ -184,7 +184,7 @@ ] ], "3": [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ], "csi": [ [ @@ -206,15 +206,15 @@ ] ], "versions": [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:05:40.012912381" + "timestamp": "2025-04-01T14:11:18.590986384" }, "sarscov2 - vcf_gz_index_csi - stub": { "content": [ @@ -239,7 +239,7 @@ ] ], "3": [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ], "csi": [ [ @@ -261,15 +261,15 @@ ] ], "versions": [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:05:52.405673587" + "timestamp": "2025-04-01T14:11:22.65765844" }, "sarscov2 - vcf - stub": { "content": [ @@ -289,7 +289,7 @@ ], "3": [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ], "csi": [ @@ -306,15 +306,15 @@ ] ], "versions": [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:05:29.117946461" + "timestamp": "2025-04-01T14:11:11.501401617" }, "sarscov2 - vcf_gz_index_tbi": { "content": [ @@ -338,13 +338,13 @@ ] ], [ - "versions.yml:md5,2c9f26ca356ef71199c3a7d1742974cb" + "versions.yml:md5,54b077078de3c204fb81688af4aae489" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:05:17.217274984" + "timestamp": "2025-04-01T14:11:07.401740499" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/split/environment.yml b/modules/nf-core/bcftools/split/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/split/environment.yml +++ b/modules/nf-core/bcftools/split/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/split/main.nf b/modules/nf-core/bcftools/split/main.nf index 72a582f32f9c..5d61a3bbd939 100644 --- a/modules/nf-core/bcftools/split/main.nf +++ b/modules/nf-core/bcftools/split/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_SPLIT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(tbi) diff --git a/modules/nf-core/bcftools/split/tests/main.nf.test.snap b/modules/nf-core/bcftools/split/tests/main.nf.test.snap index c1a3c98578c1..1b8f8e95ae37 100644 --- a/modules/nf-core/bcftools/split/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/split/tests/main.nf.test.snap @@ -3,13 +3,13 @@ "content": [ "ecf3973f634b7baa1c13e60bfb77a174", [ - "versions.yml:md5,a1c58d82f1e5c0fed394bfb865f57fd9" + "versions.yml:md5,046174c10cfa782e8acf3bdc9528729f" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-26T14:16:45.077115" + "timestamp": "2025-04-01T14:11:31.224666892" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/stats/environment.yml b/modules/nf-core/bcftools/stats/environment.yml index a80302fcf68f..7aa06d0f7a00 100644 --- a/modules/nf-core/bcftools/stats/environment.yml +++ b/modules/nf-core/bcftools/stats/environment.yml @@ -4,5 +4,5 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 - - bioconda::htslib=1.20 + - bioconda::bcftools=1.21 + - bioconda::htslib=1.21 diff --git a/modules/nf-core/bcftools/stats/main.nf b/modules/nf-core/bcftools/stats/main.nf index 20e5da77133e..fb556e0aa5b6 100644 --- a/modules/nf-core/bcftools/stats/main.nf +++ b/modules/nf-core/bcftools/stats/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_STATS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(tbi) diff --git a/modules/nf-core/bcftools/stats/tests/main.nf.test.snap b/modules/nf-core/bcftools/stats/tests/main.nf.test.snap index cd8cff6d2b0f..c771a055b9a8 100644 --- a/modules/nf-core/bcftools/stats/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/stats/tests/main.nf.test.snap @@ -2,7 +2,7 @@ "sarscov2 - vcf_gz - reference": { "content": [ [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", + "# This file was produced by bcftools stats (1.21+htslib-1.21) and can be plotted using plot-vcfstats.", "# The command line was:\tbcftools stats --fasta-ref genome.fasta test.vcf.gz", "#", "# Definition of sets:", @@ -11,15 +11,15 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T18:14:35.506777837" + "timestamp": "2025-04-01T14:12:00.636338532" }, "sarscov2 - vcf_gz - exons": { "content": [ [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", + "# This file was produced by bcftools stats (1.21+htslib-1.21) and can be plotted using plot-vcfstats.", "# The command line was:\tbcftools stats --exons exons.tsv.gz test.vcf.gz", "#", "# Definition of sets:", @@ -28,27 +28,27 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T18:14:30.57486244" + "timestamp": "2025-04-01T14:11:56.472662944" }, "versions": { "content": [ [ - "versions.yml:md5,17cdf9d1ad31f6b1f5935dfcc9fe7b9a" + "versions.yml:md5,d8ba64d31cb19c789af4726840d8f5f4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T18:16:27.637515559" + "timestamp": "2025-04-01T14:11:38.17663878" }, "sarscov2 - vcf_gz - targets": { "content": [ [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", + "# This file was produced by bcftools stats (1.21+htslib-1.21) and can be plotted using plot-vcfstats.", "# The command line was:\tbcftools stats --targets-file test2.targets.tsv.gz test.vcf.gz", "#", "# Definition of sets:", @@ -57,34 +57,34 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T18:14:25.732997442" + "timestamp": "2025-04-01T14:11:49.263021261" }, "regions_versions": { "content": [ [ - "versions.yml:md5,17cdf9d1ad31f6b1f5935dfcc9fe7b9a" + "versions.yml:md5,d8ba64d31cb19c789af4726840d8f5f4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T18:16:32.559884458" + "timestamp": "2025-04-01T14:11:45.263363932" }, "targets_versions": { "content": [ [ - "versions.yml:md5,17cdf9d1ad31f6b1f5935dfcc9fe7b9a" + "versions.yml:md5,d8ba64d31cb19c789af4726840d8f5f4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T18:16:37.512009805" + "timestamp": "2025-04-01T14:11:49.260150422" }, "sarscov2 - vcf_gz - stub": { "content": [ @@ -98,7 +98,7 @@ ] ], "1": [ - "versions.yml:md5,17cdf9d1ad31f6b1f5935dfcc9fe7b9a" + "versions.yml:md5,d8ba64d31cb19c789af4726840d8f5f4" ], "stats": [ [ @@ -109,44 +109,44 @@ ] ], "versions": [ - "versions.yml:md5,17cdf9d1ad31f6b1f5935dfcc9fe7b9a" + "versions.yml:md5,d8ba64d31cb19c789af4726840d8f5f4" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-03T11:57:09.614976125" + "timestamp": "2025-04-01T14:12:07.469893476" }, "exon_versions": { "content": [ [ - "versions.yml:md5,17cdf9d1ad31f6b1f5935dfcc9fe7b9a" + "versions.yml:md5,d8ba64d31cb19c789af4726840d8f5f4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T18:16:42.347397266" + "timestamp": "2025-04-01T14:11:56.46980859" }, "ref_versions": { "content": [ [ - "versions.yml:md5,17cdf9d1ad31f6b1f5935dfcc9fe7b9a" + "versions.yml:md5,d8ba64d31cb19c789af4726840d8f5f4" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T18:16:47.26823622" + "timestamp": "2025-04-01T14:12:00.633746007" }, "sarscov2 - vcf_gz": { "content": [ [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", + "# This file was produced by bcftools stats (1.21+htslib-1.21) and can be plotted using plot-vcfstats.", "# The command line was:\tbcftools stats test.vcf.gz", "#", "# Definition of sets:", @@ -155,15 +155,15 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T18:16:27.670416598" + "timestamp": "2025-04-01T14:11:38.184907984" }, "sarscov2 - vcf_gz - regions": { "content": [ [ - "# This file was produced by bcftools stats (1.20+htslib-1.20) and can be plotted using plot-vcfstats.", + "# This file was produced by bcftools stats (1.21+htslib-1.21) and can be plotted using plot-vcfstats.", "# The command line was:\tbcftools stats --regions-file test3.vcf.gz test.vcf.gz", "#", "# Definition of sets:", @@ -172,9 +172,9 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T18:14:20.759094062" + "timestamp": "2025-04-01T14:11:45.266296334" } } \ No newline at end of file diff --git a/modules/nf-core/bcftools/view/environment.yml b/modules/nf-core/bcftools/view/environment.yml index b276efd90d30..557488607c73 100644 --- a/modules/nf-core/bcftools/view/environment.yml +++ b/modules/nf-core/bcftools/view/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::bcftools=1.20 + - bioconda::bcftools=1.21 diff --git a/modules/nf-core/bcftools/view/main.nf b/modules/nf-core/bcftools/view/main.nf index aa197b090fe9..5ef5d1bc6b98 100644 --- a/modules/nf-core/bcftools/view/main.nf +++ b/modules/nf-core/bcftools/view/main.nf @@ -4,8 +4,8 @@ process BCFTOOLS_VIEW { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bcftools:1.20--h8b25389_0': - 'biocontainers/bcftools:1.20--h8b25389_0' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5a/5acacb55c52bec97c61fd34ffa8721fce82ce823005793592e2a80bf71632cd0/data': + 'community.wave.seqera.io/library/bcftools:1.21--4335bec1d7b44d11' }" input: tuple val(meta), path(vcf), path(index) diff --git a/modules/nf-core/bcftools/view/tests/main.nf.test.snap b/modules/nf-core/bcftools/view/tests/main.nf.test.snap index fec22e3664b4..93d9adb66ab9 100644 --- a/modules/nf-core/bcftools/view/tests/main.nf.test.snap +++ b/modules/nf-core/bcftools/view/tests/main.nf.test.snap @@ -24,7 +24,7 @@ ] ], "3": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ], "csi": [ [ @@ -48,15 +48,15 @@ ] ], "versions": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:14:38.717458272" + "timestamp": "2025-04-01T14:12:56.166195802" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi": { "content": [ @@ -82,14 +82,14 @@ ] ], [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:13:44.760671384" + "timestamp": "2025-04-01T14:12:33.048845065" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index - stub": { "content": [ @@ -116,7 +116,7 @@ ] ], "3": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ], "csi": [ [ @@ -140,15 +140,15 @@ ] ], "versions": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-04T16:06:21.669668533" + "timestamp": "2025-04-01T14:12:52.003188711" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_tbi - stub": { "content": [ @@ -175,7 +175,7 @@ ], "3": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ], "csi": [ @@ -199,15 +199,15 @@ ] ], "versions": [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:14:53.026083914" + "timestamp": "2025-04-01T14:13:03.303865495" }, "sarscov2 - [vcf, tbi], vcf, tsv, []": { "content": [ @@ -221,27 +221,27 @@ ] ], [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:15:14.663512924" + "timestamp": "2025-04-01T14:12:40.727725444" }, "sarscov2 - [vcf, tbi], [], [], [] - stub": { "content": [ "out.vcf", [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:15:19.723448323" + "timestamp": "2025-04-01T14:12:47.850438431" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index": { "content": [ @@ -267,14 +267,14 @@ ], [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T08:24:36.358469315" + "timestamp": "2025-04-01T14:12:21.639961317" }, "sarscov2 - [vcf, tbi], [], [], []": { "content": [ @@ -288,14 +288,14 @@ ] ], [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-31T15:15:09.588867653" + "timestamp": "2025-04-01T14:12:14.557692028" }, "sarscov2 - [vcf, tbi], [], [], [] - vcf_gz_index_csi": { "content": [ @@ -321,13 +321,13 @@ ], [ - "versions.yml:md5,241125d00357804552689c37bbabe1f5" + "versions.yml:md5,dcf736f3b92fe7943416d890ed15521e" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-06-05T12:13:33.834986869" + "timestamp": "2025-04-01T14:12:25.812993907" } } \ No newline at end of file diff --git a/modules/nf-core/blast/updateblastdb/environment.yml b/modules/nf-core/blast/updateblastdb/environment.yml index 968930b63d97..31e790fabc7e 100644 --- a/modules/nf-core/blast/updateblastdb/environment.yml +++ b/modules/nf-core/blast/updateblastdb/environment.yml @@ -1,7 +1,6 @@ ---- -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda + dependencies: - - bioconda::blast=2.15.0 + - bioconda::blast=2.16.0 diff --git a/modules/nf-core/blast/updateblastdb/main.nf b/modules/nf-core/blast/updateblastdb/main.nf index 765ff5eb8353..8dbee12f558c 100644 --- a/modules/nf-core/blast/updateblastdb/main.nf +++ b/modules/nf-core/blast/updateblastdb/main.nf @@ -4,8 +4,8 @@ process BLAST_UPDATEBLASTDB { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/blast:2.15.0--pl5321h6f7f691_1': - 'biocontainers/blast:2.15.0--pl5321h6f7f691_1' }" + 'https://depot.galaxyproject.org/singularity/blast:2.16.0--h66d330f_4': + 'biocontainers/blast:2.16.0--h66d330f_4' }" input: tuple val(meta), val(name) diff --git a/modules/nf-core/blast/updateblastdb/tests/main.nf.test.snap b/modules/nf-core/blast/updateblastdb/tests/main.nf.test.snap index 10ef43cd236a..88301dde3589 100644 --- a/modules/nf-core/blast/updateblastdb/tests/main.nf.test.snap +++ b/modules/nf-core/blast/updateblastdb/tests/main.nf.test.snap @@ -2,37 +2,37 @@ "versions_stub": { "content": [ [ - "versions.yml:md5,6050ce42d119aa1b2b529a9e2d95c990" + "versions.yml:md5,3c53c59220b9d187aa3cdc74287fe76a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-10T17:26:53.519592642" + "timestamp": "2025-04-01T12:46:53.571738436" }, "versions_decompressed": { "content": [ [ - "versions.yml:md5,6050ce42d119aa1b2b529a9e2d95c990" + "versions.yml:md5,3c53c59220b9d187aa3cdc74287fe76a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-10T17:26:46.433343719" + "timestamp": "2025-04-01T12:46:42.933848568" }, "versions_compressed": { "content": [ [ - "versions.yml:md5,6050ce42d119aa1b2b529a9e2d95c990" + "versions.yml:md5,3c53c59220b9d187aa3cdc74287fe76a" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-10T17:25:51.663130031" + "timestamp": "2025-04-01T12:45:46.532402897" } } \ No newline at end of file diff --git a/modules/nf-core/bowtie2/build/tests/main.nf.test b/modules/nf-core/bowtie2/build/tests/main.nf.test index 0fbcdc4657b2..ee94c19c911c 100644 --- a/modules/nf-core/bowtie2/build/tests/main.nf.test +++ b/modules/nf-core/bowtie2/build/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) ] """ } diff --git a/modules/nf-core/cellrangerarc/count/main.nf b/modules/nf-core/cellrangerarc/count/main.nf index e5ce922590cb..f6e94a5c8e92 100644 --- a/modules/nf-core/cellrangerarc/count/main.nf +++ b/modules/nf-core/cellrangerarc/count/main.nf @@ -4,7 +4,7 @@ process CELLRANGERARC_COUNT { container "nf-core/cellranger-arc:2.0.2" - // Exit if running this module with -profile conda / -profile mamba + // Exit if running this module with -profile conda / -profile mamba if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { exit 1, "CELLRANGERARC_COUNT module does not support Conda. Please use Docker / Singularity / Podman instead." } diff --git a/modules/nf-core/cellrangerarc/count/tests/main.nf.test b/modules/nf-core/cellrangerarc/count/tests/main.nf.test new file mode 100644 index 000000000000..8fad46075289 --- /dev/null +++ b/modules/nf-core/cellrangerarc/count/tests/main.nf.test @@ -0,0 +1,171 @@ +nextflow_process { + + name "Test Process CELLRANGERARC_COUNT" + script "../main.nf" + process "CELLRANGERARC_COUNT" + + tag "modules" + tag "modules_nfcore" + tag "cellrangerarc" + tag "cellrangerarc/mkref" + tag "cellrangerarc/count" + tag "unzip" + + setup { + run("UNZIP") { + script "../../../unzip/main.nf" + + process { + """ + input[0] = [[],file(params.modules_testdata_base_path + 'genomics/mus_musculus/genome/chr19.fa.gz',checkIfExists:true)] + """ + } + } + run("CELLRANGERARC_MKREF") { + script "../../mkref/main.nf" + + process { + """ + input[0] = UNZIP.out.unzipped_archive.map{it[1]}+"/chr19.fa" + input[1] = file(params.modules_testdata_base_path + 'genomics/mus_musculus/genome/chr19.filtered.gtf.gz',checkIfExists:true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome_motifs.txt',checkIfExists:true) + input[3] = file(params.modules_testdata_base_path + 'genomics/mus_musculus/illumina/10xgenomics/multiome/cellranger_arc_mkref_test_mm39_chr19_config.json',checkIfExists:true) + input[4] = "cellrangerarc_reference" + """ + } + } + } + test("test_cellrangerarc_count") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [[id:'test'],['gex','atac'],['SRR18907480_chr19_sub','SRR18907481_chr19_sub'], + [file(params.modules_testdata_base_path + 'genomics/mus_musculus/illumina/10xgenomics/multiome/SRR18907480_chr19_sub_S1_L001_R1_001.fastq.gz',checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/mus_musculus/illumina/10xgenomics/multiome/SRR18907480_chr19_sub_S1_L001_R2_001.fastq.gz',checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/mus_musculus/illumina/10xgenomics/multiome/SRR18907481_chr19_sub_S1_L001_R1_001.fastq.gz',checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/mus_musculus/illumina/10xgenomics/multiome/SRR18907481_chr19_sub_S1_L001_R2_001.fastq.gz',checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/mus_musculus/illumina/10xgenomics/multiome/SRR18907481_chr19_sub_S1_L001_I2_001.fastq.gz',checkIfExists:true) + ] + ] + input[1] = CELLRANGERARC_MKREF.out.reference + """ + } + } + then { + assertAll( + { assert process.success }, + { + def all_files = process.out.outs[0][1] + + def stable_file_names = [ + 'analysis/clustering/atac/graphclust/clusters.csv', + 'analysis/clustering/atac/graphclust/differential_accessibility.csv', + 'analysis/clustering/atac/graphclust/differential_expression.csv', + 'analysis/clustering/atac/kmeans_2_clusters/clusters.csv', + 'analysis/clustering/atac/kmeans_2_clusters/differential_accessibility.csv', + 'analysis/clustering/atac/kmeans_2_clusters/differential_expression.csv', + 'analysis/clustering/atac/kmeans_3_clusters/clusters.csv', + 'analysis/clustering/atac/kmeans_3_clusters/differential_accessibility.csv', + 'analysis/clustering/atac/kmeans_3_clusters/differential_expression.csv', + 'analysis/clustering/atac/kmeans_4_clusters/clusters.csv', + 'analysis/clustering/atac/kmeans_4_clusters/differential_accessibility.csv', + 'analysis/clustering/atac/kmeans_4_clusters/differential_expression.csv', + 'analysis/clustering/atac/kmeans_5_clusters/clusters.csv', + 'analysis/clustering/atac/kmeans_5_clusters/differential_accessibility.csv', + 'analysis/clustering/atac/kmeans_5_clusters/differential_expression.csv', + 'analysis/clustering/gex/graphclust/clusters.csv', + 'analysis/clustering/gex/graphclust/differential_accessibility.csv', + 'analysis/clustering/gex/graphclust/differential_expression.csv', + 'analysis/clustering/gex/kmeans_2_clusters/clusters.csv', + 'analysis/clustering/gex/kmeans_2_clusters/differential_accessibility.csv', + 'analysis/clustering/gex/kmeans_2_clusters/differential_expression.csv', + 'analysis/clustering/gex/kmeans_3_clusters/clusters.csv', + 'analysis/clustering/gex/kmeans_3_clusters/differential_accessibility.csv', + 'analysis/clustering/gex/kmeans_3_clusters/differential_expression.csv', + 'analysis/clustering/gex/kmeans_4_clusters/clusters.csv', + 'analysis/clustering/gex/kmeans_4_clusters/differential_accessibility.csv', + 'analysis/clustering/gex/kmeans_4_clusters/differential_expression.csv', + 'analysis/clustering/gex/kmeans_5_clusters/clusters.csv', + 'analysis/clustering/gex/kmeans_5_clusters/differential_accessibility.csv', + 'analysis/clustering/gex/kmeans_5_clusters/differential_expression.csv', + 'analysis/dimensionality_reduction/atac/lsa_components.csv', + 'analysis/dimensionality_reduction/atac/lsa_dispersion.csv', + 'analysis/dimensionality_reduction/atac/lsa_features_selected.csv', + 'analysis/dimensionality_reduction/atac/lsa_projection.csv', + 'analysis/dimensionality_reduction/atac/lsa_variance.csv', + 'analysis/dimensionality_reduction/atac/tsne_projection.csv', + 'analysis/dimensionality_reduction/atac/umap_projection.csv', + 'analysis/dimensionality_reduction/gex/pca_components.csv', + 'analysis/dimensionality_reduction/gex/pca_dispersion.csv', + 'analysis/dimensionality_reduction/gex/pca_features_selected.csv', + 'analysis/dimensionality_reduction/gex/pca_projection.csv', + 'analysis/dimensionality_reduction/gex/pca_variance.csv', + 'analysis/dimensionality_reduction/gex/tsne_projection.csv', + 'analysis/dimensionality_reduction/gex/umap_projection.csv', + 'analysis/feature_linkage/feature_linkage.bedpe', + 'analysis/tf_analysis/filtered_tf_bc_matrix/barcodes.tsv.gz', + 'analysis/tf_analysis/filtered_tf_bc_matrix/matrix.mtx.gz', + 'analysis/tf_analysis/filtered_tf_bc_matrix/motifs.tsv', + 'analysis/tf_analysis/peak_motif_mapping.bed', + 'atac_cut_sites.bigwig', + 'atac_peak_annotation.tsv', + 'filtered_feature_bc_matrix/barcodes.tsv.gz', + 'filtered_feature_bc_matrix/features.tsv.gz', + 'filtered_feature_bc_matrix/matrix.mtx.gz', + 'gex_molecule_info.h5', + 'gex_possorted_bam.bam', + 'gex_possorted_bam.bam.bai', + 'per_barcode_metrics.csv', + 'raw_feature_bc_matrix/barcodes.tsv.gz', + 'raw_feature_bc_matrix/features.tsv.gz', + 'raw_feature_bc_matrix/matrix.mtx.gz', + 'summary.csv', + ] + + def stable_files = all_files.findAll { file -> + // Check if the file path ends with any of the stable file paths + return stable_file_names.any { stable_path -> + file.toString().endsWith(stable_path) + } + }.toSorted() + + assert snapshot( + stable_files, + process.out.versions[0] + ).match() + + def unstable_file_names = [ + 'analysis/feature_linkage/feature_linkage_matrix.h5', + 'analysis/tf_analysis/filtered_tf_bc_matrix.h5', + 'atac_fragments.tsv.gz', + 'atac_fragments.tsv.gz.tbi', + 'atac_peaks.bed', + 'atac_possorted_bam.bam', + 'atac_possorted_bam.bam.bai', + 'cloupe.cloupe', + 'filtered_feature_bc_matrix.h5', + 'raw_feature_bc_matrix.h5', + 'web_summary.html' + ] + + def unstable_files = all_files.findAll { file -> + return unstable_file_names.any { unstable_path -> + file.toString().endsWith(unstable_path) + } + }.toSorted() + + unstable_files.each { filePath -> + def fileObj = file(filePath) + assert fileObj.exists(): "File ${filePath} does not exist" + } + } + ) + } + } +// No stub test, as the stub test for `UNZIP` doesn't actually extract the archive. +// This breaks the downstream stub tests as a fasta file is required. +} diff --git a/modules/nf-core/cellrangerarc/count/tests/main.nf.test.snap b/modules/nf-core/cellrangerarc/count/tests/main.nf.test.snap new file mode 100644 index 000000000000..43125f2f00df --- /dev/null +++ b/modules/nf-core/cellrangerarc/count/tests/main.nf.test.snap @@ -0,0 +1,76 @@ +{ + "test_cellrangerarc_count": { + "content": [ + [ + "clusters.csv:md5,ed29b219ca3b79305129aea2d38ca60e", + "differential_accessibility.csv:md5,90e3e1001432bd1f94f53f39ae86971c", + "differential_expression.csv:md5,2806595b0c66af8407977b6ea57e30a3", + "clusters.csv:md5,35232075d0184cc6a31178ed58176bbe", + "differential_accessibility.csv:md5,0c597e33c58aac61a54e71c0ca3d1343", + "differential_expression.csv:md5,e77580db30873fba52bf4490f752ed22", + "clusters.csv:md5,127636548ad77bfa2646cbf62209e73b", + "differential_accessibility.csv:md5,9d1efbb7209c95a6f7714b43aca22130", + "differential_expression.csv:md5,24a85767ec0013a9f444bed5b23fb7f2", + "clusters.csv:md5,c84df7cc5cb684dd4a431915df0b58b2", + "differential_accessibility.csv:md5,2492068224aba9a65f860b6fb3464056", + "differential_expression.csv:md5,e02a8c8e3bc1d924357b46af2da76a6b", + "clusters.csv:md5,fcbbc4f29456778935fbbf4dc52791ea", + "differential_accessibility.csv:md5,630f412020f85765b2a32ac689701ce5", + "differential_expression.csv:md5,0aae96dbf649f0bc738f5d2c19e2be76", + "clusters.csv:md5,6cd4c2b06047c99cee59548c9b3000ac", + "differential_accessibility.csv:md5,08fc89ad11d1834cab677390f385a88a", + "differential_expression.csv:md5,6e97ced39f84b02f843f0b757b02f100", + "clusters.csv:md5,cd135bf9e9b5aa69abe95d5356aec96c", + "differential_accessibility.csv:md5,9ef66432c3f66f2190ff936324091e9f", + "differential_expression.csv:md5,223e516ce7ddf219575a32a60217e83d", + "clusters.csv:md5,ae9c24a834f1863a8faf03b3b4bdf74a", + "differential_accessibility.csv:md5,84bf1b3b3c90abdd92a817cc5a9d2ee8", + "differential_expression.csv:md5,8b0ec69f3cd0d3156d6def50cdde4340", + "clusters.csv:md5,aceb697994f98ee50b4d3db8e12e2a3a", + "differential_accessibility.csv:md5,05f0b3a10ce71d2fbafc6c9b74acf969", + "differential_expression.csv:md5,7b339771b1731b9cff2c52ac4fc632ce", + "clusters.csv:md5,243233d51193e6ce3127ed5ef8a08daf", + "differential_accessibility.csv:md5,25deefdff4c870e52c84f97cc4b9d5d2", + "differential_expression.csv:md5,b70730d7301cba11c46297d08b81677d", + "lsa_components.csv:md5,c3a48d3849f6b5e268bcb16b4d3db7ec", + "lsa_dispersion.csv:md5,1bdae634bd63d044dcfd8ae821b3744c", + "lsa_features_selected.csv:md5,b4e3cc5cac26dc6df059c1b8e38e72a8", + "lsa_projection.csv:md5,3bce47a5a0e8dc0cb24c2ecbba5c745b", + "lsa_variance.csv:md5,ff92c64ec140084673fd7ec48ce48993", + "tsne_projection.csv:md5,b0ff0a327a7cad898087c169b9815bab", + "umap_projection.csv:md5,8a34ad7bcf4ae7d14ad8f451acb4a12e", + "pca_components.csv:md5,82a4384a22390821cbfe06b2de9e9b4d", + "pca_dispersion.csv:md5,a6c8d15062a67bf828c1b58d1bc1eff8", + "pca_features_selected.csv:md5,34acd3e8d57f68bf592856c0c69847e7", + "pca_projection.csv:md5,6a2bf5e268da6705b92ec02309b3f61e", + "pca_variance.csv:md5,060e80415e690a7bfc9cd385c929842f", + "tsne_projection.csv:md5,aa42abe3c868c7d0e35628acf1a24966", + "umap_projection.csv:md5,34acdb54ff9f9c8b7d7f91a625450294", + "feature_linkage.bedpe:md5,4a92b2e49591c21a3d08602235e6ef7a", + "barcodes.tsv.gz:md5,1b2010b38c2de59bea1b71d374114919", + "matrix.mtx.gz:md5,2627809b0951961282c3b31fb83d7f1b", + "motifs.tsv:md5,9a397341713d07560937054df442afcb", + "peak_motif_mapping.bed:md5,b1d02a287485989ca294284bd95ad572", + "atac_cut_sites.bigwig:md5,03e0c63674192256d55a3c117fff66ee", + "atac_peak_annotation.tsv:md5,f4770b4197ff32c74bd206476f1f0dba", + "barcodes.tsv.gz:md5,1b2010b38c2de59bea1b71d374114919", + "features.tsv.gz:md5,9a315f46dbf99b9120527df78fd7e081", + "matrix.mtx.gz:md5,2304085aaac98027cf9241a3b2593760", + "gex_molecule_info.h5:md5,f1ab414eb8b8da017c974d7109f5e7ca", + "gex_possorted_bam.bam:md5,8455846fa1aa417e4252bd09584d1098", + "gex_possorted_bam.bam.bai:md5,444fb175b75d0e22c8e14724b7790e34", + "per_barcode_metrics.csv:md5,055ddb433b94d44efa0113a1db84a63d", + "barcodes.tsv.gz:md5,4e020c4c968100a61a542c0d6e56e5f5", + "features.tsv.gz:md5,9a315f46dbf99b9120527df78fd7e081", + "matrix.mtx.gz:md5,743fc9d85f85cd2e5a40654d3ae2e3e4", + "summary.csv:md5,7641192d4cc0c6072dc447a46d5f89a2" + ], + "versions.yml:md5,dc627e4bae7ded9a34b7e8f52b4b903d" + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-03T18:30:31.250399555" + } +} \ No newline at end of file diff --git a/modules/nf-core/cellrangerarc/count/tests/nextflow.config b/modules/nf-core/cellrangerarc/count/tests/nextflow.config new file mode 100644 index 000000000000..1ff901dd7aca --- /dev/null +++ b/modules/nf-core/cellrangerarc/count/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'CELLRANGERARC_COUNT': { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/cellrangerarc/mkref/main.nf b/modules/nf-core/cellrangerarc/mkref/main.nf index b030ae921d37..13b5d2f13bbf 100644 --- a/modules/nf-core/cellrangerarc/mkref/main.nf +++ b/modules/nf-core/cellrangerarc/mkref/main.nf @@ -4,11 +4,6 @@ process CELLRANGERARC_MKREF { container "nf-core/cellranger-arc:2.0.2" - // Exit if running this module with -profile conda / -profile mamba - if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { - exit 1, "CELLRANGERARC_COUNT module does not support Conda. Please use Docker / Singularity / Podman instead." - } - input: path fasta path gtf @@ -25,6 +20,10 @@ process CELLRANGERARC_MKREF { task.ext.when == null || task.ext.when script: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + exit 1, "CELLRANGERARC_MKREF module does not support Conda. Please use Docker / Singularity / Podman instead." + } def fast_name = fasta.name def gtf_name = gtf.name def motifs_name = motifs.name @@ -82,4 +81,20 @@ process CELLRANGERARC_MKREF { cellrangerarc: \$(echo \$( cellranger-arc --version 2>&1) | sed 's/^.*[^0-9]\\([0-9]*\\.[0-9]*\\.[0-9]*\\).*\$/\\1/' ) END_VERSIONS """ + + stub: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + exit 1, "CELLRANGERARC_MKREF module does not support Conda. Please use Docker / Singularity / Podman instead." + } + def args = task.ext.args ?: '' + """ + mkdir -p "${reference_name}/" + touch config + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cellrangerarc: \$(echo \$( cellranger-arc --version 2>&1) | sed 's/^.*[^0-9]\\([0-9]*\\.[0-9]*\\.[0-9]*\\).*\$/\\1/' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/cellrangerarc/mkref/tests/main.nf.test b/modules/nf-core/cellrangerarc/mkref/tests/main.nf.test new file mode 100644 index 000000000000..02d2abdee35d --- /dev/null +++ b/modules/nf-core/cellrangerarc/mkref/tests/main.nf.test @@ -0,0 +1,91 @@ +nextflow_process { + + name "Test Process CELLRANGERARC_MKREF" + script "../main.nf" + config "./nextflow.config" + process "CELLRANGERARC_MKREF" + + tag "modules" + tag "modules_nfcore" + tag "cellrangerarc" + tag "cellrangerarc/mkref" + tag "unzip" + + setup { + run("UNZIP") { + script "../../../unzip/main.nf" + + process { + """ + input[0] = [[],file(params.modules_testdata_base_path + 'genomics/mus_musculus/genome/chr19.fa.gz',checkIfExists:true)] + """ + } + } + } + test("mouse - fa.gz") { + + when { + process { + """ + input[0] = UNZIP.out.unzipped_archive.map{it[1]}+"/chr19.fa" + input[1] = file(params.modules_testdata_base_path + 'genomics/mus_musculus/genome/chr19.filtered.gtf.gz',checkIfExists:true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome_motifs.txt',checkIfExists:true) + input[3] = file(params.modules_testdata_base_path + 'genomics/mus_musculus/illumina/10xgenomics/multiome/cellranger_arc_mkref_test_mm39_chr19_config.json',checkIfExists:true) + input[4] = "cellrangerarc_reference" + """ + } + } + then { + + assertAll( + { assert process.success }, + { assert snapshot( + process.out.config, + process.out.versions, + path( "${outputDir}/cellrangerarc_reference/fasta/" ), + path( "${outputDir}/cellrangerarc_reference/genes/" ), + path( "${outputDir}/cellrangerarc_reference/regions" ), + path( "${outputDir}/cellrangerarc_reference/reference.json" ), + path( "${outputDir}/cellrangerarc_reference/star/chrLength.txt" ), + path( "${outputDir}/cellrangerarc_reference/star/chrName.txt" ), + path( "${outputDir}/cellrangerarc_reference/star/chrNameLength.txt" ), + path( "${outputDir}/cellrangerarc_reference/star/chrStart.txt" ), + path( "${outputDir}/cellrangerarc_reference/star/exonGeTrInfo.tab" ), + path( "${outputDir}/cellrangerarc_reference/star/exonInfo.tab" ), + path( "${outputDir}/cellrangerarc_reference/star/geneInfo.tab" ), + path( "${outputDir}/cellrangerarc_reference/star/Genome" ), + path( "${outputDir}/cellrangerarc_reference/star/SA" ), + path( "${outputDir}/cellrangerarc_reference/star/SAindex" ), + path( "${outputDir}/cellrangerarc_reference/star/sjdbInfo.txt" ), + path( "${outputDir}/cellrangerarc_reference/star/sjdbList.fromGTF.out.tab" ), + path( "${outputDir}/cellrangerarc_reference/star/sjdbList.out.tab" ), + path( "${outputDir}/cellrangerarc_reference/star/transcriptInfo.tab" ), + ).match() } + ) + } + } + + test("mouse - fa.gz - stub") { + options '-stub' + when { + process { + """ + input[0] = UNZIP.out.unzipped_archive.map{it[1]}+"/chr19.fa" + input[1] = file(params.modules_testdata_base_path + 'genomics/mus_musculus/genome/chr19.filtered.gtf.gz',checkIfExists:true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome_motifs.txt',checkIfExists:true) + input[3] = file(params.modules_testdata_base_path + 'genomics/mus_musculus/illumina/10xgenomics/multiome/cellranger_arc_mkref_test_mm39_chr19_config.json',checkIfExists:true) + input[4] = "cellrangerarc_reference" + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out, + process.out.versions.collect{ path(it).yaml } + ).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/cellrangerarc/mkref/tests/main.nf.test.snap b/modules/nf-core/cellrangerarc/mkref/tests/main.nf.test.snap new file mode 100644 index 000000000000..17ee0a90435e --- /dev/null +++ b/modules/nf-core/cellrangerarc/mkref/tests/main.nf.test.snap @@ -0,0 +1,89 @@ +{ + "mouse - fa.gz - stub": { + "content": [ + { + "0": [ + [ + + ] + ], + "1": [ + "config:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "2": [ + "versions.yml:md5,4a1d57a87e4b95fa5fd703d4536bedbd" + ], + "config": [ + "config:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "reference": [ + [ + + ] + ], + "versions": [ + "versions.yml:md5,4a1d57a87e4b95fa5fd703d4536bedbd" + ] + }, + [ + { + "CELLRANGERARC_MKREF": { + "cellrangerarc": "2.0.2" + } + } + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T09:17:19.337666684" + }, + "mouse - fa.gz": { + "content": [ + [ + "config:md5,be9df01d35e426f4f37bdca2c779e199" + ], + [ + "versions.yml:md5,4a1d57a87e4b95fa5fd703d4536bedbd" + ], + [ + "genome.fa:md5,dd9375c0cfa5de18757a0608411ff608", + "genome.fa.amb:md5,1b4fb43678899d6115d37d88f22552ad", + "genome.fa.ann:md5,4df1dc4bd46b294e1e1343dc0ab646ef", + "genome.fa.bwt:md5,64d2ab05657806c66fb0e0d1ea7fc4d1", + "genome.fa.fai:md5,291a00d5431e0f97c356c272d201d8bd", + "genome.fa.pac:md5,7554f21668cd8efc77f1272b95550cc3", + "genome.fa.sa:md5,7d4b562f369d65ad60a889f74609f330" + ], + [ + "genes.gtf.gz:md5,29ea9f8629c84868b4b0ce5cd4f57632" + ], + [ + "motifs.pfm:md5,294d4041e4ffd4c633376c2b9d180ac0", + "transcripts.bed:md5,bc5cfb75dc1795cfc2caeddfc15aaa30", + "tss.bed:md5,6aa464a762cab3ca3bf004dd6f35de8e" + ], + "reference.json:md5,1ff977fa99515695d81b8da012569901", + "chrLength.txt:md5,263f433d64f5f9f3181ed90542735474", + "chrName.txt:md5,255cdc5fefdc3ff84cfe3f3270ab8fed", + "chrNameLength.txt:md5,bb9ac7f24e6c1c6ea0677f825858449a", + "chrStart.txt:md5,fba9f49cedf08a4136244d4b9b776c01", + "exonGeTrInfo.tab:md5,4fb4acda70869b18296f8ce9c6a297db", + "exonInfo.tab:md5,e2f4405c0cbf847580791f2e9954f936", + "geneInfo.tab:md5,786000c34020b0b39e4ab6b9b3e4d922", + "Genome:md5,4664d17f3cbcde9859f1af9fac08f9ed", + "SA:md5,3c73b38e44260c9a591e74f5f1dfec87", + "SAindex:md5,c1ba6a91058b189bffa7a56592635f23", + "sjdbInfo.txt:md5,17bd31bf73ea326f7befac8a57dc1780", + "sjdbList.fromGTF.out.tab:md5,23c67498223466c717f6f901ff9df9a4", + "sjdbList.out.tab:md5,6923d3e29967b2f3faad78960101a2a6", + "transcriptInfo.tab:md5,b3b9193220aaa3fbf63a49148ef150e0" + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T09:17:00.006663869" + } +} \ No newline at end of file diff --git a/modules/nf-core/cellrangerarc/mkref/tests/nextflow.config b/modules/nf-core/cellrangerarc/mkref/tests/nextflow.config new file mode 100644 index 000000000000..c748938d1773 --- /dev/null +++ b/modules/nf-core/cellrangerarc/mkref/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: CELLRANGERARC_MKREF { + publishDir = [ path: { "output" } ] + } +} diff --git a/modules/nf-core/clair3/main.nf b/modules/nf-core/clair3/main.nf index d893ae133de4..22007298bb1d 100644 --- a/modules/nf-core/clair3/main.nf +++ b/modules/nf-core/clair3/main.nf @@ -8,7 +8,7 @@ process CLAIR3 { 'biocontainers/clair3:1.0.10--py39hd649744_1' }" input: - tuple val(meta), path(bam), path(bai), path(model), val(platform) + tuple val(meta), path(bam), path(bai), val(packaged_model), path(user_model), val(platform) tuple val(meta2), path(reference) tuple val(meta3), path(index) @@ -23,6 +23,21 @@ process CLAIR3 { task.ext.when == null || task.ext.when script: + def model = "" + if (!user_model) { + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + model = "\${CONDA_PREFIX}/bin/models/${packaged_model}" + } + else { + model = "/usr/local/bin/models/$packaged_model" + } + } + if (!packaged_model) { + model = "$user_model" + } + if (packaged_model && user_model) { + error "Two models specified $user_model and $packaged_model, specify one of them." + } def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ diff --git a/modules/nf-core/clair3/meta.yml b/modules/nf-core/clair3/meta.yml index bc12fd627f06..5ba5105bab7c 100644 --- a/modules/nf-core/clair3/meta.yml +++ b/modules/nf-core/clair3/meta.yml @@ -39,9 +39,13 @@ input: type: file description: BAM index file pattern: "*.bai" - - model: + - packaged_model: + type: string + description: string containing the name of a prepackaged Clair3 model + full list of models and their descriptions is provided at https://github.com/HKU-BAL/Clair3?tab=readme-ov-file#pre-trained-models + - user_model: type: directory - description: collection of files used in a trained Clair3 model + description: directory containing Clair3 model files - platform: type: string description: val in ['hifi','ont', 'ilmn'] to indicate pacbio, ONT, or illumina diff --git a/modules/nf-core/clair3/tests/main.nf.test b/modules/nf-core/clair3/tests/main.nf.test index a69d417b65b7..8e9c8cc379ab 100644 --- a/modules/nf-core/clair3/tests/main.nf.test +++ b/modules/nf-core/clair3/tests/main.nf.test @@ -21,8 +21,8 @@ nextflow_process { """ } } - } - test("sarscov2 - bam") { + } + test("sarscov2 - bam - user_model") { when { process { @@ -32,8 +32,50 @@ nextflow_process { [ id:'test' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [], + ]) + .join(UNTAR.out.untar) + .combine(Channel.of(['hifi'])) + input[1] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[2] = [ + [ id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.vcf.collect { file(it[1]).getName() }, + process.out.tbi.collect { file(it[1]).getName() }, + process.out.versions, + process.out.phased_vcf.collect { file(it[1]).getName() }, + process.out.phased_tbi.collect { file(it[1]).getName() }) + .match()} + ) + } + + } + + test("sarscov2 - bam - packaged_model") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + 'hifi_revio', + [], + 'hifi', ]) - .join(UNTAR.out.untar).combine(Channel.of(['hifi'])) input[1] = [ [ id:'test'], file(params.modules_testdata_base_path + '/genomics/sarscov2/genome/genome.fasta', checkIfExists: true), @@ -50,16 +92,51 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - process.out.vcf.collect { file(it[1]).getName() }, - process.out.tbi.collect { file(it[1]).getName() }, - process.out.versions, - process.out.phased_vcf.collect { file(it[1]).getName() }, - process.out.phased_tbi.collect { file(it[1]).getName() }).match()} + process.out.vcf.collect { file(it[1]).getName() }, + process.out.tbi.collect { file(it[1]).getName() }, + process.out.versions, + process.out.phased_vcf.collect { file(it[1]).getName() }, + process.out.phased_tbi.collect { file(it[1]).getName() }) + .match()} + ) + } + + } + + test("sarscov2 - bam - both") { + + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + ['hifi_revio'], + ]) + .join(UNTAR.out.untar) + .combine(Channel.of(['hifi'])) + input[1] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[2] = [ + [ id: 'test'], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.failed } ) } } + test("sarscov2 - bam - stub") { options "-stub" @@ -72,8 +149,10 @@ nextflow_process { [ id:'test' ], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [], ]) - .join(UNTAR.out.untar).combine(Channel.of(['hifi'])) + .join(UNTAR.out.untar) + .combine(Channel.of(['hifi'])) input[1] = [ [ id:'test'], file(params.modules_testdata_base_path + '/genomics/sarscov2/genome/genome.fasta', checkIfExists: true), @@ -90,12 +169,12 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - process.out.vcf, - process.out.tbi, - process.out.phased_vcf, - process.out.phased_tbi, - process.out.versions, - ).match()} + process.out.vcf, + process.out.tbi, + process.out.phased_vcf, + process.out.phased_tbi, + process.out.versions) + .match()} ) } diff --git a/modules/nf-core/clair3/tests/main.nf.test.snap b/modules/nf-core/clair3/tests/main.nf.test.snap index fe9e76f80c0e..e9b68be83826 100644 --- a/modules/nf-core/clair3/tests/main.nf.test.snap +++ b/modules/nf-core/clair3/tests/main.nf.test.snap @@ -47,9 +47,9 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-17T09:56:09.775735" + "timestamp": "2025-04-04T09:30:51.327348" }, - "sarscov2 - bam": { + "sarscov2 - bam - packaged_model": { "content": [ [ "merge_output.vcf.gz" @@ -71,6 +71,30 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-14T17:16:02.057639" + "timestamp": "2025-04-04T09:30:16.61651" + }, + "sarscov2 - bam - user_model": { + "content": [ + [ + "merge_output.vcf.gz" + ], + [ + "merge_output.vcf.gz.tbi" + ], + [ + "versions.yml:md5,10928c13418eced076964d86249aeaf8" + ], + [ + + ], + [ + + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-04T09:29:58.640181" } } \ No newline at end of file diff --git a/modules/nf-core/damageprofiler/main.nf b/modules/nf-core/damageprofiler/main.nf index 98a2db223779..652cdceefaaa 100644 --- a/modules/nf-core/damageprofiler/main.nf +++ b/modules/nf-core/damageprofiler/main.nf @@ -23,7 +23,7 @@ process DAMAGEPROFILER { script: def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" - def reference = fasta ? "-r $fasta" : "" + def reference = fasta ? "-r $fasta" : "" def species_list = specieslist ? "-sf $specieslist" : "" """ damageprofiler \\ @@ -38,4 +38,36 @@ process DAMAGEPROFILER { damageprofiler: \$(damageprofiler -v | sed 's/^DamageProfiler v//') END_VERSIONS """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + + """ + mkdir -p $prefix + + touch $prefix/3pGtoA_freq.txt + touch $prefix/3p_freq_misincorporations.txt + touch $prefix/5pCtoT_freq.txt + touch $prefix/5p_freq_misincorporations.txt + touch $prefix/DNA_comp_genome.txt + touch $prefix/DNA_composition_sample.txt + touch $prefix/DamagePlot.pdf + touch $prefix/DamagePlot_five_prime.svg + touch $prefix/DamagePlot_three_prime.svg + touch $prefix/DamageProfiler.log + touch $prefix/Length_plot.pdf + touch $prefix/Length_plot_combined_data.svg + touch $prefix/Length_plot_forward_reverse_separated.svg + touch $prefix/dmgprof.json + touch $prefix/editDistance.txt + touch $prefix/edit_distance.pdf + touch $prefix/edit_distance.svg + touch $prefix/lgdistribution.txt + touch $prefix/misincorporation.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + damageprofiler: \$(damageprofiler -v | sed 's/^DamageProfiler v//') + END_VERSIONS + """ } diff --git a/modules/nf-core/damageprofiler/meta.yml b/modules/nf-core/damageprofiler/meta.yml index 0c3360e893bb..01e4171fbde8 100644 --- a/modules/nf-core/damageprofiler/meta.yml +++ b/modules/nf-core/damageprofiler/meta.yml @@ -32,14 +32,22 @@ input: type: file description: BAM/CRAM/SAM file pattern: "*.{bam,cram,sam}" + ontologies: + - edam: "http://edamontology.org/format_2572" # BAM + - edam: "http://edamontology.org/format_3462" # CRAM + - edam: "http://edamontology.org/format_2573" # SAM - - fasta: type: file description: OPTIONAL FASTA reference file pattern: "*.{fasta,fna,fa}" + ontologies: + - edam: "http://edamontology.org/format_1332" # FASTA - - fai: type: file description: OPTIONAL FASTA index file from samtools faidx pattern: "*.{fai}" + ontologies: + - edam: "http://edamontology.org/format_1332" # Tabix - - specieslist: type: file description: OPTIONAL text file with list of target reference headers diff --git a/modules/nf-core/damageprofiler/tests/main.nf.test b/modules/nf-core/damageprofiler/tests/main.nf.test new file mode 100644 index 000000000000..052e5c8fd669 --- /dev/null +++ b/modules/nf-core/damageprofiler/tests/main.nf.test @@ -0,0 +1,130 @@ +nextflow_process { + + name "Test Process DAMAGEPROFILER" + + script "../main.nf" + process "DAMAGEPROFILER" + + tag "modules" + tag "modules_nfcore" + tag "damageprofiler" + + test("homo_sapiens - bam") { + when { + process { + """ + input[0] = [ + [id:'test', single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam',checkIfExists:true) + ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + process.out.results.collect { meta, dir -> [ + meta, file(dir).list().sort().collect { // Do not check md5sum for .pdf .svg and .log as unstable + file -> + file.endsWith(".pdf") || file.endsWith(".svg") || file.endsWith(".log") ? file : path(dir).resolve(file) + } + ]} + ).match() } + ) + } + } + test("homo_sapiens - bam - fasta fai") { + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [id:'test',single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists:true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta',checkIfExists:true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai',checkIfExists:true) + input[3] = [] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + process.out.results.collect { meta, dir -> [ + meta, file(dir).list().sort().collect { // Do not check md5sum for .pdf .svg and .log as unstable + file -> + file.endsWith(".pdf") || file.endsWith(".svg") || file.endsWith(".log") ? file : path(dir).resolve(file) + } + ]} + ).match() } + ) + } + } + + test("homo_sapiens - bam - header") { + when { + process { + """ + input[0] = [ + [id:'test', single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists:true) + ] + input[1] = [] + input[2] = [] + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.header', checkIfExists:true) + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + process.out.results.collect { meta, dir -> [ + meta, file(dir).listFiles().findAll { it.isDirectory() }.collect { subdir -> + subdir.listFiles().sort().collect { file -> + file.name.endsWith(".pdf") || file.name.endsWith(".svg") || file.name.endsWith(".log") ? file.name : file + } + }.flatten() + ]} + ).match() } + ) + } + } + + test("homo_sapiens - bam -- stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [id:'test', single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.markduplicates.sorted.bam', checkIfExists:true) + ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } +} diff --git a/modules/nf-core/damageprofiler/tests/main.nf.test.snap b/modules/nf-core/damageprofiler/tests/main.nf.test.snap new file mode 100644 index 000000000000..f1546f6f101b --- /dev/null +++ b/modules/nf-core/damageprofiler/tests/main.nf.test.snap @@ -0,0 +1,204 @@ +{ + "homo_sapiens - bam - fasta fai": { + "content": [ + [ + "versions.yml:md5,1822b800e5f67b95cb28901683e9466a" + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "3pGtoA_freq.txt:md5,56c165bbc9197e0b3d5bd3d464f9e235", + "3p_freq_misincorporations.txt:md5,62e60259dd7fa2b54cdab6afc1adc9c4", + "5pCtoT_freq.txt:md5,38b5d7c87ec2d8422bc5587095711c5f", + "5p_freq_misincorporations.txt:md5,05e041ff47e7c6d08ede51f5c81a2464", + "DNA_comp_genome.txt:md5,e4d949c6aceddc2c2ef14de9c4aafde5", + "DNA_composition_sample.txt:md5,16be9c91a06fa7defee376230b12862f", + "DamagePlot.pdf", + "DamagePlot_five_prime.svg", + "DamagePlot_three_prime.svg", + "DamageProfiler.log", + "Length_plot.pdf", + "Length_plot_combined_data.svg", + "Length_plot_forward_reverse_separated.svg", + "dmgprof.json:md5,a011a47edaadb3a07527c329a6492570", + "editDistance.txt:md5,7590dac007633ee11025cc99ec9f009b", + "edit_distance.pdf", + "edit_distance.svg", + "lgdistribution.txt:md5,583fd98094de3fb462b133daeaadcf52", + "misincorporation.txt:md5,25119c0fcc8839fdbb3ed10922fb07f4" + ] + ] + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T19:15:42.02368625" + }, + "homo_sapiens - bam - header": { + "content": [ + [ + "versions.yml:md5,1822b800e5f67b95cb28901683e9466a" + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "3pGtoA_freq.txt:md5,56c165bbc9197e0b3d5bd3d464f9e235", + "3p_freq_misincorporations.txt:md5,62e60259dd7fa2b54cdab6afc1adc9c4", + "5pCtoT_freq.txt:md5,38b5d7c87ec2d8422bc5587095711c5f", + "5p_freq_misincorporations.txt:md5,05e041ff47e7c6d08ede51f5c81a2464", + "DNA_comp_genome.txt:md5,e4d949c6aceddc2c2ef14de9c4aafde5", + "DNA_composition_sample.txt:md5,16be9c91a06fa7defee376230b12862f", + "DamagePlot.pdf", + "DamagePlot_five_prime.svg", + "DamagePlot_three_prime.svg", + "Length_plot.pdf", + "Length_plot_combined_data.svg", + "Length_plot_forward_reverse_separated.svg", + "dmgprof.json:md5,a011a47edaadb3a07527c329a6492570", + "editDistance.txt:md5,7590dac007633ee11025cc99ec9f009b", + "edit_distance.pdf", + "edit_distance.svg", + "lgdistribution.txt:md5,583fd98094de3fb462b133daeaadcf52", + "misincorporation.txt:md5,25119c0fcc8839fdbb3ed10922fb07f4" + ] + ] + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T19:16:12.141583749" + }, + "homo_sapiens - bam": { + "content": [ + [ + "versions.yml:md5,1822b800e5f67b95cb28901683e9466a" + ], + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "3pGtoA_freq.txt:md5,56c165bbc9197e0b3d5bd3d464f9e235", + "3p_freq_misincorporations.txt:md5,62e60259dd7fa2b54cdab6afc1adc9c4", + "5pCtoT_freq.txt:md5,38b5d7c87ec2d8422bc5587095711c5f", + "5p_freq_misincorporations.txt:md5,05e041ff47e7c6d08ede51f5c81a2464", + "DNA_comp_genome.txt:md5,e4d949c6aceddc2c2ef14de9c4aafde5", + "DNA_composition_sample.txt:md5,16be9c91a06fa7defee376230b12862f", + "DamagePlot.pdf", + "DamagePlot_five_prime.svg", + "DamagePlot_three_prime.svg", + "DamageProfiler.log", + "Length_plot.pdf", + "Length_plot_combined_data.svg", + "Length_plot_forward_reverse_separated.svg", + "dmgprof.json:md5,a011a47edaadb3a07527c329a6492570", + "editDistance.txt:md5,7590dac007633ee11025cc99ec9f009b", + "edit_distance.pdf", + "edit_distance.svg", + "lgdistribution.txt:md5,583fd98094de3fb462b133daeaadcf52", + "misincorporation.txt:md5,25119c0fcc8839fdbb3ed10922fb07f4" + ] + ] + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T19:15:14.22793253" + }, + "homo_sapiens - bam -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "3pGtoA_freq.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "3p_freq_misincorporations.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "5pCtoT_freq.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "5p_freq_misincorporations.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "DNA_comp_genome.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "DNA_composition_sample.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "DamagePlot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "DamagePlot_five_prime.svg:md5,d41d8cd98f00b204e9800998ecf8427e", + "DamagePlot_three_prime.svg:md5,d41d8cd98f00b204e9800998ecf8427e", + "DamageProfiler.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "Length_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "Length_plot_combined_data.svg:md5,d41d8cd98f00b204e9800998ecf8427e", + "Length_plot_forward_reverse_separated.svg:md5,d41d8cd98f00b204e9800998ecf8427e", + "dmgprof.json:md5,d41d8cd98f00b204e9800998ecf8427e", + "editDistance.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "edit_distance.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "edit_distance.svg:md5,d41d8cd98f00b204e9800998ecf8427e", + "lgdistribution.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "misincorporation.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + "versions.yml:md5,1822b800e5f67b95cb28901683e9466a" + ], + "results": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "3pGtoA_freq.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "3p_freq_misincorporations.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "5pCtoT_freq.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "5p_freq_misincorporations.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "DNA_comp_genome.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "DNA_composition_sample.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "DamagePlot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "DamagePlot_five_prime.svg:md5,d41d8cd98f00b204e9800998ecf8427e", + "DamagePlot_three_prime.svg:md5,d41d8cd98f00b204e9800998ecf8427e", + "DamageProfiler.log:md5,d41d8cd98f00b204e9800998ecf8427e", + "Length_plot.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "Length_plot_combined_data.svg:md5,d41d8cd98f00b204e9800998ecf8427e", + "Length_plot_forward_reverse_separated.svg:md5,d41d8cd98f00b204e9800998ecf8427e", + "dmgprof.json:md5,d41d8cd98f00b204e9800998ecf8427e", + "editDistance.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "edit_distance.pdf:md5,d41d8cd98f00b204e9800998ecf8427e", + "edit_distance.svg:md5,d41d8cd98f00b204e9800998ecf8427e", + "lgdistribution.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "misincorporation.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "versions": [ + "versions.yml:md5,1822b800e5f67b95cb28901683e9466a" + ] + }, + { + "DAMAGEPROFILER": { + "damageprofiler": 1.1 + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T17:23:23.972121111" + } +} \ No newline at end of file diff --git a/modules/nf-core/deseq2/differential/tests/main.nf.test b/modules/nf-core/deseq2/differential/tests/main.nf.test index 370f05dcd747..b8a63843f13a 100644 --- a/modules/nf-core/deseq2/differential/tests/main.nf.test +++ b/modules/nf-core/deseq2/differential/tests/main.nf.test @@ -12,7 +12,7 @@ nextflow_process { test("mouse - contrasts - matrix") { config './contrasts_matrix.config' - + when { process { """ @@ -24,13 +24,13 @@ nextflow_process { tuple(it, it.variable, it.reference, it.target) } ch_matrix = [ - [id: 'test'], + [id: 'test'], file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) ] ch_spikes = [[],[]] ch_lengths = [[],[]] - + input[0] = ch_contrasts input[1] = ch_matrix input[2] = ch_spikes @@ -52,7 +52,7 @@ nextflow_process { file(process.out.dispersion_plot[0][1]).name, file(process.out.rdata[0][1]).name ).match() }, - { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } ) } } @@ -72,15 +72,15 @@ nextflow_process { tuple(it, it.variable, it.reference, it.target) } ch_matrix = [ - [id: 'test'], + [id: 'test'], file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) ] ch_lengths = [ - [id: 'test'], + [id: 'test'], file(expression_test_data_dir + 'SRP254919.spoofed_lengths.tsv', checkIfExists: true) ] - + ch_spikes = [[],[]] input[0] = ch_contrasts @@ -105,7 +105,7 @@ nextflow_process { file(process.out.dispersion_plot[0][1]).name, file(process.out.rdata[0][1]).name ).match() }, - { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } ) } @@ -114,7 +114,7 @@ nextflow_process { test("mouse - contrasts - matrix - no blocking") { config './contrasts_matrix_noblocking.config' - + when { process { """ @@ -126,13 +126,13 @@ nextflow_process { tuple(it, it.variable, it.reference, it.target) } ch_matrix = [ - [id: 'test'], + [id: 'test'], file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) ] ch_spikes = [[],[]] ch_lengths = [[],[]] - + input[0] = ch_contrasts input[1] = ch_matrix input[2] = ch_spikes @@ -154,7 +154,7 @@ nextflow_process { file(process.out.dispersion_plot[0][1]).name, file(process.out.rdata[0][1]).name ).match() }, - { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } ) } } @@ -162,7 +162,7 @@ nextflow_process { test("mouse - contrasts - matrix - spikes") { config './contrasts_matrix_spikes.config' - + when { process { """ @@ -174,16 +174,16 @@ nextflow_process { tuple(it, it.variable, it.reference, it.target) } ch_matrix = [ - [id: 'test'], + [id: 'test'], file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) ] ch_spikes = [ - ['id':'ERCC'], + ['id':'ERCC'], file(expression_test_data_dir + 'SRP254919.spikes.tsv', checkIfExists: true) ] ch_lengths = [[],[]] - + input[0] = ch_contrasts input[1] = ch_matrix input[2] = ch_spikes @@ -205,15 +205,15 @@ nextflow_process { file(process.out.dispersion_plot[0][1]).name, file(process.out.rdata[0][1]).name ).match() }, - { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } ) } } - + test("mouse - contrasts - matrix - strip spikes") { config './contrasts_matrix.config' - + when { process { """ @@ -225,16 +225,16 @@ nextflow_process { tuple(it, it.variable, it.reference, it.target) } ch_matrix = [ - [id: 'test'], + [id: 'test'], file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) ] ch_spikes = [ - ['id':'ERCC'], + ['id':'ERCC'], file(expression_test_data_dir + 'SRP254919.spikes.tsv', checkIfExists: true) ] ch_lengths = [[],[]] - + input[0] = ch_contrasts input[1] = ch_matrix input[2] = ch_spikes @@ -256,15 +256,15 @@ nextflow_process { file(process.out.dispersion_plot[0][1]).name, file(process.out.rdata[0][1]).name ).match() }, - { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } ) } } - + test("mouse - contrasts - matrix - csv") { config './contrasts_matrix.config' - + when { process { """ @@ -288,7 +288,7 @@ nextflow_process { } ch_spikes = [[],[]] ch_lengths = [[],[]] - + input[0] = ch_contrasts input[1] = ch_matrix input[2] = ch_spikes @@ -310,15 +310,15 @@ nextflow_process { file(process.out.dispersion_plot[0][1]).name, file(process.out.rdata[0][1]).name ).match() }, - { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } ) } } - + test("mouse - contrasts - matrix - vst nsub") { config './contrasts_matrix_vst_nsub.config' - + when { process { """ @@ -330,13 +330,13 @@ nextflow_process { tuple(it, it.variable, it.reference, it.target) } ch_matrix = [ - [id: 'test'], + [id: 'test'], file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) ] ch_spikes = [[],[]] ch_lengths = [[],[]] - + input[0] = ch_contrasts input[1] = ch_matrix input[2] = ch_spikes @@ -358,15 +358,15 @@ nextflow_process { file(process.out.dispersion_plot[0][1]).name, file(process.out.rdata[0][1]).name ).match() }, - { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } ) } } - + test("mouse - contrasts - matrix - subset to contrast") { config './contrasts_matrix_subset_to_contrast.config' - + when { process { """ @@ -378,13 +378,13 @@ nextflow_process { tuple(it, it.variable, it.reference, it.target) } ch_matrix = [ - [id: 'test'], + [id: 'test'], file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) ] ch_spikes = [[],[]] ch_lengths = [[],[]] - + input[0] = ch_contrasts input[1] = ch_matrix input[2] = ch_spikes @@ -406,7 +406,7 @@ nextflow_process { file(process.out.dispersion_plot[0][1]).name, file(process.out.rdata[0][1]).name ).match() }, - { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } ) } } @@ -414,7 +414,7 @@ nextflow_process { test("mouse - contrasts - matrix - exclude samples") { config './contrasts_matrix_exclude_samples.config' - + when { process { """ @@ -426,13 +426,13 @@ nextflow_process { tuple(it, it.variable, it.reference, it.target) } ch_matrix = [ - [id: 'test'], + [id: 'test'], file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) ] ch_spikes = [[],[]] ch_lengths = [[],[]] - + input[0] = ch_contrasts input[1] = ch_matrix input[2] = ch_spikes @@ -454,16 +454,16 @@ nextflow_process { file(process.out.dispersion_plot[0][1]).name, file(process.out.rdata[0][1]).name ).match() }, - { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } + { assert path(process.out.session_info[0][1]).text.contains("DESeq2_1.34.0") } ) } } test("mouse - contrasts - matrix - stub") { config './contrasts_matrix.config' - + options "-stub" - + when { process { """ @@ -475,13 +475,13 @@ nextflow_process { tuple(it, it.variable, it.reference, it.target) } ch_matrix = [ - [id: 'test'], + [id: 'test'], file(expression_test_data_dir + 'SRP254919.samplesheet.csv', checkIfExists: true), file(expression_test_data_dir + 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', checkIfExists: true) ] ch_spikes = [[],[]] ch_lengths = [[],[]] - + input[0] = ch_contrasts input[1] = ch_matrix input[2] = ch_spikes diff --git a/modules/nf-core/dragmap/align/environment.yml b/modules/nf-core/dragmap/align/environment.yml index bfd8bfb72a8d..198f3fa726df 100644 --- a/modules/nf-core/dragmap/align/environment.yml +++ b/modules/nf-core/dragmap/align/environment.yml @@ -3,8 +3,8 @@ channels: - conda-forge - bioconda - dependencies: - - dragmap=1.3.0 - - pigz=2.8 - - samtools=1.18 + # WARN: Do not update this tool to 1.3.0 until https://github.com/Illumina/DRAGMAP/issues/47 is resolved + - bioconda::dragmap=1.2.1 + - bioconda::samtools=1.19.2 + - conda-forge::pigz=2.3.4 diff --git a/modules/nf-core/dragmap/align/main.nf b/modules/nf-core/dragmap/align/main.nf index 760c2dfbad0a..3f6ea7536605 100644 --- a/modules/nf-core/dragmap/align/main.nf +++ b/modules/nf-core/dragmap/align/main.nf @@ -1,26 +1,27 @@ process DRAGMAP_ALIGN { - tag "$meta.id" + tag "${meta.id}" label 'process_high' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-580d344d9d4a496cd403932da8765f9e0187774d:7eed251370ac7f3537c3d9472cdb2f9f5d8da1c5-0': - 'biocontainers/mulled-v2-580d344d9d4a496cd403932da8765f9e0187774d:7eed251370ac7f3537c3d9472cdb2f9f5d8da1c5-0' }" + // WARN: Do not update this tool to 1.3.0 until https://github.com/Illumina/DRAGMAP/issues/47 is resolved + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/mulled-v2-580d344d9d4a496cd403932da8765f9e0187774d:df80ed8d23d0a2c43181a2b3dd1b39f2d00fab5c-0' + : 'biocontainers/mulled-v2-580d344d9d4a496cd403932da8765f9e0187774d:df80ed8d23d0a2c43181a2b3dd1b39f2d00fab5c-0'}" input: - tuple val(meta) , path(reads) + tuple val(meta), path(reads) tuple val(meta2), path(hashmap) tuple val(meta3), path(fasta) - val sort_bam + val sort_bam output: - tuple val(meta), path("*.sam") , emit: sam , optional: true - tuple val(meta), path("*.bam") , emit: bam , optional: true - tuple val(meta), path("*.cram") , emit: cram , optional: true - tuple val(meta), path("*.crai") , emit: crai , optional: true - tuple val(meta), path("*.csi") , emit: csi , optional: true - tuple val(meta), path('*.log') , emit: log - path "versions.yml" , emit: versions + tuple val(meta), path("*.sam"), emit: sam, optional: true + tuple val(meta), path("*.bam"), emit: bam, optional: true + tuple val(meta), path("*.cram"), emit: cram, optional: true + tuple val(meta), path("*.crai"), emit: crai, optional: true + tuple val(meta), path("*.csi"), emit: csi, optional: true + tuple val(meta), path('*.log'), emit: log + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -29,22 +30,24 @@ process DRAGMAP_ALIGN { def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def reads_command = meta.single_end ? "-1 $reads" : "-1 ${reads[0]} -2 ${reads[1]}" - def samtools_command = sort_bam ? 'sort' : 'view' - def extension_pattern = /(--output-fmt|-O)+\s+(\S+)/ - def extension_matcher = (args2 =~ extension_pattern) - def extension = extension_matcher.getCount() > 0 ? extension_matcher[0][2].toLowerCase() : "bam" - def reference = fasta && extension=="cram" ? "--reference ${fasta}" : "" - if (!fasta && extension=="cram") error "Fasta reference is required for CRAM output" + def reads_command = meta.single_end ? "-1 ${reads}" : "-1 ${reads[0]} -2 ${reads[1]}" + def samtools_command = sort_bam ? 'sort' : 'view' + def extension_pattern = /(--output-fmt|-O)+\s+(\S+)/ + def extension_matcher = (args2 =~ extension_pattern) + def extension = extension_matcher.getCount() > 0 ? extension_matcher[0][2].toLowerCase() : "bam" + def reference = fasta && extension == "cram" ? "--reference ${fasta}" : "" + if (!fasta && extension == "cram") { + error("Fasta reference is required for CRAM output") + } """ dragen-os \\ - -r $hashmap \\ - $args \\ - --num-threads $task.cpus \\ - $reads_command \\ + -r ${hashmap} \\ + ${args} \\ + --num-threads ${task.cpus} \\ + ${reads_command} \\ 2> >(tee ${prefix}.dragmap.log >&2) \\ - | samtools $samtools_command $args2 --threads $task.cpus ${reference} -o ${prefix}.${extension} - + | samtools ${samtools_command} ${args2} --threads ${task.cpus} ${reference} -o ${prefix}.${extension} - cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -58,14 +61,17 @@ process DRAGMAP_ALIGN { def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def extension_pattern = /(--output-fmt|-O)+\s+(\S+)/ - def extension_matcher = (args2 =~ extension_pattern) + def extension_matcher = (args2 =~ extension_pattern) def extension = extension_matcher.getCount() > 0 ? extension_matcher[0][2].toLowerCase() : "bam" - if (!fasta && extension=="cram") error "Fasta reference is required for CRAM output" + if (!fasta && extension == "cram") { + error("Fasta reference is required for CRAM output") + } def create_index = "" if (extension == "cram") { create_index = "touch ${prefix}.crai" - } else if (extension == "bam") { + } + else if (extension == "bam") { create_index = "touch ${prefix}.csi" } diff --git a/modules/nf-core/dragmap/align/tests/main.nf.test b/modules/nf-core/dragmap/align/tests/main.nf.test index d688c291c137..5abe76f6a757 100644 --- a/modules/nf-core/dragmap/align/tests/main.nf.test +++ b/modules/nf-core/dragmap/align/tests/main.nf.test @@ -40,12 +40,13 @@ nextflow_process { } then { + assert { process.success } assertAll ( - { assert process.success }, { assert snapshot( file(process.out.bam[0][1]).name, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - file(process.out.versions[0]).name + process.out.versions, + path(process.out.versions[0]).yaml ).match() } ) } @@ -83,12 +84,13 @@ nextflow_process { } then { + assert { process.success } assertAll ( - { assert process.success }, { assert snapshot( file(process.out.bam[0][1]).name, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - file(process.out.versions[0]).name + process.out.versions, + path(process.out.versions[0]).yaml ).match() } ) } @@ -129,12 +131,13 @@ nextflow_process { } then { + assert { process.success } assertAll ( - { assert process.success }, { assert snapshot( file(process.out.bam[0][1]).name, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - file(process.out.versions[0]).name + process.out.versions, + path(process.out.versions[0]).yaml ).match() } ) } @@ -175,12 +178,13 @@ nextflow_process { } then { + assert { process.success } assertAll ( - { assert process.success }, { assert snapshot( file(process.out.bam[0][1]).name, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - file(process.out.versions[0]).name + process.out.versions, + path(process.out.versions[0]).yaml ).match() } ) } @@ -221,12 +225,13 @@ nextflow_process { } then { + assert { process.success } assertAll ( - { assert process.success }, { assert snapshot( file(process.out.bam[0][1]).name, file(process.out.log[0][1]).readLines().findAll { it.startsWith("decompHash") }, - file(process.out.versions[0]).name + process.out.versions, + path(process.out.versions[0]).yaml ).match() } ) } @@ -268,16 +273,13 @@ nextflow_process { } then { + assert { process.success } assertAll ( - { assert process.success }, { assert snapshot( - file(process.out.bam[0][1]).name, - file(process.out.log[0][1]).name, - file(process.out.versions[0]).name + process.out, + path(process.out.versions[0]).yaml ).match() } ) } - } - } diff --git a/modules/nf-core/dragmap/align/tests/main.nf.test.snap b/modules/nf-core/dragmap/align/tests/main.nf.test.snap index 4bd60ebf49d5..9a63fde0071f 100644 --- a/modules/nf-core/dragmap/align/tests/main.nf.test.snap +++ b/modules/nf-core/dragmap/align/tests/main.nf.test.snap @@ -10,13 +10,22 @@ "decompHashTableAutoHits...", "decompHashTableSetFlags..." ], - "versions.yml" + [ + "versions.yml:md5,bec50713b6dac1cc16fe68b731848394" + ], + { + "DRAGMAP_ALIGN": { + "dragmap": "1.2.1", + "samtools": "1.19.2", + "pigz": "2.3.4" + } + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-03-20T10:46:54.961203552" + "timestamp": "2025-04-10T11:33:50.428894432" }, "homo_sapiens - [fastq1, fastq2], hashtable, fasta, true": { "content": [ @@ -29,13 +38,22 @@ "decompHashTableAutoHits...", "decompHashTableSetFlags..." ], - "versions.yml" + [ + "versions.yml:md5,bec50713b6dac1cc16fe68b731848394" + ], + { + "DRAGMAP_ALIGN": { + "dragmap": "1.2.1", + "samtools": "1.19.2", + "pigz": "2.3.4" + } + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-03-20T10:47:24.495131137" + "timestamp": "2025-04-10T11:34:27.492548556" }, "sarscov2 - fastq, hashtable, fasta, true": { "content": [ @@ -48,13 +66,22 @@ "decompHashTableAutoHits...", "decompHashTableSetFlags..." ], - "versions.yml" + [ + "versions.yml:md5,bec50713b6dac1cc16fe68b731848394" + ], + { + "DRAGMAP_ALIGN": { + "dragmap": "1.2.1", + "samtools": "1.19.2", + "pigz": "2.3.4" + } + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-03-20T10:46:42.57679755" + "timestamp": "2025-04-10T11:33:39.843877739" }, "sarscov2 - [fastq1, fastq2], hashtable, fasta, true": { "content": [ @@ -67,25 +94,118 @@ "decompHashTableAutoHits...", "decompHashTableSetFlags..." ], - "versions.yml" + [ + "versions.yml:md5,bec50713b6dac1cc16fe68b731848394" + ], + { + "DRAGMAP_ALIGN": { + "dragmap": "1.2.1", + "samtools": "1.19.2", + "pigz": "2.3.4" + } + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-03-20T10:47:08.943445149" + "timestamp": "2025-04-10T11:34:00.702498161" }, "sarscov2 - [fastq1, fastq2], hashtable, fasta, true - stub": { "content": [ - "test.bam", - "test.log", - "versions.yml" + { + "0": [ + + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": false + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + "versions.yml:md5,bec50713b6dac1cc16fe68b731848394" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "crai": [ + + ], + "cram": [ + + ], + "csi": [ + [ + { + "id": "test", + "single_end": false + }, + "test.csi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sam": [ + + ], + "versions": [ + "versions.yml:md5,bec50713b6dac1cc16fe68b731848394" + ] + }, + { + "DRAGMAP_ALIGN": { + "dragmap": "1.2.1", + "samtools": "1.19.2", + "pigz": "2.3.4" + } + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-03-20T10:47:38.346392133" + "timestamp": "2025-04-10T11:13:17.187912755" }, "sarscov2 - fastq, hashtable, fasta, false": { "content": [ @@ -98,12 +218,21 @@ "decompHashTableAutoHits...", "decompHashTableSetFlags..." ], - "versions.yml" + [ + "versions.yml:md5,bec50713b6dac1cc16fe68b731848394" + ], + { + "DRAGMAP_ALIGN": { + "dragmap": "1.2.1", + "samtools": "1.19.2", + "pigz": "2.3.4" + } + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-03-20T10:46:28.406548681" + "timestamp": "2025-04-10T11:33:28.056988229" } } \ No newline at end of file diff --git a/modules/nf-core/dragmap/hashtable/environment.yml b/modules/nf-core/dragmap/hashtable/environment.yml index abd4d3f261e3..8225f820ca51 100644 --- a/modules/nf-core/dragmap/hashtable/environment.yml +++ b/modules/nf-core/dragmap/hashtable/environment.yml @@ -4,4 +4,5 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::dragmap=1.3.0 + # WARN: Do not update this tool to 1.3.0 until https://github.com/Illumina/DRAGMAP/issues/47 is resolved + - bioconda::dragmap=1.2.1 diff --git a/modules/nf-core/dragmap/hashtable/main.nf b/modules/nf-core/dragmap/hashtable/main.nf index 24792d7b9c65..e86b110094a8 100644 --- a/modules/nf-core/dragmap/hashtable/main.nf +++ b/modules/nf-core/dragmap/hashtable/main.nf @@ -1,18 +1,19 @@ process DRAGMAP_HASHTABLE { - tag "$fasta" + tag "${fasta}" label 'process_high' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/dragmap:1.3.0--h91baf5a_3': - 'biocontainers/dragmap:1.3.0--h91baf5a_3' }" + // WARN: Do not update this tool to 1.3.0 until https://github.com/Illumina/DRAGMAP/issues/47 is resolved + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/dragmap:1.2.1--h72d16da_1' + : 'biocontainers/dragmap:1.2.1--h72d16da_1'}" input: tuple val(meta), path(fasta) output: - tuple val(meta), path("dragmap") , emit: hashmap - path "versions.yml" , emit: versions + tuple val(meta), path("dragmap"), emit: hashmap + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -23,10 +24,10 @@ process DRAGMAP_HASHTABLE { mkdir dragmap dragen-os \\ --build-hash-table true \\ - --ht-reference $fasta \\ + --ht-reference ${fasta} \\ --output-directory dragmap \\ - $args \\ - --ht-num-threads $task.cpus + ${args} \\ + --ht-num-threads ${task.cpus} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -43,5 +44,4 @@ process DRAGMAP_HASHTABLE { dragmap: \$(echo \$(dragen-os --version 2>&1)) END_VERSIONS """ - } diff --git a/modules/nf-core/dragmap/hashtable/tests/main.nf.test b/modules/nf-core/dragmap/hashtable/tests/main.nf.test index 474039911f4f..f22b453feb4d 100644 --- a/modules/nf-core/dragmap/hashtable/tests/main.nf.test +++ b/modules/nf-core/dragmap/hashtable/tests/main.nf.test @@ -23,16 +23,16 @@ nextflow_process { } then { + assert { process.success } assertAll( - { assert process.success }, { assert snapshot( file(process.out.hashmap[0][1]).name, - file(process.out.versions[0]).name + process.out.versions, + path(process.out.versions[0]).yaml ).match() } ) } - } test("sarscov2 - fasta - stub") { @@ -51,19 +51,16 @@ nextflow_process { } then { + assert { process.success } assertAll( - { assert process.success }, { assert snapshot( - file(process.out.hashmap[0][1]).name, - file(process.out.versions[0]).name - ).match() - } + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } - } // TODO Add test using alt-masked bed file // https://github.com/Illumina/dragmap#build-hash-table-using-an-alt-masked-bed-file - } diff --git a/modules/nf-core/dragmap/hashtable/tests/main.nf.test.snap b/modules/nf-core/dragmap/hashtable/tests/main.nf.test.snap index 9b4b90d8a3cb..af7efb419b0e 100644 --- a/modules/nf-core/dragmap/hashtable/tests/main.nf.test.snap +++ b/modules/nf-core/dragmap/hashtable/tests/main.nf.test.snap @@ -1,16 +1,62 @@ { "sarscov2 - fasta - stub": { "content": [ - "dragmap", - "versions.yml" + { + "0": [ + [ + { + "id": "test" + }, + [ + + ] + ] + ], + "1": [ + "versions.yml:md5,050c28333b92fac50eec250c28b841d0" + ], + "hashmap": [ + [ + { + "id": "test" + }, + [ + + ] + ] + ], + "versions": [ + "versions.yml:md5,050c28333b92fac50eec250c28b841d0" + ] + }, + { + "DRAGMAP_HASHTABLE": { + "dragmap": "1.2.1" + } + } ], - "timestamp": "2023-11-22T13:42:22.53412378" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T11:34:52.49644133" }, "sarscov2 - fasta": { "content": [ "dragmap", - "versions.yml" + [ + "versions.yml:md5,050c28333b92fac50eec250c28b841d0" + ], + { + "DRAGMAP_HASHTABLE": { + "dragmap": "1.2.1" + } + } ], - "timestamp": "2023-11-22T12:53:25.493202451" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T11:34:44.786652653" } } \ No newline at end of file diff --git a/modules/nf-core/ensemblvep/download/environment.yml b/modules/nf-core/ensemblvep/download/environment.yml index cac59e882060..ca3c7434b74d 100644 --- a/modules/nf-core/ensemblvep/download/environment.yml +++ b/modules/nf-core/ensemblvep/download/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::ensembl-vep=113.0 + - bioconda::ensembl-vep=113.4 diff --git a/modules/nf-core/ensemblvep/download/main.nf b/modules/nf-core/ensemblvep/download/main.nf index 0664a2dfb929..bed8c858b421 100644 --- a/modules/nf-core/ensemblvep/download/main.nf +++ b/modules/nf-core/ensemblvep/download/main.nf @@ -4,8 +4,8 @@ process ENSEMBLVEP_DOWNLOAD { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ensembl-vep:113.0--pl5321h2a3209d_0' : - 'biocontainers/ensembl-vep:113.0--pl5321h2a3209d_0' }" + 'https://depot.galaxyproject.org/singularity/ensembl-vep:113.4--pl5321h2a3209d_0' : + 'biocontainers/ensembl-vep:113.4--pl5321h2a3209d_0' }" input: tuple val(meta), val(assembly), val(species), val(cache_version) diff --git a/modules/nf-core/ensemblvep/filtervep/environment.yml b/modules/nf-core/ensemblvep/filtervep/environment.yml index cac59e882060..ca3c7434b74d 100644 --- a/modules/nf-core/ensemblvep/filtervep/environment.yml +++ b/modules/nf-core/ensemblvep/filtervep/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::ensembl-vep=113.0 + - bioconda::ensembl-vep=113.4 diff --git a/modules/nf-core/ensemblvep/filtervep/main.nf b/modules/nf-core/ensemblvep/filtervep/main.nf index 69245df0e27c..94a1b7104ff9 100644 --- a/modules/nf-core/ensemblvep/filtervep/main.nf +++ b/modules/nf-core/ensemblvep/filtervep/main.nf @@ -4,8 +4,8 @@ process ENSEMBLVEP_FILTERVEP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ensembl-vep:113.0--pl5321h2a3209d_0' : - 'biocontainers/ensembl-vep:113.0--pl5321h2a3209d_0' }" + 'https://depot.galaxyproject.org/singularity/ensembl-vep:113.4--pl5321h2a3209d_0' : + 'biocontainers/ensembl-vep:113.4--pl5321h2a3209d_0' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/ensemblvep/vep/environment.yml b/modules/nf-core/ensemblvep/vep/environment.yml index cac59e882060..ca3c7434b74d 100644 --- a/modules/nf-core/ensemblvep/vep/environment.yml +++ b/modules/nf-core/ensemblvep/vep/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::ensembl-vep=113.0 + - bioconda::ensembl-vep=113.4 diff --git a/modules/nf-core/ensemblvep/vep/main.nf b/modules/nf-core/ensemblvep/vep/main.nf index 7bd74fc4ae32..b57c236d0442 100644 --- a/modules/nf-core/ensemblvep/vep/main.nf +++ b/modules/nf-core/ensemblvep/vep/main.nf @@ -4,8 +4,8 @@ process ENSEMBLVEP_VEP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ensembl-vep:113.0--pl5321h2a3209d_0' : - 'biocontainers/ensembl-vep:113.0--pl5321h2a3209d_0' }" + 'https://depot.galaxyproject.org/singularity/ensembl-vep:113.4--pl5321h2a3209d_0' : + 'biocontainers/ensembl-vep:113.4--pl5321h2a3209d_0' }" input: tuple val(meta), path(vcf), path(custom_extra_files) diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 033f4154a417..23e16634c303 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -29,7 +29,7 @@ process FASTQC { // 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').toFloat() / task.cpus : null + def memory_in_mb = task.memory ? task.memory.toUnit('MB') / task.cpus : null // FastQC memory value allowed range (100 - 10000) def fastqc_memory = memory_in_mb > 10000 ? 10000 : (memory_in_mb < 100 ? 100 : memory_in_mb) diff --git a/modules/nf-core/fcs/fcsgx/main.nf b/modules/nf-core/fcs/fcsgx/main.nf index 1244b9b768d8..6e323385955e 100644 --- a/modules/nf-core/fcs/fcsgx/main.nf +++ b/modules/nf-core/fcs/fcsgx/main.nf @@ -1,3 +1,10 @@ +def deprecation_message = """ +WARNING: This module has been deprecated. Please use nf-core/modules/fcsgx/rungx + +Reason: +This module is now renamed as FCSGX_RUNGX and as been updated to the latest version +""" + process FCS_FCSGX { tag "$meta.id" label 'process_low' @@ -13,12 +20,15 @@ process FCS_FCSGX { output: tuple val(meta), path("out/*.fcs_gx_report.txt"), emit: fcs_gx_report tuple val(meta), path("out/*.taxonomy.rpt") , emit: taxonomy_report - path "versions.yml" , emit: versions + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: + // Comment out this block to disable the deprecation warning + assert false: deprecation_message + // Exit if running this module with -profile conda / -profile mamba if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { error "FCS_FCSGX module does not support Conda. Please use Docker / Singularity / Podman instead." @@ -43,6 +53,9 @@ process FCS_FCSGX { """ stub: + // Comment out this block to disable the deprecation warning + assert false: deprecation_message + // Exit if running this module with -profile conda / -profile mamba if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { error "FCS_FCSGX module does not support Conda. Please use Docker / Singularity / Podman instead." diff --git a/modules/nf-core/fcs/fcsgx/tests/main.nf.test b/modules/nf-core/fcs/fcsgx/tests/main.nf.test new file mode 100644 index 000000000000..61a547122812 --- /dev/null +++ b/modules/nf-core/fcs/fcsgx/tests/main.nf.test @@ -0,0 +1,60 @@ +nextflow_process { + + name "Test Process FCS_FCSGX" + script "../main.nf" + process "FCS_FCSGX" + + tag "modules" + tag "modules_nfcore" + tag "fcs" + tag "fcs/fcsgx" + + test("sarscov2 - fasta") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.failed }, + { assert process.errorReport.contains("WARNING: This module has been deprecated. Please use nf-core/modules/fcsgx/rungx")} + ) + } + + } + + test("sarscov2 - fasta - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true), + ] + input[1] = [] + """ + } + } + + then { + assertAll( + { assert process.failed }, + { assert process.errorReport.contains("WARNING: This module has been deprecated. Please use nf-core/modules/fcsgx/rungx")} + ) + } + + } + +} diff --git a/modules/nf-core/freyja/boot/environment.yml b/modules/nf-core/freyja/boot/environment.yml index 0b5b6b06f37c..2211302befe6 100644 --- a/modules/nf-core/freyja/boot/environment.yml +++ b/modules/nf-core/freyja/boot/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::freyja=1.5.0 + - bioconda::freyja=1.5.3 diff --git a/modules/nf-core/freyja/boot/main.nf b/modules/nf-core/freyja/boot/main.nf index ca1f1a3515a7..253848d2ea47 100644 --- a/modules/nf-core/freyja/boot/main.nf +++ b/modules/nf-core/freyja/boot/main.nf @@ -5,8 +5,8 @@ process FREYJA_BOOT { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/freyja:1.5.0--pyhdfd78af_0': - 'biocontainers/freyja:1.5.0--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/freyja:1.5.3--pyhdfd78af_1' : + 'biocontainers/freyja:1.5.3--pyhdfd78af_1' }" input: tuple val(meta), path(variants), path(depths) diff --git a/modules/nf-core/freyja/boot/tests/main.nf.test.snap b/modules/nf-core/freyja/boot/tests/main.nf.test.snap index 334c743f2d57..7ab54236eff6 100644 --- a/modules/nf-core/freyja/boot/tests/main.nf.test.snap +++ b/modules/nf-core/freyja/boot/tests/main.nf.test.snap @@ -2,13 +2,13 @@ "versions": { "content": [ [ - "versions.yml:md5,a2af061943f186aa529b80a419a8fcc1" + "versions.yml:md5,89cd12da2e4e4c6de66bf39a5eb3ec57" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-02T16:10:15.064948172" + "timestamp": "2025-04-01T16:54:39.243225144" } } \ No newline at end of file diff --git a/modules/nf-core/freyja/demix/environment.yml b/modules/nf-core/freyja/demix/environment.yml index 0b5b6b06f37c..2211302befe6 100644 --- a/modules/nf-core/freyja/demix/environment.yml +++ b/modules/nf-core/freyja/demix/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::freyja=1.5.0 + - bioconda::freyja=1.5.3 diff --git a/modules/nf-core/freyja/demix/main.nf b/modules/nf-core/freyja/demix/main.nf index 0ae3246bafb8..713fcab392e9 100644 --- a/modules/nf-core/freyja/demix/main.nf +++ b/modules/nf-core/freyja/demix/main.nf @@ -5,8 +5,8 @@ process FREYJA_DEMIX { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/freyja:1.5.0--pyhdfd78af_0': - 'biocontainers/freyja:1.5.0--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/freyja:1.5.3--pyhdfd78af_1' : + 'biocontainers/freyja:1.5.3--pyhdfd78af_1' }" input: tuple val(meta), path(variants), path(depths) diff --git a/modules/nf-core/freyja/demix/tests/main.nf.test.snap b/modules/nf-core/freyja/demix/tests/main.nf.test.snap index f36e9cc6c80d..27b02fbb4447 100644 --- a/modules/nf-core/freyja/demix/tests/main.nf.test.snap +++ b/modules/nf-core/freyja/demix/tests/main.nf.test.snap @@ -2,13 +2,13 @@ "versions": { "content": [ [ - "versions.yml:md5,a9c5d4ae8f93de8cbc08c7d87debd89c" + "versions.yml:md5,5076e7980c56cec60dc362b60bc2fd2e" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-02T16:10:46.778891705" + "timestamp": "2025-03-28T13:58:06.868765486" } } \ No newline at end of file diff --git a/modules/nf-core/freyja/update/environment.yml b/modules/nf-core/freyja/update/environment.yml index 0b5b6b06f37c..a5625a29f45b 100644 --- a/modules/nf-core/freyja/update/environment.yml +++ b/modules/nf-core/freyja/update/environment.yml @@ -1,7 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - - conda-forge - bioconda + - conda-forge dependencies: - - bioconda::freyja=1.5.0 + - bioconda::freyja=1.5.3 diff --git a/modules/nf-core/freyja/update/main.nf b/modules/nf-core/freyja/update/main.nf index 4d4b6857c60f..36311b170fca 100644 --- a/modules/nf-core/freyja/update/main.nf +++ b/modules/nf-core/freyja/update/main.nf @@ -5,14 +5,14 @@ process FREYJA_UPDATE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/freyja:1.5.0--pyhdfd78af_0': - 'biocontainers/freyja:1.5.0--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/freyja:1.5.3--pyhdfd78af_1' : + 'biocontainers/freyja:1.5.3--pyhdfd78af_1' }" input: val db_name output: - path "${db_name}/usher_barcodes.csv" , emit: barcodes + path "${db_name}/usher_barcodes.feather" , emit: barcodes path "${db_name}/lineages.yml" , emit: lineages_topology path "${db_name}/curated_lineages.json", emit: lineages_meta path "versions.yml" , emit: versions diff --git a/modules/nf-core/freyja/update/meta.yml b/modules/nf-core/freyja/update/meta.yml index a61b0676f2c3..e962aa5ec8d5 100644 --- a/modules/nf-core/freyja/update/meta.yml +++ b/modules/nf-core/freyja/update/meta.yml @@ -20,10 +20,10 @@ input: description: "The name of the database directory" output: - barcodes: - - ${db_name}/usher_barcodes.csv: + - ${db_name}/usher_barcodes.feather: type: file description: File containing lineage defining barcodes - pattern: "*barcodes.csv" + pattern: "*barcodes.feather" - lineages_topology: - ${db_name}/lineages.yml: type: file diff --git a/modules/nf-core/freyja/update/tests/main.nf.test.snap b/modules/nf-core/freyja/update/tests/main.nf.test.snap index 0f510c6236b5..2d8b91e10daf 100644 --- a/modules/nf-core/freyja/update/tests/main.nf.test.snap +++ b/modules/nf-core/freyja/update/tests/main.nf.test.snap @@ -2,13 +2,13 @@ "versions": { "content": [ [ - "versions.yml:md5,c730cb8a7d262beaace190a3e832a54d" + "versions.yml:md5,6caaebe148beed288dfd00f2af1eaccc" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-02T16:11:08.501478371" + "timestamp": "2025-03-28T12:16:49.598775067" } } \ No newline at end of file diff --git a/modules/nf-core/freyja/variants/environment.yml b/modules/nf-core/freyja/variants/environment.yml index 0b5b6b06f37c..a5625a29f45b 100644 --- a/modules/nf-core/freyja/variants/environment.yml +++ b/modules/nf-core/freyja/variants/environment.yml @@ -1,7 +1,7 @@ --- # yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - - conda-forge - bioconda + - conda-forge dependencies: - - bioconda::freyja=1.5.0 + - bioconda::freyja=1.5.3 diff --git a/modules/nf-core/freyja/variants/main.nf b/modules/nf-core/freyja/variants/main.nf index fc8769712a04..2f7e4020b077 100644 --- a/modules/nf-core/freyja/variants/main.nf +++ b/modules/nf-core/freyja/variants/main.nf @@ -5,8 +5,8 @@ process FREYJA_VARIANTS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/freyja:1.5.0--pyhdfd78af_0': - 'biocontainers/freyja:1.5.0--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/freyja:1.5.3--pyhdfd78af_1' : + 'biocontainers/freyja:1.5.3--pyhdfd78af_1' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/freyja/variants/tests/main.nf.test.snap b/modules/nf-core/freyja/variants/tests/main.nf.test.snap index c85e803266b3..607eea84704a 100644 --- a/modules/nf-core/freyja/variants/tests/main.nf.test.snap +++ b/modules/nf-core/freyja/variants/tests/main.nf.test.snap @@ -13,7 +13,7 @@ ] ], "1": [ - "versions.yml:md5,10000e2412ba93678d3a4345fd98a2e3" + "versions.yml:md5,44e6cfa152c1ba5dd5c424c804a0c062" ], "variants": [ [ @@ -26,14 +26,14 @@ ] ], "versions": [ - "versions.yml:md5,10000e2412ba93678d3a4345fd98a2e3" + "versions.yml:md5,44e6cfa152c1ba5dd5c424c804a0c062" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-02T16:11:32.315489497" + "timestamp": "2025-03-28T12:42:58.200885929" } } \ No newline at end of file diff --git a/modules/nf-core/fusioncatcher/build/environment.yml b/modules/nf-core/fusioncatcher/build/environment.yml new file mode 100644 index 000000000000..25f7417c5ac0 --- /dev/null +++ b/modules/nf-core/fusioncatcher/build/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::fusioncatcher=1.33" diff --git a/modules/nf-core/fusioncatcher/build/main.nf b/modules/nf-core/fusioncatcher/build/main.nf new file mode 100644 index 000000000000..c24865abb28f --- /dev/null +++ b/modules/nf-core/fusioncatcher/build/main.nf @@ -0,0 +1,45 @@ +process FUSIONCATCHER_BUILD { + tag "${meta.id}" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/fusioncatcher:1.33--hdfd78af_5': + 'biocontainers/fusioncatcher:1.33--hdfd78af_5' }" + + input: + val(meta) + + output: + tuple val(meta), path("${prefix}") , emit: reference + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + """ + fusioncatcher-build \\ + ${args} \\ + --output=${prefix} \\ + --threads=${task.cpus} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fusioncatcher: "\$(fusioncatcher --version 2>&1 | awk '{print \$2}')" + END_VERSIONS + """ + + stub: + prefix = task.ext.prefix ?: "${meta.id}" + """ + mkdir ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fusioncatcher: "\$(fusioncatcher --version 2>&1 | awk '{print \$2}')" + END_VERSIONS + """ +} diff --git a/modules/nf-core/fusioncatcher/build/meta.yml b/modules/nf-core/fusioncatcher/build/meta.yml new file mode 100644 index 000000000000..54ccb5237ca1 --- /dev/null +++ b/modules/nf-core/fusioncatcher/build/meta.yml @@ -0,0 +1,47 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "fusioncatcher_build" +description: Build references for fusioncatcher +keywords: + - references + - fusions + - rna + +tools: + - fusioncatcher: + description: Build genome for fusioncatcher + homepage: https://github.com/ndaniel/fusioncatcher/ + documentation: https://github.com/ndaniel/fusioncatcher/blob/master/doc/manual.md + tool_dev_url: https://github.com/ndaniel/fusioncatcher/ + doi: "10.1101/011650" + licence: ["GPL v3"] + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + + +output: + - reference: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - ${prefix}: + type: file + description: Diretory containing the fusioncatcher reference files + + - versions: + - "versions.yml": + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@nvnieuwk" +maintainers: + - "@nvnieuwk" diff --git a/modules/nf-core/fusioncatcher/build/tests/main.nf.test b/modules/nf-core/fusioncatcher/build/tests/main.nf.test new file mode 100644 index 000000000000..315c1b117320 --- /dev/null +++ b/modules/nf-core/fusioncatcher/build/tests/main.nf.test @@ -0,0 +1,35 @@ +nextflow_process { + + name "Test Process FUSIONCATCHER_BUILD" + script "../main.nf" + process "FUSIONCATCHER_BUILD" + + tag "modules" + tag "modules_nfcore" + tag "fusioncatcher" + tag "fusioncatcher/build" + + // Only stub tests because this module downloads about 50 GB of data + + test("stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ id:'test', single_end:false ] // meta map + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/fusioncatcher/build/tests/main.nf.test.snap b/modules/nf-core/fusioncatcher/build/tests/main.nf.test.snap new file mode 100644 index 000000000000..4a301fcb7993 --- /dev/null +++ b/modules/nf-core/fusioncatcher/build/tests/main.nf.test.snap @@ -0,0 +1,41 @@ +{ + "stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + + ] + ] + ], + "1": [ + "versions.yml:md5,e049cf8ceb55a41bd8f05db0931a8c14" + ], + "reference": [ + [ + { + "id": "test", + "single_end": false + }, + [ + + ] + ] + ], + "versions": [ + "versions.yml:md5,e049cf8ceb55a41bd8f05db0931a8c14" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T16:50:59.596294661" + } +} \ No newline at end of file diff --git a/modules/nf-core/fusioncatcher/fusioncatcher/environment.yml b/modules/nf-core/fusioncatcher/fusioncatcher/environment.yml new file mode 100644 index 000000000000..25f7417c5ac0 --- /dev/null +++ b/modules/nf-core/fusioncatcher/fusioncatcher/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::fusioncatcher=1.33" diff --git a/modules/nf-core/fusioncatcher/fusioncatcher/main.nf b/modules/nf-core/fusioncatcher/fusioncatcher/main.nf new file mode 100644 index 000000000000..5c2a8f38dd02 --- /dev/null +++ b/modules/nf-core/fusioncatcher/fusioncatcher/main.nf @@ -0,0 +1,65 @@ +process FUSIONCATCHER_FUSIONCATCHER { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/fusioncatcher:1.33--hdfd78af_5': + 'biocontainers/fusioncatcher:1.33--hdfd78af_5' }" + + input: + tuple val(meta), path(fastqs) + tuple val(meta2), path(reference) + + output: + tuple val(meta), path("*.fusion-genes.txt"), emit: fusions, optional: true + tuple val(meta), path("*.summary.txt") , emit: summary, optional: true + tuple val(meta), path("*.log") , emit: log + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def input = fastqs.join(",") + + def avail_mem = 3072 + if (!task.memory) { + log.info '[FusionCatcher] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' + } else { + avail_mem = (task.memory.mega*0.8).intValue() + } + """ + fusioncatcher \\ + --input=${input} \\ + --output=. \\ + --data=${reference} \\ + --threads=${task.cpus} \\ + --Xmx=${avail_mem} \\ + ${args} + + mv final-list_candidate-fusion-genes.txt ${prefix}.fusion-genes.txt + mv summary_candidate_fusions.txt ${prefix}.summary.txt + mv fusioncatcher.log ${prefix}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fusioncatcher: "\$(fusioncatcher --version 2>&1 | awk '{print \$2}')" + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.fusion-genes.txt + touch ${prefix}.summary.txt + touch ${prefix}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fusioncatcher: "\$(fusioncatcher --version 2>&1 | awk '{print \$2}')" + END_VERSIONS + """ +} diff --git a/modules/nf-core/fusioncatcher/fusioncatcher/meta.yml b/modules/nf-core/fusioncatcher/fusioncatcher/meta.yml new file mode 100644 index 000000000000..bfd7848efd59 --- /dev/null +++ b/modules/nf-core/fusioncatcher/fusioncatcher/meta.yml @@ -0,0 +1,78 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "fusioncatcher_fusioncatcher" +description: FusionCatcher searches for novel/known somatic fusion genes, translocations, and chimeras in RNA-seq data +keywords: + - fusion + - rna + - fastq +tools: + - fusioncatcher: + description: FusionCatcher searches for novel/known somatic fusion genes, translocations, and chimeras in RNA-seq data + homepage: https://github.com/ndaniel/fusioncatcher + documentation: https://github.com/ndaniel/fusioncatcher/wiki + tool_dev_url: https://github.com/ndaniel/fusioncatcher + doi: "10.1101/011650v1" + licence: ["GPL v3"] + identifier: biotools:fusioncatcher + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - fastqs: + type: list + description: A list of input fastq files + pattern: "*.{fastq,fq}.gz" + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. `[ id:'sample1', single_end:false ]` + - reference: + type: file + description: Directory containing fusioncatcher reference files + +output: + - fusions: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.fusion-genes.txt": + type: file + description: The detected fusions in the input files + pattern: "*.fusion-genes.txt" + - summary: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.summary.txt": + type: file + description: The generated summary + pattern: "*.summary.txt" + - log: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*.log": + type: file + description: The Fusioncatcher log + pattern: "*.log" + - versions: + - "versions.yml": + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@nvnieuwk" +maintainers: + - "@nvnieuwk" diff --git a/modules/nf-core/fusioncatcher/fusioncatcher/tests/main.nf.test b/modules/nf-core/fusioncatcher/fusioncatcher/tests/main.nf.test new file mode 100644 index 000000000000..28e9d13ecaa4 --- /dev/null +++ b/modules/nf-core/fusioncatcher/fusioncatcher/tests/main.nf.test @@ -0,0 +1,43 @@ +nextflow_process { + + name "Test Process FUSIONCATCHER_FUSIONCATCHER" + script "../main.nf" + process "FUSIONCATCHER_FUSIONCATCHER" + + tag "modules" + tag "modules_nfcore" + tag "fusioncatcher" + tag "fusioncatcher/fusioncatcher" + + // Only stub tests because the refernce is about 50 GB of data + + test("sarscov2 - fastq - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true), + ] + input[1] = [ + [ id:'reference'], + [] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/fusioncatcher/fusioncatcher/tests/main.nf.test.snap b/modules/nf-core/fusioncatcher/fusioncatcher/tests/main.nf.test.snap new file mode 100644 index 000000000000..a1916e55308a --- /dev/null +++ b/modules/nf-core/fusioncatcher/fusioncatcher/tests/main.nf.test.snap @@ -0,0 +1,73 @@ +{ + "sarscov2 - fastq - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fusion-genes.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,6a54daab2ec7621d8493678e832cf45e" + ], + "fusions": [ + [ + { + "id": "test", + "single_end": false + }, + "test.fusion-genes.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "summary": [ + [ + { + "id": "test", + "single_end": false + }, + "test.summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,6a54daab2ec7621d8493678e832cf45e" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-11T11:01:13.392512529" + } +} \ No newline at end of file diff --git a/modules/nf-core/gatk4/modelsegments/environment.yml b/modules/nf-core/gatk4/modelsegments/environment.yml new file mode 100644 index 000000000000..b562b72c740c --- /dev/null +++ b/modules/nf-core/gatk4/modelsegments/environment.yml @@ -0,0 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + # renovate: datasource=conda depName=bioconda/gatk4 + - bioconda::gatk4=4.6.1.0 + - bioconda::gcnvkernel=0.9 diff --git a/modules/nf-core/gatk4/modelsegments/main.nf b/modules/nf-core/gatk4/modelsegments/main.nf new file mode 100644 index 000000000000..c3f229685dee --- /dev/null +++ b/modules/nf-core/gatk4/modelsegments/main.nf @@ -0,0 +1,54 @@ +process GATK4_MODELSEGMENTS { + 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/b2/b28daf5d9bb2f0d129dcad1b7410e0dd8a9b087aaf3ec7ced929b1f57624ad98/data': + 'community.wave.seqera.io/library/gatk4_gcnvkernel:e48d414933d188cd' }" + + input: + tuple val(meta), path(counts) + + output: + tuple val(meta), path("*.modelFinal.seg"), emit: segmented + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def avail_mem = 3072 + if (!task.memory) { + log.info '[GATK ModelSegments] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' + } else { + avail_mem = (task.memory.mega*0.8).intValue() + } + """ + gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ + ModelSegments \\ + ${args} \\ + --tmp-dir . \\ + --denoised-copy-ratios ${counts} \\ + -O ./ \\ + --output-prefix ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gatk4: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.modelFinal.seg + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gatk4: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/gatk4/modelsegments/meta.yml b/modules/nf-core/gatk4/modelsegments/meta.yml new file mode 100644 index 000000000000..91b35a5fc4cc --- /dev/null +++ b/modules/nf-core/gatk4/modelsegments/meta.yml @@ -0,0 +1,49 @@ +name: "gatk4_modelsegments" +description: Converts copy number ratios (and optonally allelic counts) to copy number + segments +keywords: + - copyratios + - modelsegments + - gatk4 +tools: + - gatk4: + description: | + Developed in the Data Sciences Platform at the Broad Institute, the toolkit offers a wide variety of tools + with a primary focus on variant discovery and genotyping. Its powerful processing engine + and high-performance computing features make it capable of taking on projects of any size. + homepage: https://gatk.broadinstitute.org/hc/en-us + documentation: https://gatk.broadinstitute.org/hc/en-us/categories/360002369672s + doi: 10.1158/1538-7445.AM2017-3590 + tool_dev_url: "https://github.com/broadinstitute/gatk" + licence: ["Apache-2.0"] + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - counts: + type: file + description: Denoised copy ratios in hdf5 format. + pattern: "*.{hdf5}" +output: + - segmented: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'test', single_end:false ]` + - "*.modelFinal.seg": + type: file + description: Copy number ratio segments. + pattern: "*.{seg}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@lbeltrame" +maintainers: + - "@lbeltrame" diff --git a/modules/nf-core/gatk4/modelsegments/tests/main.nf.test b/modules/nf-core/gatk4/modelsegments/tests/main.nf.test new file mode 100644 index 000000000000..ccad77ba72e5 --- /dev/null +++ b/modules/nf-core/gatk4/modelsegments/tests/main.nf.test @@ -0,0 +1,120 @@ +nextflow_process { + + name "Test Process GATK4_MODELSEGMENTS" + script "../main.nf" + config "./nextflow.config" + process "GATK4_MODELSEGMENTS" + + tag "modules" + tag "modules_nfcore" + tag "gatk4" + tag "gatk4/createreadcountpanelofnormals" + tag "gatk4/collectreadcounts" + tag "gatk4/preprocessintervals" + tag "gatk4/denoisereadcounts" + tag "gatk4/modelsegments" + + setup { + run("GATK4_PREPROCESSINTERVALS"){ + script "../../preprocessintervals/main.nf" + + process { + """ + input[0] = Channel.value([ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[1] = Channel.value([ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)]) + input[2] = Channel.value([ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true)]) + input[3] = [[],[]] + input[4] = [[],[]] + """ + } + } + run("GATK4_COLLECTREADCOUNTS"){ + script "../../collectreadcounts/main.nf" + + process { + """ + intervals = GATK4_PREPROCESSINTERVALS.out.interval_list.map {meta, list -> list} + input[0] = Channel.of( + [[ id:'test', single_end:false ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true)], + ) + .combine( intervals) + input[1] = Channel.value([ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)]) + input[2] = Channel.value([ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)]) + input[3] = Channel.value([ [ id:'test' ], file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true)]) + """ + } + } + run("GATK4_CREATEREADCOUNTPANELOFNORMALS"){ + script "../../createreadcountpanelofnormals/main.nf" + + process { + """ + input[0] = GATK4_COLLECTREADCOUNTS.out.tsv.groupTuple() + """ + } + } + + run("GATK4_DENOISEREADCOUNTS"){ + script "../../denoisereadcounts/main.nf" + process { + """ + input[0] = GATK4_COLLECTREADCOUNTS.out.tsv.first() + input[1] = GATK4_CREATEREADCOUNTPANELOFNORMALS.out.pon + """ + } + } + } + + test("human - modelsegments") { + + when { + + params { + gatk4_collectreadcounts_args = "--format TSV --interval-merging-rule OVERLAPPING_ONLY" + gatk4_createreadcountpanelofnormals_args = "--minimum-interval-median-percentile 1.0 --number-of-eigensamples 2" + } + + process { + """ + input[0] = GATK4_DENOISEREADCOUNTS.out.denoised.first() + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("human - modelsegments - stub") { + + options "-stub " + + when { + + params { + gatk4_collectreadcounts_args = "--format TSV --interval-merging-rule OVERLAPPING_ONLY" + gatk4_createreadcountpanelofnormals_args = "--minimum-interval-median-percentile 1.0 --number-of-eigensamples 2" + } + + process { + """ + input[0] = GATK4_DENOISEREADCOUNTS.out.denoised.first() + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/gatk4/modelsegments/tests/main.nf.test.snap b/modules/nf-core/gatk4/modelsegments/tests/main.nf.test.snap new file mode 100644 index 000000000000..c15c37874ff6 --- /dev/null +++ b/modules/nf-core/gatk4/modelsegments/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "human - modelsegments": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.modelFinal.seg:md5,d4854bf6442d7169c5cf204a3c5e095d" + ] + ], + "1": [ + "versions.yml:md5,fdcfa40d7f7e508c6abb587aea88f033" + ], + "segmented": [ + [ + { + "id": "test", + "single_end": false + }, + "test.modelFinal.seg:md5,d4854bf6442d7169c5cf204a3c5e095d" + ] + ], + "versions": [ + "versions.yml:md5,fdcfa40d7f7e508c6abb587aea88f033" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-10-31T10:33:41.980566137" + }, + "human - modelsegments - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.modelFinal.seg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,fdcfa40d7f7e508c6abb587aea88f033" + ], + "segmented": [ + [ + { + "id": "test", + "single_end": false + }, + "test.modelFinal.seg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,fdcfa40d7f7e508c6abb587aea88f033" + ] + } + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.0" + }, + "timestamp": "2024-10-31T10:33:41.980566137" + } +} diff --git a/modules/nf-core/gatk4/modelsegments/tests/nextflow.config b/modules/nf-core/gatk4/modelsegments/tests/nextflow.config new file mode 100644 index 000000000000..1f7744fb30ee --- /dev/null +++ b/modules/nf-core/gatk4/modelsegments/tests/nextflow.config @@ -0,0 +1,9 @@ +docker.runOptions = '--platform=linux/amd64 -e "HOME=${HOME}" -v /etc/passwd:/etc/passwd:ro -v /etc/shadow:/etc/shadow:ro -v /etc/group:/etc/group:ro -v $HOME:$HOME' +process { + withName: GATK4_COLLECTREADCOUNTS { + ext.args = params.gatk4_collectreadcounts_args + } + withName: GATK4_CREATEREADCOUNTPANELOFNORMALS { + ext.args = params.gatk4_createreadcountpanelofnormals_args + } +} diff --git a/modules/nf-core/gatk4/mutect2/main.nf b/modules/nf-core/gatk4/mutect2/main.nf index 3ac374e03564..756dfca9429e 100644 --- a/modules/nf-core/gatk4/mutect2/main.nf +++ b/modules/nf-core/gatk4/mutect2/main.nf @@ -62,10 +62,10 @@ process GATK4_MUTECT2 { stub: def prefix = task.ext.prefix ?: "${meta.id}" """ - touch ${prefix}.vcf.gz + echo "" | gzip > ${prefix}.vcf.gz touch ${prefix}.vcf.gz.tbi touch ${prefix}.vcf.gz.stats - touch ${prefix}.f1r2.tar.gz + echo "" | gzip > ${prefix}.f1r2.tar.gz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4/mutect2/tests/f1r2.config b/modules/nf-core/gatk4/mutect2/tests/f1r2.config deleted file mode 100644 index 2d3c8a1708a0..000000000000 --- a/modules/nf-core/gatk4/mutect2/tests/f1r2.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = { "--normal-sample $meta.normal_id --f1r2-tar-gz ${meta.id}.f1r2.tar.gz" } -} diff --git a/modules/nf-core/gatk4/mutect2/tests/main.nf.test b/modules/nf-core/gatk4/mutect2/tests/main.nf.test index aea8d226949e..b0e22144c674 100644 --- a/modules/nf-core/gatk4/mutect2/tests/main.nf.test +++ b/modules/nf-core/gatk4/mutect2/tests/main.nf.test @@ -8,10 +8,13 @@ nextflow_process { tag "modules_nfcore" tag "gatk4" tag "gatk4/mutect2" + config "./nextflow.config" - test("tumor_normal_pair") { - config "./pair.config" + test("human - bam - tumor_normal_pair") { when { + params { + module_args = "--normal-sample normal" + } process { """ input[0] = [ @@ -55,7 +58,7 @@ nextflow_process { { assert process.success }, { assert snapshot( - process.out.vcf.collect { file(it[1]).getName() }, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, process.out.tbi.collect { file(it[1]).getName() }, process.out.stats, process.out.f1r2, @@ -66,9 +69,12 @@ nextflow_process { } } - test("tumor_normal_pair_f1r2") { - config "./f1r2.config" + test("human - bam - tumor_normal_pair_f1r2") { + when { + params { + module_args = "--normal-sample normal --f1r2-tar-gz test.f1r2.tar.gz" + } process { """ input[0] = [ @@ -111,7 +117,7 @@ nextflow_process { { assert process.success }, { assert snapshot( - process.out.vcf.collect { file(it[1]).getName() }, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, process.out.tbi.collect { file(it[1]).getName() }, process.out.stats, process.out.f1r2.collect { file(it[1]).getName() }, @@ -121,8 +127,11 @@ nextflow_process { ) } } - test("tumor_single"){ + test("human - bam - tumor_only"){ when { + params { + module_args = '' + } process { """ input[0] = [ @@ -155,7 +164,7 @@ nextflow_process { { assert process.success }, { assert snapshot( - process.out.vcf.collect { file(it[1]).getName() }, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, process.out.tbi.collect { file(it[1]).getName() }, process.out.stats, process.out.f1r2, @@ -165,8 +174,11 @@ nextflow_process { ) } } - test("cram_input"){ + test("human - cram"){ when { + params { + module_args = '' + } process{ """ input[0] = [ @@ -199,7 +211,7 @@ nextflow_process { { assert process.success }, { assert snapshot( - process.out.vcf.collect { file(it[1]).getName() }, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, process.out.tbi.collect { file(it[1]).getName() }, process.out.stats, process.out.f1r2, @@ -210,8 +222,11 @@ nextflow_process { } } - test("generate_pon") { + test("human - bam - generate_pon") { when { + params { + module_args = '' + } process { """ input[0] = [ @@ -244,7 +259,7 @@ nextflow_process { { assert process.success }, { assert snapshot( - process.out.vcf.collect { file(it[1]).getName() }, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, process.out.tbi.collect { file(it[1]).getName() }, process.out.stats, process.out.f1r2, @@ -255,8 +270,11 @@ nextflow_process { } } - test("mitochondria"){ + test("mitochondria - bam"){ when { + params { + module_args = "--mitochondria-mode" + } process { """ input[0] = [ @@ -289,7 +307,7 @@ nextflow_process { { assert process.success }, { assert snapshot( - process.out.vcf.collect { file(it[1]).getName() }, + path(process.out.vcf.get(0).get(1)).vcf.variantsMD5, process.out.tbi.collect { file(it[1]).getName() }, process.out.stats, process.out.f1r2, @@ -300,9 +318,14 @@ nextflow_process { } } - test("tumor_normal_pair_f1r2_stubs"){ - options "-stub-run" + test("human - bam - tumor_normal_pair_f1r2 - stub"){ + + options "-stub" + when { + params { + module_args = '' + } process { """ input[0] = [ @@ -343,15 +366,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { - assert snapshot( - process.out.vcf.collect { file(it[1]).getName() }, - process.out.tbi.collect { file(it[1]).getName() }, - process.out.stats.collect { file(it[1]).getName() }, - process.out.f1r2.collect { file(it[1]).getName() }, - process.out.versions.collect { file(it[1]).getName() } - ).match() - } + { assert snapshot(process.out).match() } ) } diff --git a/modules/nf-core/gatk4/mutect2/tests/main.nf.test.snap b/modules/nf-core/gatk4/mutect2/tests/main.nf.test.snap index b37450f4f47a..80d07bccbe73 100644 --- a/modules/nf-core/gatk4/mutect2/tests/main.nf.test.snap +++ b/modules/nf-core/gatk4/mutect2/tests/main.nf.test.snap @@ -1,33 +1,7 @@ { - "tumor_normal_pair_f1r2_stubs": { + "human - bam - generate_pon": { "content": [ - [ - "test.vcf.gz" - ], - [ - "test.vcf.gz.tbi" - ], - [ - "test.vcf.gz.stats" - ], - [ - "test.f1r2.tar.gz" - ], - [ - "w" - ] - ], - "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" - }, - "timestamp": "2024-10-31T11:49:16.64829295" - }, - "generate_pon": { - "content": [ - [ - "test.vcf.gz" - ], + "876aa6be01c0c8fc71ad8e99ed842240", [ "test.vcf.gz.tbi" ], @@ -47,16 +21,14 @@ ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.4" }, - "timestamp": "2024-10-31T11:48:44.796786166" + "timestamp": "2025-04-08T15:44:32.616294519" }, - "mitochondria": { + "human - cram": { "content": [ - [ - "test.vcf.gz" - ], + "1b65f1a163b517944bf2e4b74230e035", [ "test.vcf.gz.tbi" ], @@ -65,7 +37,7 @@ { "id": "test" }, - "test.vcf.gz.stats:md5,4f77301a125913170b8e9e7828b4ca3f" + "test.vcf.gz.stats:md5,55ed641e16089afb33cdbc478e202d3d" ] ], [ @@ -76,16 +48,14 @@ ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.4" }, - "timestamp": "2024-10-31T11:49:03.399442766" + "timestamp": "2025-04-08T15:42:27.117032089" }, - "cram_input": { + "mitochondria - bam": { "content": [ - [ - "test.vcf.gz" - ], + "ea70f79e33805a2c0b47b32a48a8d26f", [ "test.vcf.gz.tbi" ], @@ -94,7 +64,7 @@ { "id": "test" }, - "test.vcf.gz.stats:md5,55ed641e16089afb33cdbc478e202d3d" + "test.vcf.gz.stats:md5,fc6ea14ca2da346babe78161beea28c9" ] ], [ @@ -105,25 +75,25 @@ ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.4" }, - "timestamp": "2024-10-31T11:45:49.212101867" + "timestamp": "2025-04-08T15:44:46.867520687" }, - "tumor_single": { + "human - bam - tumor_normal_pair": { "content": [ - [ - "test.vcf.gz" - ], + "7418ed45a029394253817a5eb7149334", [ "test.vcf.gz.tbi" ], [ [ { - "id": "test" + "id": "test", + "normal_id": "normal", + "tumor_id": "tumour" }, - "test.vcf.gz.stats:md5,55ed641e16089afb33cdbc478e202d3d" + "test.vcf.gz.stats:md5,17d2091015d04cbd4a26b7a67dc659e6" ] ], [ @@ -134,27 +104,23 @@ ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.4" }, - "timestamp": "2024-10-31T11:42:47.335589964" + "timestamp": "2025-04-08T16:02:48.334206829" }, - "tumor_normal_pair": { + "human - bam - tumor_only": { "content": [ - [ - "test.vcf.gz" - ], + "1b65f1a163b517944bf2e4b74230e035", [ "test.vcf.gz.tbi" ], [ [ { - "id": "test", - "normal_id": "normal", - "tumor_id": "tumour" + "id": "test" }, - "test.vcf.gz.stats:md5,17d2091015d04cbd4a26b7a67dc659e6" + "test.vcf.gz.stats:md5,55ed641e16089afb33cdbc478e202d3d" ] ], [ @@ -165,16 +131,111 @@ ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.4" }, - "timestamp": "2024-10-31T11:36:10.506528759" + "timestamp": "2025-04-08T15:40:12.534802185" }, - "tumor_normal_pair_f1r2": { + "human - bam - tumor_normal_pair_f1r2 - stub": { "content": [ - [ - "test.vcf.gz" - ], + { + "0": [ + [ + { + "id": "test", + "normal_id": "normal", + "tumor_id": "tumour" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + [ + { + "id": "test", + "normal_id": "normal", + "tumor_id": "tumour" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "normal_id": "normal", + "tumor_id": "tumour" + }, + "test.vcf.gz.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "normal_id": "normal", + "tumor_id": "tumour" + }, + "test.f1r2.tar.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "4": [ + "versions.yml:md5,8b99605d0a404d9ccbf8628ca881a8a4" + ], + "f1r2": [ + [ + { + "id": "test", + "normal_id": "normal", + "tumor_id": "tumour" + }, + "test.f1r2.tar.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "stats": [ + [ + { + "id": "test", + "normal_id": "normal", + "tumor_id": "tumour" + }, + "test.vcf.gz.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tbi": [ + [ + { + "id": "test", + "normal_id": "normal", + "tumor_id": "tumour" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "test", + "normal_id": "normal", + "tumor_id": "tumour" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,8b99605d0a404d9ccbf8628ca881a8a4" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-08T15:44:59.443047344" + }, + "human - bam - tumor_normal_pair_f1r2": { + "content": [ + "7418ed45a029394253817a5eb7149334", [ "test.vcf.gz.tbi" ], @@ -196,9 +257,9 @@ ] ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.4" }, - "timestamp": "2024-10-31T11:39:21.909639821" + "timestamp": "2025-04-08T16:25:12.434872797" } } \ No newline at end of file diff --git a/modules/nf-core/gatk4/mutect2/tests/mito.config b/modules/nf-core/gatk4/mutect2/tests/mito.config deleted file mode 100644 index de61d3e24350..000000000000 --- a/modules/nf-core/gatk4/mutect2/tests/mito.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = { "--mitochondria-mode" } -} diff --git a/modules/nf-core/gatk4/mutect2/tests/nextflow.config b/modules/nf-core/gatk4/mutect2/tests/nextflow.config new file mode 100644 index 000000000000..08e942851735 --- /dev/null +++ b/modules/nf-core/gatk4/mutect2/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: GATK4_MUTECT2 { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/gatk4/mutect2/tests/pair.config b/modules/nf-core/gatk4/mutect2/tests/pair.config deleted file mode 100644 index 2a812b8254f7..000000000000 --- a/modules/nf-core/gatk4/mutect2/tests/pair.config +++ /dev/null @@ -1,3 +0,0 @@ -process { - ext.args = { "--normal-sample $meta.normal_id" } -} diff --git a/modules/nf-core/gatk4spark/applybqsr/main.nf b/modules/nf-core/gatk4spark/applybqsr/main.nf index abd4c9946e96..da17760967ca 100644 --- a/modules/nf-core/gatk4spark/applybqsr/main.nf +++ b/modules/nf-core/gatk4spark/applybqsr/main.nf @@ -1,22 +1,22 @@ process GATK4SPARK_APPLYBQSR { - tag "$meta.id" + tag "${meta.id}" label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/gatk4-spark:4.6.1.0--hdfd78af_0': - 'biocontainers/gatk4-spark:4.6.1.0--hdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/gatk4-spark:4.6.1.0--hdfd78af_0' + : 'biocontainers/gatk4-spark:4.6.1.0--hdfd78af_0'}" input: tuple val(meta), path(input), path(input_index), path(bqsr_table), path(intervals) - path fasta - path fai - path dict + path fasta + path fai + path dict output: - tuple val(meta), path("${prefix}.bam") , emit: bam, optional: true + tuple val(meta), path("${prefix}.bam"), emit: bam, optional: true tuple val(meta), path("${prefix}.cram"), emit: cram, optional: true - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -24,26 +24,27 @@ process GATK4SPARK_APPLYBQSR { script: def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}" - def interval_command = intervals ? "--intervals $intervals" : "" + def interval_command = intervals ? "--intervals ${intervals}" : "" def avail_mem = 3072 if (!task.memory) { - log.info '[GATK ApplyBQSRSpark] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK ApplyBQSRSpark] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk \\ --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ ApplyBQSRSpark \\ - --input $input \\ + --input ${input} \\ --output ${prefix}.${input.getExtension()} \\ - --reference $fasta \\ - --bqsr-recal-file $bqsr_table \\ - $interval_command \\ + --reference ${fasta} \\ + --bqsr-recal-file ${bqsr_table} \\ + ${interval_command} \\ --spark-master local[${task.cpus}] \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test b/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test index 53f202161321..25284c769cbb 100644 --- a/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test +++ b/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test @@ -17,27 +17,62 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_baserecalibrator_table'], checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), [] ] - input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) - input[3] = file(params.test_data['sarscov2']['genome']['genome_dict'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } + + test("sarscov2 - bam - stub") { + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + [], + [], + [], + [] + ] + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } } + test("sarscov2 - bam intervals") { when { @@ -45,28 +80,30 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_baserecalibrator_table'], checkIfExists: true), - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] - input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) - input[3] = file(params.test_data['sarscov2']['genome']['genome_dict'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } - } - test("sarscov2 - bam - stub") { + test("sarscov2 - bam intervals -stub") { options "-stub" when { @@ -74,25 +111,27 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - [], - [], - [], - [] + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) ] - input[1] = [] - input[2] = [] - input[3] = [] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } - } test("sarscov2 - cram") { @@ -102,26 +141,57 @@ nextflow_process { """ input[0] = [ [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_baserecalibrator_table'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) ] - input[1] = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - input[2] = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) - input[3] = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } - } + test("sarscov2 - cram -stub") { + options "-stub" + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/test.baserecalibrator.table', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } } diff --git a/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test.snap b/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test.snap index 4af457d39f28..cd2a088c7362 100644 --- a/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test.snap +++ b/modules/nf-core/gatk4spark/applybqsr/tests/main.nf.test.snap @@ -40,13 +40,18 @@ "versions": [ "versions.yml:md5,985dcafacddb7013ec01b73fd9163290" ] + }, + { + "GATK4SPARK_APPLYBQSR": { + "gatk4": "4.6.1.0" + } } ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-17T16:50:02.397152291" + "timestamp": "2025-04-11T14:56:27.915627809" }, "sarscov2 - cram": { "content": [ @@ -79,13 +84,72 @@ "versions": [ "versions.yml:md5,985dcafacddb7013ec01b73fd9163290" ] + }, + { + "GATK4SPARK_APPLYBQSR": { + "gatk4": "4.6.1.0" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-11T14:57:42.699756036" + }, + "sarscov2 - cram -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,985dcafacddb7013ec01b73fd9163290" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,985dcafacddb7013ec01b73fd9163290" + ] + }, + { + "GATK4SPARK_APPLYBQSR": { + "gatk4": "4.6.1.0" + } } ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-17T16:50:30.685886937" + "timestamp": "2025-04-11T14:57:58.189642524" }, "sarscov2 - bam": { "content": [ @@ -118,13 +182,18 @@ "versions": [ "versions.yml:md5,985dcafacddb7013ec01b73fd9163290" ] + }, + { + "GATK4SPARK_APPLYBQSR": { + "gatk4": "4.6.1.0" + } } ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-17T16:49:26.18719288" + "timestamp": "2025-04-11T14:56:13.425170564" }, "sarscov2 - bam intervals": { "content": [ @@ -157,12 +226,71 @@ "versions": [ "versions.yml:md5,985dcafacddb7013ec01b73fd9163290" ] + }, + { + "GATK4SPARK_APPLYBQSR": { + "gatk4": "4.6.1.0" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-11T14:56:55.562307069" + }, + "sarscov2 - bam intervals -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,985dcafacddb7013ec01b73fd9163290" + ], + "bam": [ + [ + { + "id": "test" + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "cram": [ + [ + { + "id": "test" + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,985dcafacddb7013ec01b73fd9163290" + ] + }, + { + "GATK4SPARK_APPLYBQSR": { + "gatk4": "4.6.1.0" + } } ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-17T16:49:49.844595108" + "timestamp": "2025-04-11T14:57:11.97218192" } } \ No newline at end of file diff --git a/modules/nf-core/gatk4spark/baserecalibrator/main.nf b/modules/nf-core/gatk4spark/baserecalibrator/main.nf index 304b1bc5240f..1f9e2cb595f6 100644 --- a/modules/nf-core/gatk4spark/baserecalibrator/main.nf +++ b/modules/nf-core/gatk4spark/baserecalibrator/main.nf @@ -1,23 +1,23 @@ process GATK4SPARK_BASERECALIBRATOR { - tag "$meta.id" + tag "${meta.id}" label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/gatk4-spark:4.6.1.0--hdfd78af_0': - 'biocontainers/gatk4-spark:4.6.1.0--hdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/gatk4-spark:4.6.1.0--hdfd78af_0' + : 'biocontainers/gatk4-spark:4.6.1.0--hdfd78af_0'}" input: tuple val(meta), path(input), path(input_index), path(intervals) - path fasta - path fai - path dict - path known_sites - path known_sites_tbi + path fasta + path fai + path dict + path known_sites + path known_sites_tbi output: tuple val(meta), path("*.table"), emit: table - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -25,26 +25,27 @@ process GATK4SPARK_BASERECALIBRATOR { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def interval_command = intervals ? "--intervals $intervals" : "" - def sites_command = known_sites.collect{"--known-sites $it"}.join(' ') + def interval_command = intervals ? "--intervals ${intervals}" : "" + def sites_command = known_sites.collect { "--known-sites ${it}" }.join(' ') def avail_mem = 3072 if (!task.memory) { - log.info '[GATK BaseRecalibratorSpark] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK BaseRecalibratorSpark] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ BaseRecalibratorSpark \\ - --input $input \\ + --input ${input} \\ --output ${prefix}.table \\ - --reference $fasta \\ - $interval_command \\ - $sites_command \\ + --reference ${fasta} \\ + ${interval_command} \\ + ${sites_command} \\ --spark-master local[${task.cpus}] \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/gatk4spark/baserecalibrator/tests/main.nf.test b/modules/nf-core/gatk4spark/baserecalibrator/tests/main.nf.test index ff6867d2f244..6bb4d9dd01a6 100644 --- a/modules/nf-core/gatk4spark/baserecalibrator/tests/main.nf.test +++ b/modules/nf-core/gatk4spark/baserecalibrator/tests/main.nf.test @@ -14,147 +14,255 @@ nextflow_process { when { process { """ - input_bam = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), [] - ] - fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - fai = file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) - dict = file(params.test_data['sarscov2']['genome']['genome_dict'], checkIfExists: true) - sites = file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true) - sites_tbi = file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) - - input = [input_bam, fasta, fai, dict, sites, sites_tbi] + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true)) + input[5] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true)) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } - } test("homo sapiens - cram") { when { process { """ - input_cram = [ [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true), + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), [] - ] - fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - fai = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) - dict = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) - sites = file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz'], checkIfExists: true) - sites_tbi = file(params.test_data['homo_sapiens']['illumina']['test_haplotc_cnn_vcf_gz_tbi'], checkIfExists: true) - - input = [input_cram, fasta, fai, dict, sites, sites_tbi] + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz', checkIfExists: true)) + input[5] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz.tbi', checkIfExists: true)) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } - } test("sarscov2 - bam - intervals") { when { process { """ - input_bam = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) - ] - fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - fai = file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) - dict = file(params.test_data['sarscov2']['genome']['genome_dict'], checkIfExists: true) - sites = file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true) - sites_tbi = file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) - - input = [input_bam, fasta, fai, dict, sites, sites_tbi] + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true)) + input[5] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true)) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } - } test("sarscov2 - bam - multi sites") { when { process { """ - input_bam = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), [] - ] - fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - fai = file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) - dict = file(params.test_data['sarscov2']['genome']['genome_dict'], checkIfExists: true) - sites = [ file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true), file(params.test_data['sarscov2']['illumina']['test2_vcf_gz'], checkIfExists: true)] - sites_tbi = [ file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true), file(params.test_data['sarscov2']['illumina']['test2_vcf_gz_tbi'], checkIfExists: true)] - input = [input_bam, fasta, fai, dict, sites, sites_tbi] + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true)) + input[4] = Channel.of([ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) + ]) + input[5] = Channel.of([ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ]) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } - } - test("sarscov2 - bam - stub") { - + test("sarscov2 - bam -stub") { options "-stub" - when { process { """ - input_bam = [ [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam_bai'], checkIfExists: true), + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), [] - ] - fasta = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - fai = file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) - dict = file(params.test_data['sarscov2']['genome']['genome_dict'], checkIfExists: true) - sites = file(params.test_data['sarscov2']['illumina']['test_vcf_gz'], checkIfExists: true) - sites_tbi = file(params.test_data['sarscov2']['illumina']['test_vcf_gz_tbi'], checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true)) + input[5] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true)) + """ + } + } - input = [input_bam, fasta, fai, dict, sites, sites_tbi] + then { + assert process.success + assertAll( + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } + + test("homo sapiens - cram -stub") { + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + [] + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)) + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz', checkIfExists: true)) + input[5] = Channel.of(file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/gatk/haplotypecaller_calls/test_haplotcaller.cnn.vcf.gz.tbi', checkIfExists: true)) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } + } + + test("sarscov2 - bam - intervals -stub") { + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists: true) + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true)) + input[4] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true)) + input[5] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true)) + """ + } + } + then { + assert process.success + assertAll( + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } } + test("sarscov2 - bam - multi sites -stub") { + options "-stub" + when { + process { + """ + input[0] = Channel.of([ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai', checkIfExists: true), + [] + ]) + input[1] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true)) + input[2] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true)) + input[3] = Channel.of(file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true)) + input[4] = Channel.of([ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz', checkIfExists: true) + ]) + input[5] = Channel.of([ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test.vcf.gz.tbi', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/vcf/test2.vcf.gz.tbi', checkIfExists: true) + ]) + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } } diff --git a/modules/nf-core/gatk4spark/baserecalibrator/tests/main.nf.test.snap b/modules/nf-core/gatk4spark/baserecalibrator/tests/main.nf.test.snap index c02ce4b1c8e3..28394ad3db63 100644 --- a/modules/nf-core/gatk4spark/baserecalibrator/tests/main.nf.test.snap +++ b/modules/nf-core/gatk4spark/baserecalibrator/tests/main.nf.test.snap @@ -1,5 +1,5 @@ { - "sarscov2 - bam - multi sites": { + "sarscov2 - bam - intervals -stub": { "content": [ { "0": [ @@ -7,7 +7,7 @@ { "id": "test" }, - "test.table:md5,e2e43abdc0c943c1a54dae816d0b9ea7" + "test.table:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ @@ -18,21 +18,26 @@ { "id": "test" }, - "test.table:md5,e2e43abdc0c943c1a54dae816d0b9ea7" + "test.table:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "versions": [ "versions.yml:md5,d98a4e7d4b5c7b7c59268214c538bd58" ] + }, + { + "GATK4SPARK_BASERECALIBRATOR": { + "gatk4": "4.6.1.0" + } } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T11:52:50.311106222" + "timestamp": "2025-04-11T15:00:38.617564388" }, - "sarscov2 - bam - stub": { + "sarscov2 - bam - multi sites": { "content": [ { "0": [ @@ -40,7 +45,7 @@ { "id": "test" }, - "test.table:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.table:md5,e2e43abdc0c943c1a54dae816d0b9ea7" ] ], "1": [ @@ -51,19 +56,24 @@ { "id": "test" }, - "test.table:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.table:md5,e2e43abdc0c943c1a54dae816d0b9ea7" ] ], "versions": [ "versions.yml:md5,d98a4e7d4b5c7b7c59268214c538bd58" ] + }, + { + "GATK4SPARK_BASERECALIBRATOR": { + "gatk4": "4.6.1.0" + } } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T11:38:35.054385124" + "timestamp": "2025-04-11T14:59:50.213616922" }, "homo sapiens - cram": { "content": [ @@ -90,13 +100,18 @@ "versions": [ "versions.yml:md5,d98a4e7d4b5c7b7c59268214c538bd58" ] + }, + { + "GATK4SPARK_BASERECALIBRATOR": { + "gatk4": "4.6.1.0" + } } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T12:03:12.23567219" + "timestamp": "2025-04-11T14:58:59.091441241" }, "sarscov2 - bam - intervals": { "content": [ @@ -123,13 +138,18 @@ "versions": [ "versions.yml:md5,d98a4e7d4b5c7b7c59268214c538bd58" ] + }, + { + "GATK4SPARK_BASERECALIBRATOR": { + "gatk4": "4.6.1.0" + } } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T11:51:34.077518575" + "timestamp": "2025-04-11T14:59:24.000377035" }, "sarscov2 - bam": { "content": [ @@ -156,12 +176,131 @@ "versions": [ "versions.yml:md5,d98a4e7d4b5c7b7c59268214c538bd58" ] + }, + { + "GATK4SPARK_BASERECALIBRATOR": { + "gatk4": "4.6.1.0" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-11T14:58:25.814297279" + }, + "sarscov2 - bam - multi sites -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,d98a4e7d4b5c7b7c59268214c538bd58" + ], + "table": [ + [ + { + "id": "test" + }, + "test.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d98a4e7d4b5c7b7c59268214c538bd58" + ] + }, + { + "GATK4SPARK_BASERECALIBRATOR": { + "gatk4": "4.6.1.0" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-11T15:00:55.024158381" + }, + "sarscov2 - bam -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,d98a4e7d4b5c7b7c59268214c538bd58" + ], + "table": [ + [ + { + "id": "test" + }, + "test.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d98a4e7d4b5c7b7c59268214c538bd58" + ] + }, + { + "GATK4SPARK_BASERECALIBRATOR": { + "gatk4": "4.6.1.0" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-11T15:00:05.696488985" + }, + "homo sapiens - cram -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,d98a4e7d4b5c7b7c59268214c538bd58" + ], + "table": [ + [ + { + "id": "test" + }, + "test.table:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,d98a4e7d4b5c7b7c59268214c538bd58" + ] + }, + { + "GATK4SPARK_BASERECALIBRATOR": { + "gatk4": "4.6.1.0" + } } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T11:49:36.893419883" + "timestamp": "2025-04-11T15:00:21.556918585" } } \ No newline at end of file diff --git a/modules/nf-core/gatk4spark/markduplicates/main.nf b/modules/nf-core/gatk4spark/markduplicates/main.nf index 9cb74c8b3639..a0dcf3fee4a1 100644 --- a/modules/nf-core/gatk4spark/markduplicates/main.nf +++ b/modules/nf-core/gatk4spark/markduplicates/main.nf @@ -1,23 +1,23 @@ process GATK4SPARK_MARKDUPLICATES { - tag "$meta.id" + tag "${meta.id}" label 'process_high' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/gatk4-spark:4.6.1.0--hdfd78af_0': - 'biocontainers/gatk4-spark:4.6.1.0--hdfd78af_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/gatk4-spark:4.6.1.0--hdfd78af_0' + : 'biocontainers/gatk4-spark:4.6.1.0--hdfd78af_0'}" input: tuple val(meta), path(bam) - path fasta - path fasta_fai - path dict + path fasta + path fasta_fai + path dict output: tuple val(meta), path("${prefix}"), emit: output - tuple val(meta), path("${prefix}.bai"), emit: bam_index, optional:true - tuple val(meta), path("*.metrics"), emit: metrics, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}.bai"), emit: bam_index, optional: true + tuple val(meta), path("*.metrics"), emit: metrics, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -25,23 +25,24 @@ process GATK4SPARK_MARKDUPLICATES { script: def args = task.ext.args ?: '' prefix = task.ext.prefix ?: "${meta.id}.bam" - def input_list = bam.collect{"--input $it"}.join(' ') + def input_list = bam.collect { "--input ${it}" }.join(' ') def avail_mem = 3072 if (!task.memory) { - log.info '[GATK MarkDuplicatesSpark] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.' - } else { - avail_mem = (task.memory.mega*0.8).intValue() + log.info('[GATK MarkDuplicatesSpark] Available memory not known - defaulting to 3GB. Specify process memory requirements to change this.') + } + else { + avail_mem = (task.memory.mega * 0.8).intValue() } """ gatk --java-options "-Xmx${avail_mem}M -XX:-UsePerfData" \\ MarkDuplicatesSpark \\ - $input_list \\ - --output $prefix \\ - --reference $fasta \\ + ${input_list} \\ + --output ${prefix} \\ + --reference ${fasta} \\ --spark-master local[${task.cpus}] \\ --tmp-dir . \\ - $args + ${args} cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -55,6 +56,7 @@ process GATK4SPARK_MARKDUPLICATES { touch ${prefix} touch ${prefix}.bai touch ${prefix}.metrics + cat <<-END_VERSIONS > versions.yml "${task.process}": gatk4: \$(echo \$(gatk --version 2>&1) | sed 's/^.*(GATK) v//; s/ .*\$//') diff --git a/modules/nf-core/gatk4spark/markduplicates/tests/main.nf.test b/modules/nf-core/gatk4spark/markduplicates/tests/main.nf.test index 2aa2db69ed98..40dbb713a00b 100644 --- a/modules/nf-core/gatk4spark/markduplicates/tests/main.nf.test +++ b/modules/nf-core/gatk4spark/markduplicates/tests/main.nf.test @@ -17,23 +17,25 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam', checkIfExists: true) ] - input[1] = file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - input[2] = file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) - input[3] = file(params.test_data['sarscov2']['genome']['genome_dict'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } - } test("homo_sapiens - bam - multiple") { @@ -43,26 +45,28 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map + [ id:'test', single_end:false ], [ - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_name_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_name_sorted_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.name.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.name.sorted.bam', checkIfExists: true) ] ] - input[1] = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - input[2] = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) - input[3] = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } - } test("homo_sapiens - bam - metrics") { @@ -72,30 +76,33 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map + [ id:'test', single_end:false ], [ - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_name_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_name_sorted_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.name.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.name.sorted.bam', checkIfExists: true) ] ] - input[1] = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - input[2] = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) - input[3] = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out.versions).match("homo_sapiens - bam - metrics - versions") }, - { assert snapshot(process.out.output).match("homo_sapiens - bam - metrics - output") }, - { assert snapshot(process.out.bam_index).match("homo_sapiens - bam - metrics - bam_index") }, - { assert path(process.out.metrics[0][1]).readLines()[5].contains("GATKDuplicationMetrics") }, - { assert path(process.out.metrics[0][1]).readLines().size() == 11 } + { assert snapshot( + process.out.versions, + process.out.output, + process.out.bam_index, + path(process.out.metrics[0][1]).readLines()[5], + path(process.out.metrics[0][1]).readLines().size(), + path(process.out.versions[0]).yaml + ) + } ) } - } test("homo_sapiens - cram") { @@ -105,54 +112,152 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map + [ id:'test', single_end:false ], [ - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_name_sorted_bam'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test2_paired_end_name_sorted_bam'], checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.name.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.name.sorted.bam', checkIfExists: true) ] ] - input[1] = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - input[2] = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) - input[3] = file(params.test_data['homo_sapiens']['genome']['genome_dict'], checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } - } - test("stub") { + test("sarscov2 - bam -stub") { + options "-stub" config "./bam.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.name.sorted.bam', checkIfExists: true) + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } + + test("homo_sapiens - bam - multiple -stub") { options "-stub" + config "./bam.config" when { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map - [] + [ id:'test', single_end:false ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.name.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.name.sorted.bam', checkIfExists: true) + ] ] - input[1] = [] - input[2] = [] - input[3] = [] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) """ } } then { + assert process.success assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } ) } + } + + test("homo_sapiens - bam - metrics -stub") { + options "-stub" + config "./metrics.config" + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.name.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.name.sorted.bam', checkIfExists: true) + ] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) + """ + } + } + + then { + assert process.success + assertAll( + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } } + test("homo_sapiens - cram -stub") { + options "-stub" + config "./cram.config" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test.paired_end.name.sorted.bam', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/bam/test2.paired_end.name.sorted.bam', checkIfExists: true) + ] + ] + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[2] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + input[3] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.dict', checkIfExists: true) + """ + } + } + then { + assert process.success + assertAll( + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } } diff --git a/modules/nf-core/gatk4spark/markduplicates/tests/main.nf.test.snap b/modules/nf-core/gatk4spark/markduplicates/tests/main.nf.test.snap index f9366caead2b..1482578a1c24 100644 --- a/modules/nf-core/gatk4spark/markduplicates/tests/main.nf.test.snap +++ b/modules/nf-core/gatk4spark/markduplicates/tests/main.nf.test.snap @@ -50,31 +50,18 @@ "versions": [ "versions.yml:md5,1184eb9fbc4a9cb7384b760b2c112c94" ] + }, + { + "GATK4SPARK_MARKDUPLICATES": { + "gatk4": "4.6.1.0" + } } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" - }, - "timestamp": "2024-11-06T11:52:48.84070018" - }, - "homo_sapiens - bam - metrics - output": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam:md5,1154a16717d430199f3e9994a87b546a" - ] - ] - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-02-15T11:53:32.254055925" + "timestamp": "2025-04-11T15:01:54.825208573" }, "homo_sapiens - cram": { "content": [ @@ -115,45 +102,96 @@ "versions": [ "versions.yml:md5,1184eb9fbc4a9cb7384b760b2c112c94" ] + }, + { + "GATK4SPARK_MARKDUPLICATES": { + "gatk4": "4.6.1.0" + } } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" - }, - "timestamp": "2024-11-06T11:54:09.554533288" - }, - "homo_sapiens - bam - metrics - versions": { - "content": [ - [ - "versions.yml:md5,1184eb9fbc4a9cb7384b760b2c112c94" - ] - ], - "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T11:53:39.648663125" + "timestamp": "2025-04-11T15:03:51.19014784" }, - "homo_sapiens - bam - metrics - bam_index": { + "homo_sapiens - bam - metrics -stub": { "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.bam.bai:md5,d947dccacf3fb7fcf174d364a5f7856d" + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.metrics:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,1184eb9fbc4a9cb7384b760b2c112c94" + ], + "bam_index": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.metrics:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "output": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,1184eb9fbc4a9cb7384b760b2c112c94" ] - ] + }, + { + "GATK4SPARK_MARKDUPLICATES": { + "gatk4": "4.6.1.0" + } + } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-02-15T11:53:32.305216975" + "timestamp": "2025-04-11T15:05:23.678812172" }, - "stub": { + "homo_sapiens - bam - multiple -stub": { "content": [ { "0": [ @@ -216,13 +254,94 @@ "versions": [ "versions.yml:md5,1184eb9fbc4a9cb7384b760b2c112c94" ] + }, + { + "GATK4SPARK_MARKDUPLICATES": { + "gatk4": "4.6.1.0" + } } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T11:54:21.987287007" + "timestamp": "2025-04-11T15:04:49.498784821" + }, + "homo_sapiens - cram -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cram.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cram.metrics:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,1184eb9fbc4a9cb7384b760b2c112c94" + ], + "bam_index": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cram.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cram.metrics:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "output": [ + [ + { + "id": "test", + "single_end": false + }, + "test.cram:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,1184eb9fbc4a9cb7384b760b2c112c94" + ] + }, + { + "GATK4SPARK_MARKDUPLICATES": { + "gatk4": "4.6.1.0" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-11T15:05:56.744218653" }, "sarscov2 - bam": { "content": [ @@ -275,12 +394,93 @@ "versions": [ "versions.yml:md5,1184eb9fbc4a9cb7384b760b2c112c94" ] + }, + { + "GATK4SPARK_MARKDUPLICATES": { + "gatk4": "4.6.1.0" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-11T15:01:22.411041697" + }, + "sarscov2 - bam -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.metrics:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,1184eb9fbc4a9cb7384b760b2c112c94" + ], + "bam_index": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.bai:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "metrics": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam.metrics:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "output": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,1184eb9fbc4a9cb7384b760b2c112c94" + ] + }, + { + "GATK4SPARK_MARKDUPLICATES": { + "gatk4": "4.6.1.0" + } } ], "meta": { - "nf-test": "0.9.1", - "nextflow": "24.10.0" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-11-06T11:51:28.270175346" + "timestamp": "2025-04-11T15:04:15.984302135" } } \ No newline at end of file diff --git a/modules/nf-core/gem2/gem2bedmappability/main.nf b/modules/nf-core/gem2/gem2bedmappability/main.nf index 0fb84599ffae..fab457596a65 100644 --- a/modules/nf-core/gem2/gem2bedmappability/main.nf +++ b/modules/nf-core/gem2/gem2bedmappability/main.nf @@ -21,7 +21,7 @@ process GEM2_GEM2BEDMAPPABILITY { task.ext.when == null || task.ext.when script: - def prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = '20200110' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ gem-2-bed mappability \\ @@ -36,8 +36,7 @@ process GEM2_GEM2BEDMAPPABILITY { """ stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = '20200110' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ diff --git a/modules/nf-core/gem2/gem2bedmappability/tests/main.nf.test b/modules/nf-core/gem2/gem2bedmappability/tests/main.nf.test new file mode 100644 index 000000000000..e4998c90c9f0 --- /dev/null +++ b/modules/nf-core/gem2/gem2bedmappability/tests/main.nf.test @@ -0,0 +1,79 @@ +nextflow_process { + + name "Test Process GEM2_GEM2BEDMAPPABILITY" + script "../main.nf" + process "GEM2_GEM2BEDMAPPABILITY" + + tag "modules" + tag "modules_nfcore" + tag "gem2" + tag "gem2/gem2bedmappability" + tag "gem2/gemmappability" + tag "gem2/gemindexer" + + setup { + run("GEM2_GEMINDEXER") { + script "../../gemindexer/main.nf" + + process { + """ + input[0] = [ + [id:'test',single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta',checkIfExists:true) + ] + """ + } + } + + run("GEM2_GEMMAPPABILITY") { + script "../../gemmappability/main.nf" + + process { + """ + input[0] = GEM2_GEMINDEXER.out.index + input[1] = "100" + """ + } + } + } + + test("sarscov2 - map index") { + + when { + process { + """ + input[0] = GEM2_GEMMAPPABILITY.out.map + input[1] = GEM2_GEMINDEXER.out.index + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + test("sarscov2 - map index -- stub") { + options '-stub' + when { + process { + """ + input[0] = GEM2_GEMMAPPABILITY.out.map + input[1] = GEM2_GEMINDEXER.out.index + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/gem2/gem2bedmappability/tests/main.nf.test.snap b/modules/nf-core/gem2/gem2bedmappability/tests/main.nf.test.snap new file mode 100644 index 000000000000..1070ef2a4cf4 --- /dev/null +++ b/modules/nf-core/gem2/gem2bedmappability/tests/main.nf.test.snap @@ -0,0 +1,113 @@ +{ + "sarscov2 - map index": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bg:md5,42596230d57c308892bcaefb3eabbf1b" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sizes:md5,58102c0866e0bc69831c94d02fd859e1" + ] + ], + "2": [ + "versions.yml:md5,25751db13de2d20099e2dcc8ba82e7da" + ], + "bedgraph": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bg:md5,42596230d57c308892bcaefb3eabbf1b" + ] + ], + "sizes": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sizes:md5,58102c0866e0bc69831c94d02fd859e1" + ] + ], + "versions": [ + "versions.yml:md5,25751db13de2d20099e2dcc8ba82e7da" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T14:26:31.503481693" + }, + "sarscov2 - map index -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,25751db13de2d20099e2dcc8ba82e7da" + ], + "bedgraph": [ + [ + { + "id": "test", + "single_end": false + }, + "test.bg:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "sizes": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sizes:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,25751db13de2d20099e2dcc8ba82e7da" + ] + }, + { + "GEM2_GEM2BEDMAPPABILITY": { + "gem2": 20200110 + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T14:26:37.569803264" + } +} \ No newline at end of file diff --git a/modules/nf-core/gem2/gemmappability/main.nf b/modules/nf-core/gem2/gemmappability/main.nf index 37ecb375d865..ebf619476e08 100644 --- a/modules/nf-core/gem2/gemmappability/main.nf +++ b/modules/nf-core/gem2/gemmappability/main.nf @@ -20,8 +20,8 @@ process GEM2_GEMMAPPABILITY { 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}" def VERSION = '20200110' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ gem-mappability \\ @@ -38,8 +38,7 @@ process GEM2_GEMMAPPABILITY { """ stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = '20200110' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ diff --git a/modules/nf-core/gem2/gemmappability/tests/main.nf.test b/modules/nf-core/gem2/gemmappability/tests/main.nf.test new file mode 100644 index 000000000000..703620dd750a --- /dev/null +++ b/modules/nf-core/gem2/gemmappability/tests/main.nf.test @@ -0,0 +1,70 @@ +nextflow_process { + + name "Test Process GEM2_GEMMAPPABILITY" + script "../main.nf" + process "GEM2_GEMMAPPABILITY" + + tag "modules" + tag "modules_nfcore" + tag "gem2" + tag "gem2/gemmappability" + tag "gem2/gemindexer" + + setup { + run("GEM2_GEMINDEXER") { + script "../../gemindexer/main.nf" + + process { + """ + input[0] = [ + [id:'test',single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta',checkIfExists:true) + ] + """ + } + } + } + + test("sarscov2 - fasta") { + + when { + process { + """ + input[0] = GEM2_GEMINDEXER.out.index + input[1] = "100" + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + test("sarscov2 - fasta -- stub") { + options '-stub' + when { + params { + module_args = '' + } + process { + """ + input[0] = GEM2_GEMINDEXER.out.index + input[1] = "100" + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/gem2/gemmappability/tests/main.nf.test.snap b/modules/nf-core/gem2/gemmappability/tests/main.nf.test.snap new file mode 100644 index 000000000000..56f00d7f24dc --- /dev/null +++ b/modules/nf-core/gem2/gemmappability/tests/main.nf.test.snap @@ -0,0 +1,77 @@ +{ + "sarscov2 - fasta -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.mappability:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,a685288af01f7b7a98cb7f042c44f323" + ], + "map": [ + [ + { + "id": "test", + "single_end": false + }, + "test.mappability:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,a685288af01f7b7a98cb7f042c44f323" + ] + }, + { + "GEM2_GEMMAPPABILITY": { + "gem2": 20200110 + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T15:41:25.596792189" + }, + "sarscov2 - fasta": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.mappability:md5,8380b048fec0e8c4f104f49d2bf784c4" + ] + ], + "1": [ + "versions.yml:md5,a685288af01f7b7a98cb7f042c44f323" + ], + "map": [ + [ + { + "id": "test", + "single_end": false + }, + "test.mappability:md5,8380b048fec0e8c4f104f49d2bf784c4" + ] + ], + "versions": [ + "versions.yml:md5,a685288af01f7b7a98cb7f042c44f323" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T15:40:30.596290605" + } +} \ No newline at end of file diff --git a/modules/nf-core/genescopefk/main.nf b/modules/nf-core/genescopefk/main.nf index c257a0efdaee..799153b6150b 100644 --- a/modules/nf-core/genescopefk/main.nf +++ b/modules/nf-core/genescopefk/main.nf @@ -27,24 +27,43 @@ process GENESCOPEFK { error "GENESCOPEFK module does not support Conda. Please use Docker / Singularity / Podman instead." } - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def GENESCOPE_VERSION = '380815c420f50171f9234a0fd1ff426b39829b91' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ - #! /usr/bin/env bash - GeneScopeFK.R \\ $args \\ --input $fastk_histex_histogram \\ --output . \\ --name_prefix ${prefix} - printf -v KMERCOV "%.2f\\n" \$( grep "^kmercov" *_model.txt | cut -d" " -f2 ) + printf -v KMERCOV "%.2f" \$( grep "^kmercov" *_model.txt | cut -d" " -f2 ) + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + genescopefk: $GENESCOPE_VERSION + r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' ) + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def GENESCOPE_VERSION = '380815c420f50171f9234a0fd1ff426b39829b91' + """ + touch "${prefix}_linear_plot.png" + touch "${prefix}_log_plot.png" + touch "${prefix}_model.txt" + touch "${prefix}_summary.txt" + touch "${prefix}_transformed_linear_plot.png" + touch "${prefix}_transformed_log_plot.png" + + printf -v KMERCOV "%.2f" \$( grep "^kmercov" *_model.txt | cut -d" " -f2 ) cat <<-END_VERSIONS > versions.yml "${task.process}": - genescope: $GENESCOPE_VERSION + genescopefk: $GENESCOPE_VERSION r: \$( R --version | sed '1!d; s/.*version //; s/ .*//' ) END_VERSIONS """ + } diff --git a/modules/nf-core/genescopefk/tests/main.nf.test b/modules/nf-core/genescopefk/tests/main.nf.test new file mode 100644 index 000000000000..8411a7024b3a --- /dev/null +++ b/modules/nf-core/genescopefk/tests/main.nf.test @@ -0,0 +1,83 @@ +nextflow_process { + + name "Test Process GENESCOPEFK" + config "./nextflow.config" + script "../main.nf" + process "GENESCOPEFK" + + tag "modules" + tag "modules_nfcore" + tag "fastk" + tag "fastk/fastk" + tag "fastk/histex" + tag "genescopefk" + + setup { + run("FASTK_FASTK") { + script "../../fastk/fastk/main.nf" + + process { + """ + input[0] = [ + [id:'test', single_end:true],// meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/fastq/test_1.fastq.gz',checkIfExists:true) + ] + """ + } + } + + run("FASTK_HISTEX") { + script "../../fastk/histex/main.nf" + + process { + """ + input[0] = FASTK_FASTK.out.hist + """ + } + } + } + + test("homo_sapiens - hist") { + when { + params { + fastk_histex_arg = "-G" + genescopefk_arg = "--kmer_length 40 --ploidy 1" + } + process { + """ + input[0] = FASTK_HISTEX.out.hist + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("homo_sapiens - hist -- stub") { + options '-stub' + when { + params { + fastk_histex_arg = "-G" + genescopefk_arg = "--kmer_length 40 --ploidy 1" + } + process { + """ + input[0] = FASTK_HISTEX.out.hist + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/genescopefk/tests/main.nf.test.snap b/modules/nf-core/genescopefk/tests/main.nf.test.snap new file mode 100644 index 000000000000..8b6e68e7bdc5 --- /dev/null +++ b/modules/nf-core/genescopefk/tests/main.nf.test.snap @@ -0,0 +1,318 @@ +{ + "homo_sapiens - hist": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_linear_plot.png:md5,bb221e2e21a6c0d04dcb6ec8f1bf1cd7", + "test_transformed_linear_plot.png:md5,3c8e3ad315e6c15cdf51c87de277ec1f" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_log_plot.png:md5,d71ad0c963775992043c8f3c55d27fc4", + "test_transformed_log_plot.png:md5,90d983c6faa9b8a02a1d26b777feefc6" + ] + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test_model.txt:md5,49e5a66cf02b53a3b20880bfabef2ee8" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test_summary.txt:md5,34540dcc2ba4ab9530f8878bbdc0921c" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test_transformed_linear_plot.png:md5,3c8e3ad315e6c15cdf51c87de277ec1f" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": true + }, + "test_transformed_log_plot.png:md5,90d983c6faa9b8a02a1d26b777feefc6" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": true + }, + "12.25" + ] + ], + "7": [ + "versions.yml:md5,de2e6adb831619dff8e2e7262736ba5a" + ], + "kmer_cov": [ + [ + { + "id": "test", + "single_end": true + }, + "12.25" + ] + ], + "linear_plot": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_linear_plot.png:md5,bb221e2e21a6c0d04dcb6ec8f1bf1cd7", + "test_transformed_linear_plot.png:md5,3c8e3ad315e6c15cdf51c87de277ec1f" + ] + ] + ], + "log_plot": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_log_plot.png:md5,d71ad0c963775992043c8f3c55d27fc4", + "test_transformed_log_plot.png:md5,90d983c6faa9b8a02a1d26b777feefc6" + ] + ] + ], + "model": [ + [ + { + "id": "test", + "single_end": true + }, + "test_model.txt:md5,49e5a66cf02b53a3b20880bfabef2ee8" + ] + ], + "summary": [ + [ + { + "id": "test", + "single_end": true + }, + "test_summary.txt:md5,34540dcc2ba4ab9530f8878bbdc0921c" + ] + ], + "transformed_linear_plot": [ + [ + { + "id": "test", + "single_end": true + }, + "test_transformed_linear_plot.png:md5,3c8e3ad315e6c15cdf51c87de277ec1f" + ] + ], + "transformed_log_plot": [ + [ + { + "id": "test", + "single_end": true + }, + "test_transformed_log_plot.png:md5,90d983c6faa9b8a02a1d26b777feefc6" + ] + ], + "versions": [ + "versions.yml:md5,de2e6adb831619dff8e2e7262736ba5a" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T15:34:21.631389751" + }, + "homo_sapiens - hist -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_linear_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_transformed_linear_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_log_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_transformed_log_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": true + }, + "test_model.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": true + }, + "test_summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test", + "single_end": true + }, + "test_transformed_linear_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test", + "single_end": true + }, + "test_transformed_log_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test", + "single_end": true + }, + "0.00" + ] + ], + "7": [ + "versions.yml:md5,de2e6adb831619dff8e2e7262736ba5a" + ], + "kmer_cov": [ + [ + { + "id": "test", + "single_end": true + }, + "0.00" + ] + ], + "linear_plot": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_linear_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_transformed_linear_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "log_plot": [ + [ + { + "id": "test", + "single_end": true + }, + [ + "test_log_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e", + "test_transformed_log_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "model": [ + [ + { + "id": "test", + "single_end": true + }, + "test_model.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "summary": [ + [ + { + "id": "test", + "single_end": true + }, + "test_summary.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "transformed_linear_plot": [ + [ + { + "id": "test", + "single_end": true + }, + "test_transformed_linear_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "transformed_log_plot": [ + [ + { + "id": "test", + "single_end": true + }, + "test_transformed_log_plot.png:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,de2e6adb831619dff8e2e7262736ba5a" + ] + }, + { + "GENESCOPEFK": { + "genescopefk": "380815c420f50171f9234a0fd1ff426b39829b91", + "r": "4.2.0" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T15:05:55.106012575" + } +} \ No newline at end of file diff --git a/modules/nf-core/genescopefk/tests/nextflow.config b/modules/nf-core/genescopefk/tests/nextflow.config new file mode 100644 index 000000000000..4bee9abd8922 --- /dev/null +++ b/modules/nf-core/genescopefk/tests/nextflow.config @@ -0,0 +1,9 @@ +process { + withName: FASTK_HISTEX { + ext.args = params.fastk_histex_arg + } + + withName: GENESCOPEFK { + ext.args = params.genescopefk_arg + } +} diff --git a/modules/nf-core/genmap/map/main.nf b/modules/nf-core/genmap/map/main.nf index c506c84f717d..e9b600894072 100644 --- a/modules/nf-core/genmap/map/main.nf +++ b/modules/nf-core/genmap/map/main.nf @@ -22,9 +22,9 @@ process GENMAP_MAP { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "$meta.id" - def bed = regions ? "--selection ${regions}" : "" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}_map" + def bed = regions ? "--selection ${regions}" : "" if ("$index" == "${prefix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" """ @@ -43,13 +43,13 @@ process GENMAP_MAP { """ stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "$meta.id" + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}_map" def token_args = args.tokenize(" ") - def wig = token_args.contains("-w") || token_args.contains("--wig") ? "touch ${prefix}.wig" : "" - def bg = token_args.contains("-bg") || token_args.contains("--bedgraph") ? "touch ${prefix}.bedgraph" : "" - def txt = token_args.contains("-t") || token_args.contains("--txt") ? "touch ${prefix}.txt" : "" - def csv = token_args.contains("-d") || token_args.contains("--csv") ? "touch ${prefix}.csv" : "" + def wig = token_args.contains("-w") || token_args.contains("--wig") ? "touch ${prefix}.wig" : "" + def bg = token_args.contains("-bg") || token_args.contains("--bedgraph") ? "touch ${prefix}.bedgraph" : "" + def txt = token_args.contains("-t") || token_args.contains("--txt") ? "touch ${prefix}.txt" : "" + def csv = token_args.contains("-d") || token_args.contains("--csv") ? "touch ${prefix}.csv" : "" if ("$index" == "${prefix}") error "Input and output names are the same, set prefix in module configuration to disambiguate!" """ diff --git a/modules/nf-core/genmap/map/tests/main.nf.test b/modules/nf-core/genmap/map/tests/main.nf.test new file mode 100644 index 000000000000..508d98f4fa04 --- /dev/null +++ b/modules/nf-core/genmap/map/tests/main.nf.test @@ -0,0 +1,79 @@ +nextflow_process { + + name "Test Process GENMAP_MAP" + config "./nextflow.config" + script "../main.nf" + process "GENMAP_MAP" + + tag "modules" + tag "modules_nfcore" + tag "genmap" + tag "genmap/index" + tag "genmap/map" + + setup { + run("GENMAP_INDEX") { + script "../../index/main.nf" + process { + """ + input[0] = [ + [id:"test"], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists:true) + ] + """ + } + } + } + + test("sarscov2 - index bed") { + + when { + params { + module_args = "-K 50 -E 2 -w -t -bg -d" + } + process { + """ + input[0] = GENMAP_INDEX.out.index.view() + input[1] = [ + [id:"bed"], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists:true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + test("sarscov2 - index bed -- stub") { + options '-stub' + when { + params { + module_args = "-K 50 -E 2 -w -t -bg -d" + } + process { + """ + input[0] = GENMAP_INDEX.out.index + input[1] = [ + [id:"bed"], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/bed/test.bed', checkIfExists:true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/genmap/map/tests/main.nf.test.snap b/modules/nf-core/genmap/map/tests/main.nf.test.snap new file mode 100644 index 000000000000..836e275b4367 --- /dev/null +++ b/modules/nf-core/genmap/map/tests/main.nf.test.snap @@ -0,0 +1,169 @@ +{ + "sarscov2 - index bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_map.wig:md5,c940a5c35af6ac1c11ecc87b7662fc2a" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_map.bedgraph:md5,27ca54c920f3ff0c5985384e557a40f2" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test_map.txt:md5,7f9aeaa3d174bb5e6f552efd4f857b4e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test_map.csv:md5,4167a6c7ffbecc1a239c5c1e16b2cbc5" + ] + ], + "4": [ + "versions.yml:md5,c510ddb0e56c8961d4cf9d538a789087" + ], + "bedgraph": [ + [ + { + "id": "test" + }, + "test_map.bedgraph:md5,27ca54c920f3ff0c5985384e557a40f2" + ] + ], + "csv": [ + [ + { + "id": "test" + }, + "test_map.csv:md5,4167a6c7ffbecc1a239c5c1e16b2cbc5" + ] + ], + "txt": [ + [ + { + "id": "test" + }, + "test_map.txt:md5,7f9aeaa3d174bb5e6f552efd4f857b4e" + ] + ], + "versions": [ + "versions.yml:md5,c510ddb0e56c8961d4cf9d538a789087" + ], + "wig": [ + [ + { + "id": "test" + }, + "test_map.wig:md5,c940a5c35af6ac1c11ecc87b7662fc2a" + ] + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T16:10:45.401177409" + }, + "sarscov2 - index bed -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_map.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test_map.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test_map.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test_map.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,c510ddb0e56c8961d4cf9d538a789087" + ], + "bedgraph": [ + [ + { + "id": "test" + }, + "test_map.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "csv": [ + [ + { + "id": "test" + }, + "test_map.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "txt": [ + [ + { + "id": "test" + }, + "test_map.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,c510ddb0e56c8961d4cf9d538a789087" + ], + "wig": [ + [ + { + "id": "test" + }, + "test_map.wig:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + }, + { + "GENMAP_MAP": { + "genmap": "1.3.0" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T16:10:51.374175856" + } +} \ No newline at end of file diff --git a/modules/nf-core/genmap/map/tests/nextflow.config b/modules/nf-core/genmap/map/tests/nextflow.config new file mode 100644 index 000000000000..963e6e9c8a6a --- /dev/null +++ b/modules/nf-core/genmap/map/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: "GENMAP_MAP" { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/genmod/annotate/environment.yml b/modules/nf-core/genmod/annotate/environment.yml index 163ddf093118..38153d167024 100644 --- a/modules/nf-core/genmod/annotate/environment.yml +++ b/modules/nf-core/genmod/annotate/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::genmod=3.9 + - bioconda::genmod=3.10 diff --git a/modules/nf-core/genmod/annotate/main.nf b/modules/nf-core/genmod/annotate/main.nf index 0b8b232de83f..f778d0d4c6d1 100644 --- a/modules/nf-core/genmod/annotate/main.nf +++ b/modules/nf-core/genmod/annotate/main.nf @@ -4,8 +4,8 @@ process GENMOD_ANNOTATE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': - 'biocontainers/genmod:3.9--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.10--pyh7e72e81_0': + 'biocontainers/genmod:3.10--pyh7e72e81_0' }" input: tuple val(meta), path(input_vcf) diff --git a/modules/nf-core/genmod/annotate/tests/main.nf.test.snap b/modules/nf-core/genmod/annotate/tests/main.nf.test.snap index 402b5c01cf1a..16859b621812 100644 --- a/modules/nf-core/genmod/annotate/tests/main.nf.test.snap +++ b/modules/nf-core/genmod/annotate/tests/main.nf.test.snap @@ -2,15 +2,15 @@ "genmod_annotate": { "content": [ [ - "versions.yml:md5,6ce3597967a536ab027d02f75d02056c" + "versions.yml:md5,a1e4c9528e1c03a40eb485ac8a89201d" ], "VcfFile [chromosomes=[1], sampleCount=3, variantCount=57, phased=false, phasedAutodetect=false]" ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-10-25T11:44:57.176895794" + "timestamp": "2025-04-11T15:36:56.251275862" }, "genmod_annotate - stub": { "content": [ @@ -25,7 +25,7 @@ ] ], "1": [ - "versions.yml:md5,6ce3597967a536ab027d02f75d02056c" + "versions.yml:md5,a1e4c9528e1c03a40eb485ac8a89201d" ], "vcf": [ [ @@ -37,14 +37,14 @@ ] ], "versions": [ - "versions.yml:md5,6ce3597967a536ab027d02f75d02056c" + "versions.yml:md5,a1e4c9528e1c03a40eb485ac8a89201d" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-10-25T11:49:16.409331019" + "timestamp": "2025-04-11T15:37:08.724847013" } } \ No newline at end of file diff --git a/modules/nf-core/genmod/compound/environment.yml b/modules/nf-core/genmod/compound/environment.yml index 163ddf093118..38153d167024 100644 --- a/modules/nf-core/genmod/compound/environment.yml +++ b/modules/nf-core/genmod/compound/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::genmod=3.9 + - bioconda::genmod=3.10 diff --git a/modules/nf-core/genmod/compound/main.nf b/modules/nf-core/genmod/compound/main.nf index ca6a22a1994d..e244c2eea8fd 100644 --- a/modules/nf-core/genmod/compound/main.nf +++ b/modules/nf-core/genmod/compound/main.nf @@ -4,8 +4,8 @@ process GENMOD_COMPOUND { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': - 'biocontainers/genmod:3.9--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.10--pyh7e72e81_0': + 'biocontainers/genmod:3.10--pyh7e72e81_0' }" input: tuple val(meta), path(input_vcf) diff --git a/modules/nf-core/genmod/compound/tests/main.nf.test.snap b/modules/nf-core/genmod/compound/tests/main.nf.test.snap index b114cc3310cf..282f7894d2c7 100644 --- a/modules/nf-core/genmod/compound/tests/main.nf.test.snap +++ b/modules/nf-core/genmod/compound/tests/main.nf.test.snap @@ -2,15 +2,15 @@ "genmod_compound": { "content": [ [ - "versions.yml:md5,822fb501a48a6f8c28ba8f678d27ba2e" + "versions.yml:md5,f27780c4f32e6a54d8199ab8b748c6aa" ], "VcfFile [chromosomes=[MT], sampleCount=3, variantCount=22, phased=false, phasedAutodetect=false]" ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-10-25T11:49:41.417545149" + "timestamp": "2025-04-11T15:37:22.533444662" }, "genmod_compound - stub": { "content": [ @@ -25,7 +25,7 @@ ] ], "1": [ - "versions.yml:md5,822fb501a48a6f8c28ba8f678d27ba2e" + "versions.yml:md5,f27780c4f32e6a54d8199ab8b748c6aa" ], "vcf": [ [ @@ -37,14 +37,14 @@ ] ], "versions": [ - "versions.yml:md5,822fb501a48a6f8c28ba8f678d27ba2e" + "versions.yml:md5,f27780c4f32e6a54d8199ab8b748c6aa" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-10-25T11:49:48.678803012" + "timestamp": "2025-04-11T15:37:34.753562496" } } \ No newline at end of file diff --git a/modules/nf-core/genmod/models/environment.yml b/modules/nf-core/genmod/models/environment.yml index 163ddf093118..38153d167024 100644 --- a/modules/nf-core/genmod/models/environment.yml +++ b/modules/nf-core/genmod/models/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::genmod=3.9 + - bioconda::genmod=3.10 diff --git a/modules/nf-core/genmod/models/main.nf b/modules/nf-core/genmod/models/main.nf index a869221e9bed..ec4567f932cc 100644 --- a/modules/nf-core/genmod/models/main.nf +++ b/modules/nf-core/genmod/models/main.nf @@ -4,8 +4,8 @@ process GENMOD_MODELS { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': - 'biocontainers/genmod:3.9--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.10--pyh7e72e81_0': + 'biocontainers/genmod:3.10--pyh7e72e81_0' }" input: tuple val(meta), path(input_vcf), path (fam) diff --git a/modules/nf-core/genmod/models/tests/main.nf.test.snap b/modules/nf-core/genmod/models/tests/main.nf.test.snap index 7484a7fd0f98..54ead57fcbc2 100644 --- a/modules/nf-core/genmod/models/tests/main.nf.test.snap +++ b/modules/nf-core/genmod/models/tests/main.nf.test.snap @@ -12,7 +12,7 @@ ] ], "1": [ - "versions.yml:md5,10442b1602069000967f51837d7b5b63" + "versions.yml:md5,ea3c11abc1c5be5d8c0fd50ca4bb2344" ], "vcf": [ [ @@ -24,27 +24,27 @@ ] ], "versions": [ - "versions.yml:md5,10442b1602069000967f51837d7b5b63" + "versions.yml:md5,ea3c11abc1c5be5d8c0fd50ca4bb2344" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-10-25T11:51:04.841425679" + "timestamp": "2025-04-11T15:38:00.970356064" }, "genmod_models": { "content": [ [ - "versions.yml:md5,10442b1602069000967f51837d7b5b63" + "versions.yml:md5,ea3c11abc1c5be5d8c0fd50ca4bb2344" ], "VcfFile [chromosomes=[1], sampleCount=3, variantCount=57, phased=false, phasedAutodetect=false]" ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-10-25T11:49:56.642318737" + "timestamp": "2025-04-11T15:37:48.695367113" } } \ No newline at end of file diff --git a/modules/nf-core/genmod/score/environment.yml b/modules/nf-core/genmod/score/environment.yml index 163ddf093118..38153d167024 100644 --- a/modules/nf-core/genmod/score/environment.yml +++ b/modules/nf-core/genmod/score/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::genmod=3.9 + - bioconda::genmod=3.10 diff --git a/modules/nf-core/genmod/score/main.nf b/modules/nf-core/genmod/score/main.nf index 756fc73132a3..bc3b8547d622 100644 --- a/modules/nf-core/genmod/score/main.nf +++ b/modules/nf-core/genmod/score/main.nf @@ -4,8 +4,8 @@ process GENMOD_SCORE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/genmod:3.9--pyhdfd78af_0': - 'biocontainers/genmod:3.9--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/genmod:3.10--pyh7e72e81_0': + 'biocontainers/genmod:3.10--pyh7e72e81_0' }" input: tuple val(meta), path(input_vcf), path (fam) diff --git a/modules/nf-core/genmod/score/tests/main.nf.test.snap b/modules/nf-core/genmod/score/tests/main.nf.test.snap index b484b8e12aed..2a6a7ec7922c 100644 --- a/modules/nf-core/genmod/score/tests/main.nf.test.snap +++ b/modules/nf-core/genmod/score/tests/main.nf.test.snap @@ -2,15 +2,15 @@ "genmod_score": { "content": [ [ - "versions.yml:md5,f310225b3c35456e84d52e2c400e2fd8" + "versions.yml:md5,d9e6ac07d6f647bfefbdbe45fe094a2b" ], "VcfFile [chromosomes=[1], sampleCount=3, variantCount=57, phased=false, phasedAutodetect=false]" ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-10-25T11:50:12.03483811" + "timestamp": "2025-04-11T15:38:15.954815178" }, "genmod_score - stub": { "content": [ @@ -25,7 +25,7 @@ ] ], "1": [ - "versions.yml:md5,f310225b3c35456e84d52e2c400e2fd8" + "versions.yml:md5,d9e6ac07d6f647bfefbdbe45fe094a2b" ], "vcf": [ [ @@ -37,14 +37,14 @@ ] ], "versions": [ - "versions.yml:md5,f310225b3c35456e84d52e2c400e2fd8" + "versions.yml:md5,d9e6ac07d6f647bfefbdbe45fe094a2b" ] } ], "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-10-25T11:50:19.675962486" + "timestamp": "2025-04-11T15:38:33.518191239" } } \ No newline at end of file diff --git a/modules/nf-core/genotyphi/parse/main.nf b/modules/nf-core/genotyphi/parse/main.nf index c99ab826042b..0c2984fb503a 100644 --- a/modules/nf-core/genotyphi/parse/main.nf +++ b/modules/nf-core/genotyphi/parse/main.nf @@ -18,8 +18,9 @@ process GENOTYPHI_PARSE { task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + """ parse_typhi_mykrobe.py \\ --jsons $json \\ @@ -30,4 +31,15 @@ process GENOTYPHI_PARSE { genotyphi: \$(echo \$(genotyphi --version 2>&1) | sed 's/^.*GenoTyphi v//;' ) END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + + """ + touch ${prefix}.tsv + cat <<-END_VERSIONS > versions.yml + "${task.process}": + genotyphi: \$(echo \$(genotyphi --version 2>&1) | sed 's/^.*GenoTyphi v//;' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/genotyphi/parse/tests/main.nf.test b/modules/nf-core/genotyphi/parse/tests/main.nf.test new file mode 100644 index 000000000000..b6ba207342a0 --- /dev/null +++ b/modules/nf-core/genotyphi/parse/tests/main.nf.test @@ -0,0 +1,68 @@ +nextflow_process { + + name "Test Process GENOTYPHI_PARSE" + + script "../main.nf" + process "GENOTYPHI_PARSE" + + tag "modules" + tag "modules_nfcore" + tag "mykrobe" + tag "mykrobe/predict" + tag "genotyphi" + tag "genotyphi/parse" + + setup { + run("MYKROBE_PREDICT") { + script "../../../mykrobe/predict/main.nf" + + process { + """ + input[0] = [ + [id:'test',single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/bam/test.paired_end.bam',checkIfExists:true) + ] + input[1] = "typhi" + """ + } + } + } + + test("sarscov2 - json") { + when { + + process { + """ + input[0] = MYKROBE_PREDICT.out.json + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("sarscov2 - json -- stub") { + options "-stub" + when { + + process { + """ + input[0] = MYKROBE_PREDICT.out.json + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out, + path(process.out.versions[0]).yaml + ).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/genotyphi/parse/tests/main.nf.test.snap b/modules/nf-core/genotyphi/parse/tests/main.nf.test.snap new file mode 100644 index 000000000000..c083a6990548 --- /dev/null +++ b/modules/nf-core/genotyphi/parse/tests/main.nf.test.snap @@ -0,0 +1,77 @@ +{ + "sarscov2 - json": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_predictResults.tsv:md5,b13d2b83139d894245ad2f2a233d1029" + ] + ], + "1": [ + "versions.yml:md5,8832872a868b1270d21f6b93685b6eed" + ], + "tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test_predictResults.tsv:md5,b13d2b83139d894245ad2f2a233d1029" + ] + ], + "versions": [ + "versions.yml:md5,8832872a868b1270d21f6b93685b6eed" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T11:22:29.761275502" + }, + "sarscov2 - json -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,8832872a868b1270d21f6b93685b6eed" + ], + "tsv": [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,8832872a868b1270d21f6b93685b6eed" + ] + }, + { + "GENOTYPHI_PARSE": { + "genotyphi": "1.9.1" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-10T11:22:35.524513078" + } +} \ No newline at end of file diff --git a/modules/nf-core/gtdbtk/classifywf/main.nf b/modules/nf-core/gtdbtk/classifywf/main.nf index 23862fee5739..c9ef29a58075 100644 --- a/modules/nf-core/gtdbtk/classifywf/main.nf +++ b/modules/nf-core/gtdbtk/classifywf/main.nf @@ -2,24 +2,24 @@ process GTDBTK_CLASSIFYWF { tag "${prefix}" label 'process_medium' conda "${moduleDir}/environment.yml" - container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/gtdbtk:2.4.0--pyhdfd78af_1' : 'biocontainers/gtdbtk:2.4.0--pyhdfd78af_1'}" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/gtdbtk:2.4.0--pyhdfd78af_2' : 'biocontainers/gtdbtk:2.4.0--pyhdfd78af_2'}" input: - tuple val(meta) , path("bins/*") - tuple val(db_name), path("database/*") + tuple val(meta), path("bins/*") + tuple val(db_name), path(db) val use_pplacer_scratch_dir path mash_db output: - tuple val(meta), path("gtdbtk.${prefix}.*.summary.tsv") , emit: summary - tuple val(meta), path("gtdbtk.${prefix}.*.classify.tree.gz") , emit: tree , optional: true - tuple val(meta), path("gtdbtk.${prefix}.*.markers_summary.tsv"), emit: markers , optional: true - tuple val(meta), path("gtdbtk.${prefix}.*.msa.fasta.gz") , emit: msa , optional: true - tuple val(meta), path("gtdbtk.${prefix}.*.user_msa.fasta.gz") , emit: user_msa, optional: true - tuple val(meta), path("gtdbtk.${prefix}.*.filtered.tsv") , emit: filtered, optional: true - tuple val(meta), path("gtdbtk.${prefix}.failed_genomes.tsv") , emit: failed , optional: true - tuple val(meta), path("gtdbtk.${prefix}.log") , emit: log - tuple val(meta), path("gtdbtk.${prefix}.warnings.log") , emit: warnings + tuple val(meta), path("gtdbtk.${prefix}.*.summary.tsv"), emit: summary + tuple val(meta), path("gtdbtk.${prefix}.*.classify.tree.gz"), emit: tree, optional: true + tuple val(meta), path("gtdbtk.${prefix}.*.markers_summary.tsv"), emit: markers, optional: true + tuple val(meta), path("gtdbtk.${prefix}.*.msa.fasta.gz"), emit: msa, optional: true + tuple val(meta), path("gtdbtk.${prefix}.*.user_msa.fasta.gz"), emit: user_msa, optional: true + tuple val(meta), path("gtdbtk.${prefix}.*.filtered.tsv"), emit: filtered, optional: true + tuple val(meta), path("gtdbtk.${prefix}.failed_genomes.tsv"), emit: failed, optional: true + tuple val(meta), path("gtdbtk.${prefix}.log"), emit: log + tuple val(meta), path("gtdbtk.${prefix}.warnings.log"), emit: warnings path ("versions.yml"), emit: versions when: @@ -28,12 +28,13 @@ process GTDBTK_CLASSIFYWF { script: def args = task.ext.args ?: '' def pplacer_scratch = use_pplacer_scratch_dir ? "--scratch_dir pplacer_tmp" : "" - def mash_mode = mash_db ? "--mash_db ${mash_db}" : "--skip_ani_screen" + def mash_mode = mash_db ? "--mash_db ${mash_db}" : "--skip_ani_screen" prefix = task.ext.prefix ?: "${meta.id}" """ - export GTDBTK_DATA_PATH="\${PWD}/database" - if [ ${pplacer_scratch} != "" ] ; then + export GTDBTK_DATA_PATH="\$(find -L ${db} -name 'metadata' -type d -exec dirname {} \\;)" + + if [ "${pplacer_scratch}" != "" ] ; then mkdir pplacer_tmp fi @@ -68,7 +69,7 @@ process GTDBTK_CLASSIFYWF { cat <<-END_VERSIONS > versions.yml "${task.process}": - gtdbtk: \$(echo \$(gtdbtk --version -v 2>&1) | sed "s/gtdbtk: version //; s/ Copyright.*//") + gtdbtk: \$(echo \$(gtdbtk --version 2>/dev/null) | sed "s/gtdbtk: version //; s/ Copyright.*//") END_VERSIONS """ @@ -87,7 +88,7 @@ process GTDBTK_CLASSIFYWF { cat <<-END_VERSIONS > versions.yml "${task.process}": - gtdbtk: \$(echo \$(gtdbtk --version -v 2>&1) | sed "s/gtdbtk: version //; s/ Copyright.*//") + gtdbtk: \$(echo \$(gtdbtk --version 2>/dev/null) | sed "s/gtdbtk: version //; s/ Copyright.*//") END_VERSIONS """ } diff --git a/modules/nf-core/gtdbtk/classifywf/meta.yml b/modules/nf-core/gtdbtk/classifywf/meta.yml index fc081897d80c..fc31a609fe24 100644 --- a/modules/nf-core/gtdbtk/classifywf/meta.yml +++ b/modules/nf-core/gtdbtk/classifywf/meta.yml @@ -27,13 +27,18 @@ input: e.g. [ id:'test', single_end:false, assembler:'spades' ] - '"bins/*"': type: file - description: bins + description: A list of one or more bins in FASTA format for classification + pattern: "*.{fasta,fna,fas,fa}{,.gz}" - - db_name: type: string description: The name of the GTDB database to use. - - '"database/*"': + - db: type: file - description: GTDB database + description: | + Path to a directory containing a GDTB database, as uncompressed from from the 'full package' gtdbdtk_data.tar.gz file. + You can give the 'release' directory here. + Must contain the 'metadata' subdirectory + pattern: "release[0-9]+\/" - - use_pplacer_scratch_dir: type: boolean description: Set to true to reduce pplacer memory usage by writing to disk (slower) diff --git a/modules/nf-core/integronfinder/environment.yml b/modules/nf-core/integronfinder/environment.yml new file mode 100644 index 000000000000..c5ef37127842 --- /dev/null +++ b/modules/nf-core/integronfinder/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::integron_finder=2.0.5=pyhdfd78af_0 diff --git a/modules/nf-core/integronfinder/main.nf b/modules/nf-core/integronfinder/main.nf new file mode 100644 index 000000000000..ae6431c261df --- /dev/null +++ b/modules/nf-core/integronfinder/main.nf @@ -0,0 +1,65 @@ +process INTEGRONFINDER { + tag "$meta.id" + label 'process_low' + + containerOptions workflow.containerEngine == 'singularity' ? + '--env MPLCONFIGDIR=/tmp/mplconfigdir' : + '-e MPLCONFIGDIR=/tmp/mplconfigdir' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/integron_finder:2.0.5--pyhdfd78af_0': + 'biocontainers/integron_finder:2.0.5--pyhdfd78af_0' }" + + input: + tuple val(meta), path(fasta) + + output: + tuple val(meta), path("*/*.gbk") , emit: gbk, optional: true + tuple val(meta), path("*/*.integrons") , emit: integrons + tuple val(meta), path("*/*.summary") , emit: summary + tuple val(meta), path("*/integron_finder.out"), emit: out + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def is_compressed_fasta = fasta.getName().endsWith(".gz") ? true : false + def fasta_name = fasta.getName().replace(".gz", "") + + """ + if [ "$is_compressed_fasta" == "true" ]; then + gzip -c -d $fasta > $fasta_name + fi + + integron_finder \\ + $args \\ + --cpu $task.cpus \\ + $fasta_name + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + integronfinder: \$(integron_finder --version 2>&1 | head -n1 | sed 's/^integron_finder version //' | cut -d ' ' -f1) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def gbk_create = args.contains("--gbk") ? "Results_Integron_Finder_${prefix}/${prefix}.gbk" : "" + + """ + mkdir -p Results_Integron_Finder_${prefix} + ${gbk_create} + touch "Results_Integron_Finder_${prefix}/${prefix}.integrons" + touch "Results_Integron_Finder_${prefix}/${prefix}.summary" + touch "Results_Integron_Finder_${prefix}/integron_finder.out" + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + integronfinder: \$(integron_finder --version 2>&1 | head -n1 | sed 's/^integron_finder version //' | cut -d ' ' -f1) + END_VERSIONS + """ +} \ No newline at end of file diff --git a/modules/nf-core/integronfinder/meta.yml b/modules/nf-core/integronfinder/meta.yml new file mode 100644 index 000000000000..fe18d4d7fbbc --- /dev/null +++ b/modules/nf-core/integronfinder/meta.yml @@ -0,0 +1,86 @@ +name: integronfinder +description: Detect integrons in DNA sequences +keywords: + - bacteria + - fasta + - mobile genetic elements + - integron +tools: + - integronfinder: + description: "Integron Finder aims at detecting independently integron integrase + and attC recombination sites in DNA sequences" + homepage: "https://integronfinder.readthedocs.io/en/latest/" + documentation: "https://integronfinder.readthedocs.io/en/latest/" + tool_dev_url: "https://github.com/gem-pasteur/Integron_Finder/" + doi: "10.3390/microorganisms10040700" + licence: ["GPL v3-or-later"] + identifier: biotools:integron_finder +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Nucleotide sequences in FASTA format + pattern: "*.{fasta,fasta.gz,fa,fa.gz,fna,fna.gz}" + ontologies: + - edam: "http://edamontology.org/data_2977" # Nucleic acid sequence + - edam: "http://edamontology.org/format_1929" #FASTA +output: + - gbk: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*/*.gbk": + type: file + description: Creates a Genbank files with all the annotations found (present in the .integrons file) + pattern: "*.gbk" + ontologies: &id001 + - edam: "http://edamontology.org/format_1936" # GenBank + - integrons: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*/*.integrons": + type: file + description: A file with all integrons and their elements detected in all sequences in the input file + pattern: "*.integrons" + - summary: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*/*.summary": + type: file + description: A summary file with the number and type of integrons per sequence + pattern: "*.summary" + - out: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - "*/integron_finder.out": + type: file + description: A copy standard output. The stdout can be silenced with the argument --mute + pattern: "integron_finder.out" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@nguyent-son" + - "@juke34" + - "@jhayer" +maintainers: + - "@nguyent-son" + - "@juke34" + - "@jhayer" diff --git a/modules/nf-core/integronfinder/tests/main.nf.test b/modules/nf-core/integronfinder/tests/main.nf.test new file mode 100644 index 000000000000..dff2b779abd0 --- /dev/null +++ b/modules/nf-core/integronfinder/tests/main.nf.test @@ -0,0 +1,64 @@ +nextflow_process { + + name "Test Process INTEGRONFINDER" + script "../main.nf" + process "INTEGRONFINDER" + + tag "modules" + tag "modules_nfcore" + tag "integronfinder" + + test("IntegronFinder - escherichia_coli - genome_fa_gz") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/prokaryotes/escherichia_coli/genome/genome.fa.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.out[0][1]).readLines().get(56).contains("command used: integron_finder") }, + { assert snapshot( + process.out.gbk ? path(process.out.gbk[0][1]).text : "no_gbk", + path(process.out.summary[0][1]).readLines()[1..-1], // Remove first line due to hash presence in conda + path(process.out.integrons[0][1]).readLines()[1..-1], + process.out.versions, + path(process.out.versions[0]).yaml + ).match() } + ) + } + + } + + test("IntegronFinder - escherichia_coli - genome_fa_gz - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.modules_testdata_base_path + 'genomics/prokaryotes/escherichia_coli/genome/genome.fa.gz', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/integronfinder/tests/main.nf.test.snap b/modules/nf-core/integronfinder/tests/main.nf.test.snap new file mode 100644 index 000000000000..19610d53ba31 --- /dev/null +++ b/modules/nf-core/integronfinder/tests/main.nf.test.snap @@ -0,0 +1,106 @@ +{ + "IntegronFinder - escherichia_coli - genome_fa_gz": { + "content": [ + "no_gbk", + [ + "# cmd: integron_finder --cpu 2 genome.fa", + "ID_replicon\tCALIN\tcomplete\tIn0\ttopology\tsize", + "chr\t0\t0\t0\tcirc\t48502" + ], + [ + "# cmd: integron_finder --cpu 2 genome.fa", + "# No Integron found" + ], + [ + "versions.yml:md5,381190cf27737ed39ada1dfeec09dbe8" + ], + { + "INTEGRONFINDER": { + "integronfinder": "2.0.5" + } + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-02T18:53:05.832325584" + }, + "IntegronFinder - escherichia_coli - genome_fa_gz - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.integrons:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test", + "single_end": false + }, + "test.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test", + "single_end": false + }, + "integron_finder.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + "versions.yml:md5,381190cf27737ed39ada1dfeec09dbe8" + ], + "gbk": [ + + ], + "integrons": [ + [ + { + "id": "test", + "single_end": false + }, + "test.integrons:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "out": [ + [ + { + "id": "test", + "single_end": false + }, + "integron_finder.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "summary": [ + [ + { + "id": "test", + "single_end": false + }, + "test.summary:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,381190cf27737ed39ada1dfeec09dbe8" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-02T16:19:41.207197789" + } +} \ No newline at end of file diff --git a/modules/nf-core/limma/differential/tests/main.nf.test b/modules/nf-core/limma/differential/tests/main.nf.test index 4cdd0014e716..551a53f12d7a 100644 --- a/modules/nf-core/limma/differential/tests/main.nf.test +++ b/modules/nf-core/limma/differential/tests/main.nf.test @@ -220,7 +220,7 @@ nextflow_process { { assert process.success }, { assert snapshot(process.out.model, process.out.versions).match() }, { assert path(process.out.results[0][1]).getText().contains("ENSMUSG00000023978\t-4.89014922224241") }, - { assert path(process.out.results[0][1]).getText().contains("ENSMUSG00000059991\t0.779227180297504") }, + { assert path(process.out.results[0][1]).getText().contains("ENSMUSG00000059991\t0.77922") }, { assert path(process.out.normalised_counts[0][1]).getText().contains("ENSMUSG00000023978\t6.11247620232167") }, { assert path(process.out.normalised_counts[0][1]).getText().contains("ENSMUSG00000059991\t4.52751370160052") } ) @@ -249,7 +249,7 @@ nextflow_process { { assert process.success }, { assert snapshot(process.out.model, process.out.versions).match() }, { assert path(process.out.results[0][1]).getText().contains("ENSMUSG00000023978\t-2.84055986312942") }, - { assert path(process.out.results[0][1]).getText().contains("ENSMUSG00000059991\t0.705508451587681") }, + { assert path(process.out.results[0][1]).getText().contains("ENSMUSG00000059991\t0.7055") }, { assert path(process.out.normalised_counts[0][1]).getText().contains("ENSMUSG00000023978\t6.11247620232167") }, { assert path(process.out.normalised_counts[0][1]).getText().contains("ENSMUSG00000059991\t4.52751370160052") } ) @@ -278,7 +278,7 @@ nextflow_process { { assert process.success }, { assert snapshot(process.out.model, process.out.versions).match() }, { assert path(process.out.results[0][1]).getText().contains("ENSMUSG00000023978\t-2.8363444336503") }, - { assert path(process.out.results[0][1]).getText().contains("ENSMUSG00000059991\t0.736009837885068") }, + { assert path(process.out.results[0][1]).getText().contains("ENSMUSG00000059991\t0.7360") }, { assert path(process.out.normalised_counts[0][1]).getText().contains("ENSMUSG00000023978\t6.11247620232167") }, { assert path(process.out.normalised_counts[0][1]).getText().contains("ENSMUSG00000059991\t4.52751370160052") } ) diff --git a/modules/nf-core/links/environment.yml b/modules/nf-core/links/environment.yml new file mode 100644 index 000000000000..9b3fd0b63736 --- /dev/null +++ b/modules/nf-core/links/environment.yml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::links=2.0.1" diff --git a/modules/nf-core/links/main.nf b/modules/nf-core/links/main.nf new file mode 100644 index 000000000000..c55bc661e270 --- /dev/null +++ b/modules/nf-core/links/main.nf @@ -0,0 +1,85 @@ +process LINKS { + tag "$meta.id" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/links:2.0.1--h4ac6f70_5': + 'biocontainers/links:2.0.1--h4ac6f70_5' }" + + input: + tuple val(meta), path(assembly) + tuple val(meta2), path(reads) + + output: + tuple val(meta), path("*.log"), emit: log + tuple val(meta), path("*.pairing_distribution.csv"), emit: pairing_distribution, optional: true + tuple val(meta), path("*.pairing_issues"), emit: pairing_issues + tuple val(meta), path("*.scaffolds"), emit: scaffolds_csv + tuple val(meta), path("*.scaffolds.fa"), emit: scaffolds_fasta + tuple val(meta), path("*.bloom"), emit: bloom + tuple val(meta), path("*.gv"), emit: scaffolds_graph + tuple val(meta), path("*.assembly_correspondence.tsv"), emit: assembly_correspondence + tuple val(meta), path("*.simplepair_checkpoint.tsv"), emit: simplepair_checkpoint, optional: true + tuple val(meta), path("*.tigpair_checkpoint.tsv"), emit: tigpair_checkpoint + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def prefix = task.ext.prefix ?: "${meta.id}" + // Currently LINKS does not support more than 4 threads + def nthreads = "${task.cpus}" < 4 ? "${task.cpus}" : 4 + def args = task.ext.args ?: "" + """ + if [[ ${assembly} == *.gz ]]; + then + gzip -dc ${assembly} > assembly.fa + else + ln -s ${assembly} assembly.fa + fi + + for read_file in ${reads}; + do + if [[ \$read_file == *.gz ]]; + then + gzip -dc \$read_file > \$(basename \$read_file .gz) + echo \$(basename \$read_file .gz) >> readfile.fof + else + echo \$read_file >> readfile.fof + fi + done + + LINKS -f assembly.fa \\ + -s readfile.fof \\ + -j $nthreads \\ + -b ${prefix} \\ + $args + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + LINKS: \$(echo \$(LINKS | grep -o 'LINKS v.*' | sed 's/LINKS v//')) + END_VERSIONS + """ + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + + """ + touch ${prefix}.log + touch ${prefix}.pairing_distribution.csv + touch ${prefix}.pairing_issues + touch ${prefix}.scaffolds + touch ${prefix}.scaffolds.fa + touch ${prefix}.bloom + touch ${prefix}.gv + touch ${prefix}.assembly_correspondence.tsv + touch ${prefix}.simplepair_checkpoint.tsv + touch ${prefix}.tigpair_checkpoint.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + LINKS: \$(echo \$(LINKS | grep -o 'LINKS v.*' | sed 's/LINKS v//')) + END_VERSIONS + """ + } diff --git a/modules/nf-core/links/meta.yml b/modules/nf-core/links/meta.yml new file mode 100644 index 000000000000..94004cdc2167 --- /dev/null +++ b/modules/nf-core/links/meta.yml @@ -0,0 +1,175 @@ +--- +name: "links" +description: | + LINKS is a genomics application for scaffolding genome assemblies with long reads, + such as those produced by Oxford Nanopore Technologies Ltd. + It can be used to scaffold high-quality draft genome assemblies with any long sequences + (eg. ONT reads, PacBio reads, other draft genomes, etc). + It is also used to scaffold contig pairs linked by ARCS/ARKS. + This module is for LINKS >=2.0.0 and does not support MPET input. +keywords: + - scaffold + - long-reads + - genomics +tools: + - "links": + description: "Long Interval Nucleotide K-mer Scaffolder" + homepage: "https://www.bcgsc.ca/resources/software/links" + documentation: "https://github.com/bcgsc/LINKS" + tool_dev_url: "https://github.com/bcgsc/LINKS" + doi: "10.1186/s13742-015-0076-3" + licence: ['GPL v3'] + identifier: "" + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - assembly: + type: file + description: (Multi-)fasta file containing the draft assembly + pattern: "*.{fa,fasta,fa.gz,fasta.gz}" + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - reads: + type: file + description: fastq file(s) containing the long reads to be used for scaffolding + pattern: "*.{fq,fastq,fq.gz,fastq.gz}" + +output: + - log: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1']` + - "*.log": + type: file + description: text file; Logs execution time / errors / pairing stats. + pattern: "*.log" + - pairing_distribution: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1']` + - "*.pairing_distribution.csv": + type: file + description: | + comma-separated file; 1st column is the calculated distance + for each pair (template) with reads that assembled logically + within the same contig. 2nd column is the number of pairs at + that distance. + pattern: "*.pairing_distribution.csv" + - pairing_issues: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1']` + - "*.pairing_issues": + type: file + description: | + text file; Lists all pairing issues encountered between contig + pairs and illogical/out-of-bounds pairing. + pattern: "*.pairing_issues" + - scaffolds_csv: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1']` + - "*.scaffolds": + type: file + description: comma-separated file; containing the new scaffold(s) + pattern: "*.scaffolds" + - scaffolds_fasta: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1']` + - "*.scaffolds.fa": + type: file + description: fasta file of the new scaffold sequence + pattern: "*.scaffolds.fa" + - bloom: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1']` + - "*.bloom": + type: file + description: | + Bloom filter created by shredding the -f input + into k-mers of size -k + pattern: "*.bloom" + - scaffolds_graph: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1']` + - "*.gv": + type: file + description: | + scaffold graph (for visualizing merges), can be rendered + in neato, graphviz, etc + pattern: "*.gv" + - assembly_correspondence: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1']` + - "*.assembly_correspondence.tsv": + type: file + description: | + correspondence file lists the scaffold ID, + contig ID, original_name, #linking kmer pairs, + links ratio, gap or overlap + pattern: "*.assembly_correspondence.tsv" + - simplepair_checkpoint: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1']` + - "*.simplepair_checkpoint.tsv": + type: file + description: checkpoint file, contains info to rebuild datastructure for .gv graph + pattern: "*.simplepair_checkpoint.tsv" + - tigpair_checkpoint: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1']` + - "*.tigpair_checkpoint.tsv": + type: file + description: | + if -b BASNAME.tigpair_checkpoint.tsv is present, + LINKS will skip the kmer pair extraction and contig pairing stages. + Delete this file to force LINKS to start at the beginning. + This file can be used to: + 1) quickly test parameters (-l min. links / -a min. links ratio), + 2) quickly recover from crash, + 3) explore very large kmer spaces, + 4) scaffold with output of ARCS + pattern: "*.tigpair_checkpoint.tsv" + - versions: + - "versions.yml": + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@nschan" +maintainers: + - "@nschan" diff --git a/modules/nf-core/links/tests/main.nf.test b/modules/nf-core/links/tests/main.nf.test new file mode 100644 index 000000000000..4b449ab27eb2 --- /dev/null +++ b/modules/nf-core/links/tests/main.nf.test @@ -0,0 +1,163 @@ +nextflow_process { + name "Test Process LINKS" + script "../main.nf" + process "LINKS" + + tag "modules" + tag "modules_nfcore" + tag "links" + + test("LINKS - LINKS test data") { + config './nextflow.config' + + when { + params { + module_args = "-d 1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,12000,14000,16000,18000,20000" + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/scaffolding/LINKS/contigs.fasta', checkIfExists: true), + ] + input[1] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/scaffolding/LINKS/genome.fasta', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log[0][1]).name, + process.out.pairing_issues, + process.out.scaffolds_csv, + process.out.scaffolds_fasta, + process.out.bloom, + file(process.out.scaffolds_graph[0][1]).name, + process.out.assembly_correspondence, + process.out.tigpair_checkpoint, + process.out.versions + ).match() + } + ) + } + + } + + test("LINKS - longstitch test data 1") { + config './nextflow.config' + + when { + params { + module_args = "-d 1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,12000,14000,16000,18000,20000" + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/scaffolding/longstitch/test_scaffolds1.fa', checkIfExists: true), + ] + input[1] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/scaffolding/longstitch/test_reads1.fa.gz', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log[0][1]).name, + file(process.out.pairing_issues[0][1]).name, + process.out.scaffolds_csv, + process.out.scaffolds_fasta, + process.out.bloom, + file(process.out.scaffolds_graph[0][1]).name, + file(process.out.assembly_correspondence[0][1]).name, + file(process.out.tigpair_checkpoint[0][1]).name, + process.out.versions + ).match() + } + ) + } + + } + test("LINKS - longstitch test data 2") { + config './nextflow.config' + + when { + params { + module_args = "-d 1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,12000,14000,16000,18000,20000" + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/scaffolding/longstitch/test_scaffolds2.fa', checkIfExists: true), + ] + input[1] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'genomics/scaffolding/longstitch/test_reads2.fa.gz', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.log[0][1]).name, + file(process.out.pairing_issues[0][1]).name, + process.out.scaffolds_csv, + process.out.scaffolds_fasta, + process.out.bloom, + file(process.out.scaffolds_graph[0][1]).name, + file(process.out.assembly_correspondence[0][1]).name, + file(process.out.tigpair_checkpoint[0][1]).name, + process.out.versions + ).match() + } + ) + } + + } + test("LINKS - stub") { + + options "-stub" + config './nextflow.config' + + when { + params { + module_args = "-d 1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,12000,14000,16000,18000,20000" + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/scaffolding/LINKS/contigs.fasta', checkIfExists: true), + ] + input[1] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/scaffolding/LINKS/genome.fasta', checkIfExists: true), + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/links/tests/main.nf.test.snap b/modules/nf-core/links/tests/main.nf.test.snap new file mode 100644 index 000000000000..0e2507a3824a --- /dev/null +++ b/modules/nf-core/links/tests/main.nf.test.snap @@ -0,0 +1,323 @@ +{ + "LINKS - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.pairing_distribution.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "10": [ + "versions.yml:md5,f58863e433b849b1ef0dfc19cb57656b" + ], + "2": [ + [ + { + "id": "test" + }, + "test.pairing_issues:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test.scaffolds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.scaffolds.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.bloom:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "test.gv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test" + }, + "test.assembly_correspondence.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test" + }, + "test.simplepair_checkpoint.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + [ + { + "id": "test" + }, + "test.tigpair_checkpoint.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "assembly_correspondence": [ + [ + { + "id": "test" + }, + "test.assembly_correspondence.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bloom": [ + [ + { + "id": "test" + }, + "test.bloom:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "log": [ + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pairing_distribution": [ + [ + { + "id": "test" + }, + "test.pairing_distribution.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pairing_issues": [ + [ + { + "id": "test" + }, + "test.pairing_issues:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "scaffolds_csv": [ + [ + { + "id": "test" + }, + "test.scaffolds:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "scaffolds_fasta": [ + [ + { + "id": "test" + }, + "test.scaffolds.fa:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "scaffolds_graph": [ + [ + { + "id": "test" + }, + "test.gv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "simplepair_checkpoint": [ + [ + { + "id": "test" + }, + "test.simplepair_checkpoint.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "tigpair_checkpoint": [ + [ + { + "id": "test" + }, + "test.tigpair_checkpoint.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,f58863e433b849b1ef0dfc19cb57656b" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-04-11T11:49:53.947870525" + }, + "LINKS - longstitch test data 1": { + "content": [ + "test.log", + "test.pairing_issues", + [ + [ + { + "id": "test" + }, + "test.scaffolds:md5,e12db5e5e6a1b5e26d2b50b6256c960d" + ] + ], + [ + [ + { + "id": "test" + }, + "test.scaffolds.fa:md5,afe56607a3d2c3b1e2d605bdf7ca545f" + ] + ], + [ + [ + { + "id": "test" + }, + "test.bloom:md5,b912b31cfadaf81e722f5441ac639f60" + ] + ], + "test.gv", + "test.assembly_correspondence.tsv", + "test.tigpair_checkpoint.tsv", + [ + "versions.yml:md5,f58863e433b849b1ef0dfc19cb57656b" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-04-11T13:39:00.252899964" + }, + "LINKS - longstitch test data 2": { + "content": [ + "test.log", + "test.pairing_issues", + [ + [ + { + "id": "test" + }, + "test.scaffolds:md5,00a943691b987adebe0ab40efced9c7e" + ] + ], + [ + [ + { + "id": "test" + }, + "test.scaffolds.fa:md5,ed43c629e8d440e3cf6fb8b21742557c" + ] + ], + [ + [ + { + "id": "test" + }, + "test.bloom:md5,695262bb4beda52665d2f7ec476a4e7b" + ] + ], + "test.gv", + "test.assembly_correspondence.tsv", + "test.tigpair_checkpoint.tsv", + [ + "versions.yml:md5,f58863e433b849b1ef0dfc19cb57656b" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-04-11T13:39:36.483298325" + }, + "LINKS - LINKS test data": { + "content": [ + "test.log", + [ + [ + { + "id": "test" + }, + "test.pairing_issues:md5,eb8b04b4ec170a319b40d2ee16a5cf96" + ] + ], + [ + [ + { + "id": "test" + }, + "test.scaffolds:md5,afe5339405b830e97095058080550064" + ] + ], + [ + [ + { + "id": "test" + }, + "test.scaffolds.fa:md5,4aa442ee4b05e1608daf7b5b033a4203" + ] + ], + [ + [ + { + "id": "test" + }, + "test.bloom:md5,96f54f577d1c589251ea0cfe624b898d" + ] + ], + "test.gv", + [ + [ + { + "id": "test" + }, + "test.assembly_correspondence.tsv:md5,0efc40db474ba8d5b334ad48add4bd9d" + ] + ], + [ + [ + { + "id": "test" + }, + "test.tigpair_checkpoint.tsv:md5,9208c8fe686b5989eaec1485a74cf44e" + ] + ], + [ + "versions.yml:md5,f58863e433b849b1ef0dfc19cb57656b" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-04-11T11:30:01.790074303" + } +} \ No newline at end of file diff --git a/modules/nf-core/links/tests/nextflow.config b/modules/nf-core/links/tests/nextflow.config new file mode 100644 index 000000000000..1279535c158f --- /dev/null +++ b/modules/nf-core/links/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: 'LINKS' { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/metaspace/download/environment.yml b/modules/nf-core/metaspace/download/environment.yml new file mode 100644 index 000000000000..0dda43c69c33 --- /dev/null +++ b/modules/nf-core/metaspace/download/environment.yml @@ -0,0 +1,9 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::metaspace2020=2.0.9 + - conda-forge::pandas=2.2.3 + - conda-forge::python=3.11.11 diff --git a/modules/nf-core/metaspace/download/main.nf b/modules/nf-core/metaspace/download/main.nf new file mode 100644 index 000000000000..aa56a6133b70 --- /dev/null +++ b/modules/nf-core/metaspace/download/main.nf @@ -0,0 +1,42 @@ +process METASPACE_DOWNLOAD { + label 'process_low' + + 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/c3/c317f9380b8b631acacad83ab362b2badb42e8782f6bfa03e5befe59f2382283/data': + 'community.wave.seqera.io/library/python_pip_metaspace-converter:958b8906de66e072' }" + + input: + tuple val(dataset_id), val(database), val(version) + + output: + path "${dataset_id}_*.csv", optional: true, emit: results + stdout emit: log // check meta.yml for see how to use! + path 'versions.yml' , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + template 'metaspace_download.py' + + stub: + """ + if [[ "${database}" != "null" && "${version}" != "null" ]]; then + touch ${dataset_id}_${database}_${version}.csv + elif [[ "${database}" != "null" ]]; then + touch ${dataset_id}_${database}_all_versions.csv + else + touch ${dataset_id}_all_databases.csv + fi + + echo "Stub: Processing dataset_id: ${dataset_id}, database: ${database}, version: ${version}" > ${dataset_id}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python --version | sed 's/Python //g') + pandas: \$(python -c "import pandas; print(pandas.__version__)") + metaspace: \$(python -c "import metaspace; print(metaspace.__version__)") + END_VERSIONS + """ +} diff --git a/modules/nf-core/metaspace/download/meta.yml b/modules/nf-core/metaspace/download/meta.yml new file mode 100644 index 000000000000..b31e14764f74 --- /dev/null +++ b/modules/nf-core/metaspace/download/meta.yml @@ -0,0 +1,78 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: "metaspace_download" +description: A module to download dataset results from the METASPACE platform and + save them as CSV files, using a containerized Python script. Inputs are provided + via a CSV file or a list of datasets, with results saved to a specified output directory. +keywords: + - metaspace + - metabolite annotation + - data-download + - csv +tools: + - metaspace2020: + description: Python package providing programmatic access to the METASPACE platform + homepage: https://metaspace2020.readthedocs.io + documentation: https://metaspace2020.readthedocs.io + tool_dev_url: https://github.com/metaspace2020/metaspace/tree/master/metaspace/python-client + licence: ["Apache-2.0 license"] +input: + - - dataset_id: + type: string + description: | + The ID of the dataset to process. + The ID is the last part of the dataset URL. + For example, in the URL `https://metaspace2020.org/dataset/2022-08-05_17h28m56s`, + the `dataset_id` is `2022-08-05_17h28m56s`. + optional: false + - database: + type: string + description: | + The database to download the dataset from (default: 'HMDB'). + If not provided, all dataset will be included. + optional: true + - version: + type: string + description: | + The version of the database to download the dataset from (default: 'v4'). + If not provided, all versions will be included. + optional: true + +output: + - results: + - ${dataset_id}_*.csv: + type: file + description: | + CSV file containing the downloaded dataset results, saved to the directory specified by the output parameter. + Filename format is '{dataset_id}_*.csv'. + pattern: "*.csv" + ontologies: + - edam: "http://edamontology.org/format_3752:latest" # CSV format + - log: + - "emit:": + type: string + description: | + The standard output (stdout) of the script, containing log messages. + You can print the last log to see the download progress of all the datasets. + Example: + METASPACE_DOWNLOAD.out.log.view { "${it.split('\n').last().trim()}" } + It will print the last log message of the script. + For Example: + "❌ {dataset_id} Dataset not found or inaccessible. Skipping this dataset." + "❌ {dataset_id} could not find database: {database}" + "❌ {dataset_id} has no annotation data in database: {database}." + "⚠️ {dataset_id} has multiple {database} version. All the version saved to {filename}" + "✅ {dataset_id} with {database} database are saved to {filename}" + "✅ {dataset_id} with all database are saved to {filename}" + - versions: + - versions.yml: + type: file + description: | + YAML file containing the versions of the tools used in the pipeline. + This file is automatically generated by the pipeline and should not be modified. + pattern: "versions.yml" + ontologies: + - edam: "http://edamontology.org/format_3475" # YAML format +authors: + - "@Dewey-Wang" +maintainers: + - "@Dewey-Wang" diff --git a/modules/nf-core/metaspace/download/templates/metaspace_download.py b/modules/nf-core/metaspace/download/templates/metaspace_download.py new file mode 100644 index 000000000000..6da11dc1bffd --- /dev/null +++ b/modules/nf-core/metaspace/download/templates/metaspace_download.py @@ -0,0 +1,161 @@ +#!/usr/bin/env python3 + +import platform + +import metaspace +import pandas as pd +from metaspace import SMInstance + + +def download_dataset_results(dataset_id, database=None, version=None): + """ + Download the results of a specified dataset and save them as a CSV file. + + Args: + dataset_id (str): The ID of the dataset to process. + The ID is the last part of the dataset URL. + For example, in the URL `https://metaspace2020.org/dataset/2022-08-05_17h28m56s`, + the `dataset_id` is `2022-08-05_17h28m56s`. + database (str, optional): The name of the database to filter. If not provided, all databases will be included. + version (str, optional): The version of the database to filter. If not provided, all versions will be included. + + Returns: + pd.DataFrame: A DataFrame containing the results. + + Behavior: + - If only `database` is provided and it has multiple versions, the results will be combined into one file named `{database}_all_versions.csv`. + - If the `database` has only one version, the file will be named `{database}_{version}.csv`. + - If no `database` is provided, it will download all the annotations file from all database and the file will be named `all_databases.csv`. + """ + # Retrieve the dataset object + print(f"Processing dataset_id: {dataset_id}, database: {database}, version: {version}") + # print("Initializing SMInstance...") + sm = SMInstance() + print(f"Fetching dataset: {dataset_id}") + try: + dataset = sm.dataset(id=dataset_id) + except Exception: + print(f"❌ {dataset_id} Dataset not found or inaccessible. Skipping this dataset.") + return None + + # Step 1: Generate annotation statistics table + # print("Fetching database details...") + databases = dataset.database_details + # Extract database names and versions + database_info = [] + for db in databases: + db_str = str(db) + name_version = db_str.split(":")[1:3] + name_version = [nv.strip(">") for nv in name_version] # Remove trailing '>' + database_info.append(" ".join(name_version)) + + print("Available databases and versions:") + for db in database_info: + print(f" - {db}") + + # Check if the multiple versions database exists + has_multiple_versions = False + # Check if the specified database exists + if database: + matched_databases = [db for db in database_info if db.startswith(database)] + if not matched_databases: + print(f"❌ {dataset_id} could not find database: {database}") + return None + elif len(matched_databases) > 1 and version is None: + has_multiple_versions = True + print(f"Warning: Multiple versions found for database {database}.") + print("Available versions:") + for db in matched_databases: + print(f" - {db}") + + # Initialize the results DataFrame + results_df = pd.DataFrame() + + # Process the specified database names and versions + for db in database_info: + name, ver = db.split() + if (database is None or database == name) and (version is None or version == ver): + print(f"Processing database: {name}, version: {ver}") + result = dataset.results(database=(name, ver)) + result_df = pd.DataFrame(result) + result_df["Database"] = name + result_df["Version"] = ver + results_df = pd.concat([results_df, result_df], ignore_index=True) + + if results_df.empty: + print(f"❌ {dataset_id} has no annotation data in database: {database}.") + return None + + # Extract the content of '+adduct' and '-adduct'' + if "ion" in results_df.columns: + results_df["Adduct"] = results_df["ion"].str.extract(r"([+-][A-Za-z0-9]+)") + # Rename the `intensity` column to `maxIntensity` + if "intensity" in results_df.columns: + results_df.rename(columns={"intensity": "maxIntensity"}, inplace=True) + + # Dynamically generate the CSV file name + if database: + matched_versions = [db.split()[1] for db in database_info if db.startswith(database)] + if len(matched_versions) > 1: + filename = f"{dataset_id}_{database}_all_versions.csv" + else: + filename = f"{dataset_id}_{database}_{matched_versions[0]}.csv" + else: + filename = f"{dataset_id}_all_databases.csv" + + # Save the results to a CSV file + results_df.to_csv(filename, index=False) + if has_multiple_versions: + print(f"⚠️ {dataset_id} has multiple {database} version. All the version saved to {filename}") + elif database: + print(f"✅ {dataset_id} with {database} database are saved to {filename}") + else: + print(f"✅ {dataset_id} with all database are saved to {filename}") + + return results_df + + +dataset_id = "${dataset_id}" + +if dataset_id == "null" or dataset_id is None: + raise ValueError("Error: input csv or datasets contains an entry with missing dataset_id.") + +database = "${database}" if "${database}" != "null" else None +version = "${version}" if "${version}" != "null" else None + +result = download_dataset_results(dataset_id, database, version) + + +def format_yaml_like(data: dict, indent: int = 0) -> str: + """Formats a dictionary to a YAML-like string. + + Args: + data (dict): The dictionary to format. + indent (int): The current indentation level. + + Returns: + str: A string formatted as YAML. + """ + yaml_str = "" + for key, value in data.items(): + spaces = " " * indent + if isinstance(value, dict): + yaml_str += f"{spaces}{key}:\\n{format_yaml_like(value, indent + 1)}" + else: + yaml_str += f"{spaces}{key}: {value}\\n" + return yaml_str + + +# Versions + +versions = { + "${task.process}": { + "python": platform.python_version(), + "pandas": pd.__version__, + "metaspace": metaspace.__version__, + } +} + +with open("versions.yml", "w") as f: + f.write(format_yaml_like(versions)) +print("versions.yml file has been generated.") diff --git a/modules/nf-core/metaspace/download/tests/main.nf.test b/modules/nf-core/metaspace/download/tests/main.nf.test new file mode 100644 index 000000000000..cf1b78cd32d5 --- /dev/null +++ b/modules/nf-core/metaspace/download/tests/main.nf.test @@ -0,0 +1,82 @@ +// nf-core modules test metaspace/download +nextflow_process { + + name "Test Process metaspace/download" + script "../main.nf" + process "METASPACE_DOWNLOAD" + + tag "modules" + tag "modules_nfcore" + tag "metaspace" + tag "metaspace/download" + + test("metaspace/download - datasets") { + when { + process { + """ + input[0] = Channel.from([ + ['2022-08-05_17h28m56s', 'KEGG', null], + ['2022-08-05_17h28m56s', null, null] + ]) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("metaspace/download - wrong_format") { + when { + process { + """ + input[0] = Channel.from([ + ['2022-08-05_17h28m56s', 'KEGG', null], + ['2022-08-05_17h28m56s', null, null], + [null, 'KEGG', null] // Missing dataset_id + ]) + """ + } + } + then { + assert process.failed + assert process.exitStatus == 1 + + def errorMessage = process.stderr.find { it.contains("ValueError") } ?: + process.stdout.find { it.contains("ValueError") } + + println "Error message: ${errorMessage}" + + assertAll( + { assert process.failed }, + { assert process.exitStatus == 1 }, + { assert errorMessage != null }, + { assert errorMessage.contains("Error: input csv or datasets contains an entry with missing dataset_id") }, + { assert snapshot(errorMessage).match("error_message") } + ) + } + } + test("metaspace/download - stub") { + options "-stub" + when { + process { + """ + input[0] = Channel.from([ + ['2022-08-05_17h28m56s', 'KEGG', null], + ['2022-08-05_17h28m56s', null, null] + ]) + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/metaspace/download/tests/main.nf.test.snap b/modules/nf-core/metaspace/download/tests/main.nf.test.snap new file mode 100644 index 000000000000..b394da34cc03 --- /dev/null +++ b/modules/nf-core/metaspace/download/tests/main.nf.test.snap @@ -0,0 +1,82 @@ +{ + "error_message": { + "content": [ + " raise ValueError(\"Error: input csv or datasets contains an entry with missing dataset_id.\")" + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-27T23:59:56.527423" + }, + "metaspace/download - datasets": { + "content": [ + { + "0": [ + "2022-08-05_17h28m56s_KEGG_v1.csv:md5,44a3760625f0e2f9aeee5639bd973d9b", + "2022-08-05_17h28m56s_all_databases.csv:md5,93496262735b9f316f82c843c773a944" + ], + "1": [ + "Processing dataset_id: 2022-08-05_17h28m56s, database: KEGG, version: None\nFetching dataset: 2022-08-05_17h28m56s\nAvailable databases and versions:\n - HMDB-cotton v4\n - LipidMaps 2017-12-12\n - KEGG v1\n - BraChemDB 2018-01\nProcessing database: KEGG, version: v1\n\u2705 2022-08-05_17h28m56s with KEGG database are saved to 2022-08-05_17h28m56s_KEGG_v1.csv\nversions.yml file has been generated.\n", + "Processing dataset_id: 2022-08-05_17h28m56s, database: None, version: None\nFetching dataset: 2022-08-05_17h28m56s\nAvailable databases and versions:\n - HMDB-cotton v4\n - LipidMaps 2017-12-12\n - KEGG v1\n - BraChemDB 2018-01\nProcessing database: HMDB-cotton, version: v4\nProcessing database: LipidMaps, version: 2017-12-12\nProcessing database: KEGG, version: v1\nProcessing database: BraChemDB, version: 2018-01\n\u2705 2022-08-05_17h28m56s with all database are saved to 2022-08-05_17h28m56s_all_databases.csv\nversions.yml file has been generated.\n" + ], + "2": [ + "versions.yml:md5,194f18da1ce360bf7f6ba4afe4964a89", + "versions.yml:md5,194f18da1ce360bf7f6ba4afe4964a89" + ], + "log": [ + "Processing dataset_id: 2022-08-05_17h28m56s, database: KEGG, version: None\nFetching dataset: 2022-08-05_17h28m56s\nAvailable databases and versions:\n - HMDB-cotton v4\n - LipidMaps 2017-12-12\n - KEGG v1\n - BraChemDB 2018-01\nProcessing database: KEGG, version: v1\n\u2705 2022-08-05_17h28m56s with KEGG database are saved to 2022-08-05_17h28m56s_KEGG_v1.csv\nversions.yml file has been generated.\n", + "Processing dataset_id: 2022-08-05_17h28m56s, database: None, version: None\nFetching dataset: 2022-08-05_17h28m56s\nAvailable databases and versions:\n - HMDB-cotton v4\n - LipidMaps 2017-12-12\n - KEGG v1\n - BraChemDB 2018-01\nProcessing database: HMDB-cotton, version: v4\nProcessing database: LipidMaps, version: 2017-12-12\nProcessing database: KEGG, version: v1\nProcessing database: BraChemDB, version: 2018-01\n\u2705 2022-08-05_17h28m56s with all database are saved to 2022-08-05_17h28m56s_all_databases.csv\nversions.yml file has been generated.\n" + ], + "results": [ + "2022-08-05_17h28m56s_KEGG_v1.csv:md5,44a3760625f0e2f9aeee5639bd973d9b", + "2022-08-05_17h28m56s_all_databases.csv:md5,93496262735b9f316f82c843c773a944" + ], + "versions": [ + "versions.yml:md5,194f18da1ce360bf7f6ba4afe4964a89", + "versions.yml:md5,194f18da1ce360bf7f6ba4afe4964a89" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-05T14:05:56.321679" + }, + "metaspace/download - stub": { + "content": [ + { + "0": [ + "2022-08-05_17h28m56s_KEGG_all_versions.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "2022-08-05_17h28m56s_all_databases.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "1": [ + "", + "" + ], + "2": [ + "versions.yml:md5,83b3435f6de10ae175f191530d4389dd", + "versions.yml:md5,83b3435f6de10ae175f191530d4389dd" + ], + "log": [ + "", + "" + ], + "results": [ + "2022-08-05_17h28m56s_KEGG_all_versions.csv:md5,d41d8cd98f00b204e9800998ecf8427e", + "2022-08-05_17h28m56s_all_databases.csv:md5,d41d8cd98f00b204e9800998ecf8427e" + ], + "versions": [ + "versions.yml:md5,83b3435f6de10ae175f191530d4389dd", + "versions.yml:md5,83b3435f6de10ae175f191530d4389dd" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-05T14:15:24.315874" + } +} \ No newline at end of file diff --git a/modules/nf-core/mindagap/duplicatefinder/environment.yml b/modules/nf-core/mindagap/duplicatefinder/environment.yml index f9b2a1ac7520..5f748da68f34 100644 --- a/modules/nf-core/mindagap/duplicatefinder/environment.yml +++ b/modules/nf-core/mindagap/duplicatefinder/environment.yml @@ -4,4 +4,5 @@ channels: - conda-forge - bioconda dependencies: + - conda-forge::numpy=1.24.2 - bioconda::mindagap=0.0.2 diff --git a/modules/nf-core/mindagap/duplicatefinder/main.nf b/modules/nf-core/mindagap/duplicatefinder/main.nf index ad7ce5b238d2..794de7fdd6ad 100644 --- a/modules/nf-core/mindagap/duplicatefinder/main.nf +++ b/modules/nf-core/mindagap/duplicatefinder/main.nf @@ -2,9 +2,9 @@ process MINDAGAP_DUPLICATEFINDER { tag "$meta.id" label 'process_single' - conda "bioconda::mindagap=0.0.2" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mindagap:0.0.2--pyhdfd78af_1': + 'https://depot.galaxyproject.org/singularity/mindagap:0.0.2--pyhdfd78af_1' : 'biocontainers/mindagap:0.0.2--pyhdfd78af_1' }" input: @@ -18,8 +18,7 @@ process MINDAGAP_DUPLICATEFINDER { 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 ?: '' """ duplicate_finder.py \\ $spot_table \\ @@ -30,4 +29,14 @@ process MINDAGAP_DUPLICATEFINDER { mindagap: \$(mindagap.py test -v) END_VERSIONS """ + + stub: + """ + touch ${spot_table.baseName}_markedDups.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + mindagap: \$(mindagap.py test -v) + END_VERSIONS + """ } diff --git a/modules/nf-core/mindagap/duplicatefinder/tests/main.nf.test b/modules/nf-core/mindagap/duplicatefinder/tests/main.nf.test index d43a7de8358c..7e07f7412cb8 100644 --- a/modules/nf-core/mindagap/duplicatefinder/tests/main.nf.test +++ b/modules/nf-core/mindagap/duplicatefinder/tests/main.nf.test @@ -9,14 +9,46 @@ nextflow_process { tag "mindagap" tag "mindagap/duplicatefinder" - test("test_mindagap_duplicatefinder_spots") { + test("mindagap - duplicatefinder - spots - txt") { when { + params { + modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/molkart/' + } + + process { + """ + input[0] = [ + [ id:'test'], + file(params.modules_testdata_base_path + 'test_data/input_data/spots.txt', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("mindagap - duplicatefinder - spots - stub") { + + options "-stub" + + when { + params { + modules_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/molkart/' + } + process { """ input[0] = [ - [ id:'test'], // meta map - file('https://raw.githubusercontent.com/nf-core/test-datasets/molkart/test_data/input_data/spots.txt') + [ id:'test'], + file(params.modules_testdata_base_path + 'test_data/input_data/spots.txt', checkIfExists: true) ] """ } diff --git a/modules/nf-core/mindagap/duplicatefinder/tests/main.nf.test.snap b/modules/nf-core/mindagap/duplicatefinder/tests/main.nf.test.snap index a1af5c2b905e..c43aee396617 100644 --- a/modules/nf-core/mindagap/duplicatefinder/tests/main.nf.test.snap +++ b/modules/nf-core/mindagap/duplicatefinder/tests/main.nf.test.snap @@ -1,5 +1,38 @@ { - "test_mindagap_duplicatefinder_spots": { + "mindagap - duplicatefinder - spots - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "spots_markedDups.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,ae112b853ec32ee1c5eecaf421d01003" + ], + "marked_dups_spots": [ + [ + { + "id": "test" + }, + "spots_markedDups.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,ae112b853ec32ee1c5eecaf421d01003" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-02T19:57:30.980911113" + }, + "mindagap - duplicatefinder - spots - txt": { "content": [ { "0": [ @@ -26,6 +59,10 @@ ] } ], - "timestamp": "2023-11-30T22:56:20.101101751" + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-02T19:57:24.039800026" } -} \ No newline at end of file +} diff --git a/modules/nf-core/mindagap/mindagap/main.nf b/modules/nf-core/mindagap/mindagap/main.nf index 3f06996b5d0b..e738b27c0f5a 100644 --- a/modules/nf-core/mindagap/mindagap/main.nf +++ b/modules/nf-core/mindagap/mindagap/main.nf @@ -4,8 +4,8 @@ process MINDAGAP_MINDAGAP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mindagap:0.0.2--pyhdfd78af_1' : - 'biocontainers/mindagap:0.0.2--pyhdfd78af_1' }" + 'https://depot.galaxyproject.org/singularity/mindagap:0.0.2--pyhdfd78af_1' : + 'biocontainers/mindagap:0.0.2--pyhdfd78af_1' }" input: tuple val(meta), path(panorama) @@ -18,8 +18,7 @@ process MINDAGAP_MINDAGAP { 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 ?: '' """ mindagap.py \\ $panorama \\ @@ -32,7 +31,6 @@ process MINDAGAP_MINDAGAP { """ stub: - def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${panorama.baseName}_gridfilled.tiff diff --git a/modules/nf-core/mindagap/mindagap/tests/main.nf.test b/modules/nf-core/mindagap/mindagap/tests/main.nf.test index dbad49101be8..ba3133ec9aab 100644 --- a/modules/nf-core/mindagap/mindagap/tests/main.nf.test +++ b/modules/nf-core/mindagap/mindagap/tests/main.nf.test @@ -17,7 +17,7 @@ nextflow_process { """ input[0] = [ [ id:'test' ], - file(params.test_data['imaging']['tiff']['mouse_heart_wga'], checkIfExists: true) + file(params.modules_testdata_base_path + 'imaging/tiff/mindagap.mouse_heart.wga.tiff', checkIfExists: true) ] """ } @@ -33,4 +33,28 @@ nextflow_process { } + test("mindgap - tiff - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'imaging/tiff/mindagap.mouse_heart.wga.tiff', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + } diff --git a/modules/nf-core/mindagap/mindagap/tests/main.nf.test.snap b/modules/nf-core/mindagap/mindagap/tests/main.nf.test.snap index f799a144b53a..f75e48cf908b 100644 --- a/modules/nf-core/mindagap/mindagap/tests/main.nf.test.snap +++ b/modules/nf-core/mindagap/mindagap/tests/main.nf.test.snap @@ -1,4 +1,37 @@ { + "mindgap - tiff - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "mindagap.mouse_heart.wga_gridfilled.tiff:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,937acaba2cb90efc2705b71839e6cefc" + ], + "tiff": [ + [ + { + "id": "test" + }, + "mindagap.mouse_heart.wga_gridfilled.tiff:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,937acaba2cb90efc2705b71839e6cefc" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-02T19:54:00.036000058" + }, "tiff": { "content": [ [ @@ -10,6 +43,10 @@ ] ] ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, "timestamp": "2023-12-15T11:01:20.825556802" }, "versions": { @@ -18,6 +55,10 @@ "versions.yml:md5,937acaba2cb90efc2705b71839e6cefc" ] ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, "timestamp": "2023-12-15T11:01:20.840211732" } } \ No newline at end of file diff --git a/modules/nf-core/modkit/pileup/environment.yml b/modules/nf-core/modkit/pileup/environment.yml index 7a87bce9d706..1e4d674d6c7c 100644 --- a/modules/nf-core/modkit/pileup/environment.yml +++ b/modules/nf-core/modkit/pileup/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - ont-modkit=0.3.0 + - ont-modkit=0.4.3 diff --git a/modules/nf-core/modkit/pileup/main.nf b/modules/nf-core/modkit/pileup/main.nf index f21a733f6677..7a3bb5e57799 100644 --- a/modules/nf-core/modkit/pileup/main.nf +++ b/modules/nf-core/modkit/pileup/main.nf @@ -4,12 +4,12 @@ process MODKIT_PILEUP { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/ont-modkit:0.3.0--h5c23e0d_0': - 'biocontainers/ont-modkit:0.3.0--h5c23e0d_0' }" + 'https://depot.galaxyproject.org/singularity/ont-modkit:0.4.3--hcdda2d0_0': + 'biocontainers/ont-modkit:0.4.3--hcdda2d0_0' }" input: tuple val(meta), path(bam), path(bai) - tuple val(meta2), path(fasta) + tuple val(meta2), path(fasta), path(fai) tuple val(meta3), path(bed) output: diff --git a/modules/nf-core/modkit/pileup/meta.yml b/modules/nf-core/modkit/pileup/meta.yml index 2f274d0c8cdd..ad259e816389 100644 --- a/modules/nf-core/modkit/pileup/meta.yml +++ b/modules/nf-core/modkit/pileup/meta.yml @@ -37,6 +37,10 @@ input: description: Reference sequence in FASTA format. Required for motif (e.g. CpG) filtering pattern: "*.fasta" + - fai: + type: file + description: Associated index file for FASTA + pattern: "*.fai" - - meta3: type: map description: | diff --git a/modules/nf-core/modkit/pileup/tests/main.nf.test b/modules/nf-core/modkit/pileup/tests/main.nf.test index 371cc3b94d49..6ce8dfe285b1 100644 --- a/modules/nf-core/modkit/pileup/tests/main.nf.test +++ b/modules/nf-core/modkit/pileup/tests/main.nf.test @@ -18,7 +18,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam.bai', checkIfExists: true) ] - input[1] = [[],[]] + input[1] = [[],[],[]] input[2] = [[],[]] """ } @@ -33,7 +33,7 @@ nextflow_process { } - test("[bam, bai], fasta, []") { + test("[bam, bai], [fasta, fai], []") { when { process { @@ -45,7 +45,8 @@ nextflow_process { ] input[1] = [ [ id: 'test_ref' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[2] = [[],[]] """ @@ -61,7 +62,7 @@ nextflow_process { } - test("[bam, bai], fasta, bed") { + test("[bam, bai], [fasta, fai], bed") { when { process { @@ -73,7 +74,8 @@ nextflow_process { ] input[1] = [ [ id: 'test_ref' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[2] = Channel.of('chr22\t0\t1000') .collectFile(name: 'chr22.bed', newLine: true) @@ -91,7 +93,7 @@ nextflow_process { } - test("[bam, bai], fasta, bed - traditional") { + test("[bam, bai], [fasta, fai], bed - traditional") { config "./nextflow.traditional.config" @@ -105,7 +107,8 @@ nextflow_process { ] input[1] = [ [ id: 'test_ref' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[2] = Channel.of('chr22\t0\t1000') .collectFile(name: 'chr22.bed', newLine: true) @@ -123,7 +126,7 @@ nextflow_process { } - test("[bam, bai], fasta, bed - traditional, HP") { + test("[bam, bai], [fasta, fai], bed - traditional, HP") { config "./nextflow.traditional_hp.config" @@ -137,7 +140,8 @@ nextflow_process { ] input[1] = [ [ id: 'test_ref' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[2] = Channel.of('chr22\t0\t1000') .collectFile(name: 'chr22.bed', newLine: true) @@ -155,7 +159,7 @@ nextflow_process { } - test("[bam, bai], fasta, bed - traditional, HP, bedgraph") { + test("[bam, bai], [fasta, fai], bed - traditional, HP, bedgraph") { config "./nextflow.traditional_hp_bedgraph.config" @@ -169,7 +173,8 @@ nextflow_process { ] input[1] = [ [ id: 'test_ref' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[2] = Channel.of('chr22\t0\t1000') .collectFile(name: 'chr22.bed', newLine: true) @@ -199,7 +204,7 @@ nextflow_process { file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/nanopore/bam/test.sorted.phased.bam.bai', checkIfExists: true) ] - input[1] = [[],[]] + input[1] = [[],[],[]] input[2] = [[],[]] """ } @@ -214,7 +219,7 @@ nextflow_process { } - test("[bam, bai], fasta, [] - stub") { + test("[bam, bai], [fasta, fai], [] - stub") { options "-stub" @@ -228,7 +233,8 @@ nextflow_process { ] input[1] = [ [ id: 'test_ref' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[2] = [[],[]] """ @@ -244,7 +250,7 @@ nextflow_process { } - test("[bam, bai], fasta, bed - stub") { + test("[bam, bai], [fasta, fai], bed - stub") { options "-stub" @@ -258,7 +264,8 @@ nextflow_process { ] input[1] = [ [ id: 'test_ref' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[2] = Channel.of('chr22\t0\t1000') .collectFile(name: 'chr22.bed', newLine: true) @@ -276,7 +283,7 @@ nextflow_process { } - test("[bam, bai], fasta, bed - traditional - stub") { + test("[bam, bai], [fasta, fai], bed - traditional - stub") { config "./nextflow.traditional.config" options "-stub" @@ -291,7 +298,8 @@ nextflow_process { ] input[1] = [ [ id: 'test_ref' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[2] = Channel.of('chr22\t0\t1000') .collectFile(name: 'chr22.bed', newLine: true) @@ -309,7 +317,7 @@ nextflow_process { } - test("[bam, bai], fasta, bed - traditional, HP - stub") { + test("[bam, bai], [fasta, fai], bed - traditional, HP - stub") { config "./nextflow.traditional_hp.config" options "-stub" @@ -324,7 +332,8 @@ nextflow_process { ] input[1] = [ [ id: 'test_ref' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[2] = Channel.of('chr22\t0\t1000') .collectFile(name: 'chr22.bed', newLine: true) @@ -342,7 +351,7 @@ nextflow_process { } - test("[bam, bai], fasta, bed - traditional, HP, bedgraph - stub") { + test("[bam, bai], [fasta, fai], bed - traditional, HP, bedgraph - stub") { config "./nextflow.traditional_hp_bedgraph.config" options "-stub" @@ -357,7 +366,8 @@ nextflow_process { ] input[1] = [ [ id: 'test_ref' ], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) ] input[2] = Channel.of('chr22\t0\t1000') .collectFile(name: 'chr22.bed', newLine: true) diff --git a/modules/nf-core/modkit/pileup/tests/main.nf.test.snap b/modules/nf-core/modkit/pileup/tests/main.nf.test.snap index b960409d2577..eefa7e6d667a 100644 --- a/modules/nf-core/modkit/pileup/tests/main.nf.test.snap +++ b/modules/nf-core/modkit/pileup/tests/main.nf.test.snap @@ -1,56 +1,5 @@ { - "[bam, bai], fasta, bed - traditional, HP": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - [ - "test_1.bed:md5,464a9870774c340753e79639aeaf76c2", - "test_2.bed:md5,118de4b653dd082d76faa8802df493eb" - ] - ] - ], - "1": [ - - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" - ], - "bed": [ - [ - { - "id": "test" - }, - [ - "test_1.bed:md5,464a9870774c340753e79639aeaf76c2", - "test_2.bed:md5,118de4b653dd082d76faa8802df493eb" - ] - ] - ], - "bedgraph": [ - - ], - "log": [ - - ], - "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-10T09:09:40.272533628" - }, - "[bam, bai], fasta, bed - traditional, HP, bedgraph - stub": { + "[bam, bai], [fasta, fai], [] - stub": { "content": [ { "0": [ @@ -78,7 +27,7 @@ ] ], "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ], "bed": [ [ @@ -105,17 +54,17 @@ ] ], "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-06-10T09:11:33.234594142" + "timestamp": "2025-04-04T17:33:00.452010671" }, - "[bam, bai], fasta, []": { + "[bam, bai], [fasta, fai], bed - traditional, HP": { "content": [ { "0": [ @@ -123,7 +72,10 @@ { "id": "test" }, - "test.bed:md5,f973de342df883efc1656c82a3a3978d" + [ + "test_1.bed:md5,464a9870774c340753e79639aeaf76c2", + "test_2.bed:md5,118de4b653dd082d76faa8802df493eb" + ] ] ], "1": [ @@ -133,14 +85,17 @@ ], "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ], "bed": [ [ { "id": "test" }, - "test.bed:md5,f973de342df883efc1656c82a3a3978d" + [ + "test_1.bed:md5,464a9870774c340753e79639aeaf76c2", + "test_2.bed:md5,118de4b653dd082d76faa8802df493eb" + ] ] ], "bedgraph": [ @@ -150,17 +105,17 @@ ], "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-06-10T09:09:03.537667806" + "timestamp": "2025-04-04T17:32:39.967304077" }, - "[bam, bai], fasta, bed - traditional - stub": { + "[bam, bai], [], []": { "content": [ { "0": [ @@ -168,64 +123,44 @@ { "id": "test" }, - "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.bed:md5,f973de342df883efc1656c82a3a3978d" ] ], "1": [ - [ - { - "id": "test" - }, - "test.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "2": [ - [ - { - "id": "test" - }, - "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ], "bed": [ [ { "id": "test" }, - "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.bed:md5,f973de342df883efc1656c82a3a3978d" ] ], "bedgraph": [ - [ - { - "id": "test" - }, - "test.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "log": [ - [ - { - "id": "test" - }, - "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" - ] + ], "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-06-10T09:10:45.47904997" + "timestamp": "2025-04-04T18:20:59.925917273" }, - "[bam, bai], fasta, bed - traditional, HP - stub": { + "[bam, bai], [fasta, fai], bed - traditional, HP, bedgraph - stub": { "content": [ { "0": [ @@ -253,7 +188,7 @@ ] ], "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ], "bed": [ [ @@ -280,17 +215,17 @@ ] ], "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-06-10T09:11:06.023194848" + "timestamp": "2025-04-04T17:33:30.43271761" }, - "[bam, bai], fasta, [] - stub": { + "[bam, bai], [fasta, fai], bed - stub": { "content": [ { "0": [ @@ -318,7 +253,7 @@ ] ], "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ], "bed": [ [ @@ -345,17 +280,17 @@ ] ], "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-06-10T09:10:17.995261822" + "timestamp": "2025-04-04T17:33:07.843477848" }, - "[bam, bai], fasta, bed - stub": { + "[bam, bai], [fasta, fai], bed - traditional": { "content": [ { "0": [ @@ -363,64 +298,140 @@ { "id": "test" }, - "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.bed:md5,db6333f714a8ea4aa33902404a8d4812" ] ], "1": [ + + ], + "2": [ + + ], + "3": [ + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" + ], + "bed": [ [ { "id": "test" }, - "test.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.bed:md5,db6333f714a8ea4aa33902404a8d4812" ] ], - "2": [ + "bedgraph": [ + + ], + "log": [ + + ], + "versions": [ + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-04-04T17:32:32.191090081" + }, + "[bam, bai], [fasta, fai], bed": { + "content": [ + { + "0": [ [ { "id": "test" }, - "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.bed:md5,ac38ce3bed1f8aa770d1e1a9f332e170" ] + ], + "1": [ + + ], + "2": [ + ], "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ], "bed": [ [ { "id": "test" }, - "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.bed:md5,ac38ce3bed1f8aa770d1e1a9f332e170" ] ], "bedgraph": [ + + ], + "log": [ + + ], + "versions": [ + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-04-04T17:32:24.40436977" + }, + "[bam, bai], [fasta, fai], bed - traditional, HP, bedgraph": { + "content": [ + { + "0": [ + + ], + "1": [ [ { "id": "test" }, - "test.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e" + [ + "test_1_m_CG0_combined.bedgraph:md5,af55904c9acbafa17ff35ee3239152d0", + "test_2_m_CG0_combined.bedgraph:md5,13554927fb35b71a98c0e6bcdc3945c9" + ] ] ], - "log": [ + "2": [ + + ], + "3": [ + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" + ], + "bed": [ + + ], + "bedgraph": [ [ { "id": "test" }, - "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + [ + "test_1_m_CG0_combined.bedgraph:md5,af55904c9acbafa17ff35ee3239152d0", + "test_2_m_CG0_combined.bedgraph:md5,13554927fb35b71a98c0e6bcdc3945c9" + ] ] + ], + "log": [ + ], "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-06-10T09:10:30.574897879" + "timestamp": "2025-04-04T17:32:47.765198075" }, - "[bam, bai], [], []": { + "[bam, bai], [fasta, fai], []": { "content": [ { "0": [ @@ -438,7 +449,7 @@ ], "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ], "bed": [ [ @@ -455,17 +466,17 @@ ], "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-06-10T09:08:51.291346508" + "timestamp": "2025-04-04T17:51:55.548559619" }, - "[bam, bai], [], [] - stub": { + "[bam, bai], [fasta, fai], bed - traditional, HP - stub": { "content": [ { "0": [ @@ -493,7 +504,7 @@ ] ], "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ], "bed": [ [ @@ -520,17 +531,17 @@ ] ], "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-06-10T09:10:05.670301111" + "timestamp": "2025-04-04T17:33:22.629911029" }, - "[bam, bai], fasta, bed": { + "[bam, bai], [], [] - stub": { "content": [ { "0": [ @@ -538,95 +549,64 @@ { "id": "test" }, - "test.bed:md5,ac38ce3bed1f8aa770d1e1a9f332e170" + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ - - ], - "2": [ - - ], - "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" - ], - "bed": [ [ { "id": "test" }, - "test.bed:md5,ac38ce3bed1f8aa770d1e1a9f332e170" + "test.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "bedgraph": [ - - ], - "log": [ - - ], - "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" - ] - } - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" - }, - "timestamp": "2024-06-10T09:09:15.042805699" - }, - "[bam, bai], fasta, bed - traditional, HP, bedgraph": { - "content": [ - { - "0": [ - - ], - "1": [ + "2": [ [ { "id": "test" }, - [ - "test_1_m_CG0_combined.bedgraph:md5,af55904c9acbafa17ff35ee3239152d0", - "test_2_m_CG0_combined.bedgraph:md5,13554927fb35b71a98c0e6bcdc3945c9" - ] + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "2": [ - ], "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ], "bed": [ - + [ + { + "id": "test" + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "bedgraph": [ [ { "id": "test" }, - [ - "test_1_m_CG0_combined.bedgraph:md5,af55904c9acbafa17ff35ee3239152d0", - "test_2_m_CG0_combined.bedgraph:md5,13554927fb35b71a98c0e6bcdc3945c9" - ] + "test.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "log": [ - + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-06-10T09:09:52.968133216" + "timestamp": "2025-04-04T17:35:16.289350959" }, - "[bam, bai], fasta, bed - traditional": { + "[bam, bai], [fasta, fai], bed - traditional - stub": { "content": [ { "0": [ @@ -634,41 +614,61 @@ { "id": "test" }, - "test.bed:md5,db6333f714a8ea4aa33902404a8d4812" + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ - + [ + { + "id": "test" + }, + "test.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "2": [ - + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "3": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ], "bed": [ [ { "id": "test" }, - "test.bed:md5,db6333f714a8ea4aa33902404a8d4812" + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "bedgraph": [ - + [ + { + "id": "test" + }, + "test.bedgraph:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "log": [ - + [ + { + "id": "test" + }, + "test.log:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "versions": [ - "versions.yml:md5,aa9f1fd8a0c9ab9709f381f864f6cdbe" + "versions.yml:md5,8ecd5929497f9f807e1fbb44f1034dc3" ] } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.2" + "nf-test": "0.9.2", + "nextflow": "24.10.3" }, - "timestamp": "2024-06-10T09:09:27.735400826" + "timestamp": "2025-04-04T17:33:15.218082198" } } \ No newline at end of file diff --git a/modules/nf-core/muse/call/main.nf b/modules/nf-core/muse/call/main.nf index 97740c08e5d4..273c09bdd9bb 100644 --- a/modules/nf-core/muse/call/main.nf +++ b/modules/nf-core/muse/call/main.nf @@ -1,6 +1,6 @@ process MUSE_CALL { tag "$meta.id" - label 'process_medium' + label 'process_high' conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -33,7 +33,7 @@ process MUSE_CALL { cat <<-END_VERSIONS > versions.yml "${task.process}": - MuSE: \$( MuSE --version | sed -e "s/MuSE, version //g" | sed -e "s/MuSE //g" ) + MuSE: \$( MuSE --version | sed -e "s/MuSE, version //g" | sed -e "s/MuSE v//g") END_VERSIONS """ @@ -44,7 +44,7 @@ process MUSE_CALL { cat <<-END_VERSIONS > versions.yml "${task.process}": - MuSE: \$( MuSE --version | sed -e "s/MuSE, version //g" | sed -e "s/MuSE //g" ) + MuSE: \$( MuSE --version | sed -e "s/MuSE, version //g" | sed -e "s/MuSE v//g") END_VERSIONS """ } diff --git a/modules/nf-core/muse/call/tests/main.nf.test.snap b/modules/nf-core/muse/call/tests/main.nf.test.snap index e9a0c0d9a6c3..bc826adcc639 100644 --- a/modules/nf-core/muse/call/tests/main.nf.test.snap +++ b/modules/nf-core/muse/call/tests/main.nf.test.snap @@ -11,7 +11,7 @@ ] ], "1": [ - "versions.yml:md5,67bc768725ca9e5b73241808eda48eff" + "versions.yml:md5,182c20f31394d1d406428dab96ec3b3e" ], "txt": [ [ @@ -22,12 +22,12 @@ ] ], "versions": [ - "versions.yml:md5,67bc768725ca9e5b73241808eda48eff" + "versions.yml:md5,182c20f31394d1d406428dab96ec3b3e" ] }, { "MUSE_CALL": { - "MuSE": "v2.1.2" + "MuSE": "2.1.2" } } ], @@ -35,12 +35,12 @@ "nf-test": "0.9.2", "nextflow": "24.10.4" }, - "timestamp": "2025-02-18T10:38:10.225172" + "timestamp": "2025-04-04T11:48:22.223976" }, "human - bam": { "content": [ [ - "versions.yml:md5,67bc768725ca9e5b73241808eda48eff" + "versions.yml:md5,182c20f31394d1d406428dab96ec3b3e" ], [ "##MuSE_call=\"MuSE -f genome.fasta -O test -n 2 call test2.paired_end.recalibrated.sorted.bam test.paired_end.recalibrated.sorted.bam\"", @@ -78,6 +78,6 @@ "nf-test": "0.9.2", "nextflow": "24.10.4" }, - "timestamp": "2025-02-18T11:35:05.915076" + "timestamp": "2025-04-04T11:48:09.865014" } } \ No newline at end of file diff --git a/modules/nf-core/muse/sump/main.nf b/modules/nf-core/muse/sump/main.nf index 70b3352847c6..ac173142a082 100644 --- a/modules/nf-core/muse/sump/main.nf +++ b/modules/nf-core/muse/sump/main.nf @@ -1,19 +1,20 @@ process MUSE_SUMP { tag "$meta.id" - label 'process_medium' + label 'process_high' 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/35/3567f6162ff718c648175c5e7b5f848eaa27811d0cb3ad53def8f0a1c8893efa/data': - 'community.wave.seqera.io/library/muse_tabix:df58ca78bd9447b7' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/f9/f951cafbcec988c70d08bec486d40d902db4114bb1aaee89fd68155fdc3273da/data': + 'community.wave.seqera.io/library/muse_tabix:cf4c19969fa62f63' }" input: - tuple val(meta), path(muse_call_txt) + tuple val(meta) , path(muse_call_txt) tuple val(meta2), path(ref_vcf), path(ref_vcf_tbi) output: - tuple val(meta), path("*.vcf.gz"), emit: vcf - path "versions.yml" , emit: versions + tuple val(meta), path("*.vcf.gz") , emit: vcf + tuple val(meta), path("*.vcf.gz.tbi"), emit: tbi + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -32,10 +33,11 @@ process MUSE_SUMP { -O ${prefix}.vcf bgzip $args2 --threads $task.cpus ${prefix}.vcf + tabix -p vcf ${prefix}.vcf.gz cat <<-END_VERSIONS > versions.yml "${task.process}": - MuSE: \$( MuSE --version | sed -e "s/MuSE, version //g" | sed -e "s/MuSE //g" ) + MuSE: \$( MuSE --version | sed -e "s/MuSE, version //g" | sed -e "s/MuSE v//g") bgzip: \$( bgzip --version | sed -n 's/bgzip (htslib) \\([0-9.]*\\)/\\1/p' ) END_VERSIONS """ @@ -44,10 +46,11 @@ process MUSE_SUMP { def prefix = task.ext.prefix ?: "${meta.id}" """ echo "" | gzip > ${prefix}.vcf.gz + touch ${prefix}.vcf.gz.tbi cat <<-END_VERSIONS > versions.yml "${task.process}": - MuSE: \$( MuSE --version | sed -e "s/MuSE, version //g" | sed -e "s/MuSE //g" ) + MuSE: \$( MuSE --version | sed -e "s/MuSE, version //g" | sed -e "s/MuSE v//g") bgzip: \$( bgzip --version | sed -n 's/bgzip (htslib) \\([0-9.]*\\)/\\1/p' ) END_VERSIONS """ diff --git a/modules/nf-core/muse/sump/meta.yml b/modules/nf-core/muse/sump/meta.yml index 9e938e111408..1f5f38842cfc 100644 --- a/modules/nf-core/muse/sump/meta.yml +++ b/modules/nf-core/muse/sump/meta.yml @@ -51,11 +51,20 @@ output: description: | Groovy Map containing sample information e.g. `[ id:'sample1' ]` - pattern: "*.vcf" - "*.vcf.gz": type: map description: bgzipped vcf file with called variants - pattern: "*.vcf" + pattern: "*.vcf.gz" + - tbi: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1' ]` + - "*.vcf.gz.tbi": + type: map + description: tabix index of bgzipped vcf file with called variants + pattern: "*.vcf.gz.tbi" - versions: - versions.yml: type: file diff --git a/modules/nf-core/muse/sump/tests/main.nf.test b/modules/nf-core/muse/sump/tests/main.nf.test index 113fe8dd17c1..1364090fc9a8 100644 --- a/modules/nf-core/muse/sump/tests/main.nf.test +++ b/modules/nf-core/muse/sump/tests/main.nf.test @@ -15,7 +15,7 @@ nextflow_process { when { params { - module_args = '-E' + module_args = '-E' // '-G' for WGS data } process { """ @@ -72,7 +72,7 @@ nextflow_process { { assert snapshot( process.out, path(process.out.versions[0]).yaml - ).match() + ).match() } ) } diff --git a/modules/nf-core/muse/sump/tests/main.nf.test.snap b/modules/nf-core/muse/sump/tests/main.nf.test.snap index 796bd3dc850e..18cff68b5495 100644 --- a/modules/nf-core/muse/sump/tests/main.nf.test.snap +++ b/modules/nf-core/muse/sump/tests/main.nf.test.snap @@ -11,7 +11,23 @@ ] ], "1": [ - "versions.yml:md5,b464e1a4b351fa27cea9141b8ab79bb7" + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,83d9458549879e13641c6861a802aa31" + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,d41d8cd98f00b204e9800998ecf8427e" + ] ], "vcf": [ [ @@ -22,12 +38,12 @@ ] ], "versions": [ - "versions.yml:md5,b464e1a4b351fa27cea9141b8ab79bb7" + "versions.yml:md5,83d9458549879e13641c6861a802aa31" ] }, { "MUSE_SUMP": { - "MuSE": "v2.1.2", + "MuSE": "2.1.2", "bgzip": 1.21 } } @@ -36,12 +52,12 @@ "nf-test": "0.9.2", "nextflow": "24.10.4" }, - "timestamp": "2025-02-18T10:48:48.403588" + "timestamp": "2025-04-04T11:43:36.736512" }, "human - txt": { "content": [ [ - "versions.yml:md5,b464e1a4b351fa27cea9141b8ab79bb7" + "versions.yml:md5,83d9458549879e13641c6861a802aa31" ], 11, "VcfFile [chromosomes=[], sampleCount=2, variantCount=0, phased=true, phasedAutodetect=true]" @@ -50,6 +66,6 @@ "nf-test": "0.9.2", "nextflow": "24.10.4" }, - "timestamp": "2025-02-18T10:48:40.369312" + "timestamp": "2025-04-04T11:57:11.337109" } } \ No newline at end of file diff --git a/modules/nf-core/muse/sump/tests/nextflow.config b/modules/nf-core/muse/sump/tests/nextflow.config index 6d29ad9187b1..96c26d581da7 100644 --- a/modules/nf-core/muse/sump/tests/nextflow.config +++ b/modules/nf-core/muse/sump/tests/nextflow.config @@ -2,11 +2,7 @@ process { withName: 'MUSE_SUMP' { ext.args = params.module_args - stageInMode = 'copy' - } - - withName: 'MUSE_SUMP_WGS' { - ext.args = '-G' + stageInMode = 'copy' // to avoid that the dbsnp index is older than the dbsnp file } } diff --git a/modules/nf-core/plink/indeppairwise/main.nf b/modules/nf-core/plink/indeppairwise/main.nf index be6506ecacb6..1faaac7a5699 100644 --- a/modules/nf-core/plink/indeppairwise/main.nf +++ b/modules/nf-core/plink/indeppairwise/main.nf @@ -1,4 +1,3 @@ - process PLINK_INDEPPAIRWISE { tag "$meta.id" label 'process_low' @@ -31,10 +30,24 @@ process PLINK_INDEPPAIRWISE { --bed ${bed} \\ --bim ${bim} \\ --fam ${fam} \\ - --threads $task.cpus \\ + --threads ${task.cpus} \\ --indep-pairwise ${window_size} ${variant_count} ${r2_threshold} \\ - $args \\ - --out $prefix + ${args} \\ + --out ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + plink: \$(echo \$(plink --version) | sed 's/^PLINK v//;s/64.*//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + + """ + touch ${prefix}.prune.in + touch ${prefix}.prune.out + cat <<-END_VERSIONS > versions.yml "${task.process}": plink: \$(echo \$(plink --version) | sed 's/^PLINK v//;s/64.*//') diff --git a/modules/nf-core/plink/indeppairwise/tests/main.nf.test b/modules/nf-core/plink/indeppairwise/tests/main.nf.test new file mode 100644 index 000000000000..b5df73699727 --- /dev/null +++ b/modules/nf-core/plink/indeppairwise/tests/main.nf.test @@ -0,0 +1,76 @@ +nextflow_process { + + name "Test Process PLINK_INDEPPAIRWISE" + script "../main.nf" + process "PLINK_INDEPPAIRWISE" + + tag "modules" + tag "modules_nfcore" + tag "plink" + tag "plink/indeppairwise" + tag "plink/vcf" + + setup { + + config "./nextflow.config" + + params { + module_args = '--make-bed --biallelic-only strict --vcf-half-call haploid --allow-extra-chr' + } + + run("PLINK_VCF") { + + script "../../vcf/main.nf" + + process { + """ + input[0] = [ + [id:'test',single_end:false],// meta map + file(params.modules_testdata_base_path + "genomics/homo_sapiens/genome/vcf/ped/justhusky_minimal.vcf.gz", checkIfExists:true) + ] + """ + } + } + } + + test("test_plink_indeppairwise") { + when { + process { + """ + input[0] = PLINK_VCF.out.bed.join(PLINK_VCF.out.bim).join(PLINK_VCF.out.fam) + input[1] = Channel.value(50) + input[2] = Channel.value(5) + input[3] = Channel.value(0.2) + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_plink_indeppairwise - stub") { + + options "-stub" + + when { + process { + """ + input[0] = PLINK_VCF.out.bed.join(PLINK_VCF.out.bim).join(PLINK_VCF.out.fam) + input[1] = Channel.value(50) + input[2] = Channel.value(5) + input[3] = Channel.value(0.2) + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/plink/indeppairwise/tests/main.nf.test.snap b/modules/nf-core/plink/indeppairwise/tests/main.nf.test.snap new file mode 100644 index 000000000000..9e7b9e198293 --- /dev/null +++ b/modules/nf-core/plink/indeppairwise/tests/main.nf.test.snap @@ -0,0 +1,108 @@ +{ + "test_plink_indeppairwise": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.prune.in:md5,dce7ba75405107468f2ce18fc95a9786" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.prune.out:md5,1f65f71308f2c4a03b9a4a98bbfb11e9" + ] + ], + "2": [ + "versions.yml:md5,dd52fb8375a5ba36e766f25e9028d128" + ], + "prunein": [ + [ + { + "id": "test", + "single_end": false + }, + "test.prune.in:md5,dce7ba75405107468f2ce18fc95a9786" + ] + ], + "pruneout": [ + [ + { + "id": "test", + "single_end": false + }, + "test.prune.out:md5,1f65f71308f2c4a03b9a4a98bbfb11e9" + ] + ], + "versions": [ + "versions.yml:md5,dd52fb8375a5ba36e766f25e9028d128" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-26T14:55:08.717872783" + }, + "test_plink_indeppairwise - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.prune.in:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + "test.prune.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + "versions.yml:md5,dd52fb8375a5ba36e766f25e9028d128" + ], + "prunein": [ + [ + { + "id": "test", + "single_end": false + }, + "test.prune.in:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pruneout": [ + [ + { + "id": "test", + "single_end": false + }, + "test.prune.out:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,dd52fb8375a5ba36e766f25e9028d128" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-28T17:45:50.995416015" + } +} \ No newline at end of file diff --git a/modules/nf-core/plink/indeppairwise/tests/nextflow.config b/modules/nf-core/plink/indeppairwise/tests/nextflow.config new file mode 100644 index 000000000000..ffe075a1f57f --- /dev/null +++ b/modules/nf-core/plink/indeppairwise/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: "PLINK_VCF" { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/plink2/filter/environment.yml b/modules/nf-core/plink2/filter/environment.yml new file mode 100644 index 000000000000..e3c50dd73a9e --- /dev/null +++ b/modules/nf-core/plink2/filter/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::plink2=2.00a5.10 diff --git a/modules/nf-core/plink2/filter/main.nf b/modules/nf-core/plink2/filter/main.nf new file mode 100644 index 000000000000..1018ca17e9bf --- /dev/null +++ b/modules/nf-core/plink2/filter/main.nf @@ -0,0 +1,62 @@ +process PLINK2_FILTER { + tag "$meta.id" + label 'process_medium' + + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/plink2:2.00a5.10--h4ac6f70_0': + 'biocontainers/plink2:2.00a5.10--h4ac6f70_0' }" + + input: + tuple val(meta), path(plink_genotype_file), path(plink_variant_file), path(plink_sample_file) + + output: + tuple val(meta), path("*.bim"), emit: bim, optional: true + tuple val(meta), path("*.bed"), emit: bed, optional: true + tuple val(meta), path("*.fam"), emit: fam, optional: true + tuple val(meta), path("*.pgen"),emit: pgen, optional: true + tuple val(meta), path("*.psam"),emit: psam, optional: true + tuple val(meta), path("*.pvar"),emit: pvar, optional: true + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def mode = plink_genotype_file.extension == 'pgen' ? '--pfile' : '--bfile' + def outtype = plink_genotype_file.extension == "pgen" ? '--make-pgen' : '--make-bed' + def input = "${plink_genotype_file.getBaseName()}" + if( "${input}" == "${prefix}" ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + + """ + plink2 \\ + $mode $input \\ + $args \\ + --threads $task.cpus \\ + $outtype \\ + --out $prefix + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + plink2: \$(plink2 --version 2>&1 | sed 's/^PLINK v//; s/ 64.*\$//' ) + END_VERSIONS + """ + + stub: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def trio = plink_genotype_file.extension == 'pgen' ? "${prefix}.pfam ${prefix}.psam ${prefix}.pvar" : "${prefix}.bed ${prefix}.bim ${prefix}.fam" + if( "${plink_genotype_file.getBaseName()}" == "${prefix}" ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + """ + touch ${trio} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + plink2: \$(plink2 --version 2>&1 | sed 's/^PLINK v//; s/ 64.*\$//' ) + END_VERSIONS + """ + +} diff --git a/modules/nf-core/plink2/filter/meta.yml b/modules/nf-core/plink2/filter/meta.yml new file mode 100644 index 000000000000..0ebb30b227ed --- /dev/null +++ b/modules/nf-core/plink2/filter/meta.yml @@ -0,0 +1,122 @@ +--- +name: "plink2_filter" +description: Filters plink bfiles or pfiles with filters such as maf or var +keywords: + - plink2 + - filter + - samples + - variants + - missingness + - qualty +tools: + - "plink2": + description: | + Whole genome association analysis toolset, designed to perform a range + of basic, large-scale analyses in a computationally efficient manner + homepage: http://www.cog-genomics.org/plink/2.0/ + documentation: http://www.cog-genomics.org/plink/2.0/general_usage + doi: "10.1186/s13742-015-0047-8" + licence: ["GPL v3"] + identifier: "" + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - plink_genotype_file: + type: file + description: PLINK binary genotype table file or PLINK 2 binary genotype table file + pattern: "*.{bed,pgen}" + ontologies: + - edam: http://edamontology.org/format_3003 + - plink_variant_file: + type: file + description: PLINK extended MAP file or PLINK 2 variant information file + pattern: "*.{bim,pvar}" + - plink_sample_file: + type: file + description: PLINK sample information file or PLINK 2 sample information file + pattern: "*.{fam,psam}" + +output: + - bed: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bed": + type: file + description: PLINK binary allelic genotype table + pattern: "*.bed" + ontologies: + - edam: http://edamontology.org/format_3003 + - bim: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.bim": + type: file + description: PLINK extended map file + pattern: "*.bim" + ontologies: [] + - fam: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.fam": + type: file + description: PLINK sample information file + pattern: "*.fam" + ontologies: [] + - pgen: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.pgen": + type: file + description: PLINK 2 binary genotype table + pattern: "*.pgen" + ontologies: + - edam: http://edamontology.org/format_3003 + - pvar: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.pvar": + type: file + description: PLINK 2 variant information file + pattern: "*.pvar" + ontologies: [] + - psam: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.psam": + type: file + description: PLINK 2 sample information file + pattern: "*.psam" + ontologies: [] + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" + ontologies: [] + +authors: + - "@jodennehy" +maintainers: + - "@jodennehy" diff --git a/modules/nf-core/plink2/filter/tests/main.nf.test b/modules/nf-core/plink2/filter/tests/main.nf.test new file mode 100644 index 000000000000..da99f8c8ba43 --- /dev/null +++ b/modules/nf-core/plink2/filter/tests/main.nf.test @@ -0,0 +1,191 @@ +nextflow_process { + + name "Test Process PLINK2_FILTER" + script "../main.nf" + process "PLINK2_FILTER" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "plink2" + tag "plink2/filter" + + test("plink1_input - var_filter") { + + when { + params { + module_args = '--geno 0.05 --double-id' + } + process { + + """ + + input[0] = [ + [id:"test"], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.bim', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.fam', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("plink2_input - var_filter") { + + + when { + params { + module_args = '--geno 0.05 --double-id' + } + process { + + """ + + input[0] = [ + [id:"test"], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.pgen', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.pvar', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.psam', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("plink1_input - maf_filter") { + + when { + params { + module_args = '--max-alleles 2 --double-id --maf 0.01' + } + process { + + """ + + input[0] = [ + [id:"test"], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.bim', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.fam', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("plink2_input - maf_filter") { + + + when { + params { + module_args = '--max-alleles 2 --double-id --maf 0.01' + } + process { + + """ + + input[0] = [ + [id:"test"], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.pgen', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.pvar', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.psam', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("plink1_input - var_filter - stub") { + + options "-stub" + + when { + params { + module_args = '--geno 0.05 --double-id' + } + process { + """ + + input[0] = [ + [id:"test"], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.bed', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.bim', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.fam', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("plink2_input - var_filter - stub") { + + options "-stub" + + when { + params { + module_args = '--geno 0.05 --double-id' + } + process { + """ + input[0] = [ + [id:"test"], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.pgen', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.pvar', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/popgen/plink_simulated.psam', checkIfExists: true) + ] + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} \ No newline at end of file diff --git a/modules/nf-core/plink2/filter/tests/main.nf.test.snap b/modules/nf-core/plink2/filter/tests/main.nf.test.snap new file mode 100644 index 000000000000..99a686a48453 --- /dev/null +++ b/modules/nf-core/plink2/filter/tests/main.nf.test.snap @@ -0,0 +1,490 @@ +{ + "plink2_input - var_filter": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test" + }, + "test.pgen:md5,d37c6d0aa92f788705e98813907d197a" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.psam:md5,dcecc49a20b9e2b26fe9883789908203" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.pvar:md5,723cab01a7556da85d3594c1637ee5d4" + ] + ], + "6": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ], + "bed": [ + + ], + "bim": [ + + ], + "fam": [ + + ], + "pgen": [ + [ + { + "id": "test" + }, + "test.pgen:md5,d37c6d0aa92f788705e98813907d197a" + ] + ], + "psam": [ + [ + { + "id": "test" + }, + "test.psam:md5,dcecc49a20b9e2b26fe9883789908203" + ] + ], + "pvar": [ + [ + { + "id": "test" + }, + "test.pvar:md5,723cab01a7556da85d3594c1637ee5d4" + ] + ], + "versions": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-09T13:37:14.224771" + }, + "plink2_input - maf_filter": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + [ + { + "id": "test" + }, + "test.pgen:md5,d37c6d0aa92f788705e98813907d197a" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.psam:md5,dcecc49a20b9e2b26fe9883789908203" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.pvar:md5,723cab01a7556da85d3594c1637ee5d4" + ] + ], + "6": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ], + "bed": [ + + ], + "bim": [ + + ], + "fam": [ + + ], + "pgen": [ + [ + { + "id": "test" + }, + "test.pgen:md5,d37c6d0aa92f788705e98813907d197a" + ] + ], + "psam": [ + [ + { + "id": "test" + }, + "test.psam:md5,dcecc49a20b9e2b26fe9883789908203" + ] + ], + "pvar": [ + [ + { + "id": "test" + }, + "test.pvar:md5,723cab01a7556da85d3594c1637ee5d4" + ] + ], + "versions": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-09T13:37:32.740659" + }, + "plink1_input - maf_filter": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bim:md5,41351028a80a8cf5bec0ab2db04af6c9" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.bed:md5,e1f17b70b8f213aa6d48dbde955451b4" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.fam:md5,56314a08dc651daea82dd5b04da02d31" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.bed:md5,e1f17b70b8f213aa6d48dbde955451b4" + ] + ], + "bim": [ + [ + { + "id": "test" + }, + "test.bim:md5,41351028a80a8cf5bec0ab2db04af6c9" + ] + ], + "fam": [ + [ + { + "id": "test" + }, + "test.fam:md5,56314a08dc651daea82dd5b04da02d31" + ] + ], + "pgen": [ + + ], + "psam": [ + + ], + "pvar": [ + + ], + "versions": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-09T13:37:23.654158" + }, + "plink1_input - var_filter - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bim:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.fam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "bim": [ + [ + { + "id": "test" + }, + "test.bim:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "fam": [ + [ + { + "id": "test" + }, + "test.fam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pgen": [ + + ], + "psam": [ + + ], + "pvar": [ + + ], + "versions": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-09T13:37:46.079556" + }, + "plink1_input - var_filter": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bim:md5,41351028a80a8cf5bec0ab2db04af6c9" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.bed:md5,e1f17b70b8f213aa6d48dbde955451b4" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.fam:md5,56314a08dc651daea82dd5b04da02d31" + ] + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + + ], + "6": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ], + "bed": [ + [ + { + "id": "test" + }, + "test.bed:md5,e1f17b70b8f213aa6d48dbde955451b4" + ] + ], + "bim": [ + [ + { + "id": "test" + }, + "test.bim:md5,41351028a80a8cf5bec0ab2db04af6c9" + ] + ], + "fam": [ + [ + { + "id": "test" + }, + "test.fam:md5,56314a08dc651daea82dd5b04da02d31" + ] + ], + "pgen": [ + + ], + "psam": [ + + ], + "pvar": [ + + ], + "versions": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-09T13:37:05.076078" + }, + "plink2_input - var_filter - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + [ + { + "id": "test" + }, + "test.psam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.pvar:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ], + "bed": [ + + ], + "bim": [ + + ], + "fam": [ + + ], + "pgen": [ + + ], + "psam": [ + [ + { + "id": "test" + }, + "test.psam:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "pvar": [ + [ + { + "id": "test" + }, + "test.pvar:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,bfda17cbe28d98c1e1079188bde5e840" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-09T13:37:57.053175" + } +} \ No newline at end of file diff --git a/modules/nf-core/plink2/filter/tests/nextflow.config b/modules/nf-core/plink2/filter/tests/nextflow.config new file mode 100644 index 000000000000..e63b1f87ac9f --- /dev/null +++ b/modules/nf-core/plink2/filter/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: PLINK2_FILTER { + ext.args = params.module_args + } + +} diff --git a/modules/nf-core/poolsnp/main.nf b/modules/nf-core/poolsnp/main.nf index c292f395627e..fd05f85c2a40 100644 --- a/modules/nf-core/poolsnp/main.nf +++ b/modules/nf-core/poolsnp/main.nf @@ -10,7 +10,7 @@ process POOLSNP { input: tuple val(meta) , path(mpileup) tuple val(meta2), path(reference) - tuple val(meta) , val(max_cov), path(max_cov_file) + tuple val(meta3), val(max_cov), path(max_cov_file) output: tuple val(meta), path("*.vcf.gz") , emit: vcf @@ -44,7 +44,6 @@ process POOLSNP { """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = '1.0.1' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. diff --git a/modules/nf-core/poolsnp/meta.yml b/modules/nf-core/poolsnp/meta.yml index 36054b58aca6..9d58fc2e34d8 100644 --- a/modules/nf-core/poolsnp/meta.yml +++ b/modules/nf-core/poolsnp/meta.yml @@ -40,7 +40,7 @@ input: Reference genome in FASTA format. May NOT contain any special characters such as "/|,:" pattern: "*.{fasta,fa}" - - - meta: + - - meta3: type: map description: | Groovy Map containing sample information. diff --git a/modules/nf-core/poolsnp/tests/main.nf.test.snap b/modules/nf-core/poolsnp/tests/main.nf.test.snap index f908d02916c5..8ac27c890a2a 100644 --- a/modules/nf-core/poolsnp/tests/main.nf.test.snap +++ b/modules/nf-core/poolsnp/tests/main.nf.test.snap @@ -8,17 +8,18 @@ [ [ { - "id": "test" + "id": "test", + "single_end": false }, "test_cov-0.7.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-16T15:51:10.298893" + "timestamp": "2025-04-05T11:57:13.661565" }, "sarscov2 - mpileup - max_cov_file - stub": { "content": [ @@ -42,17 +43,18 @@ [ [ { - "id": "test" + "id": "test", + "single_end": false }, "test-cov-0.7.txt:md5,ccbb119522c09daa976a9015ba999329" ] ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-08-16T15:30:50.011" + "timestamp": "2025-04-05T11:56:50.034677" }, "sarscov2 - mpileup - max_cov_file": { "content": [ diff --git a/modules/nf-core/porechop/abi/main.nf b/modules/nf-core/porechop/abi/main.nf index 88ec5bd0ea95..e9205e0c70fc 100644 --- a/modules/nf-core/porechop/abi/main.nf +++ b/modules/nf-core/porechop/abi/main.nf @@ -9,6 +9,7 @@ process PORECHOP_ABI { input: tuple val(meta), path(reads) + path custom_adapters output: tuple val(meta), path("*.fastq.gz") , emit: reads @@ -21,10 +22,12 @@ process PORECHOP_ABI { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}.porechop_abi" + def adapters_list = custom_adapters ? "--custom_adapters ${custom_adapters}" : "" if ("$reads" == "${prefix}.fastq.gz") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ porechop_abi \\ --input $reads \\ + $adapters_list \\ --threads $task.cpus \\ $args \\ --output ${prefix}.fastq.gz \\ @@ -38,6 +41,7 @@ process PORECHOP_ABI { stub: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}.porechop_abi" + def adapters_list = custom_adapters ? "--custom_adapters ${custom_adapters}" : "" """ echo "" | gzip > ${prefix}.fastq.gz touch ${prefix}.log diff --git a/modules/nf-core/porechop/abi/meta.yml b/modules/nf-core/porechop/abi/meta.yml index 6016da7560f5..bff17e64f8e9 100644 --- a/modules/nf-core/porechop/abi/meta.yml +++ b/modules/nf-core/porechop/abi/meta.yml @@ -25,6 +25,10 @@ input: type: file description: fastq/fastq.gz file pattern: "*.{fastq,fastq.gz,fq,fq.gz}" + - - custom_adapters: + type: file + description: Text file containing custom adapters + output: - reads: - meta: diff --git a/modules/nf-core/porechop/abi/tests/main.nf.test b/modules/nf-core/porechop/abi/tests/main.nf.test index b5a29f908461..23e34d7de4a0 100644 --- a/modules/nf-core/porechop/abi/tests/main.nf.test +++ b/modules/nf-core/porechop/abi/tests/main.nf.test @@ -17,6 +17,7 @@ nextflow_process { [ id:'test'], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/nanopore/fastq/test.fastq.gz', checkIfExists: true) ] + input[1] = [] """ } } @@ -45,6 +46,7 @@ nextflow_process { [ id:'test'], // meta map file(params.modules_testdata_base_path + 'genomics/sarscov2/nanopore/fastq/test.fastq.gz', checkIfExists: true) ] + input[1] = [] """ } } diff --git a/modules/nf-core/porechop/abi/tests/main.nf.test.snap b/modules/nf-core/porechop/abi/tests/main.nf.test.snap index ad63f4edb9b8..5fc4d0603df3 100644 --- a/modules/nf-core/porechop/abi/tests/main.nf.test.snap +++ b/modules/nf-core/porechop/abi/tests/main.nf.test.snap @@ -37,10 +37,10 @@ ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-07-29T13:50:49.318599" + "timestamp": "2025-04-10T10:27:24.536642628" }, "sarscov2-nanopore - stub": { "content": [ @@ -86,9 +86,9 @@ } ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.04.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-07-29T13:50:54.425389" + "timestamp": "2025-04-10T10:27:30.502715737" } } \ No newline at end of file diff --git a/modules/nf-core/porechop/porechop/environment.yml b/modules/nf-core/porechop/porechop/environment.yml index b2696aeddff2..109cf8bd68fa 100644 --- a/modules/nf-core/porechop/porechop/environment.yml +++ b/modules/nf-core/porechop/porechop/environment.yml @@ -5,3 +5,4 @@ channels: - bioconda dependencies: - bioconda::porechop=0.2.4 + - conda-forge::pigz=2.8 diff --git a/modules/nf-core/porechop/porechop/main.nf b/modules/nf-core/porechop/porechop/main.nf index 1ff02a12a520..34daf3e8951f 100644 --- a/modules/nf-core/porechop/porechop/main.nf +++ b/modules/nf-core/porechop/porechop/main.nf @@ -3,9 +3,10 @@ process PORECHOP_PORECHOP { label 'process_medium' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/porechop:0.2.4--py39h7cff6ad_2' : - 'biocontainers/porechop:0.2.4--py39h7cff6ad_2' }" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/2b/2bce1f10c51906a66c4c4d3a7485394f67e304177192ad1cce6cf586a3a18bae/data' : + 'community.wave.seqera.io/library/porechop_pigz:d1655e5b5bad786c' }" + input: tuple val(meta), path(reads) diff --git a/modules/nf-core/portcullis/full/main.nf b/modules/nf-core/portcullis/full/main.nf index 22628713920b..96a05b306c47 100644 --- a/modules/nf-core/portcullis/full/main.nf +++ b/modules/nf-core/portcullis/full/main.nf @@ -13,10 +13,14 @@ process PORTCULLIS_FULL { tuple val(meta3), path(fasta) output: - tuple val(meta), path("*.log"), emit: log - tuple val(meta), path("*.bed"), emit: bed - tuple val(meta), path("*.tab"), emit: tab - path "versions.yml" , emit: versions + tuple val(meta), path("*.pass.junctions.bed"), emit: pass_junctions_bed + tuple val(meta), path("*.pass.junctions.tab"), emit: pass_junctions_tab + tuple val(meta), path("*.portcullis.log") , emit: log + tuple val(meta), path("*.intron.gff3") , emit: intron_gff , optional: true + tuple val(meta), path("*.exon.gff3") , emit: exon_gff , optional: true + tuple val(meta), path("*.bam") , emit: spliced_bam, optional: true + tuple val(meta), path("*.bai") , emit: spliced_bai, optional: true + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -34,8 +38,18 @@ process PORTCULLIS_FULL { $fasta \\ $bam > ${prefix}.portcullis.log - cp ${prefix}/3-filt/*.bed . - cp ${prefix}/3-filt/*.tab . + cp ${prefix}/3-filt/*.pass.junctions.bed . + cp ${prefix}/3-filt/*.pass.junctions.tab . + if [ -f ${prefix}/3-filt/*.pass.junctions.intron.gff3 ] ; then + cp ${prefix}/3-filt/*.pass.junctions.intron.gff3 . + fi + if [ -f ${prefix}/3-filt/*.pass.junctions.exon.gff3 ] ; then + cp ${prefix}/3-filt/*.pass.junctions.exon.gff3 . + fi + if [ -f ${prefix}/2-junc/*.spliced.bam ] ; then + cp ${prefix}/2-junc/*.spliced.bam.bai . + cp ${prefix}/2-junc/*.spliced.bam . + fi cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -48,8 +62,8 @@ process PORTCULLIS_FULL { def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.portcullis.log - touch ${prefix}.portcullis.bed - touch ${prefix}.portcullis.tab + touch ${prefix}.pass.junctions.bed + touch ${prefix}.pass.junctions.tab cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/portcullis/full/meta.yml b/modules/nf-core/portcullis/full/meta.yml index d67743c81744..c6a5f87cb958 100644 --- a/modules/nf-core/portcullis/full/meta.yml +++ b/modules/nf-core/portcullis/full/meta.yml @@ -9,8 +9,8 @@ tools: - "portcullis": description: "Portcullis is a tool that filters out invalid splice junctions from RNA-seq alignment data. It accepts BAM files from various RNA-seq mappers, analyzes - splice junctions and removes likely false positives, outputting filtered - results in multiple formats for downstream analysis." + splice junctions and removes likely false positives, outputting filtered results + in multiple formats for downstream analysis." homepage: "https://portcullis.readthedocs.io/en/latest/index.html" documentation: "https://portcullis.readthedocs.io/en/latest/using.html" doi: "10.1101/217620" @@ -58,43 +58,92 @@ output: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - pattern: "*.log" - - "*.log": + e.g. [ id:'sample1', single_end:false ] + - "*.portcullis.log": type: file description: Log file containing Portcullis execution details, processing steps, and filtering statistics pattern: "*.log" ontologies: - edam: "http://edamontology.org/format_2330" - - bed: + - pass_junctions_bed: - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - pattern: "*.bed" - - "*.bed": + e.g. [ id:'sample1', single_end:false ] + - "*.pass.junctions.bed": type: file description: | Filtered splice junction coordinates in BED format, containing genomic coordinates of valid splice junctions after filtering out false positives - pattern: "*.bed" + pattern: "*.pass.junctions.bed" ontologies: - edam: "http://edamontology.org/format_3003" - - tab: + - pass_junctions_tab: - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - pattern: "*.tab" - - "*.tab": - type: map + e.g. [ id:'sample1', single_end:false ] + - "*.pass.junctions.tab": + type: file description: | Tabular representation of filtered splice junctions with additional metrics including junction scores, read support, and filtering decision data - pattern: "*.tab" + pattern: "*.pass.junctions.tab" ontologies: - eadam: "http://edamontology.org/format_3475" + - intron_gff: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - "*.intron.gff3": + type: file + description: | + Output intron-based junctions in GFF format. + pattern: "*.intron.gff3" + ontologies: + - edam: "http://edamontology.org/format_1975" + - exon_gff: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - "*.exon.gff3": + type: file + description: | + Output exon-based junctions in GFF format. + pattern: "*.exon.gff3" + ontologies: + - edam: "http://edamontology.org/format_1975" + - spliced_bam: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - "*.bam": + type: file + description: | + BAM file after filtering original BAM file by removing alignments associated with bad junctions + pattern: "*.bam" + ontologies: + - edam: "http://edamontology.org/format_2572" + - spliced_bai: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'sample1', single_end:false ] + - "*.bai": + type: file + description: | + Index of the output BAM file + pattern: "*.bai" + ontologies: + - edam: "http://edamontology.org/format_3327" - versions: - versions.yml: type: file @@ -106,3 +155,4 @@ authors: - "@jblancoheredia" maintainer: - "@jblancoheredia" + - "@anoronh4" diff --git a/modules/nf-core/portcullis/full/tests/main.nf.test b/modules/nf-core/portcullis/full/tests/main.nf.test index fe7e9ff06dc1..e98d3dc99cb5 100644 --- a/modules/nf-core/portcullis/full/tests/main.nf.test +++ b/modules/nf-core/portcullis/full/tests/main.nf.test @@ -10,6 +10,7 @@ nextflow_process { tag "portcullis/full" test("portcullis_full_paired_end") { + config "./nextflow.config" when { process { @@ -33,9 +34,13 @@ nextflow_process { then { assertAll( { assert process.success }, + { assert file(process.out.spliced_bam.get(0).get(1)).name == "portcullis_all.spliced.bam" }, + { assert file(process.out.spliced_bai.get(0).get(1)).name == "portcullis_all.spliced.bam.bai" }, { assert snapshot( - process.out.bed, - process.out.tab, + process.out.pass_junctions_bed, + process.out.pass_junctions_tab, + process.out.intron_gff, + process.out.exon_gff, process.out.versions ).match() } @@ -70,8 +75,10 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - process.out.bed, - process.out.tab, + process.out.pass_junctions_bed, + process.out.pass_junctions_tab, + process.out.intron_gff, + process.out.exon_gff, process.out.versions ).match() } diff --git a/modules/nf-core/portcullis/full/tests/main.nf.test.snap b/modules/nf-core/portcullis/full/tests/main.nf.test.snap index 995bed3e85f8..8ee19487bf26 100644 --- a/modules/nf-core/portcullis/full/tests/main.nf.test.snap +++ b/modules/nf-core/portcullis/full/tests/main.nf.test.snap @@ -7,10 +7,7 @@ "id": "test", "single_end": false }, - [ - "portcullis_filtered.pass.junctions.bed:md5,613288f6b446359fd0153a7e628e1489", - "portcullis_filtered.rules_in.junctions.bed:md5,572427ab6ea0832a1810ed1e706d3920" - ] + "portcullis_filtered.pass.junctions.bed:md5,613288f6b446359fd0153a7e628e1489" ] ], [ @@ -19,12 +16,25 @@ "id": "test", "single_end": false }, - [ - "portcullis_filtered.pass.junctions.tab:md5,6e2dd7e93f6b7a23d90d3c3c11e99085", - "portcullis_filtered.rules_in.junctions.tab:md5,6e1aaeb5f73b94142cfa9794d7470a6c", - "portcullis_filtered.rules_out.failed.junctions.tab:md5,be919d60ca646342f6edc2f530174353", - "portcullis_filtered.rules_out.passed.junctions.tab:md5,725bc8ad2a2e8e8456123e25cbb5541b" - ] + "portcullis_filtered.pass.junctions.tab:md5,6e2dd7e93f6b7a23d90d3c3c11e99085" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "portcullis_filtered.pass.junctions.intron.gff3:md5,3ee2c3526bfb54f81bfd55a3ab679570" + ] + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "portcullis_filtered.pass.junctions.exon.gff3:md5,7a3c56aca8dcd39ee2dec40589511a81" ] ], [ @@ -33,9 +43,9 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "24.10.3" }, - "timestamp": "2025-03-07T08:45:09.959686" + "timestamp": "2025-04-01T11:06:43.691683" }, "portcullis_full_paired_end_stub": { "content": [ @@ -45,7 +55,7 @@ "id": "test", "single_end": false }, - "test.portcullis.bed:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.pass.junctions.bed:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], [ @@ -54,8 +64,14 @@ "id": "test", "single_end": false }, - "test.portcullis.tab:md5,d41d8cd98f00b204e9800998ecf8427e" + "test.pass.junctions.tab:md5,d41d8cd98f00b204e9800998ecf8427e" ] + ], + [ + + ], + [ + ], [ "versions.yml:md5,b297b098450e5baaea436e822fe25b0e" @@ -63,8 +79,8 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "24.10.3" }, - "timestamp": "2025-03-07T08:45:14.189846" + "timestamp": "2025-04-01T11:06:52.265624" } -} +} \ No newline at end of file diff --git a/modules/nf-core/portcullis/full/tests/nextflow.config b/modules/nf-core/portcullis/full/tests/nextflow.config new file mode 100644 index 000000000000..671cdd5bcd4b --- /dev/null +++ b/modules/nf-core/portcullis/full/tests/nextflow.config @@ -0,0 +1,11 @@ +process { + withName: PORTCULLIS_FULL { + ext.args = { + [ + "--intron_gff", + "--exon_gff", + "--separate" + ].join(" ").trim() + } + } +} diff --git a/modules/nf-core/propr/propd/meta.yml b/modules/nf-core/propr/propd/meta.yml index 57f1521f15f9..ba7a7a2fefa9 100644 --- a/modules/nf-core/propr/propd/meta.yml +++ b/modules/nf-core/propr/propd/meta.yml @@ -58,13 +58,13 @@ output: - meta: type: file description: | - TSV-format table of genes associated with differential expression + TSV-format table of genes associated with differential expression information as compiled from the propd results pattern: "*.propd.genewise.tsv" - "*.propd.genewise.tsv": type: file description: | - TSV-format table of genes associated with differential expression + TSV-format table of genes associated with differential expression information as compiled from the propd results pattern: "*.propd.genewise.tsv" - genewise_plot: @@ -97,15 +97,15 @@ output: - meta: type: file description: | - (Optional) TSV-format table of the native propd pairwise results. This - table contains the differential proportionality values associated to + (Optional) TSV-format table of the native propd pairwise results. This + table contains the differential proportionality values associated to each pair of genes. pattern: "*.propd.pairwise.tsv" - "*.propd.pairwise.tsv": type: file description: | - (Optional) TSV-format table of the native propd pairwise results. This - table contains the differential proportionality values associated to + (Optional) TSV-format table of the native propd pairwise results. This + table contains the differential proportionality values associated to each pair of genes. pattern: "*.propd.pairwise.tsv" - results_pairwise_filtered: @@ -113,28 +113,28 @@ output: type: file description: | (Optional) TSV-format table of the filtered propd pairwise results. This - table contains the pairs of genes with significant differential + table contains the pairs of genes with significant differential proportionality values. pattern: "*.propd.pairwise_filtered.tsv" - "*.propd.pairwise_filtered.tsv": type: file description: | (Optional) TSV-format table of the filtered propd pairwise results. This - table contains the pairs of genes with significant differential + table contains the pairs of genes with significant differential proportionality values. pattern: "*.propd.pairwise_filtered.tsv" - adjacency: - meta: type: file description: | - (Optional) CSV-format table of the adjacency matrix defining a graph, with + (Optional) CSV-format table of the adjacency matrix defining a graph, with edges (1) associated to pairs of genes that are significantly differentially proportional. pattern: "*.propd.adjacency.csv" - "*.propd.adjacency.csv": type: file description: | - (Optional) CSV-format table of the adjacency matrix defining a graph, with + (Optional) CSV-format table of the adjacency matrix defining a graph, with edges (1) associated to pairs of genes that are significantly differentially proportional. pattern: "*.propd.adjacency.csv" diff --git a/modules/nf-core/ragtag/patch/environment.yml b/modules/nf-core/ragtag/patch/environment.yml new file mode 100644 index 000000000000..83cefc79e8da --- /dev/null +++ b/modules/nf-core/ragtag/patch/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::ragtag=2.1.0" diff --git a/modules/nf-core/ragtag/patch/main.nf b/modules/nf-core/ragtag/patch/main.nf new file mode 100644 index 000000000000..4e8cf4558179 --- /dev/null +++ b/modules/nf-core/ragtag/patch/main.nf @@ -0,0 +1,109 @@ +process RAGTAG_PATCH { + tag "${meta.id}" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/ragtag:2.1.0--pyhb7b1952_0' + : 'biocontainers/ragtag:2.1.0--pyhb7b1952_0'}" + + input: + tuple val(meta), path(target, name: 'target/*') + tuple val(meta2), path(query, name: 'query/*') + tuple val(meta3), path(exclude) + tuple val(meta4), path(skip) + + output: + tuple val(meta), path("*.patch.fasta"), emit: patch_fasta + tuple val(meta), path("*.patch.agp"), emit: patch_agp + tuple val(meta), path("*.comps.fasta"), emit: patch_components_fasta + tuple val(meta), path("*.ragtag.patch.asm.*"), emit: assembly_alignments, optional: true + tuple val(meta), path("*.ctg.agp"), emit: target_splits_agp + tuple val(meta), path("*.ctg.fasta"), emit: target_splits_fasta + tuple val(meta), path("*.rename.agp"), emit: qry_rename_agp, optional: true + tuple val(meta), path("*.rename.fasta"), emit: qry_rename_fasta, optional: true + tuple val(meta), path("*.patch.err"), emit: stderr + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def prefix = task.ext.prefix ?: "${meta.id}" + def args = task.ext.args ?: "" + def arg_exclude = exclude ? "-e ${exclude}" : "" + def arg_skip = skip ? "-j ${skip}" : "" + """ + if [[ ${target} == *.gz ]] + then + zcat ${target} > target.fa + else + ln -s ${target} target.fa + fi + + if [[ ${query} == *.gz ]] + then + zcat ${query} > query.fa + else + ln -s ${query} query.fa + fi + + tail -F ${prefix}/ragtag.patch.err >&2 & + tailpid=\$! + ragtag.py patch target.fa query.fa \\ + -o "${prefix}" \\ + -t ${task.cpus} \\ + ${arg_exclude} \\ + ${arg_skip} \\ + ${args} \\ + 2> >( tee ${prefix}.stderr.log >&2 ) \\ + | tee ${prefix}.stdout.log + + kill -TERM "\$tailpid" + + mv ${prefix}/ragtag.patch.agp ${prefix}.patch.agp + mv ${prefix}/ragtag.patch.fasta ${prefix}.patch.fasta + mv ${prefix}/ragtag.patch.comps.fasta ${prefix}.comps.fasta + mv ${prefix}/ragtag.patch.ctg.agp ${prefix}.ctg.agp + mv ${prefix}/ragtag.patch.ctg.fasta ${prefix}.ctg.fasta + if [ -f ${prefix}/ragtag.patch.rename.agp ]; then + mv ${prefix}/ragtag.patch.rename.agp ${prefix}.rename.agp + fi + + if [ -f ${prefix}/ragtag.patch.rename.fasta ]; then + mv ${prefix}/ragtag.patch.rename.fasta ${prefix}.rename.fasta + fi + mv ${prefix}/ragtag.patch.err ${prefix}.patch.err + # Move the assembly files from prefix folder, and add prefix + for alignment_file in \$(ls ${prefix}/ragtag.patch.asm.*); + do + mv "\$alignment_file" "\${alignment_file/${prefix}\\//${prefix}_}" + done + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + ragtag: \$(echo \$(ragtag.py -v | sed 's/v//')) + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def _args = task.ext.args ?: "" + def _arg_exclude = exclude ? "-e ${exclude}" : "" + def _arg_skip = skip ? "-j ${skip}" : "" + """ + touch ${prefix}.patch.agp + touch ${prefix}.patch.fasta + touch ${prefix}.comps.fasta + touch ${prefix}.ctg.agp + touch ${prefix}.ctg.fasta + touch ${prefix}.rename.agp + touch ${prefix}.rename.fasta + touch ${prefix}.ragtag.patch.asm.1 + touch ${prefix}.patch.err + + cat <<-END_VERSIONS > versions.yml + ragtag: \$(echo \$(ragtag.py -v | sed 's/v//')) + END_VERSIONS + """ +} diff --git a/modules/nf-core/ragtag/patch/meta.yml b/modules/nf-core/ragtag/patch/meta.yml new file mode 100644 index 000000000000..d74ee3d20402 --- /dev/null +++ b/modules/nf-core/ragtag/patch/meta.yml @@ -0,0 +1,156 @@ +name: "ragtag_patch" +description: "Homology-based assembly patching: Make continuous joins and fill gaps + in 'target.fa' using sequences from 'query.fa'" + +keywords: + - assembly + - consensus + - ragtag + - patch +tools: + - "ragtag": + description: "Fast reference-guided genome assembly scaffolding" + homepage: "https://github.com/malonge/RagTag/wiki" + documentation: "https://github.com/malonge/RagTag/wiki" + tool_dev_url: "https://github.com/malonge/RagTag" + doi: "10.1186/s13059-022-02823-7" + licence: ["MIT"] + identifier: biotools:ragtag +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - target: + type: file + description: Target assembly + pattern: "*.{fasta,fasta.gz}" + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - query: + type: file + description: Query assembly + pattern: "*.{fasta,fasta.gz}" + - - meta3: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - exclude: + type: file + description: list of target sequences to ignore + pattern: "*.txt" + - - meta4: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - skip: + type: file + description: list of query sequences to ignore + pattern: "*.txt" +output: + - patch_fasta: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.patch.fasta": + type: file + description: FASTA file containing the patched assembly + pattern: "*.patch.fasta" + - patch_agp: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.patch.agp": + type: file + description: AGP file defining how ragtag.patch.fasta is built + pattern: "*.patch.agp" + - patch_components_fasta: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.comps.fasta": + type: file + description: The split target assembly and the renamed query assembly combined + into one FASTA file. This file contains all components in ragtag.patch.agp + pattern: "*.comps.fasta" + - assembly_alignments: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.ragtag.patch.asm.*": + type: file + description: Assembly alignment files + pattern: "*.ragtag.patch.asm.*" + - target_splits_agp: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.ctg.agp": + type: file + description: An AGP file defining how the target assembly was split at gaps + pattern: "*.ctg.agp" + - target_splits_fasta: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.ctg.fasta": + type: file + description: FASTA file containing the target assembly split at gaps + pattern: "*.ctg.fasta" + - qry_rename_agp: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.rename.agp": + type: file + description: An AGP file defining the new names for query sequences + pattern: "*.rename.agp" + - qry_rename_fasta: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.rename.fasta": + type: file + description: A FASTA file with the original query sequence, but with new names + pattern: "*.rename.fasta" + - stderr: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.patch.err": + type: file + description: Standard error logging for all external RagTag commands + pattern: "*.patch.err" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@nschan" +maintainers: + - "@nschan" diff --git a/modules/nf-core/ragtag/patch/tests/main.nf.test b/modules/nf-core/ragtag/patch/tests/main.nf.test new file mode 100644 index 000000000000..a7c0fee80b66 --- /dev/null +++ b/modules/nf-core/ragtag/patch/tests/main.nf.test @@ -0,0 +1,89 @@ +nextflow_process { + + name "Test Process RAGTAG_PATCH" + script "../main.nf" + process "RAGTAG_PATCH" + + tag "modules" + tag "modules_nfcore" + tag "ragtag" + tag "ragtag/patch" + + +test("A. thaliana Col-0 test data - ragtag - patch") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + input[1] = [ + [], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + input[2] = [ + [], + [] + ] + input[3] = [ + [], + [] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.patch_fasta, + process.out.patch_agp, + process.out.patch_components_fasta, + process.out.target_splits_agp, + process.out.target_splits_fasta, + process.out.versions + ).match() + }, + ) + } + + } + test("A. thaliana Col-0 test data - ragtag - patch - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + input[1] = [ + [], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + input[2] = [ + [], + [] + ] + input[3] = [ + [], + [] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} diff --git a/modules/nf-core/ragtag/patch/tests/main.nf.test.snap b/modules/nf-core/ragtag/patch/tests/main.nf.test.snap new file mode 100644 index 000000000000..b144469262da --- /dev/null +++ b/modules/nf-core/ragtag/patch/tests/main.nf.test.snap @@ -0,0 +1,215 @@ +{ + "A. thaliana Col-0 test data - ragtag - patch - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.patch.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.patch.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.comps.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "test.ragtag.patch.asm.1:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "4": [ + [ + { + "id": "test" + }, + "test.ctg.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "5": [ + [ + { + "id": "test" + }, + "test.ctg.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "test.rename.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "7": [ + [ + { + "id": "test" + }, + "test.rename.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test" + }, + "test.patch.err:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "9": [ + "versions.yml:md5,cecbb39907d607affa6522e395b78a1f" + ], + "assembly_alignments": [ + [ + { + "id": "test" + }, + "test.ragtag.patch.asm.1:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "patch_agp": [ + [ + { + "id": "test" + }, + "test.patch.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "patch_components_fasta": [ + [ + { + "id": "test" + }, + "test.comps.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "patch_fasta": [ + [ + { + "id": "test" + }, + "test.patch.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "qry_rename_agp": [ + [ + { + "id": "test" + }, + "test.rename.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "qry_rename_fasta": [ + [ + { + "id": "test" + }, + "test.rename.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "stderr": [ + [ + { + "id": "test" + }, + "test.patch.err:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "target_splits_agp": [ + [ + { + "id": "test" + }, + "test.ctg.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "target_splits_fasta": [ + [ + { + "id": "test" + }, + "test.ctg.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cecbb39907d607affa6522e395b78a1f" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-04-04T14:10:01.648597527" + }, + "A. thaliana Col-0 test data - ragtag - patch": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.patch.fasta:md5,5cf615df690061ab15e4fee62abf3ebc" + ] + ], + [ + [ + { + "id": "test" + }, + "test.patch.agp:md5,7878fd4e42ecb2bfccd7565d5ed6b625" + ] + ], + [ + [ + { + "id": "test" + }, + "test.comps.fasta:md5,65bd2563dfc2564d5edf0e8d24257032" + ] + ], + [ + [ + { + "id": "test" + }, + "test.ctg.agp:md5,ac3460a377daaf3e3ce37f499e561968" + ] + ], + [ + [ + { + "id": "test" + }, + "test.ctg.fasta:md5,5cf615df690061ab15e4fee62abf3ebc" + ] + ], + [ + "versions.yml:md5,4c0992a27edf294209711ce4f181eb5a" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-04-04T14:25:42.121285998" + } +} \ No newline at end of file diff --git a/modules/nf-core/ragtag/scaffold/environment.yml b/modules/nf-core/ragtag/scaffold/environment.yml new file mode 100644 index 000000000000..83cefc79e8da --- /dev/null +++ b/modules/nf-core/ragtag/scaffold/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::ragtag=2.1.0" diff --git a/modules/nf-core/ragtag/scaffold/main.nf b/modules/nf-core/ragtag/scaffold/main.nf new file mode 100644 index 000000000000..c3930c12e846 --- /dev/null +++ b/modules/nf-core/ragtag/scaffold/main.nf @@ -0,0 +1,82 @@ +process RAGTAG_SCAFFOLD { + tag "${meta.id}" + label 'process_medium' + + conda "${moduleDir}/environment.yml" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/ragtag:2.1.0--pyhb7b1952_0' + : 'biocontainers/ragtag:2.1.0--pyhb7b1952_0'}" + + input: + tuple val(meta), path(assembly, name: 'assembly/*') + tuple val(meta2), path(reference, name: 'reference/*') + tuple val(meta3), path(exclude) + tuple val(meta4), path(skip), path(hard_skip) + + output: + tuple val(meta), path("*.fasta"), emit: corrected_assembly + tuple val(meta), path("*.agp"), emit: corrected_agp + tuple val(meta), path("*.stats"), emit: corrected_stats + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def arg_exclude = exclude ? "-e ${exclude}" : "" + def arg_skip = skip ? "-j ${skip}" : "" + def arg_hard_skip = hard_skip ? "-J ${hard_skip}" : "" + """ + if [[ ${assembly} == *.gz ]] + then + zcat ${assembly} > assembly.fa + else + ln -s ${assembly} assembly.fa + fi + + if [[ ${reference} == *.gz ]] + then + zcat ${reference} > reference.fa + else + ln -s ${reference} reference.fa + fi + + ragtag.py scaffold reference.fa assembly.fa \\ + -o "${prefix}" \\ + -t ${task.cpus} \\ + -C \\ + ${arg_exclude} \\ + ${arg_skip} \\ + ${arg_hard_skip} \\ + ${args} \\ + 2> >( tee ${prefix}.stderr.log >&2 ) \\ + | tee ${prefix}.stdout.log + + mv ${prefix}/ragtag.scaffold.fasta ${prefix}.fasta + mv ${prefix}/ragtag.scaffold.agp ${prefix}.agp + mv ${prefix}/ragtag.scaffold.stats ${prefix}.stats + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + ragtag: \$(echo \$(ragtag.py -v | sed 's/v//')) + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def _args = task.ext.args ?: '' + def _arg_exclude = exclude ? "-e ${exclude}" : "" + def _arg_skip = skip ? "-j ${skip}" : "" + def _arg_hard_skip = hard_skip ? "-J ${hard_skip}" : "" + """ + touch ${prefix}.fasta + touch ${prefix}.agp + touch ${prefix}.stats + + cat <<-END_VERSIONS > versions.yml + ragtag: \$(echo \$(ragtag.py -v | sed 's/v//')) + END_VERSIONS + """ +} diff --git a/modules/nf-core/ragtag/scaffold/meta.yml b/modules/nf-core/ragtag/scaffold/meta.yml new file mode 100644 index 000000000000..62eb0e495406 --- /dev/null +++ b/modules/nf-core/ragtag/scaffold/meta.yml @@ -0,0 +1,106 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: ragtag_scaffold +description: | + Scaffolding is the process of ordering and orienting draft assembly (query) + sequences into longer sequences. Gaps (stretches of "N" characters) are placed + between adjacent query sequences to indicate the presence of unknown sequence. + RagTag uses whole-genome alignments to a reference assembly to scaffold query sequences. + RagTag does not alter input query sequence in any way and only orders and orients sequences, joining them with gaps. +keywords: + - scaffolding + - ragtag + - assembly + - genome +tools: + - "ragtag": + description: "Fast reference-guided genome assembly scaffolding" + homepage: "https://github.com/malonge/RagTag/wiki" + documentation: "https://github.com/malonge/RagTag/wiki" + tool_dev_url: "https://github.com/malonge/RagTag" + doi: "10.1186/s13059-022-02823-7" + licence: ["MIT"] + identifier: biotools:ragtag + +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - assembly: + type: file + description: Assembly to be scaffolded + pattern: "*.{fasta,fasta.gz,fa,fa.gz}" + - - meta2: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - reference: + type: file + description: Reference assembly + pattern: "*.{fasta,fasta.gz,fa,fa.gz}" + - - meta3: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - exclude: + type: file + description: list of target sequences to ignore + pattern: "*.txt" + - - meta4: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - skip: + type: file + description: list of query sequences to leave unplaced + pattern: "*.txt" + - hard_skip: + type: file + description: list of query headers to leave unplaced and exclude from 'chr0' + ('-C') + pattern: "*.txt" +output: + - corrected_assembly: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.fasta": + type: file + description: FASTA file containing the patched assembly + pattern: "*.fasta" + - corrected_agp: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.agp": + type: file + description: agp file defining how corrected_assembly is built + pattern: "*.agp" + - corrected_stats: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - "*.stats": + type: file + description: Statistics on the scaffold + pattern: "*.stats" + + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@nschan" +maintainers: + - "@nschan" diff --git a/modules/nf-core/ragtag/scaffold/tests/main.nf.test b/modules/nf-core/ragtag/scaffold/tests/main.nf.test new file mode 100644 index 000000000000..51b42642510d --- /dev/null +++ b/modules/nf-core/ragtag/scaffold/tests/main.nf.test @@ -0,0 +1,81 @@ +nextflow_process { + + name "Test Process RAGTAG_SCAFFOLD" + script "../main.nf" + process "RAGTAG_SCAFFOLD" + + tag "modules" + tag "modules_nfcore" + tag "ragtag" + tag "ragtag/scaffold" + + test("A. thaliana Col-0 test data - ragtag - scaffold") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + input[1] = [ + [], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + input[2] = [ + [], + [] + ] + input[3] = [ + [], + [], + [] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + test("A. thaliana Col-0 test data - ragtag - scaffold - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + input[1] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta.gz', checkIfExists: true) + ] + input[2] = [ + [], + [] + ] + input[3] = [ + [], + [], + [] + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/ragtag/scaffold/tests/main.nf.test.snap b/modules/nf-core/ragtag/scaffold/tests/main.nf.test.snap new file mode 100644 index 000000000000..e4faf0b0fe39 --- /dev/null +++ b/modules/nf-core/ragtag/scaffold/tests/main.nf.test.snap @@ -0,0 +1,132 @@ +{ + "A. thaliana Col-0 test data - ragtag - scaffold": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.fasta:md5,70b661fab5364a1c389972a771f97905" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.agp:md5,40fbf2d081c32880d8ce8187c529a80b" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.stats:md5,209e973e4bac1653b8d5fddb7fa13b63" + ] + ], + "3": [ + "versions.yml:md5,48710c1720f668d8ba3397f99892959e" + ], + "corrected_agp": [ + [ + { + "id": "test" + }, + "test.agp:md5,40fbf2d081c32880d8ce8187c529a80b" + ] + ], + "corrected_assembly": [ + [ + { + "id": "test" + }, + "test.fasta:md5,70b661fab5364a1c389972a771f97905" + ] + ], + "corrected_stats": [ + [ + { + "id": "test" + }, + "test.stats:md5,209e973e4bac1653b8d5fddb7fa13b63" + ] + ], + "versions": [ + "versions.yml:md5,48710c1720f668d8ba3397f99892959e" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-04-04T13:37:54.181644032" + }, + "A. thaliana Col-0 test data - ragtag - scaffold - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + [ + { + "id": "test" + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "3": [ + "versions.yml:md5,cecbb39907d607affa6522e395b78a1f" + ], + "corrected_agp": [ + [ + { + "id": "test" + }, + "test.agp:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "corrected_assembly": [ + [ + { + "id": "test" + }, + "test.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "corrected_stats": [ + [ + { + "id": "test" + }, + "test.stats:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,cecbb39907d607affa6522e395b78a1f" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.3" + }, + "timestamp": "2025-04-04T13:38:21.635495713" + } +} \ No newline at end of file diff --git a/modules/nf-core/sentieon/tnhaplotyper2/main.nf b/modules/nf-core/sentieon/tnhaplotyper2/main.nf index d1642a767c06..80b01a4883c4 100644 --- a/modules/nf-core/sentieon/tnhaplotyper2/main.nf +++ b/modules/nf-core/sentieon/tnhaplotyper2/main.nf @@ -58,7 +58,6 @@ process SENTIEON_TNHAPLOTYPER2 { "" """ $sentieonLicense - export SENTIEON_LICENSE=${license} sentieon driver \\ -t $task.cpus \\ diff --git a/modules/nf-core/sentieon/tnhaplotyper2/meta.yml b/modules/nf-core/sentieon/tnhaplotyper2/meta.yml index d533b024d3c1..a8d0a58446d5 100644 --- a/modules/nf-core/sentieon/tnhaplotyper2/meta.yml +++ b/modules/nf-core/sentieon/tnhaplotyper2/meta.yml @@ -19,7 +19,7 @@ input: type: map description: | Groovy Map containing sample information. - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - input: type: file description: BAM/CRAM file(s) from alignment diff --git a/modules/nf-core/sentieon/tnhaplotyper2/tests/main.nf.test b/modules/nf-core/sentieon/tnhaplotyper2/tests/main.nf.test index 9358baa1c98f..87f3e29ed38c 100644 --- a/modules/nf-core/sentieon/tnhaplotyper2/tests/main.nf.test +++ b/modules/nf-core/sentieon/tnhaplotyper2/tests/main.nf.test @@ -9,8 +9,6 @@ nextflow_process { tag "modules_nfcore" tag "picard" tag "picard/addorreplacereadgroups" - tag "samtools" - tag "samtools/index" tag "sentieon" tag "sentieon/tnhaplotyper2" config './nextflow.config' @@ -46,7 +44,7 @@ nextflow_process { } } - test("test_tnhaplotyper2_no_pon") { + test("no pon") { when { params { @@ -65,9 +63,7 @@ nextflow_process { meta,normal_bam,normal_bai,tumour_bam,tumour_bai-> [[id:'test'],[normal_bam,tumour_bam],[normal_bai,tumour_bai],[]] } - input[1] = [[:], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict',checkIfExists:true) - ] + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict',checkIfExists:true)] input[2] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta',checkIfExists:true)] input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai',checkIfExists:true)] input[4] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz',checkIfExists:true)] @@ -87,4 +83,276 @@ nextflow_process { } } + test("with pon") { + + when { + params { + module_args = '' + module_args2 = '--tumor_sample tumour --normal_sample normal' + module_args3 = '' + module_args4 = '' + } + process { + """ + input[0] = NORMAL_ADDORREPLACEREADGROUPS.out.bam + .join(NORMAL_ADDORREPLACEREADGROUPS.out.bai) + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bam) + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bai) + .map{ + meta,normal_bam,normal_bai,tumour_bam,tumour_bai-> + [[id:'test'],[normal_bam,tumour_bam],[normal_bai,tumour_bai],[]] + } + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict',checkIfExists:true)] + input[2] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta',checkIfExists:true)] + input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai',checkIfExists:true)] + input[4] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz',checkIfExists:true)] + input[5] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi',checkIfExists:true)] + input[6] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz',checkIfExists:true)] + input[7] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz.tbi',checkIfExists:true)] + input[8] = false + input[9] = false + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_tnhaplotyper2_emit_contamination_and_orientation_data") { + + when { + params { + module_args = '' + module_args2 = '--tumor_sample tumour --normal_sample normal' + module_args3 = '--tumor_sample tumour' + module_args4 = '--tumor_sample tumour --normal_sample normal' + } + process { + """ + input[0] = NORMAL_ADDORREPLACEREADGROUPS.out.bam + .join(NORMAL_ADDORREPLACEREADGROUPS.out.bai) + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bam) + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bai) + .map{ + meta,normal_bam,normal_bai,tumour_bam,tumour_bai-> + [[id:'test'],[normal_bam,tumour_bam],[normal_bai,tumour_bai],[]] + } + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict',checkIfExists:true)] + input[2] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta',checkIfExists:true)] + input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai',checkIfExists:true)] + input[4] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz',checkIfExists:true)] + input[5] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi',checkIfExists:true)] + input[6] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz',checkIfExists:true)] + input[7] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz.tbi',checkIfExists:true)] + input[8] = true + input[9] = true + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("test_tnhaplotyper2_no_normal") { + + when { + params { + module_args = '' + module_args2 = '--tumor_sample tumour' + module_args3 = '--tumor_sample tumour' + module_args4 = '--tumor_sample tumour' + } + process { + """ + input[0] = TUMOUR_ADDORREPLACEREADGROUPS.out.bam + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bai) + .map{ + meta,tumour_bam,tumour_bai-> + [meta,tumour_bam,tumour_bai,[]] + } + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict',checkIfExists:true)] + input[2] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta',checkIfExists:true)] + input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai',checkIfExists:true)] + input[4] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz',checkIfExists:true)] + input[5] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi',checkIfExists:true)] + input[6] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz',checkIfExists:true)] + input[7] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz.tbi',checkIfExists:true)] + input[8] = true + input[9] = true + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + test("test_tnhaplotyper2_no_pon -- stub") { + options '-stub' + when { + params { + module_args = '' + module_args2 = '--tumor_sample tumour --normal_sample normal' + module_args3 = '' + module_args4 = '' + } + process { + """ + input[0] = NORMAL_ADDORREPLACEREADGROUPS.out.bam + .join(NORMAL_ADDORREPLACEREADGROUPS.out.bai) + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bam) + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bai) + .map{ + meta,normal_bam,normal_bai,tumour_bam,tumour_bai-> + [[id:'test'],[normal_bam,tumour_bam],[normal_bai,tumour_bai],[]] + } + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict',checkIfExists:true)] + input[2] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta',checkIfExists:true)] + input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai',checkIfExists:true)] + input[4] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz',checkIfExists:true)] + input[5] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi',checkIfExists:true)] + input[6] = [[:],[]] + input[7] = [[:],[]] + input[8] = false + input[9] = false + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + test("test_tnhaplotyper2 -- stub") { + options '-stub' + when { + params { + module_args = '' + module_args2 = '--tumor_sample tumour --normal_sample normal' + module_args3 = '' + module_args4 = '' + } + process { + """ + input[0] = NORMAL_ADDORREPLACEREADGROUPS.out.bam + .join(NORMAL_ADDORREPLACEREADGROUPS.out.bai) + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bam) + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bai) + .map{ + meta,normal_bam,normal_bai,tumour_bam,tumour_bai-> + [[id:'test'],[normal_bam,tumour_bam],[normal_bai,tumour_bai],[]] + } + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict',checkIfExists:true)] + input[2] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta',checkIfExists:true)] + input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai',checkIfExists:true)] + input[4] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz',checkIfExists:true)] + input[5] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi',checkIfExists:true)] + input[6] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz',checkIfExists:true)] + input[7] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz.tbi',checkIfExists:true)] + input[8] = false + input[9] = false + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + test("test_tnhaplotyper2_emit_contamination_and_orientation_data -- stub") { + options '-stub' + when { + params { + module_args = '' + module_args2 = '--tumor_sample tumour --normal_sample normal' + module_args3 = '' + module_args4 = '' + } + process { + """ + input[0] = NORMAL_ADDORREPLACEREADGROUPS.out.bam + .join(NORMAL_ADDORREPLACEREADGROUPS.out.bai) + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bam) + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bai) + .map{ + meta,normal_bam,normal_bai,tumour_bam,tumour_bai-> + [[id:'test'],[normal_bam,tumour_bam],[normal_bai,tumour_bai],[]] + } + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict',checkIfExists:true)] + input[2] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta',checkIfExists:true)] + input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai',checkIfExists:true)] + input[4] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz',checkIfExists:true)] + input[5] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi',checkIfExists:true)] + input[6] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz',checkIfExists:true)] + input[7] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz.tbi',checkIfExists:true)] + input[8] = true + input[9] = true + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + test("test_tnhaplotyper2_no_normal -- stub") { + options '-stub' + when { + params { + module_args = '' + module_args2 = '--tumor_sample tumour --normal_sample normal' + module_args3 = '' + module_args4 = '' + } + process { + """ + input[0] = TUMOUR_ADDORREPLACEREADGROUPS.out.bam + .join(TUMOUR_ADDORREPLACEREADGROUPS.out.bai) + .map{ + meta,tumour_bam,tumour_bai-> + [meta,tumour_bam,tumour_bai,[]] + } + input[1] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.dict',checkIfExists:true)] + input[2] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta',checkIfExists:true)] + input[3] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai',checkIfExists:true)] + input[4] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz',checkIfExists:true)] + input[5] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/gnomAD.r2.1.1.vcf.gz.tbi',checkIfExists:true)] + input[6] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz',checkIfExists:true)] + input[7] = [[:],file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/mills_and_1000G.indels.hg38.vcf.gz.tbi',checkIfExists:true)] + input[8] = true + input[9] = true + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/tnhaplotyper2/tests/main.nf.test.snap b/modules/nf-core/sentieon/tnhaplotyper2/tests/main.nf.test.snap index c76db4850f15..b6ce59162f92 100644 --- a/modules/nf-core/sentieon/tnhaplotyper2/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/tnhaplotyper2/tests/main.nf.test.snap @@ -224,16 +224,31 @@ ], "3": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.stats:md5,9b9284beaf38e95b2ca1aaeb363f77f8" + ] ], "4": [ - + [ + { + "id": "test" + }, + "test.vcf.gz:md5,2ad56cf9b300525f36682110d8fcf766" + ] ], "5": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,fa322fb412a035087e950a00026545a4" + ] ], "6": [ - + "versions.yml:md5,a2718daeef301a0740e6186bf6ba42e7" ], "contamination_data": [ @@ -242,133 +257,268 @@ ], "index": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,fa322fb412a035087e950a00026545a4" + ] ], "orientation_data": [ ], "stats": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.stats:md5,9b9284beaf38e95b2ca1aaeb363f77f8" + ] ], "vcf": [ - + [ + { + "id": "test" + }, + "test.vcf.gz:md5,2ad56cf9b300525f36682110d8fcf766" + ] ], "versions": [ - + "versions.yml:md5,a2718daeef301a0740e6186bf6ba42e7" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "24.10.4" }, - "timestamp": "2025-04-01T15:33:02.550709028" + "timestamp": "2025-04-10T19:34:28.821280865" }, "test_tnhaplotyper2_emit_contamination_and_orientation_data": { "content": [ { "0": [ - + [ + { + "id": "test" + }, + "test.orientation_data.tsv:md5,2f2ed6486c03bb1be674ccf905fcb6b3" + ] ], "1": [ - + [ + { + "id": "test" + }, + "test.contamination_data.tsv:md5,c8c5a8d53c3f1c48e26a7642b08dfcf2" + ] ], "2": [ - + [ + { + "id": "test" + }, + "test.segments:md5,134a818bd0413185f068885391da05df" + ] ], "3": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.stats:md5,9b9284beaf38e95b2ca1aaeb363f77f8" + ] ], "4": [ - + [ + { + "id": "test" + }, + "test.vcf.gz:md5,de78f362256d0123acf03be904263c9f" + ] ], "5": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,fa322fb412a035087e950a00026545a4" + ] ], "6": [ - + "versions.yml:md5,a2718daeef301a0740e6186bf6ba42e7" ], "contamination_data": [ - + [ + { + "id": "test" + }, + "test.contamination_data.tsv:md5,c8c5a8d53c3f1c48e26a7642b08dfcf2" + ] ], "contamination_segments": [ - + [ + { + "id": "test" + }, + "test.segments:md5,134a818bd0413185f068885391da05df" + ] ], "index": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,fa322fb412a035087e950a00026545a4" + ] ], "orientation_data": [ - + [ + { + "id": "test" + }, + "test.orientation_data.tsv:md5,2f2ed6486c03bb1be674ccf905fcb6b3" + ] ], "stats": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.stats:md5,9b9284beaf38e95b2ca1aaeb363f77f8" + ] ], "vcf": [ - + [ + { + "id": "test" + }, + "test.vcf.gz:md5,de78f362256d0123acf03be904263c9f" + ] ], "versions": [ - + "versions.yml:md5,a2718daeef301a0740e6186bf6ba42e7" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "24.10.4" }, - "timestamp": "2025-04-01T15:33:20.031644999" + "timestamp": "2025-04-10T19:37:16.169623375" }, "test_tnhaplotyper2_no_normal": { "content": [ { "0": [ - + [ + { + "id": "test" + }, + "test.orientation_data.tsv:md5,2f2ed6486c03bb1be674ccf905fcb6b3" + ] ], "1": [ - + [ + { + "id": "test" + }, + "test.contamination_data.tsv:md5,c8c5a8d53c3f1c48e26a7642b08dfcf2" + ] ], "2": [ - + [ + { + "id": "test" + }, + "test.segments:md5,134a818bd0413185f068885391da05df" + ] ], "3": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.stats:md5,e4d150874fe502a198c75f7398d1a55e" + ] ], "4": [ - + [ + { + "id": "test" + }, + "test.vcf.gz:md5,af0e4bfb8d5867d68bfea629e4316aa0" + ] ], "5": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,c1471146d73f140457611607ac00edbc" + ] ], "6": [ - + "versions.yml:md5,a2718daeef301a0740e6186bf6ba42e7" ], "contamination_data": [ - + [ + { + "id": "test" + }, + "test.contamination_data.tsv:md5,c8c5a8d53c3f1c48e26a7642b08dfcf2" + ] ], "contamination_segments": [ - + [ + { + "id": "test" + }, + "test.segments:md5,134a818bd0413185f068885391da05df" + ] ], "index": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,c1471146d73f140457611607ac00edbc" + ] ], "orientation_data": [ - + [ + { + "id": "test" + }, + "test.orientation_data.tsv:md5,2f2ed6486c03bb1be674ccf905fcb6b3" + ] ], "stats": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.stats:md5,e4d150874fe502a198c75f7398d1a55e" + ] ], "vcf": [ - + [ + { + "id": "test" + }, + "test.vcf.gz:md5,af0e4bfb8d5867d68bfea629e4316aa0" + ] ], "versions": [ - + "versions.yml:md5,a2718daeef301a0740e6186bf6ba42e7" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "24.10.4" }, - "timestamp": "2025-04-01T15:33:37.788853048" + "timestamp": "2025-04-10T19:39:33.745325482" }, "test_tnhaplotyper2_no_pon": { "content": [ @@ -383,16 +533,31 @@ ], "3": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.stats:md5,33493aaf38103a76df205f22d287b17d" + ] ], "4": [ - + [ + { + "id": "test" + }, + "test.vcf.gz:md5,53b97cf19cd2850a812588930656f99b" + ] ], "5": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,8349aaa3c14047f2dfd4b2ddd746ffb3" + ] ], "6": [ - + "versions.yml:md5,a2718daeef301a0740e6186bf6ba42e7" ], "contamination_data": [ @@ -401,26 +566,41 @@ ], "index": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,8349aaa3c14047f2dfd4b2ddd746ffb3" + ] ], "orientation_data": [ ], "stats": [ - + [ + { + "id": "test" + }, + "test.vcf.gz.stats:md5,33493aaf38103a76df205f22d287b17d" + ] ], "vcf": [ - + [ + { + "id": "test" + }, + "test.vcf.gz:md5,53b97cf19cd2850a812588930656f99b" + ] ], "versions": [ - + "versions.yml:md5,a2718daeef301a0740e6186bf6ba42e7" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "24.10.4" }, - "timestamp": "2025-04-01T15:32:41.358068419" + "timestamp": "2025-04-10T19:31:51.711632084" } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/tnhaplotyper2/tests/nextflow.config b/modules/nf-core/sentieon/tnhaplotyper2/tests/nextflow.config index 999b8f1e35a7..c39a9b26ac62 100644 --- a/modules/nf-core/sentieon/tnhaplotyper2/tests/nextflow.config +++ b/modules/nf-core/sentieon/tnhaplotyper2/tests/nextflow.config @@ -18,3 +18,13 @@ process { } } + +env { + // NOTE This is how nf-core/sarek users will use Sentieon in real world use + SENTIEON_LICENSE = "$SENTIEON_LICSRVR_IP" + // NOTE This should only happen in GitHub actions or nf-core MegaTests + SENTIEON_AUTH_MECH = "$SENTIEON_AUTH_MECH" + SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA + // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) +} diff --git a/modules/nf-core/sentieon/tnscope/main.nf b/modules/nf-core/sentieon/tnscope/main.nf index 3cfd2f3953fa..ba992dfe784f 100644 --- a/modules/nf-core/sentieon/tnscope/main.nf +++ b/modules/nf-core/sentieon/tnscope/main.nf @@ -9,13 +9,15 @@ process SENTIEON_TNSCOPE { 'community.wave.seqera.io/library/sentieon:202308.03--59589f002351c221' }" input: - tuple val(meta), path(input), path(input_index) + tuple val(meta), path(input), path(input_index), path(intervals) tuple val(meta2), path(fasta) tuple val(meta3), path(fai) - tuple val(meta4), path(cosmic), path(cosmic_tbi) - tuple val(meta5), path(pon) , path(pon_tbi) - tuple val(meta6), path(dbsnp) , path(dbsnp_tbi) - tuple val(meta7), path(interval) + tuple val(meta4), path(dbsnp) + tuple val(meta5), path(dbsnp_tbi) + tuple val(meta6), path(pon) + tuple val(meta7), path(pon_tbi) + tuple val(meta8), path(cosmic) + tuple val(meta9), path(cosmic_tbi) output: tuple val(meta), path("*.vcf.gz") , emit: vcf @@ -28,7 +30,7 @@ process SENTIEON_TNSCOPE { script: def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' - def interval_str = interval ? "--interval ${interval}" : '' + def interval_str = intervals ? "--interval ${interval}" : '' def cosmic_str = cosmic ? "--cosmic ${cosmic}" : '' def dbsnp_str = dbsnp ? "--dbsnp ${dbsnp}" : '' def pon_str = pon ? "--pon ${pon}" : '' @@ -47,7 +49,6 @@ process SENTIEON_TNSCOPE { $interval_str \\ $args \\ --algo TNscope \\ - --tumor_sample ${meta.id} \\ $args2 \\ $cosmic_str \\ $dbsnp_str \\ diff --git a/modules/nf-core/sentieon/tnscope/meta.yml b/modules/nf-core/sentieon/tnscope/meta.yml index 36dcd8d8e688..e6a2d7e59c38 100644 --- a/modules/nf-core/sentieon/tnscope/meta.yml +++ b/modules/nf-core/sentieon/tnscope/meta.yml @@ -18,15 +18,21 @@ input: type: map description: | Groovy Map containing sample information. - e.g. [ id:'test', single_end:false ] - - bam: + e.g. [ id:'test' ] + - input: + type: file + description: One or more BAM or CRAM files. + pattern: "*.{bam,cram}" + - input_index: type: file - description: BAM file. - pattern: "*.bam" - - bai: + description: Indices for the input files + pattern: "*.{bai,crai}" + - intervals: type: file - description: BAI file - pattern: "*.bai" + description: bed or interval_list file containing interval in the reference + that will be used in the analysis. Only recommended for large WGS data, else + the overhead may not be worth the additional parallelisation. + pattern: "*.{bed,interval_list}" - - meta2: type: map description: | @@ -50,15 +56,20 @@ input: description: | Groovy Map containing reference information. e.g. [ id:'test' ] - - cosmic: + - dbsnp: type: file description: Single Nucleotide Polymorphism database (dbSNP) file pattern: "*.vcf.gz" - - cosmic_tbi: + - - meta5: + type: map + description: | + Groovy Map containing reference information. + e.g. [ id:'test' ] + - dbsnp_tbi: type: file description: Index of the Single Nucleotide Polymorphism database (dbSNP) file pattern: "*.vcf.gz.tbi" - - - meta5: + - - meta6: type: map description: | Groovy Map containing reference information. @@ -67,40 +78,40 @@ input: type: file description: Single Nucleotide Polymorphism database (dbSNP) file pattern: "*.vcf.gz" + - - meta7: + type: map + description: | + Groovy Map containing reference information. + e.g. [ id:'test' ] - pon_tbi: type: file description: Index of the Single Nucleotide Polymorphism database (dbSNP) file pattern: "*.vcf.gz.tbi" - - - meta6: + - - meta8: type: map description: | Groovy Map containing reference information. e.g. [ id:'test' ] - - dbsnp: + - cosmic: type: file - description: Single Nucleotide Polymorphism database (dbSNP) file + description: Catalogue of Somatic Mutations in Cancer (COSMIC) VCF file. pattern: "*.vcf.gz" - - dbsnp_tbi: - type: file - description: Index of the Single Nucleotide Polymorphism database (dbSNP) file - pattern: "*.vcf.gz.tbi" - - - meta7: + - - meta9: type: map description: | Groovy Map containing reference information. e.g. [ id:'test' ] - - interval: + - cosmic_tbi: type: file - description: bed or interval_list file containing interval in the reference - that will be used in the analysis - pattern: "*.{bed,interval_list}" + description: Index of the Catalogue of Somatic Mutations in Cancer (COSMIC) VCF file. + pattern: "*.vcf.gz.tbi" output: - vcf: - meta: type: map description: | Groovy Map containing reference information. - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - "*.vcf.gz": type: file description: VCF file @@ -110,7 +121,7 @@ output: type: map description: | Groovy Map containing reference information. - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - "*.vcf.gz.tbi": type: file description: Index of the VCF file diff --git a/modules/nf-core/sentieon/tnscope/tests/main.nf.test b/modules/nf-core/sentieon/tnscope/tests/main.nf.test index d69cc71a8c0a..8e2c671d1b8e 100644 --- a/modules/nf-core/sentieon/tnscope/tests/main.nf.test +++ b/modules/nf-core/sentieon/tnscope/tests/main.nf.test @@ -11,11 +11,11 @@ nextflow_process { tag "picard/addorreplacereadgroups" tag "sentieon" tag "sentieon/tnscope" + config './nextflow.config' setup { run("PICARD_ADDORREPLACEREADGROUPS", alias: "NORMAL_ADDORREPLACEREADGROUPS") { script "../../../picard/addorreplacereadgroups/main.nf" - config './nextflow.config' process { """ input[0] = [[id:'test'],// meta map @@ -29,8 +29,6 @@ nextflow_process { run("PICARD_ADDORREPLACEREADGROUPS", alias: "TUMOUR_ADDORREPLACEREADGROUPS") { script "../../../picard/addorreplacereadgroups/main.nf" - config './nextflow.config' - process { """ input[0] = [[id:'test'],// meta map @@ -43,9 +41,53 @@ nextflow_process { } } - test("test_tnscope") { + test("tumour normal - no dbsnp") { + + when { + params { + module_args = '' + module_args2 = '--tumor_sample tumour --normal_sample normal' + } + process { + """ + input[0] = NORMAL_ADDORREPLACEREADGROUPS.out.bam + .join( NORMAL_ADDORREPLACEREADGROUPS.out.bai) + .join( TUMOUR_ADDORREPLACEREADGROUPS.out.bam) + .join( TUMOUR_ADDORREPLACEREADGROUPS.out.bai) + .map{ + meta,normal_bam,normal_bai,tumour_bam,tumour_bai-> + [[id:'tumour'],[normal_bam,tumour_bam],[normal_bai,tumour_bai],[]] + } + input[1] = [ [id:'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists:true) + ] + input[2] = [ [id:'test'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists:true) + ] + input[3] = [[:],[]] + input[4] = [[:],[]] + input[5] = [[:],[]] + input[6] = [[:],[]] + input[7] = [[:],[]] + input[8] = [[:],[]] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("tumour normal - dbsnp") { when { + params { + module_args = '' + module_args2 = '--tumor_sample tumour --normal_sample normal' + } process { """ input[0] = NORMAL_ADDORREPLACEREADGROUPS.out.bam @@ -54,18 +96,27 @@ nextflow_process { .join( TUMOUR_ADDORREPLACEREADGROUPS.out.bai) .map{ meta,normal_bam,normal_bai,tumour_bam,tumour_bai-> - [[id:'test'],[normal_bam,tumour_bam],[normal_bai,tumour_bai],[]] + [[id:'tumour'],[normal_bam,tumour_bam],[normal_bai,tumour_bai],[]] } input[1] = [ [id:'test'], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists:true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists:true) ] input[2] = [ [id:'test'], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists:true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists:true) ] - input[3] = [[:],[],[]] - input[4] = [[:],[],[]] - input[5] = [[:],[],[]] + input[3] = [ + [id:'dbsnp'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/dbsnp_138.hg38.vcf.gz',checkIfExists:true) + ] + input[4] = [ + [id:'dbsnp'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/germlineresources/dbsnp_138.hg38.vcf.gz.tbi',checkIfExists:true) + ] + input[5] = [[:],[]] input[6] = [[:],[]] + input[7] = [[:],[]] + input[8] = [[:],[]] + """ } } @@ -77,9 +128,13 @@ nextflow_process { } } - test("test_tnscope -- stub") { + test("tumour normal - no pon - stub") { options '-stub' when { + params { + module_args = '' + module_args2 = '--tumor_sample tumour --normal_sample normal' + } process { """ input[0] = NORMAL_ADDORREPLACEREADGROUPS.out.bam @@ -91,15 +146,17 @@ nextflow_process { [[id:'test'],[normal_bam,tumour_bam],[normal_bai,tumour_bai],[]] } input[1] = [ [id:'test'], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists:true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta', checkIfExists:true) ] input[2] = [ [id:'test'], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists:true) + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/chr21/sequence/genome.fasta.fai', checkIfExists:true) ] - input[3] = [[:],[],[]] - input[4] = [[:],[],[]] - input[5] = [[:],[],[]] + input[3] = [[:],[]] + input[4] = [[:],[]] + input[5] = [[:],[]] input[6] = [[:],[]] + input[7] = [[:],[]] + input[8] = [[:],[]] """ } } @@ -110,4 +167,5 @@ nextflow_process { ) } } + } \ No newline at end of file diff --git a/modules/nf-core/sentieon/tnscope/tests/main.nf.test.snap b/modules/nf-core/sentieon/tnscope/tests/main.nf.test.snap index 8c9488e0fe9a..5feb222b7190 100644 --- a/modules/nf-core/sentieon/tnscope/tests/main.nf.test.snap +++ b/modules/nf-core/sentieon/tnscope/tests/main.nf.test.snap @@ -1,34 +1,54 @@ { - "test_tnscope -- stub": { + "tumour normal - dbsnp": { "content": [ { "0": [ - + [ + { + "id": "tumour" + }, + "tumour.vcf.gz:md5,74242488a5624c56b4be27bace1191c6" + ] ], "1": [ - + [ + { + "id": "tumour" + }, + "tumour.vcf.gz.tbi:md5,bdf38f0280dc5fb1c3b38ca267b0ee6c" + ] ], "2": [ - + "versions.yml:md5,6acc4c591fbca06fd1c34f2b20456fb7" ], "index": [ - + [ + { + "id": "tumour" + }, + "tumour.vcf.gz.tbi:md5,bdf38f0280dc5fb1c3b38ca267b0ee6c" + ] ], "vcf": [ - + [ + { + "id": "tumour" + }, + "tumour.vcf.gz:md5,74242488a5624c56b4be27bace1191c6" + ] ], "versions": [ - + "versions.yml:md5,6acc4c591fbca06fd1c34f2b20456fb7" ] } ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "24.10.4" }, - "timestamp": "2025-04-08T12:55:05.902554475" + "timestamp": "2025-04-11T21:21:13.909876466" }, - "test_tnscope": { + "tumour normal - no pon - stub": { "content": [ { "0": [ @@ -53,8 +73,57 @@ ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.5" + "nextflow": "24.10.4" + }, + "timestamp": "2025-04-11T21:22:01.486921036" + }, + "tumour normal - no dbsnp": { + "content": [ + { + "0": [ + [ + { + "id": "tumour" + }, + "tumour.vcf.gz:md5,dd6056b23180902e82711efb1bf17be2" + ] + ], + "1": [ + [ + { + "id": "tumour" + }, + "tumour.vcf.gz.tbi:md5,bdf38f0280dc5fb1c3b38ca267b0ee6c" + ] + ], + "2": [ + "versions.yml:md5,6acc4c591fbca06fd1c34f2b20456fb7" + ], + "index": [ + [ + { + "id": "tumour" + }, + "tumour.vcf.gz.tbi:md5,bdf38f0280dc5fb1c3b38ca267b0ee6c" + ] + ], + "vcf": [ + [ + { + "id": "tumour" + }, + "tumour.vcf.gz:md5,dd6056b23180902e82711efb1bf17be2" + ] + ], + "versions": [ + "versions.yml:md5,6acc4c591fbca06fd1c34f2b20456fb7" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.4" }, - "timestamp": "2025-04-08T12:54:20.570572768" + "timestamp": "2025-04-11T21:19:45.340268715" } } \ No newline at end of file diff --git a/modules/nf-core/sentieon/tnscope/tests/nextflow.config b/modules/nf-core/sentieon/tnscope/tests/nextflow.config index 330391c32dbd..ecf20e4e9369 100644 --- a/modules/nf-core/sentieon/tnscope/tests/nextflow.config +++ b/modules/nf-core/sentieon/tnscope/tests/nextflow.config @@ -10,4 +10,19 @@ process { ext.prefix = "normal" } + withName: 'SENTIEON_TNSCOPE' { + ext.args = params.module_args + ext.args2 = params.module_args2 + } + +} + +env { + // NOTE This is how nf-core/sarek users will use Sentieon in real world use + SENTIEON_LICENSE = "$SENTIEON_LICSRVR_IP" + // NOTE This should only happen in GitHub actions or nf-core MegaTests + SENTIEON_AUTH_MECH = "$SENTIEON_AUTH_MECH" + SENTIEON_AUTH_DATA = secrets.SENTIEON_AUTH_DATA + // NOTE This is how nf-core/sarek users will test out Sentieon in Sarek with a license file + // nextflow secrets set SENTIEON_LICENSE_BASE64 \$(cat | base64 -w 0) } diff --git a/modules/nf-core/seqkit/concat/main.nf b/modules/nf-core/seqkit/concat/main.nf index d10d9780fb7f..748c96b5855e 100644 --- a/modules/nf-core/seqkit/concat/main.nf +++ b/modules/nf-core/seqkit/concat/main.nf @@ -1,30 +1,31 @@ process SEQKIT_CONCAT { - tag "$meta.id" + tag "${meta.id}" label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/seqkit:2.9.0--h9ee0642_0': - 'biocontainers/seqkit:2.9.0--h9ee0642_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/seqkit:2.9.0--h9ee0642_0' + : 'biocontainers/seqkit:2.9.0--h9ee0642_0'}" input: tuple val(meta), path(input, stageAs: 'in/*') output: tuple val(meta), path("*.{fasta,fastq,fa,fq,fas,fna,faa}"), emit: fastx - path "versions.yml", emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: "" - def prefix = task.ext.prefix ?: "${meta.id}" - def file_type = input instanceof List ? input[0].getExtension() : input.getExtension() + def args = task.ext.args ?: "" + def prefix = task.ext.prefix ?: "${meta.id}" + def file_type = input instanceof List ? input[0].getExtension() : input.getExtension() """ seqkit \\ concat \\ - $args \\ + --threads ${task.cpus} \\ + ${args} \\ in/* > ${prefix}.${file_type} cat <<-END_VERSIONS > versions.yml @@ -34,7 +35,7 @@ process SEQKIT_CONCAT { """ stub: - def prefix = task.ext.prefix ?: "${meta.id}" + def prefix = task.ext.prefix ?: "${meta.id}" """ touch ${prefix}.fasta diff --git a/modules/nf-core/seqkit/seq/main.nf b/modules/nf-core/seqkit/seq/main.nf index 9d76da213c03..c3b6cb560e5d 100644 --- a/modules/nf-core/seqkit/seq/main.nf +++ b/modules/nf-core/seqkit/seq/main.nf @@ -1,41 +1,43 @@ process SEQKIT_SEQ { - tag "$meta.id" + tag "${meta.id}" label 'process_low' // File IO can be a bottleneck. See: https://bioinf.shenwei.me/seqkit/usage/#parallelization-of-cpu-intensive-jobs conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/seqkit:2.9.0--h9ee0642_0': - 'biocontainers/seqkit:2.9.0--h9ee0642_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/seqkit:2.9.0--h9ee0642_0' + : 'biocontainers/seqkit:2.9.0--h9ee0642_0'}" input: tuple val(meta), path(fastx) output: - tuple val(meta), path("${prefix}.*") , emit: fastx - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}.*"), emit: fastx + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def args2 = task.ext.args2 ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - def extension = "fastq" - if ("$fastx" ==~ /.+\.fasta|.+\.fasta.gz|.+\.fa|.+\.fa.gz|.+\.fas|.+\.fas.gz|.+\.fna|.+\.fna.gz|.+\.fsa|.+\.fsa.gz/ ) { - extension = "fasta" + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + def extension = "fastq" + if ("${fastx}" ==~ /.+\.fasta|.+\.fasta.gz|.+\.fa|.+\.fa.gz|.+\.fas|.+\.fas.gz|.+\.fna|.+\.fna.gz|.+\.fsa|.+\.fsa.gz/) { + extension = "fasta" + } + extension = fastx.toString().endsWith('.gz') ? "${extension}.gz" : extension + def call_gzip = extension.endsWith('.gz') ? "| gzip -c ${args2}" : '' + if ("${prefix}.${extension}" == "${fastx}") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") } - extension = fastx.toString().endsWith('.gz') ? "${extension}.gz" : extension - def call_gzip = extension.endsWith('.gz') ? "| gzip -c $args2" : '' - if("${prefix}.${extension}" == "$fastx") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ seqkit \\ seq \\ - --threads $task.cpus \\ - $args \\ - $fastx \\ - $call_gzip \\ + --threads ${task.cpus} \\ + ${args} \\ + ${fastx} \\ + ${call_gzip} \\ > ${prefix}.${extension} cat <<-END_VERSIONS > versions.yml @@ -45,13 +47,15 @@ process SEQKIT_SEQ { """ stub: - prefix = task.ext.prefix ?: "${meta.id}" - def extension = "fastq" - if ("$fastx" ==~ /.+\.fasta|.+\.fasta.gz|.+\.fa|.+\.fa.gz|.+\.fas|.+\.fas.gz|.+\.fna|.+\.fna.gz|.+\.fsa|.+\.fsa.gz/ ) { - extension = "fasta" + prefix = task.ext.prefix ?: "${meta.id}" + def extension = "fastq" + if ("${fastx}" ==~ /.+\.fasta|.+\.fasta.gz|.+\.fa|.+\.fa.gz|.+\.fas|.+\.fas.gz|.+\.fna|.+\.fna.gz|.+\.fsa|.+\.fsa.gz/) { + extension = "fasta" } extension = fastx.toString().endsWith('.gz') ? "${extension}.gz" : extension - if("${prefix}.${extension}" == "$fastx") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + if ("${prefix}.${extension}" == "${fastx}") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") + } """ touch ${prefix}.${extension} diff --git a/modules/nf-core/seqkit/stats/main.nf b/modules/nf-core/seqkit/stats/main.nf index 57d95cfdc06a..f69fcb6698ae 100644 --- a/modules/nf-core/seqkit/stats/main.nf +++ b/modules/nf-core/seqkit/stats/main.nf @@ -1,18 +1,18 @@ process SEQKIT_STATS { - tag "$meta.id" + tag "${meta.id}" label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/seqkit:2.9.0--h9ee0642_0' : - 'biocontainers/seqkit:2.9.0--h9ee0642_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/seqkit:2.9.0--h9ee0642_0' + : 'biocontainers/seqkit:2.9.0--h9ee0642_0'}" input: tuple val(meta), path(reads) output: tuple val(meta), path("*.tsv"), emit: stats - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when @@ -23,8 +23,9 @@ process SEQKIT_STATS { """ seqkit stats \\ --tabular \\ - $args \\ - $reads > '${prefix}.tsv' + --threads ${task.cpus} \\ + ${args} \\ + ${reads} > '${prefix}.tsv' cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/seqkit/translate/main.nf b/modules/nf-core/seqkit/translate/main.nf index 12e8c4a811ff..cdb174f27ca6 100644 --- a/modules/nf-core/seqkit/translate/main.nf +++ b/modules/nf-core/seqkit/translate/main.nf @@ -1,33 +1,35 @@ process SEQKIT_TRANSLATE { - tag "$meta.id" - label 'process_single' + tag "${meta.id}" + label 'process_low' conda "${moduleDir}/environment.yml" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/seqkit:2.9.0--h9ee0642_0': - 'biocontainers/seqkit:2.9.0--h9ee0642_0' }" + container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container + ? 'https://depot.galaxyproject.org/singularity/seqkit:2.9.0--h9ee0642_0' + : 'biocontainers/seqkit:2.9.0--h9ee0642_0'}" input: tuple val(meta), path(fastx) output: tuple val(meta), path("${prefix}.*"), emit: fastx - path "versions.yml" , emit: versions + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def args2 = task.ext.args2 ?: '' - prefix = task.ext.prefix ?: "${meta.id}" - def extension = "fastq" - if ("$fastx" ==~ /.+\.fasta|.+\.fasta.gz|.+\.fa|.+\.fa.gz|.+\.fas|.+\.fas.gz|.+\.fna|.+\.fna.gz|.+\.fsa|.+\.fsa.gz/ ) { - extension = "fasta" + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + prefix = task.ext.prefix ?: "${meta.id}" + def extension = "fastq" + if ("${fastx}" ==~ /.+\.fasta|.+\.fasta.gz|.+\.fa|.+\.fa.gz|.+\.fas|.+\.fas.gz|.+\.fna|.+\.fna.gz|.+\.fsa|.+\.fsa.gz/) { + extension = "fasta" + } + extension = fastx.toString().endsWith('.gz') ? "${extension}.gz" : extension + def call_gzip = extension.endsWith('.gz') ? "| gzip -c ${args2}" : '' + if ("${prefix}.${extension}" == "${fastx}") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") } - extension = fastx.toString().endsWith('.gz') ? "${extension}.gz" : extension - def call_gzip = extension.endsWith('.gz') ? "| gzip -c $args2" : '' - if("${prefix}.${extension}" == "$fastx") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ seqkit \\ translate \\ @@ -44,13 +46,15 @@ process SEQKIT_TRANSLATE { """ stub: - prefix = task.ext.prefix ?: "${meta.id}" - def extension = "fastq" - if ("$fastx" ==~ /.+\.fasta|.+\.fasta.gz|.+\.fa|.+\.fa.gz|.+\.fas|.+\.fas.gz|.+\.fna|.+\.fna.gz|.+\.fsa|.+\.fsa.gz/ ) { - extension = "fasta" + prefix = task.ext.prefix ?: "${meta.id}" + def extension = "fastq" + if ("${fastx}" ==~ /.+\.fasta|.+\.fasta.gz|.+\.fa|.+\.fa.gz|.+\.fas|.+\.fas.gz|.+\.fna|.+\.fna.gz|.+\.fsa|.+\.fsa.gz/) { + extension = "fasta" } extension = fastx.toString().endsWith('.gz') ? "${extension}.gz" : extension - if("${prefix}.${extension}" == "$fastx") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + if ("${prefix}.${extension}" == "${fastx}") { + error("Input and output names are the same, use \"task.ext.prefix\" to disambiguate!") + } """ touch ${prefix}.${extension} diff --git a/modules/nf-core/shigeifinder/environment.yml b/modules/nf-core/shigeifinder/environment.yml index 778691f653a4..4c04dd78aea6 100644 --- a/modules/nf-core/shigeifinder/environment.yml +++ b/modules/nf-core/shigeifinder/environment.yml @@ -1,7 +1,7 @@ ---- -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda + dependencies: - - bioconda::shigeifinder=1.3.2 + - bioconda::shigeifinder=1.3.5 + - conda-forge::setuptools=78.1.0 diff --git a/modules/nf-core/shigeifinder/main.nf b/modules/nf-core/shigeifinder/main.nf index 797684d717e0..28687bf737e9 100644 --- a/modules/nf-core/shigeifinder/main.nf +++ b/modules/nf-core/shigeifinder/main.nf @@ -4,8 +4,8 @@ process SHIGEIFINDER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/shigeifinder:1.3.2--pyhdfd78af_0': - 'biocontainers/shigeifinder:1.3.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/shigeifinder:1.3.5--pyhdfd78af_0': + 'biocontainers/shigeifinder:1.3.5--pyhdfd78af_0' }" input: tuple val(meta), path(seqs) @@ -20,7 +20,7 @@ process SHIGEIFINDER { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def VERSION = '1.3.2' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + def VERSION = '1.3.5' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ shigeifinder \\ $args \\ @@ -28,6 +28,17 @@ process SHIGEIFINDER { -t $task.cpus \\ -i $seqs + cat <<-END_VERSIONS > versions.yml + "${task.process}": + shigeifinder: $VERSION + END_VERSIONS + """ + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '1.3.5' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + touch ${prefix}.tsv + cat <<-END_VERSIONS > versions.yml "${task.process}": shigeifinder: $VERSION diff --git a/modules/nf-core/shigeifinder/tests/main.nf.test b/modules/nf-core/shigeifinder/tests/main.nf.test new file mode 100644 index 000000000000..103593845ed7 --- /dev/null +++ b/modules/nf-core/shigeifinder/tests/main.nf.test @@ -0,0 +1,108 @@ +nextflow_process { + + name "Test Process SHIGEIFINDER" + config "./nextflow.config" + script "../main.nf" + process "SHIGEIFINDER" + + tag "modules" + tag "modules_nfcore" + tag "shigeifinder" + + test("fasta - sarscov2") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists:true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("fastq - sarscov2") { + + when { + params { + module_args = '-r ' + } + process { + """ + input[0] = [ + [ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists:true)] + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("fasta - sarscov2 -stub") { + + options '-stub' + when { + params { + module_args = '' + } + process { + """ + input[0] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists:true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + test("fastq - sarscov2 - stub") { + + options '-stub' + when { + params { + module_args = '-r ' + } + process { + """ + input[0] = [ + [ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists:true)] + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} \ No newline at end of file diff --git a/modules/nf-core/shigeifinder/tests/main.nf.test.snap b/modules/nf-core/shigeifinder/tests/main.nf.test.snap new file mode 100644 index 000000000000..ae397ab513f3 --- /dev/null +++ b/modules/nf-core/shigeifinder/tests/main.nf.test.snap @@ -0,0 +1,134 @@ +{ + "fastq - sarscov2 - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,db972cf613541d0fe186986346dd85ab" + ], + "tsv": [ + [ + { + "id": "test" + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,db972cf613541d0fe186986346dd85ab" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T13:39:16.152360715" + }, + "fasta - sarscov2 -stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,db972cf613541d0fe186986346dd85ab" + ], + "tsv": [ + [ + { + "id": "test" + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,db972cf613541d0fe186986346dd85ab" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T13:39:06.083372883" + }, + "fasta - sarscov2": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tsv:md5,b9b0837765b574c4c61e14d1e90179cc" + ] + ], + "1": [ + "versions.yml:md5,db972cf613541d0fe186986346dd85ab" + ], + "tsv": [ + [ + { + "id": "test" + }, + "test.tsv:md5,b9b0837765b574c4c61e14d1e90179cc" + ] + ], + "versions": [ + "versions.yml:md5,db972cf613541d0fe186986346dd85ab" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T13:36:58.646944634" + }, + "fastq - sarscov2": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tsv:md5,8f7f7db057d9c53abaa4c647532433ed" + ] + ], + "1": [ + "versions.yml:md5,db972cf613541d0fe186986346dd85ab" + ], + "tsv": [ + [ + { + "id": "test" + }, + "test.tsv:md5,8f7f7db057d9c53abaa4c647532433ed" + ] + ], + "versions": [ + "versions.yml:md5,db972cf613541d0fe186986346dd85ab" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T13:37:09.244210737" + } +} \ No newline at end of file diff --git a/modules/nf-core/shigeifinder/tests/nextflow.config b/modules/nf-core/shigeifinder/tests/nextflow.config new file mode 100644 index 000000000000..59cf00a9f2ca --- /dev/null +++ b/modules/nf-core/shigeifinder/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: "SHIGEIFINDER" { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/shinyngs/app/environment.yml b/modules/nf-core/shinyngs/app/environment.yml index 27e26de95e7d..628cd2e65a8e 100644 --- a/modules/nf-core/shinyngs/app/environment.yml +++ b/modules/nf-core/shinyngs/app/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::r-shinyngs=2.2.0 + - bioconda::r-shinyngs=2.2.2 diff --git a/modules/nf-core/shinyngs/app/main.nf b/modules/nf-core/shinyngs/app/main.nf index 1305be0a9637..50c2f9747d44 100644 --- a/modules/nf-core/shinyngs/app/main.nf +++ b/modules/nf-core/shinyngs/app/main.nf @@ -1,4 +1,3 @@ - process SHINYNGS_APP { tag "$meta.id" label 'process_single' @@ -15,8 +14,8 @@ process SHINYNGS_APP { 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/78/78a62fc76571e1f1b6d3436967bef94de96f42107c7455ac10e2405bf228906c/data' : - 'community.wave.seqera.io/library/r-shinyngs:2.2.0--d3069f31a8b211d5' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5b/5b0b2383d86ddb37ad7c2b8bc3c373926e8bc0cd08b137f457756c39e1589dd0/data' : + 'community.wave.seqera.io/library/r-shinyngs:2.2.2--09ebd939fb477d18' }" input: tuple val(meta), path(sample), path(feature_meta), path(assay_files) // Experiment-level info diff --git a/modules/nf-core/shinyngs/app/tests/main.nf.test.snap b/modules/nf-core/shinyngs/app/tests/main.nf.test.snap index 21e4ba0351c2..5685434f135f 100644 --- a/modules/nf-core/shinyngs/app/tests/main.nf.test.snap +++ b/modules/nf-core/shinyngs/app/tests/main.nf.test.snap @@ -4,41 +4,41 @@ "data.rds", "app.R:md5,d41d8cd98f00b204e9800998ecf8427e", [ - "versions.yml:md5,6f86c6ef85cf324515af09d1f6f6d92c" + "versions.yml:md5,5051415e8b0625cff043d5f1959767f0" ] ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:41:20.444995" + "timestamp": "2025-04-02T10:16:55.630011" }, "mouse - multi matrix": { "content": [ "data.rds", "app.R:md5,bedcfc45b6cdcc2b8fe3627987e2b17a", [ - "versions.yml:md5,6f86c6ef85cf324515af09d1f6f6d92c" + "versions.yml:md5,5051415e8b0625cff043d5f1959767f0" ] ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:40:44.814087" + "timestamp": "2025-04-02T10:16:19.849024" }, "mouse - single matrix": { "content": [ "data.rds", "app.R:md5,bedcfc45b6cdcc2b8fe3627987e2b17a", [ - "versions.yml:md5,6f86c6ef85cf324515af09d1f6f6d92c" + "versions.yml:md5,5051415e8b0625cff043d5f1959767f0" ] ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:41:05.232494" + "timestamp": "2025-04-02T10:16:40.393736" } } \ No newline at end of file diff --git a/modules/nf-core/shinyngs/staticdifferential/environment.yml b/modules/nf-core/shinyngs/staticdifferential/environment.yml index 27e26de95e7d..628cd2e65a8e 100644 --- a/modules/nf-core/shinyngs/staticdifferential/environment.yml +++ b/modules/nf-core/shinyngs/staticdifferential/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::r-shinyngs=2.2.0 + - bioconda::r-shinyngs=2.2.2 diff --git a/modules/nf-core/shinyngs/staticdifferential/main.nf b/modules/nf-core/shinyngs/staticdifferential/main.nf index 3e4f10ebe4fd..02181241c2c7 100644 --- a/modules/nf-core/shinyngs/staticdifferential/main.nf +++ b/modules/nf-core/shinyngs/staticdifferential/main.nf @@ -4,8 +4,8 @@ process SHINYNGS_STATICDIFFERENTIAL { 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/78/78a62fc76571e1f1b6d3436967bef94de96f42107c7455ac10e2405bf228906c/data' : - 'community.wave.seqera.io/library/r-shinyngs:2.2.0--d3069f31a8b211d5' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5b/5b0b2383d86ddb37ad7c2b8bc3c373926e8bc0cd08b137f457756c39e1589dd0/data' : + 'community.wave.seqera.io/library/r-shinyngs:2.2.2--09ebd939fb477d18' }" input: tuple val(meta), path(differential_result) // Differential info: contrast and differential stats diff --git a/modules/nf-core/shinyngs/staticdifferential/tests/main.nf.test.snap b/modules/nf-core/shinyngs/staticdifferential/tests/main.nf.test.snap index e1e5191f2a44..37a142e8d790 100644 --- a/modules/nf-core/shinyngs/staticdifferential/tests/main.nf.test.snap +++ b/modules/nf-core/shinyngs/staticdifferential/tests/main.nf.test.snap @@ -6,14 +6,14 @@ ], [ - "versions.yml:md5,3cb47be8fd3c945b1dfb0e547b4b6b59" + "versions.yml:md5,0bac3f7d028b5eda56f8a4950c332ae9" ] ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:56:38.833474" + "timestamp": "2025-04-02T10:19:23.562288" }, "stub": { "content": [ @@ -43,10 +43,10 @@ ] ], "2": [ - "versions.yml:md5,3cb47be8fd3c945b1dfb0e547b4b6b59" + "versions.yml:md5,0bac3f7d028b5eda56f8a4950c332ae9" ], "versions": [ - "versions.yml:md5,3cb47be8fd3c945b1dfb0e547b4b6b59" + "versions.yml:md5,0bac3f7d028b5eda56f8a4950c332ae9" ], "volcanos_html": [ [ @@ -78,6 +78,6 @@ "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:56:55.859629" + "timestamp": "2025-04-02T10:19:40.399781" } } \ No newline at end of file diff --git a/modules/nf-core/shinyngs/staticexploratory/environment.yml b/modules/nf-core/shinyngs/staticexploratory/environment.yml index 27e26de95e7d..628cd2e65a8e 100644 --- a/modules/nf-core/shinyngs/staticexploratory/environment.yml +++ b/modules/nf-core/shinyngs/staticexploratory/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::r-shinyngs=2.2.0 + - bioconda::r-shinyngs=2.2.2 diff --git a/modules/nf-core/shinyngs/staticexploratory/main.nf b/modules/nf-core/shinyngs/staticexploratory/main.nf index 78163d741ece..068633082848 100644 --- a/modules/nf-core/shinyngs/staticexploratory/main.nf +++ b/modules/nf-core/shinyngs/staticexploratory/main.nf @@ -4,8 +4,8 @@ process SHINYNGS_STATICEXPLORATORY { 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/78/78a62fc76571e1f1b6d3436967bef94de96f42107c7455ac10e2405bf228906c/data' : - 'community.wave.seqera.io/library/r-shinyngs:2.2.0--d3069f31a8b211d5' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5b/5b0b2383d86ddb37ad7c2b8bc3c373926e8bc0cd08b137f457756c39e1589dd0/data' : + 'community.wave.seqera.io/library/r-shinyngs:2.2.2--09ebd939fb477d18' }" input: tuple val(meta), path(sample), path(feature_meta), path(assay_files) diff --git a/modules/nf-core/shinyngs/staticexploratory/tests/main.nf.test.snap b/modules/nf-core/shinyngs/staticexploratory/tests/main.nf.test.snap index 15b466c68984..61d7ad79695d 100644 --- a/modules/nf-core/shinyngs/staticexploratory/tests/main.nf.test.snap +++ b/modules/nf-core/shinyngs/staticexploratory/tests/main.nf.test.snap @@ -8,14 +8,14 @@ "pca3d.png", "sample_dendrogram.png", [ - "versions.yml:md5,3f22225357b83bcaf3ef53d52886dced" + "versions.yml:md5,0085c0d839c6713a79a6089b273b7b2c" ] ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:52:20.835999" + "timestamp": "2025-04-02T10:20:37.364761" }, "mouse - defaults": { "content": [ @@ -26,14 +26,14 @@ "pca3d.png", "sample_dendrogram.png", [ - "versions.yml:md5,3f22225357b83bcaf3ef53d52886dced" + "versions.yml:md5,0085c0d839c6713a79a6089b273b7b2c" ] ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:52:05.655984" + "timestamp": "2025-04-02T10:20:22.636752" }, "mouse - specify log": { "content": [ @@ -44,14 +44,14 @@ "pca3d.png", "sample_dendrogram.png", [ - "versions.yml:md5,3f22225357b83bcaf3ef53d52886dced" + "versions.yml:md5,0085c0d839c6713a79a6089b273b7b2c" ] ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:52:42.334106" + "timestamp": "2025-04-02T10:20:58.524022" }, "mouse - html": { "content": [ @@ -67,13 +67,13 @@ false, false, [ - "versions.yml:md5,3f22225357b83bcaf3ef53d52886dced" + "versions.yml:md5,0085c0d839c6713a79a6089b273b7b2c" ] ], "meta": { "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:53:06.732642" + "timestamp": "2025-04-02T10:21:22.591369" } } \ No newline at end of file diff --git a/modules/nf-core/shinyngs/validatefomcomponents/environment.yml b/modules/nf-core/shinyngs/validatefomcomponents/environment.yml index 27e26de95e7d..628cd2e65a8e 100644 --- a/modules/nf-core/shinyngs/validatefomcomponents/environment.yml +++ b/modules/nf-core/shinyngs/validatefomcomponents/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::r-shinyngs=2.2.0 + - bioconda::r-shinyngs=2.2.2 diff --git a/modules/nf-core/shinyngs/validatefomcomponents/main.nf b/modules/nf-core/shinyngs/validatefomcomponents/main.nf index 6a0eea82d0b1..2080624ef3a2 100644 --- a/modules/nf-core/shinyngs/validatefomcomponents/main.nf +++ b/modules/nf-core/shinyngs/validatefomcomponents/main.nf @@ -4,8 +4,8 @@ process SHINYNGS_VALIDATEFOMCOMPONENTS { 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/78/78a62fc76571e1f1b6d3436967bef94de96f42107c7455ac10e2405bf228906c/data' : - 'community.wave.seqera.io/library/r-shinyngs:2.2.0--d3069f31a8b211d5' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/5b/5b0b2383d86ddb37ad7c2b8bc3c373926e8bc0cd08b137f457756c39e1589dd0/data' : + 'community.wave.seqera.io/library/r-shinyngs:2.2.2--09ebd939fb477d18' }" input: tuple val(meta), path(sample), path(assay_files) diff --git a/modules/nf-core/shinyngs/validatefomcomponents/tests/main.nf.test.snap b/modules/nf-core/shinyngs/validatefomcomponents/tests/main.nf.test.snap index 12ffcce8f0d3..16d86819a788 100644 --- a/modules/nf-core/shinyngs/validatefomcomponents/tests/main.nf.test.snap +++ b/modules/nf-core/shinyngs/validatefomcomponents/tests/main.nf.test.snap @@ -35,7 +35,7 @@ ] ], "4": [ - "versions.yml:md5,96086209610243a193df68ad4baa2464" + "versions.yml:md5,23a1a6e8316311b9578a85ed0d5a90ef" ], "assays": [ [ @@ -70,7 +70,7 @@ ] ], "versions": [ - "versions.yml:md5,96086209610243a193df68ad4baa2464" + "versions.yml:md5,23a1a6e8316311b9578a85ed0d5a90ef" ] } ], @@ -78,7 +78,7 @@ "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:50:33.071241" + "timestamp": "2025-04-02T10:17:43.209812" }, "stub": { "content": [ @@ -116,7 +116,7 @@ ] ], "4": [ - "versions.yml:md5,96086209610243a193df68ad4baa2464" + "versions.yml:md5,23a1a6e8316311b9578a85ed0d5a90ef" ], "assays": [ [ @@ -151,7 +151,7 @@ ] ], "versions": [ - "versions.yml:md5,96086209610243a193df68ad4baa2464" + "versions.yml:md5,23a1a6e8316311b9578a85ed0d5a90ef" ] } ], @@ -159,7 +159,7 @@ "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:51:14.962119" + "timestamp": "2025-04-02T10:18:23.989692" }, "test_yaml": { "content": [ @@ -193,11 +193,11 @@ { "id": "SRP254919" }, - "SRP254919.contrasts.contrasts_file.tsv:md5,e0980240404f48216aedb63b5094029f" + "SRP254919.contrasts.contrasts_file.tsv:md5,4eab81efe03ce7a59dbce0db4015cf8d" ] ], "4": [ - "versions.yml:md5,96086209610243a193df68ad4baa2464" + "versions.yml:md5,23a1a6e8316311b9578a85ed0d5a90ef" ], "assays": [ [ @@ -212,7 +212,7 @@ { "id": "SRP254919" }, - "SRP254919.contrasts.contrasts_file.tsv:md5,e0980240404f48216aedb63b5094029f" + "SRP254919.contrasts.contrasts_file.tsv:md5,4eab81efe03ce7a59dbce0db4015cf8d" ] ], "feature_meta": [ @@ -232,7 +232,7 @@ ] ], "versions": [ - "versions.yml:md5,96086209610243a193df68ad4baa2464" + "versions.yml:md5,23a1a6e8316311b9578a85ed0d5a90ef" ] } ], @@ -240,6 +240,6 @@ "nf-test": "0.9.2", "nextflow": "24.10.2" }, - "timestamp": "2025-02-27T16:50:57.612433" + "timestamp": "2025-04-02T10:18:07.403921" } } \ No newline at end of file diff --git a/modules/nf-core/spaceranger/Dockerfile b/modules/nf-core/spaceranger/Dockerfile index c08c4c14dd9b..d0a5b0126672 100644 --- a/modules/nf-core/spaceranger/Dockerfile +++ b/modules/nf-core/spaceranger/Dockerfile @@ -1,10 +1,10 @@ # syntax=docker/dockerfile:1 -FROM mambaorg/micromamba:1.5.10-noble -ARG SPACERANGER_VER="3.1.2" +FROM mambaorg/micromamba:1.5.10-jammy +ARG SPACERANGER_VER="3.1.3" # NOTE you need to go fill out the form to get a new download link -ARG SPACERANGER_URL="https://cf.10xgenomics.com/releases/spatial-exp/spaceranger-3.1.2.tar.gz?Expires=1732608367&Key-Pair-Id=APKAI7S6A5RYOXBWRPDA&Signature=S4jcGCs5H0wLFfREhSc~AfuPIOXE~PW96kX9o2EyxZnmn1goUecgfEWTj67fL1DnZJBIa06kFdUdNpsMn2ustiSWOfXEgjlYQnxIcNnQIiEBGoQTHWphvx3LEQ6wtZnkWS80P6IcE0HJkIsgy04t6Sohih5cxY4jgytYsrAfZDYr5G3KKFwTfCKmhzMaXqW635yPbyQ8xEcQHK0QwviAx8-EFq-PE8UzC4QgUKi2MW-ivcfZkSDSfF8C3s7SgwDXIGIWv52mzeszenxMjN4KrWQotZ7ZpktzI0Vfpz0dNC17dQeDQUHj4LuNYbdh3RqsPKtqu3wjCe2Q7KiyoWnmaw__" \" -ARG SPACERANGER_SHA256="2566b24f29829b39f3add112a674990b1c54ae2fbe7ccb50a4c7dce9ccf152e6" +ARG SPACERANGER_URL="https://cf.10xgenomics.com/releases/spatial-exp/spaceranger-3.1.3.tar.gz?Expires=1739251752&Key-Pair-Id=APKAI7S6A5RYOXBWRPDA&Signature=ohLEz5jR~HNzWrUz4pd35VGlJP~g7ywmVDaD29BoCdUvio46HWEfhIuUT19D~2JoFlYsbaLQ2d~qIuBB-d9WmX9bdmoQ1vzc9ozikwufXhuJhvrvxIXAZ4kUreoGWX7b51emM7nq8kJxTL9CmTKQZXRe~DuQjP6q6z0XxDUxeLhdPRg3ACfj~jFgMlNfwiJwBRHDH3yM5Hrtz~gNmxZ9O0fl~KNwlzZh7Mtm9GG-GyXYOtM5KAPQjv69JpM2XiZoZFpaVbPq5uqGfr~B3GC1dY25MGqVgXavc~uQFVcsZiyF5BewbeFzYTKu0SiW4WdO21K5L6CdkJ1M5AflXZmpsw__" \" +ARG SPACERANGER_SHA256="cee7e94942cf72af76e28ead0024992642f81f10b89006bf93756c1e08528522" LABEL org.opencontainers.image.authors="Gisela Gabernet ,Edmund Miller " LABEL org.opencontainers.image.description="Docker image containing spaceranger" LABEL org.opencontainers.image.version="$SPACERANGER_VER" diff --git a/modules/nf-core/spaceranger/README.md b/modules/nf-core/spaceranger/README.md index 3fb4113f2798..b6cab83efc89 100644 --- a/modules/nf-core/spaceranger/README.md +++ b/modules/nf-core/spaceranger/README.md @@ -15,4 +15,4 @@ Space Ranger is a commercial tool by 10X Genomics. The container provided for th + ARG SPACERANGER_SHA256="" ``` -3. Push the changes and the Dockerfile should be built and uploaded to `quay.io/nf-core/modules/spaceranger`! +3. Push the changes and the Dockerfile should be built and uploaded to `quay.io/nf-core/spaceranger`! diff --git a/modules/nf-core/spaceranger/count/main.nf b/modules/nf-core/spaceranger/count/main.nf index f33d82fcc7ea..6d882b233cd2 100644 --- a/modules/nf-core/spaceranger/count/main.nf +++ b/modules/nf-core/spaceranger/count/main.nf @@ -2,10 +2,10 @@ process SPACERANGER_COUNT { tag "$meta.id" label 'process_high' - container "nf-core/modules/spaceranger:d71611e316a8614b" + container "nf-core/spaceranger:3.1.3" input: - tuple val(meta), path(reads), path(image), path(cytaimage), path(darkimage), path(colorizedimage), path(alignment), path(slidefile) + tuple val(meta), path(reads), path(image), val(slide), val(area), path(cytaimage), path(darkimage), path(colorizedimage), path(alignment), path(slidefile) path(reference) path(probeset) @@ -31,17 +31,21 @@ process SPACERANGER_COUNT { def cytaimage = cytaimage ? "--cytaimage=\"${cytaimage}\"" : "" def darkimage = darkimage ? "--darkimage=\"${darkimage}\"" : "" def colorizedimage = colorizedimage ? "--colorizedimage=\"${colorizedimage}\"" : "" + if (slide.matches("visium-(.*)") && area == "" && slidefile == "") { + slide_and_area = "--unknown-slide=\"${slide}\"" + } else { + slide_and_area = "--slide=\"${slide}\" --area=\"${area}\"" + } """ spaceranger count \\ --id="${prefix}" \\ --sample="${meta.id}" \\ --fastqs=. \\ - --slide="${meta.slide}" \\ - --area="${meta.area}" \\ --transcriptome="${reference}" \\ --localcores=${task.cpus} \\ --localmem=${task.memory.toGiga()} \\ $image $cytaimage $darkimage $colorizedimage \\ + $slide_and_area \\ $probeset \\ $alignment \\ $slidefile \\ diff --git a/modules/nf-core/spaceranger/count/meta.yml b/modules/nf-core/spaceranger/count/meta.yml index e1ffcefc9daa..8be997270d1b 100644 --- a/modules/nf-core/spaceranger/count/meta.yml +++ b/modules/nf-core/spaceranger/count/meta.yml @@ -41,6 +41,12 @@ input: type: file description: Brightfield tissue H&E image in JPEG or TIFF format. pattern: "*.{tif,tiff,jpg,jpeg}" + - slide: + type: string + description: Visium slide ID used for the sample. + - area: + type: string + description: Visium slide capture area used for the sample. - cytaimage: type: file description: | diff --git a/modules/nf-core/spaceranger/count/tests/main.nf.test b/modules/nf-core/spaceranger/count/tests/main.nf.test index 49a9d5f69c9d..3d65e686ee6f 100644 --- a/modules/nf-core/spaceranger/count/tests/main.nf.test +++ b/modules/nf-core/spaceranger/count/tests/main.nf.test @@ -43,15 +43,15 @@ nextflow_process { """ input[0] = [ [ - id: 'Visium_FFPE_Human_Ovarian_Cancer', - slide: 'V10L13-020', - area: 'D1' + id: 'Visium_FFPE_Human_Ovarian_Cancer' ], // Meta map [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/spaceranger/human-ovarian-cancer-1-standard_v1_ffpe/Visium_FFPE_Human_Ovarian_Cancer_S1_L001_R1_001.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/spaceranger/human-ovarian-cancer-1-standard_v1_ffpe/Visium_FFPE_Human_Ovarian_Cancer_S1_L001_R2_001.fastq.gz', checkIfExists: true) ], // Reads file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/spaceranger/human-ovarian-cancer-1-standard_v1_ffpe/Visium_FFPE_Human_Ovarian_Cancer_image.jpg', checkIfExists: true), // Image + 'V10L13-020', // Slide + 'D1', // Area [], // Cytaimage [], // Darkimage [], // Colorizedimage @@ -68,7 +68,7 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - path(process.out.versions.get(0)).yaml, + process.out.versions, process.out.outs.get(0).get(1).findAll { file(it).name !in [ 'web_summary.html', 'scalefactors_json.json', @@ -120,15 +120,15 @@ nextflow_process { """ input[0] = [ [ - id: 'Visium_FFPE_Human_Ovarian_Cancer', - slide: 'V10L13-020', - area: 'D1' + id: 'Visium_FFPE_Human_Ovarian_Cancer' ], // Meta map [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/spaceranger/human-ovarian-cancer-1-standard_v1_ffpe/Visium_FFPE_Human_Ovarian_Cancer_S1_L001_R1_001.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/spaceranger/human-ovarian-cancer-1-standard_v1_ffpe/Visium_FFPE_Human_Ovarian_Cancer_S1_L001_R2_001.fastq.gz', checkIfExists: true) ], // Reads file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/spaceranger/human-ovarian-cancer-1-standard_v1_ffpe/Visium_FFPE_Human_Ovarian_Cancer_image.jpg', checkIfExists: true), // Image + 'V10L13-020', // Slide + 'D1', // Area [], // Cytaimage [], // Darkimage [], // Colorizedimage @@ -144,7 +144,7 @@ nextflow_process { then { assertAll( { assert process.success }, - { assert snapshot(path(process.out.versions.get(0)).yaml).match() }, + { assert snapshot(process.out.versions).match() }, ) } } @@ -179,15 +179,15 @@ nextflow_process { """ input[0] = [ [ - id: 'CytAssist_11mm_FFPE_Human_Glioblastoma_2', - slide: 'V52Y10-317', - area: 'B1' + id: 'CytAssist_11mm_FFPE_Human_Glioblastoma_2' ], // Meta map [ file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/spaceranger/human-brain-cancer-11-mm-capture-area-ffpe-2-standard_v2_ffpe_cytassist/CytAssist_11mm_FFPE_Human_Glioblastoma_2_S1_L001_R1_001.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/spaceranger/human-brain-cancer-11-mm-capture-area-ffpe-2-standard_v2_ffpe_cytassist/CytAssist_11mm_FFPE_Human_Glioblastoma_2_S1_L001_R2_001.fastq.gz', checkIfExists: true) ], // Reads [], // Image + 'V52Y10-317', // Slide + 'B1', // Area file(params.modules_testdata_base_path + 'genomics/homo_sapiens/10xgenomics/spaceranger/human-brain-cancer-11-mm-capture-area-ffpe-2-standard_v2_ffpe_cytassist/CytAssist_11mm_FFPE_Human_Glioblastoma_image.tif', checkIfExists: true), // Cytaimage [], // Darkimage [], // Colorizedimage @@ -204,7 +204,7 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - path(process.out.versions.get(0)).yaml, + process.out.versions, process.out.outs.get(0).get(1).findAll { file(it).name !in [ 'web_summary.html', 'scalefactors_json.json', diff --git a/modules/nf-core/spaceranger/count/tests/main.nf.test.snap b/modules/nf-core/spaceranger/count/tests/main.nf.test.snap index 7a49d4545263..dbfaadf09696 100644 --- a/modules/nf-core/spaceranger/count/tests/main.nf.test.snap +++ b/modules/nf-core/spaceranger/count/tests/main.nf.test.snap @@ -1,25 +1,21 @@ { "spaceranger v1 (stub) - homo_sapiens - fasta - gtf - fastq - tif - csv": { "content": [ - { - "SPACERANGER_COUNT": { - "spaceranger": "3.1.2" - } - } + [ + "versions.yml:md5,4abe169f33d7f99d5d9876b189060aae" + ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nf-test": "0.9.1", + "nextflow": "24.10.4" }, - "timestamp": "2024-11-26T01:48:31.348979531" + "timestamp": "2025-02-13T09:02:47.710975472" }, "spaceranger v2 - homo_sapiens - fasta - gtf - fastq - tif - csv": { "content": [ - { - "SPACERANGER_COUNT": { - "spaceranger": "3.1.2" - } - }, + [ + "versions.yml:md5,4abe169f33d7f99d5d9876b189060aae" + ], [ "clusters.csv:md5,221a4554e62ea94b0df8dbf637d2c13c", "clusters.csv:md5,53ee76645943b5562392aac51d2d9f3f", @@ -48,10 +44,10 @@ "variance.csv:md5,4159711ab5d64e97737fad9d75d945b3", "projection.csv:md5,ce729f7e237df4570ac3e4a79251df24", "projection.csv:md5,fa7bdefa8424b233fe6461129ab76d57", - "filtered_feature_bc_matrix.h5:md5,f625d7e2c063c8c079ccc35a853b356d", + "filtered_feature_bc_matrix.h5:md5,704256e5150522d9cf2e75e7e47221b6", "metrics_summary.csv:md5,5ece84f5f8e08839749b1c8f2bff6701", "probe_set.csv:md5,5bfb8f12319be1b2b6c14142537c3804", - "raw_feature_bc_matrix.h5:md5,90575715eb252f0b652c9d36a1f5628e", + "raw_feature_bc_matrix.h5:md5,ac24486662643ea68562c1a51cbbb2bd", "raw_probe_bc_matrix.h5:md5,8ab08437814506f98e3f10107cfc38ac", "aligned_fiducials.jpg:md5,51dcc3a32d3d5ca4704f664c8ede81ef", "cytassist_image.tiff:md5,0fb04a55e5658f4d158d986a334b034d", @@ -63,23 +59,21 @@ ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nf-test": "0.9.1", + "nextflow": "24.10.4" }, - "timestamp": "2024-11-26T01:58:16.555517048" + "timestamp": "2025-02-12T11:24:51.984883864" }, "spaceranger v1 - homo_sapiens - fasta - gtf - fastq - tif - csv": { "content": [ - { - "SPACERANGER_COUNT": { - "spaceranger": "3.1.2" - } - }, [ - "filtered_feature_bc_matrix.h5:md5,a756f6dda550f52f9fb3e347207a2c6c", + "versions.yml:md5,4abe169f33d7f99d5d9876b189060aae" + ], + [ + "filtered_feature_bc_matrix.h5:md5,649ac955bcb372b0b767013071cca72c", "metrics_summary.csv:md5,38774fc5f54873d711b4898a2dd50e72", - "molecule_info.h5:md5,9e6393dbbccdfe58edf9e92181261f88", - "raw_feature_bc_matrix.h5:md5,860702876f936f89fdcec2b5f599a7d2", + "molecule_info.h5:md5,88bb948a426041165b2cc5fe8b180c21", + "raw_feature_bc_matrix.h5:md5,63324ae38fbf28bcc2114f170e0fde5d", "aligned_fiducials.jpg:md5,f6217ddd707bb189e665f56b130c3da8", "detected_tissue_image.jpg:md5,c1c7e8741701a576c1ec103c1aaf98ea", "tissue_hires_image.png:md5,d91f8f176ae35ab824ede87117ac0889", @@ -88,9 +82,9 @@ ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nf-test": "0.9.1", + "nextflow": "24.10.4" }, - "timestamp": "2024-11-26T01:48:13.569651476" + "timestamp": "2025-02-12T11:08:30.165324139" } } \ No newline at end of file diff --git a/modules/nf-core/spaceranger/mkgtf/main.nf b/modules/nf-core/spaceranger/mkgtf/main.nf index 7339b6a42a52..86e05cc77f7f 100644 --- a/modules/nf-core/spaceranger/mkgtf/main.nf +++ b/modules/nf-core/spaceranger/mkgtf/main.nf @@ -2,7 +2,7 @@ process SPACERANGER_MKGTF { tag "$gtf" label 'process_low' - container "nf-core/modules/spaceranger:d71611e316a8614b" + container "nf-core/spaceranger:3.1.3" input: path gtf @@ -33,4 +33,19 @@ process SPACERANGER_MKGTF { spaceranger: \$(spaceranger -V | sed -e "s/spaceranger spaceranger-//g") END_VERSIONS """ + + stub: + // Exit if running this module with -profile conda / -profile mamba + if (workflow.profile.tokenize(',').intersect(['conda', 'mamba']).size() >= 1) { + error "SPACERANGER_COUNT module does not support Conda. Please use Docker / Singularity / Podman instead." + } + def prefix = task.ext.prefix ?: "${gtf.baseName}.filtered" + """ + touch ${prefix}.gtf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + spaceranger: \$(spaceranger -V | sed -e "s/spaceranger spaceranger-//g") + END_VERSIONS + """ } diff --git a/modules/nf-core/spaceranger/mkgtf/tests/main.nf.test b/modules/nf-core/spaceranger/mkgtf/tests/main.nf.test index 626f5b5ef261..7091e0a09e64 100644 --- a/modules/nf-core/spaceranger/mkgtf/tests/main.nf.test +++ b/modules/nf-core/spaceranger/mkgtf/tests/main.nf.test @@ -26,11 +26,34 @@ nextflow_process { { assert process.success }, { assert snapshot( process.out.gtf, - path(process.out.versions.get(0)).yaml, + process.out.versions, ).match() } ) } } + test("homo_sapiens (stub) - gtf") { + + options "-stub" + + when { + process { + """ + input[0] = [ + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match() }, + ) + } + + } + } \ No newline at end of file diff --git a/modules/nf-core/spaceranger/mkgtf/tests/main.nf.test.snap b/modules/nf-core/spaceranger/mkgtf/tests/main.nf.test.snap index 6b65a7027340..138a73908d0c 100644 --- a/modules/nf-core/spaceranger/mkgtf/tests/main.nf.test.snap +++ b/modules/nf-core/spaceranger/mkgtf/tests/main.nf.test.snap @@ -4,16 +4,26 @@ [ "genome.filtered.gtf:md5,50fc877b1c53b36b3b413aff88bda48c" ], - { - "SPACERANGER_MKGTF": { - "spaceranger": "3.1.2" - } - } + [ + "versions.yml:md5,2f6c2b1181d43aea5c3fd8095cb181b6" + ] + ], + "meta": { + "nf-test": "0.9.1", + "nextflow": "24.10.4" + }, + "timestamp": "2025-02-12T16:06:15.384050292" + }, + "homo_sapiens (stub) - gtf": { + "content": [ + [ + "versions.yml:md5,2f6c2b1181d43aea5c3fd8095cb181b6" + ] ], "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.1" + "nf-test": "0.9.1", + "nextflow": "24.10.4" }, - "timestamp": "2024-11-26T01:58:29.469616437" + "timestamp": "2025-02-12T16:43:38.384121778" } } \ No newline at end of file diff --git a/modules/nf-core/spaceranger/mkref/main.nf b/modules/nf-core/spaceranger/mkref/main.nf index 0646fa514f2e..824268da61b5 100644 --- a/modules/nf-core/spaceranger/mkref/main.nf +++ b/modules/nf-core/spaceranger/mkref/main.nf @@ -2,7 +2,7 @@ process SPACERANGER_MKREF { tag "$fasta" label 'process_high' - container "nf-core/modules/spaceranger:d71611e316a8614b" + container "nf-core/spaceranger:3.1.3" input: path fasta diff --git a/modules/nf-core/spaceranger/mkref/tests/main.nf.test b/modules/nf-core/spaceranger/mkref/tests/main.nf.test index a16da76afa0a..39b1547f88ae 100644 --- a/modules/nf-core/spaceranger/mkref/tests/main.nf.test +++ b/modules/nf-core/spaceranger/mkref/tests/main.nf.test @@ -25,7 +25,7 @@ nextflow_process { assertAll( { assert process.success }, { assert snapshot( - path(process.out.versions.get(0)).yaml, + process.out.versions, "${process.out.reference[0]}/fasta", "${process.out.reference[0]}/genes", "${process.out.reference[0]}/reference.json", @@ -37,4 +37,27 @@ nextflow_process { } + test("homo_sapiens (stub) - fasta - gtf") { + + options "-stub" + + when { + process { + """ + input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf', checkIfExists: true) + input[2] = 'homo_sapiens_chr22_reference' + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.versions).match() }, + ) + } + + } + } \ No newline at end of file diff --git a/modules/nf-core/spaceranger/mkref/tests/main.nf.test.snap b/modules/nf-core/spaceranger/mkref/tests/main.nf.test.snap index 0801cc4694e4..dab7acf1c05d 100644 --- a/modules/nf-core/spaceranger/mkref/tests/main.nf.test.snap +++ b/modules/nf-core/spaceranger/mkref/tests/main.nf.test.snap @@ -1,11 +1,17 @@ { + "homo_sapiens (stub) - fasta - gtf": { + "content": [ + [ + "versions.yml:md5,c18b9ac3b0bb942d0a164bfe184cce52" + ] + ], + "timestamp": "2025-02-24T15:36:16.846289" + }, "homo_sapiens - fasta - gtf": { "content": [ - { - "SPACERANGER_MKREF": { - "spaceranger": "3.1.2" - } - }, + [ + "versions.yml:md5,c18b9ac3b0bb942d0a164bfe184cce52" + ], [ "genome.fa:md5,f315020d899597c1b57e5fe9f60f4c3e", "genome.fa.fai:md5,3520cd30e1b100e55f578db9c855f685" @@ -13,7 +19,7 @@ [ "genes.gtf.gz:md5,50fc877b1c53b36b3b413aff88bda48c" ], - "reference.json:md5,fa6ca32036814b883644e323706bd247", + "reference.json:md5,08c5809af98db0cda9942720084599dd", [ "Genome:md5,22102926fadf5890e905ca71b2da3f35", "SA:md5,bcf3e1a855783105150b46c905465333", @@ -31,10 +37,6 @@ "transcriptInfo.tab:md5,0c3a5adb49d15e5feff81db8e29f2e36" ] ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.1" - }, - "timestamp": "2024-11-26T01:58:49.663386635" + "timestamp": "2025-02-24T15:35:49.747476" } -} \ No newline at end of file +} diff --git a/modules/nf-core/stecfinder/environment.yml b/modules/nf-core/stecfinder/environment.yml index 4451180691f2..e56d1353b9cc 100644 --- a/modules/nf-core/stecfinder/environment.yml +++ b/modules/nf-core/stecfinder/environment.yml @@ -1,7 +1,6 @@ ---- -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json channels: - conda-forge - bioconda + dependencies: - - bioconda::stecfinder=1.1.0 + - bioconda::stecfinder=1.1.2 diff --git a/modules/nf-core/stecfinder/main.nf b/modules/nf-core/stecfinder/main.nf index e145bc94d69c..9f1115148138 100644 --- a/modules/nf-core/stecfinder/main.nf +++ b/modules/nf-core/stecfinder/main.nf @@ -4,8 +4,8 @@ process STECFINDER { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/stecfinder:1.1.0--pyhdfd78af_0': - 'biocontainers/stecfinder:1.1.0--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/stecfinder:1.1.2--pyhdfd78af_0': + 'biocontainers/stecfinder:1.1.2--pyhdfd78af_0' }" input: tuple val(meta), path(seqs) @@ -31,4 +31,16 @@ process STECFINDER { stecfinder: \$(echo \$(stecfinder --version 2>&1) | sed 's/^.*STECFinder version: //;' ) END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + stecfinder: \$(echo \$(stecfinder --version 2>&1) | sed 's/^.*STECFinder version: //;' ) + END_VERSIONS + """ + } diff --git a/modules/nf-core/stecfinder/tests/main.nf.test b/modules/nf-core/stecfinder/tests/main.nf.test new file mode 100644 index 000000000000..18651b9c39f7 --- /dev/null +++ b/modules/nf-core/stecfinder/tests/main.nf.test @@ -0,0 +1,108 @@ +nextflow_process { + + name "Test Process STECFINDER" + config "./nextflow.config" + script "../main.nf" + process "STECFINDER" + + tag "modules" + tag "modules_nfcore" + tag "stecfinder" + + test("fasta - sarscov2") { + + when { + params { + module_args = '' + } + process { + """ + input[0] = [[ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists:true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("fastq - sarscov2") { + + when { + params { + module_args = '-r' + } + process { + """ + input[0] = [[ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists:true) + ], + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("fasta - sarscov2 - stub") { + options '-stub' + + when { + params { + module_args = '' + } + process { + """ + input[0] = [[ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/sarscov2/genome/genome.fasta', checkIfExists:true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + test("fastq - sarscov2 - stub") { + options '-stub' + + when { + params { + module_args = '-r' + } + process { + """ + input[0] = [[ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists:true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists:true) + ], + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + +} \ No newline at end of file diff --git a/modules/nf-core/stecfinder/tests/main.nf.test.snap b/modules/nf-core/stecfinder/tests/main.nf.test.snap new file mode 100644 index 000000000000..c902675e15ac --- /dev/null +++ b/modules/nf-core/stecfinder/tests/main.nf.test.snap @@ -0,0 +1,134 @@ +{ + "fastq - sarscov2 - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,2c48214785500e9b7a54d6ce8949a1c1" + ], + "tsv": [ + [ + { + "id": "test" + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,2c48214785500e9b7a54d6ce8949a1c1" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T13:14:28.714589218" + }, + "fasta - sarscov2": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tsv:md5,c17e1e69728b48c06c47a7d10086f1da" + ] + ], + "1": [ + "versions.yml:md5,2c48214785500e9b7a54d6ce8949a1c1" + ], + "tsv": [ + [ + { + "id": "test" + }, + "test.tsv:md5,c17e1e69728b48c06c47a7d10086f1da" + ] + ], + "versions": [ + "versions.yml:md5,2c48214785500e9b7a54d6ce8949a1c1" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T13:13:58.436995675" + }, + "fasta - sarscov2 - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,2c48214785500e9b7a54d6ce8949a1c1" + ], + "tsv": [ + [ + { + "id": "test" + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,2c48214785500e9b7a54d6ce8949a1c1" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T13:14:18.667066355" + }, + "fastq - sarscov2": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.tsv:md5,f0a5c4e3509bc8bd03f09aa21c31c526" + ] + ], + "1": [ + "versions.yml:md5,2c48214785500e9b7a54d6ce8949a1c1" + ], + "tsv": [ + [ + { + "id": "test" + }, + "test.tsv:md5,f0a5c4e3509bc8bd03f09aa21c31c526" + ] + ], + "versions": [ + "versions.yml:md5,2c48214785500e9b7a54d6ce8949a1c1" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T13:14:08.559641764" + } +} \ No newline at end of file diff --git a/modules/nf-core/stecfinder/tests/nextflow.config b/modules/nf-core/stecfinder/tests/nextflow.config new file mode 100644 index 000000000000..f42621e171f1 --- /dev/null +++ b/modules/nf-core/stecfinder/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: "STECFINDER" { + ext.args = params.module_args + } +} diff --git a/modules/nf-core/survivor/filter/tests/main.nf.test b/modules/nf-core/survivor/filter/tests/main.nf.test new file mode 100644 index 000000000000..da590bd07e66 --- /dev/null +++ b/modules/nf-core/survivor/filter/tests/main.nf.test @@ -0,0 +1,93 @@ +nextflow_process { + + name "Test Process SURVIVOR_FILTER" + script "../main.nf" + process "SURVIVOR_FILTER" + + tag "modules" + tag "modules_nfcore" + tag "survivor" + tag "survivor/filter" + + test("homo sapiens - vcf") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/gvcf/test.genome.vcf', checkIfExists: true), + [] + ] + input[1] = 51 + input[2] = 10001 + input[3] = 0.01 + input[4] = 10 + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo sapiens - vcf - bed") { + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/gvcf/test.genome.vcf', checkIfExists: true), + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + ] + input[1] = 51 + input[2] = 10001 + input[3] = 0.01 + input[4] = 10 + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo sapiens - vcf - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/gvcf/test.genome.vcf', checkIfExists: true), + [] + ] + input[1] = 51 + input[2] = 10001 + input[3] = 0.01 + input[4] = 10 + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/survivor/filter/tests/main.nf.test.snap b/modules/nf-core/survivor/filter/tests/main.nf.test.snap new file mode 100644 index 000000000000..413707aaaca6 --- /dev/null +++ b/modules/nf-core/survivor/filter/tests/main.nf.test.snap @@ -0,0 +1,101 @@ +{ + "homo sapiens - vcf - bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,ec23f83ba5bb098d45027e63fab93d05" + ] + ], + "1": [ + "versions.yml:md5,a18e3b02957801e91625dbe16cf80034" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,ec23f83ba5bb098d45027e63fab93d05" + ] + ], + "versions": [ + "versions.yml:md5,a18e3b02957801e91625dbe16cf80034" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-07T17:52:18.534971" + }, + "homo sapiens - vcf": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,ec23f83ba5bb098d45027e63fab93d05" + ] + ], + "1": [ + "versions.yml:md5,a18e3b02957801e91625dbe16cf80034" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,ec23f83ba5bb098d45027e63fab93d05" + ] + ], + "versions": [ + "versions.yml:md5,a18e3b02957801e91625dbe16cf80034" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-07T17:52:13.987478" + }, + "homo sapiens - vcf - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,a18e3b02957801e91625dbe16cf80034" + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,a18e3b02957801e91625dbe16cf80034" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T11:51:42.268146" + } +} diff --git a/modules/nf-core/survivor/simsv/tests/main.nf.test b/modules/nf-core/survivor/simsv/tests/main.nf.test new file mode 100644 index 000000000000..ef8b0f5d2923 --- /dev/null +++ b/modules/nf-core/survivor/simsv/tests/main.nf.test @@ -0,0 +1,122 @@ +nextflow_process { + + name "Test Process SURVIVOR_SIMSV" + script "../main.nf" + process "SURVIVOR_SIMSV" + + tag "modules" + tag "modules_nfcore" + tag "survivor" + tag "survivor/simsv" + + test("homo sapiens - fasta") { + + when { + process { + """ + input[0] = [ + [ id:'fasta'], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)] + input[1] = [ + [ id:'fai'], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)] + input[2] = [[], []] + input[3] = [] + input[4] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + test("homo sapiens - fasta - parameters") { + when { + process { + """ + // generate parameter file + parameters = Channel.of( +'''PARAMETER FILE: DO JUST MODIFY THE VALUES AND KEEP THE SPACES! +DUPLICATION_minimum_length: 100 +DUPLICATION_maximum_length: 10000 +DUPLICATION_number: 3 +INDEL_minimum_length: 20 +INDEL_maximum_length: 500 +INDEL_number: 1 +TRANSLOCATION_minimum_length: 1000 +TRANSLOCATION_maximum_length: 3000 +TRANSLOCATION_number: 0 +INVERSION_minimum_length: 600 +INVERSION_maximum_length: 800 +INVERSION_number: 4 +INV_del_minimum_length: 600 +INV_del_maximum_length: 800 +INV_del_number: 2 +INV_dup_minimum_length: 600 +INV_dup_maximum_length: 800 +INV_dup_number: 2''' + ).collectFile(name:"parameters.txt", newLine:true) + .map { [[id:"parameters"], it] } + + input[0] = [ + [ id:'fasta'], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)] + input[1] = [ + [ id:'fai'], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)] + input[2] = parameters + input[3] = 1 + input[4] = 1 + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.vcf[0][1]).name, // unstable + file(process.out.insertions[0][1]).name, // unstable + file(process.out.fasta[0][1]).name, // unstable + process.out.versions + ).match() + } + ) + } + + } + test("homo sapiens - fasta - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'fasta'], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true)] + input[1] = [ + [ id:'fai'], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true)] + input[2] = [[], []] + input[3] = [] + input[4] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/survivor/simsv/tests/main.nf.test.snap b/modules/nf-core/survivor/simsv/tests/main.nf.test.snap new file mode 100644 index 000000000000..a3d9b27e1fa5 --- /dev/null +++ b/modules/nf-core/survivor/simsv/tests/main.nf.test.snap @@ -0,0 +1,141 @@ +{ + "homo sapiens - fasta - parameters": { + "content": [ + "fasta.vcf", + "fasta.insertions.fa", + "fasta.fasta", + [ + "versions.yml:md5,899f0b900c2bb07d24e74b76a4160af6" + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T17:27:15.40472" + }, + "homo sapiens - fasta - stub": { + "content": [ + { + "0": [ + [ + { + "id": "fasta" + }, + "fasta.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + [ + { + "id": "fasta" + }, + "fasta.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + "versions.yml:md5,899f0b900c2bb07d24e74b76a4160af6" + ], + "bed": [ + + ], + "fasta": [ + + ], + "insertions": [ + + ], + "parameters": [ + [ + { + "id": "fasta" + }, + "fasta.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "vcf": [ + [ + { + "id": "fasta" + }, + "fasta.vcf:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,899f0b900c2bb07d24e74b76a4160af6" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-08T17:23:24.09006" + }, + "homo sapiens - fasta": { + "content": [ + { + "0": [ + [ + { + "id": "fasta" + }, + "fasta.txt:md5,a95bd884130aebbb9fde02184bc7ca81" + ] + ], + "1": [ + + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + "versions.yml:md5,899f0b900c2bb07d24e74b76a4160af6" + ], + "bed": [ + + ], + "fasta": [ + + ], + "insertions": [ + + ], + "parameters": [ + [ + { + "id": "fasta" + }, + "fasta.txt:md5,a95bd884130aebbb9fde02184bc7ca81" + ] + ], + "vcf": [ + + ], + "versions": [ + "versions.yml:md5,899f0b900c2bb07d24e74b76a4160af6" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-07T20:06:47.203984" + } +} \ No newline at end of file diff --git a/modules/nf-core/svtk/rdtest2vcf/main.nf b/modules/nf-core/svtk/rdtest2vcf/main.nf index 796650af527e..203551724d99 100644 --- a/modules/nf-core/svtk/rdtest2vcf/main.nf +++ b/modules/nf-core/svtk/rdtest2vcf/main.nf @@ -31,6 +31,18 @@ process SVTK_RDTEST2VCF { ${prefix}.vcf.gz \\ ${contigs} + cat <<-END_VERSIONS > versions.yml + "${task.process}": + svtk: ${VERSION} + END_VERSIONS + """ + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '0.0.20190615' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + echo "" | gzip > ${prefix}.vcf.gz + touch ${prefix}.vcf.gz.tbi + cat <<-END_VERSIONS > versions.yml "${task.process}": svtk: ${VERSION} diff --git a/modules/nf-core/svtk/rdtest2vcf/tests/main.nf.test b/modules/nf-core/svtk/rdtest2vcf/tests/main.nf.test new file mode 100644 index 000000000000..967c7bba37c1 --- /dev/null +++ b/modules/nf-core/svtk/rdtest2vcf/tests/main.nf.test @@ -0,0 +1,94 @@ +nextflow_process { + + name "Test Process SVTK_RDTEST2VCF" + script "../main.nf" + process "SVTK_RDTEST2VCF" + + tag "modules" + tag "modules_nfcore" + tag "svtk" + tag "svtk/rdtest2vcf" + tag "svtk/vcf2bed" + tag "manta/germline" + + test("homo sapiens - vcf") { + + setup { + run("MANTA_GERMLINE") { + script "modules/nf-core/manta/germline/main.nf" + process { + """ + input[0] = [ [ id:'test'], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/cram/test.paired_end.sorted.cram.crai', checkIfExists: true), + [],[] + ] + input[1] = [ [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta', checkIfExists: true) + ] + input[2] = [ [id:'genome'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + input[3] = Channel.of("[manta]", "enableRemoteReadRetrievalForInsertionsInGermlineCallingModes = 0") + .collectFile(name:"manta_options.ini", newLine:true) + """ + } + } + run("SVTK_VCF2BED") { + script "modules/nf-core/svtk/vcf2bed/main.nf" + process { + """ + input[0] = MANTA_GERMLINE.out.diploid_sv_vcf.combine(MANTA_GERMLINE.out.diploid_sv_vcf_tbi, by:0) + + """ + } + } + } + when { + process { + """ + // generate samples file + samples = Channel.of("test").collectFile(name: "samples.txt") + input[0] = SVTK_VCF2BED.out.bed.combine(samples) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("homo sapiens - bed - stub") { + + options "-stub" + + when { + process { + """ + // generate samples file + samples = Channel.of("test").collectFile(name: "samples.txt") + input[0] = Channel.from(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.bed', checkIfExists: true) + .map{it -> [["test"], it]}.collect().combine(samples, by: 0) + input[1] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/svtk/rdtest2vcf/tests/main.nf.test.snap b/modules/nf-core/svtk/rdtest2vcf/tests/main.nf.test.snap new file mode 100644 index 000000000000..fc5cb0325542 --- /dev/null +++ b/modules/nf-core/svtk/rdtest2vcf/tests/main.nf.test.snap @@ -0,0 +1,80 @@ +{ + "homo sapiens - vcf": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,17b6ce06b0b0a8a82de0b6cc7d0f51a1" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,4cb176febbc8c26d717a6c6e67b9c905" + ] + ], + "2": [ + "versions.yml:md5,907b056296ef8f6c060b73fb8659d8e6" + ], + "tbi": [ + [ + { + "id": "test" + }, + "test.vcf.gz.tbi:md5,4cb176febbc8c26d717a6c6e67b9c905" + ] + ], + "vcf": [ + [ + { + "id": "test" + }, + "test.vcf.gz:md5,17b6ce06b0b0a8a82de0b6cc7d0f51a1" + ] + ], + "versions": [ + "versions.yml:md5,907b056296ef8f6c060b73fb8659d8e6" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-09T12:36:07.200622" + }, + "homo sapiens - bed - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + + ], + "2": [ + + ], + "tbi": [ + + ], + "vcf": [ + + ], + "versions": [ + + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-09T12:42:03.933697" + } +} \ No newline at end of file diff --git a/modules/nf-core/svtk/standardize/environment.yml b/modules/nf-core/svtk/standardize/environment.yml index d349bc0ac9a7..5883bdb459f0 100644 --- a/modules/nf-core/svtk/standardize/environment.yml +++ b/modules/nf-core/svtk/standardize/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::svtk=0.0.20190615 + - bioconda::svtk=0.0.20190615=*2 diff --git a/modules/nf-core/svtk/standardize/main.nf b/modules/nf-core/svtk/standardize/main.nf index 52e8eb7d3da5..7eb71b5661ce 100644 --- a/modules/nf-core/svtk/standardize/main.nf +++ b/modules/nf-core/svtk/standardize/main.nf @@ -8,12 +8,12 @@ process SVTK_STANDARDIZE { 'biocontainers/svtk:0.0.20190615--py37h73a75cf_2' }" input: - tuple val(meta), path(vcf) - path fasta_fai + tuple val(meta), path(input) + tuple val(meta2), path (fai) output: - tuple val(meta), path("*.std.vcf.gz"), emit: standardized_vcf - path "versions.yml" , emit: versions + tuple val(meta), path("*.vcf.gz"), emit: vcf + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -21,21 +21,32 @@ process SVTK_STANDARDIZE { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - - def arguments = args.args ?: '' - def caller = args.caller ?: 'delly' - + def contigs = fai ? "--contigs ${fai}" : "" def VERSION = '0.0.20190615' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. - def contigs = fasta_fai ? "--contigs ${fasta_fai}" : "" + if ("$input" == "${prefix}.vcf.gz") error "Input and output names are the same, set prefix in module configuration to disambiguate!" """ svtk standardize \\ - ${arguments} \\ + $args \\ ${contigs} \\ - ${vcf} \\ - ${prefix}.std.vcf.gz \\ - ${caller} + ${input} \\ + ${prefix}.vcf.gz \\ + $meta.caller + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + svtk: ${VERSION} + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '0.0.20190615' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + if ("$input" == "${prefix}.vcf.gz") error "Input and output names are the same, set prefix in module configuration to disambiguate!" + + """ + echo | gzip > ${prefix}.vcf.gz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/svtk/standardize/meta.yml b/modules/nf-core/svtk/standardize/meta.yml index 84090cbacdd6..b1a0b521e73b 100644 --- a/modules/nf-core/svtk/standardize/meta.yml +++ b/modules/nf-core/svtk/standardize/meta.yml @@ -19,28 +19,32 @@ input: - - meta: type: map description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - vcf: + Groovy Map containing sample information. Caller can be one of the tools: delly, manta, melt, wham + e.g. [ id:'test', caller:"delly" ] + - input: type: file description: A gzipped VCF file to be standardized pattern: "*.vcf.gz" - - - fasta_fai: + - - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test2' ] + - fai: type: file - description: Optional fasta index file that specifies the contigs to be used - in the VCF header (defaults to all contigs of GRCh37) + description: Optional fasta index file that specifies the contigs to be used in the VCF header (defaults to all contigs of GRCh37) pattern: "*.fai" output: - - standardized_vcf: + - vcf: - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - "*.std.vcf.gz": + e.g. [ id:'test', caller:"delly" ] + - "*.vcf.gz": type: file description: A gzipped version of the standardized VCF file - pattern: "*.std.vcf.gz" + pattern: "*.vcf.gz" - versions: - versions.yml: type: file diff --git a/modules/nf-core/svtk/standardize/tests/main.nf.test b/modules/nf-core/svtk/standardize/tests/main.nf.test new file mode 100644 index 000000000000..3dca53f9bb7a --- /dev/null +++ b/modules/nf-core/svtk/standardize/tests/main.nf.test @@ -0,0 +1,66 @@ +nextflow_process { + + name "Test Process SVTK_STANDARDIZE" + script "../main.nf" + process "SVTK_STANDARDIZE" + + tag "modules" + tag "modules_nfcore" + tag "svtk" + tag "svtk/standardize" + + test("homo sapiens - vcf.gz") { + when { + process { + """ + input[0] = [ + [ id:'test', caller:'manta'], // meta map + file(params.modules_testdata_base_path + '/genomics/homo_sapiens/illumina/vcf/test.genome_21.somatic_sv.vcf.gz', checkIfExists: true) + ] + input[1] = [ + [id:'fai'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() }, + { assert path(process.out.vcf.get(0).get(1)).linesGzip.contains("##fileformat=VCFv4.2") } + ) + } + + } + + test("homo sapiens - vcf.gz - stub") { + + options "-stub" + + when { + process { + """ + input[0] = [ + [ id:'test', caller:'manta' ], // meta map + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/illumina/vcf/test.genome_21.somatic_sv.vcf.gz', checkIfExists: true) + ] + input[1] = [ + [id:'fai'], + file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta.fai', checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/svtk/standardize/tests/main.nf.test.snap b/modules/nf-core/svtk/standardize/tests/main.nf.test.snap new file mode 100644 index 000000000000..d4ec0ad7b04f --- /dev/null +++ b/modules/nf-core/svtk/standardize/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "homo sapiens - vcf.gz": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "caller": "manta" + }, + "test.vcf.gz:md5,6119075b757b3720ab5ecb484c4c8b70" + ] + ], + "1": [ + "versions.yml:md5,e2e8ab223b67146188badb065515d8dc" + ], + "vcf": [ + [ + { + "id": "test", + "caller": "manta" + }, + "test.vcf.gz:md5,6119075b757b3720ab5ecb484c4c8b70" + ] + ], + "versions": [ + "versions.yml:md5,e2e8ab223b67146188badb065515d8dc" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-11T11:52:24.533119" + }, + "homo sapiens - vcf.gz - stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "caller": "manta" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "1": [ + "versions.yml:md5,e2e8ab223b67146188badb065515d8dc" + ], + "vcf": [ + [ + { + "id": "test", + "caller": "manta" + }, + "test.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" + ] + ], + "versions": [ + "versions.yml:md5,e2e8ab223b67146188badb065515d8dc" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-11T11:52:29.264333" + } +} \ No newline at end of file diff --git a/modules/nf-core/sylphtax/merge/environment.yml b/modules/nf-core/sylphtax/merge/environment.yml new file mode 100644 index 000000000000..517edcad5ef3 --- /dev/null +++ b/modules/nf-core/sylphtax/merge/environment.yml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/environment-schema.json +channels: + - conda-forge + - bioconda +dependencies: + - "bioconda::sylph-tax=1.2.0" diff --git a/modules/nf-core/sylphtax/merge/main.nf b/modules/nf-core/sylphtax/merge/main.nf new file mode 100644 index 000000000000..7d0ab8fde8c1 --- /dev/null +++ b/modules/nf-core/sylphtax/merge/main.nf @@ -0,0 +1,51 @@ + +process SYLPHTAX_MERGE { + tag "$meta.id" + label 'process_single' + + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/sylph-tax:1.2.0--pyhdfd78af_0': + 'biocontainers/sylph-tax:1.2.0--pyhdfd78af_0' }" + + + input: + tuple val(meta), path(sylphtax_reports) + val data_type + + output: + tuple val(meta), path("*.tsv"), emit: tsv + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + export SYLPH_TAXONOMY_CONFIG="/tmp/config.json" + sylph-tax \\ + merge \\ + ${sylphtax_reports} \\ + --column $data_type \\ + --output ${prefix}.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + sylph-tax: \$(sylph-tax --version) + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + export SYLPH_TAXONOMY_CONFIG="/tmp/config.json" + touch ${prefix}.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + sylph-tax: \$(sylph-tax --version) + END_VERSIONS + """ +} diff --git a/modules/nf-core/sylphtax/merge/meta.yml b/modules/nf-core/sylphtax/merge/meta.yml new file mode 100644 index 000000000000..1cce3bb14172 --- /dev/null +++ b/modules/nf-core/sylphtax/merge/meta.yml @@ -0,0 +1,46 @@ +name: "sylphtax_merge" +description: Merge multiple taxonomic profiles from sylphtaxt/taxprof into a tsv table +keywords: + - sylph + - metagenomics + - merge +tools: + - sylphtax: + description: Integrating taxonomic information into the sylph metagenome profiler. + homepage: https://github.com/bluenote-1577/sylph-tax?tab=readme-ov-file + documentation: https://sylph-docs.github.io/sylph-tax/ + licence: ["MIT"] + identifier: "" +input: + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - sylphtax_reports: + type: file + description: Output taxonomic profile from sylph-tax taxprof command. + pattern: "*.{sylphmpa}" + - - data_type: + type: string + description: Can be ANI, relative abundance, or sequence abundance. +output: + - tsv: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - "*.tsv": + type: file + description: Output profile with the merged taxonomic profiles in tsv format. + pattern: "*.tsv" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@sofstam" +maintainers: + - "@sofstam" diff --git a/modules/nf-core/sylphtax/merge/tests/main.nf.test b/modules/nf-core/sylphtax/merge/tests/main.nf.test new file mode 100644 index 000000000000..19879eff6f20 --- /dev/null +++ b/modules/nf-core/sylphtax/merge/tests/main.nf.test @@ -0,0 +1,116 @@ +nextflow_process { + + name "Test Process SYLPHTAX_MERGE" + script "../main.nf" + process "SYLPHTAX_MERGE" + + tag "modules" + tag "modules_nfcore" + tag "sylph" + tag "sylph/profile" + tag "sylphtax" + tag "sylphtax/taxprof" + tag "sylphtax/merge" + + + test("sarscov2 illumina single-end [fastq_gz]") { + setup { + run("SYLPH_PROFILE") { + script "../../../sylph/profile/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ] + input[1] = file(params.modules_testdata_base_path +'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + """ + } + } + run("SYLPHTAX_TAXPROF") + { + script "../../../sylphtax/taxprof/main.nf" + process { + """ + input[0] = SYLPH_PROFILE.out.profile_out + input[1] = file('https://github.com/nf-core/test-datasets/raw/taxprofiler/data/database/sylph/test_taxonomy.tsv.gz', checkIfExists: true) + """ + } + } + + } + when { + + process { + """ + input[0] = SYLPHTAX_TAXPROF.out.taxprof_output + input[1] = "relative_abundance" + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + process.out.tsv + ).match() } + ) + } + + } + + test("sarscov2 illumina single-end [fastq_gz]-stub") { + + options '-stub' + + setup { + run("SYLPH_PROFILE") { + script "../../../sylph/profile/main.nf" + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + [ file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/sarscov2/illumina/fastq/test_2.fastq.gz', checkIfExists: true) ] + ] + input[1] = file(params.modules_testdata_base_path +'genomics/sarscov2/genome/genome.fasta', checkIfExists: true) + """ + } + } + run("SYLPHTAX_TAXPROF") + { + script "../../../sylphtax/taxprof/main.nf" + process { + """ + input[0] = SYLPH_PROFILE.out.profile_out + input[1] = file('https://github.com/nf-core/test-datasets/raw/taxprofiler/data/database/sylph/test_taxonomy.tsv.gz', checkIfExists: true) + """ + } + } + + } + when { + + process { + """ + input[0] = SYLPHTAX_TAXPROF.out.taxprof_output + input[1] = "relative_abundance" + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + process.out.tsv + ).match() } + ) + } + + } +} diff --git a/modules/nf-core/sylphtax/merge/tests/main.nf.test.snap b/modules/nf-core/sylphtax/merge/tests/main.nf.test.snap new file mode 100644 index 000000000000..73c89e5a8f09 --- /dev/null +++ b/modules/nf-core/sylphtax/merge/tests/main.nf.test.snap @@ -0,0 +1,44 @@ +{ + "sarscov2 illumina single-end [fastq_gz]": { + "content": [ + [ + "versions.yml:md5,fb665700c08de369d03e29c02394da07" + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,0babfd085a52f127c5d352fab5595b39" + ] + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-07T15:29:34.708536546" + }, + "sarscov2 illumina single-end [fastq_gz]-stub": { + "content": [ + [ + "versions.yml:md5,fb665700c08de369d03e29c02394da07" + ], + [ + [ + { + "id": "test", + "single_end": false + }, + "test.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ] + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-04-07T15:29:46.390759044" + } +} \ No newline at end of file diff --git a/modules/nf-core/sylphtax/taxprof/environment.yml b/modules/nf-core/sylphtax/taxprof/environment.yml index f35891d9ae06..517edcad5ef3 100644 --- a/modules/nf-core/sylphtax/taxprof/environment.yml +++ b/modules/nf-core/sylphtax/taxprof/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - "bioconda::sylph-tax=1.1.2" + - "bioconda::sylph-tax=1.2.0" diff --git a/modules/nf-core/sylphtax/taxprof/main.nf b/modules/nf-core/sylphtax/taxprof/main.nf index 3f71775586be..d7508b3a5a51 100644 --- a/modules/nf-core/sylphtax/taxprof/main.nf +++ b/modules/nf-core/sylphtax/taxprof/main.nf @@ -5,8 +5,8 @@ process SYLPHTAX_TAXPROF { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/sylph-tax:1.1.2--pyhdfd78af_0': - 'biocontainers/sylph-tax:1.1.2--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/sylph-tax:1.2.0--pyhdfd78af_0': + 'biocontainers/sylph-tax:1.2.0--pyhdfd78af_0' }" input: tuple val(meta), path(sylph_results) @@ -24,6 +24,7 @@ process SYLPHTAX_TAXPROF { def prefix = task.ext.prefix ?: "${meta.id}" """ + export SYLPH_TAXONOMY_CONFIG="/tmp/config.json" sylph-tax \\ taxprof \\ $sylph_results \\ @@ -31,21 +32,22 @@ process SYLPHTAX_TAXPROF { -t $taxonomy mv *.sylphmpa ${prefix}.sylphmpa - + cat <<-END_VERSIONS > versions.yml "${task.process}": - sylph-tax: \$(sylph-tax --version 2>&1 | sed -n 's/.*\\([0-9]\\+\\.[0-9]\\+\\.[0-9]\\+\\).*/\\1/p' | head -n 1) + sylph-tax: \$(sylph-tax --version) END_VERSIONS """ stub: def prefix = task.ext.prefix ?: "${meta.id}" """ + export SYLPH_TAXONOMY_CONFIG="/tmp/config.json" touch ${prefix}.sylphmpa cat <<-END_VERSIONS > versions.yml "${task.process}": - sylph-tax: \$(sylph-tax --version 2>&1 | sed -n 's/.*\\([0-9]\\+\\.[0-9]\\+\\.[0-9]\\+\\).*/\\1/p' | head -n 1) + sylph-tax: \$(sylph-tax --version) END_VERSIONS """ } diff --git a/modules/nf-core/sylphtax/taxprof/meta.yml b/modules/nf-core/sylphtax/taxprof/meta.yml index e4ee39ba0dbf..02d7780d3b72 100644 --- a/modules/nf-core/sylphtax/taxprof/meta.yml +++ b/modules/nf-core/sylphtax/taxprof/meta.yml @@ -1,51 +1,51 @@ name: sylphtax_taxprof description: Incorporates taxonomy into sylph metagenomic classifier keywords: -- taxonomy -- sylph -- metagenomics + - taxonomy + - sylph + - metagenomics tools: -- sylphtax: - description: Integrating taxonomic information into the sylph metagenome profiler. - homepage: https://github.com/bluenote-1577/sylph-tax?tab=readme-ov-file - documentation: https://sylph-docs.github.io/sylph-tax/ - licence: ["MIT"] - identifier: '' + - sylphtax: + description: Integrating taxonomic information into the sylph metagenome profiler. + homepage: https://github.com/bluenote-1577/sylph-tax?tab=readme-ov-file + documentation: https://sylph-docs.github.io/sylph-tax/ + licence: ["MIT"] + identifier: "" input: -- - meta: - type: map - description: | - Groovy Map containing sample information - e.g. `[ id:'sample1', single_end:false ]` - - sylph_results: - type: file - description: Output results from sylph classifier. The database file(s) used to create this file with sylph must be the same as those of the taxonomy input channel of this module. - pattern: "*.{tsv}" -- - taxonomy: - type: file - description: A list of sylph-tax identifiers (e.g. GTDB_r220 or IMGVR_4.1). - Multiple taxonomy metadata files can be input. Custom taxonomy files are also - possible. + - - meta: + type: map + description: | + Groovy Map containing sample information + e.g. `[ id:'sample1', single_end:false ]` + - sylph_results: + type: file + description: Output results from sylph classifier. The database file(s) used to create this file with sylph must be the same as those of the taxonomy input channel of this module. + pattern: "*.{tsv}" + - - taxonomy: + type: file + description: A list of sylph-tax identifiers (e.g. GTDB_r220 or IMGVR_4.1). + Multiple taxonomy metadata files can be input. Custom taxonomy files are also + possible. output: -- taxprof_output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - pattern: "*{.sylphmpa}" - - '*.sylphmpa': - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - pattern: "*{.sylphmpa}" -- versions: - - versions.yml: - type: file - description: File containing software versions - pattern: "versions.yml" + - taxprof_output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*{.sylphmpa}" + - "*.sylphmpa": + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + pattern: "*{.sylphmpa}" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" authors: -- "@sofstam" + - "@sofstam" maintainers: -- "@sofstam" + - "@sofstam" diff --git a/modules/nf-core/sylphtax/taxprof/tests/main.nf.test.snap b/modules/nf-core/sylphtax/taxprof/tests/main.nf.test.snap index 824ceb3edbba..3c26e75ec9a8 100644 --- a/modules/nf-core/sylphtax/taxprof/tests/main.nf.test.snap +++ b/modules/nf-core/sylphtax/taxprof/tests/main.nf.test.snap @@ -2,7 +2,7 @@ "stub sarscov2 illumina single-end [fastq_gz]": { "content": [ [ - "versions.yml:md5,976fae8d146f4f3087e2a090703f09b9" + "versions.yml:md5,bdbbd22b3e721ba2027d3e6cb1dc4bb4" ], [ [ @@ -17,12 +17,12 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-06T09:50:24.907781877" + "timestamp": "2025-04-07T15:28:04.026470884" }, "sarscov2 illumina single-end [fastq_gz]": { "content": [ [ - "versions.yml:md5,976fae8d146f4f3087e2a090703f09b9" + "versions.yml:md5,bdbbd22b3e721ba2027d3e6cb1dc4bb4" ], [ [ @@ -30,7 +30,7 @@ "id": "test", "single_end": true }, - "test.sylphmpa:md5,797e3463eeb9a2e8f91de9b842cd421d" + "test.sylphmpa:md5,a9743c21a53ba766226e57d2a25f6167" ] ] ], @@ -38,6 +38,6 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-06T09:50:17.295239617" + "timestamp": "2025-04-07T15:27:55.45776116" } } \ No newline at end of file diff --git a/modules/nf-core/ultra/index/tests/main.nf.test b/modules/nf-core/ultra/index/tests/main.nf.test deleted file mode 100644 index 3e3e82bbce8d..000000000000 --- a/modules/nf-core/ultra/index/tests/main.nf.test +++ /dev/null @@ -1,51 +0,0 @@ -nextflow_process { - - name "Test Process ULTRA_INDEX" - config "./nextflow.config" - script "../main.nf" - process "ULTRA_INDEX" - - tag "modules" - tag "modules_nfcore" - tag "ultra" - tag "ultra/index" - tag "gnu" - tag "gnu/sort" - - test("test_ultra_index") { - - setup { - run("GNU_SORT") { - script "../../../gnu/sort/main.nf" - - process { - """ - input[0] = [ - [id:'test'], - file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.gtf',checkIfExists:true) - ] - """ - } - } - } - - when { - params { - sort_args = '-k1,1 -k4,4n' - module_args = '--disable_infer' - } - process { - """ - input[0] = file(params.modules_testdata_base_path + 'genomics/homo_sapiens/genome/genome.fasta',checkIfExists:true) - input[1] = GNU_SORT.out.sorted.map{it[1]} - """ - } - } - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - } -} \ No newline at end of file diff --git a/modules/nf-core/ultra/index/tests/main.nf.test.snap b/modules/nf-core/ultra/index/tests/main.nf.test.snap deleted file mode 100644 index 0165f8469c4b..000000000000 --- a/modules/nf-core/ultra/index/tests/main.nf.test.snap +++ /dev/null @@ -1,73 +0,0 @@ -{ - "test_ultra_index": { - "content": [ - { - "0": [ - [ - [ - "all_splice_pairs_annotations.pickle:md5,ec60c02903edc30a3f10c196c425fb16", - "all_splice_sites_annotations.pickle:md5,5a7d640f4e707acb37966542c132455a", - "chr_to_id.pickle:md5,b8aa0a986ec685f5f7e8fad651ff1b90", - "exon_choordinates_to_id.pickle:md5,4e978d727a90e2b225c5ff4bc6107578", - "flank_choordinates.pickle:md5,309e3de05b9d781e01810ea442ebf2ef", - "gene_to_small_segments.pickle:md5,37a25f3ba84edac017ecb9e946081696", - "id_to_chr.pickle:md5,020263c6d9f399670871ca187c1d203f", - "max_intron_chr.pickle:md5,f568beb2f859d8e9b1f2993048e4fcd2", - "parts_to_segments.pickle:md5,56950e119f074e4b4577dc3cbf00ea76", - "ref_exon_sequences.pickle:md5,860192c5711d1b41bda2d3677cf310f5", - "ref_flank_sequences.pickle:md5,9b81749e32c4e4f742590218e8854313", - "ref_part_sequences.pickle:md5,3354b0d8f8f1c9db1a98d70e470826ff", - "ref_segment_sequences.pickle:md5,fe89d6588433b848a2055395765032a6", - "refs_id_lengths.pickle:md5,102873a7c330dc1ca562a699dec2d5f2", - "refs_lengths.pickle:md5,93012591af522a2f6a6c1620f23aa065", - "segment_id_to_choordinates.pickle:md5,59689a3f3e8bebb1938d576932f266f8", - "segment_to_gene.pickle:md5,b27dbc0e09354a637c453a9130aae260", - "segment_to_ref.pickle:md5,628eb8bd24cda6f7dd6a2de7f591ffda", - "splices_to_transcripts.pickle:md5,4b7d114268be85793fa0b2de64c8adbe", - "transcripts_to_splices.pickle:md5,3e307206909ed029a69b65f6afca02d0" - ], - "database.db:md5,f9b780bf5a0a5d23256afb99df7137d9" - ] - ], - "1": [ - "versions.yml:md5,45fdc5637701f0c91e005244cc09a199" - ], - "index": [ - [ - [ - "all_splice_pairs_annotations.pickle:md5,ec60c02903edc30a3f10c196c425fb16", - "all_splice_sites_annotations.pickle:md5,5a7d640f4e707acb37966542c132455a", - "chr_to_id.pickle:md5,b8aa0a986ec685f5f7e8fad651ff1b90", - "exon_choordinates_to_id.pickle:md5,4e978d727a90e2b225c5ff4bc6107578", - "flank_choordinates.pickle:md5,309e3de05b9d781e01810ea442ebf2ef", - "gene_to_small_segments.pickle:md5,37a25f3ba84edac017ecb9e946081696", - "id_to_chr.pickle:md5,020263c6d9f399670871ca187c1d203f", - "max_intron_chr.pickle:md5,f568beb2f859d8e9b1f2993048e4fcd2", - "parts_to_segments.pickle:md5,56950e119f074e4b4577dc3cbf00ea76", - "ref_exon_sequences.pickle:md5,860192c5711d1b41bda2d3677cf310f5", - "ref_flank_sequences.pickle:md5,9b81749e32c4e4f742590218e8854313", - "ref_part_sequences.pickle:md5,3354b0d8f8f1c9db1a98d70e470826ff", - "ref_segment_sequences.pickle:md5,fe89d6588433b848a2055395765032a6", - "refs_id_lengths.pickle:md5,102873a7c330dc1ca562a699dec2d5f2", - "refs_lengths.pickle:md5,93012591af522a2f6a6c1620f23aa065", - "segment_id_to_choordinates.pickle:md5,59689a3f3e8bebb1938d576932f266f8", - "segment_to_gene.pickle:md5,b27dbc0e09354a637c453a9130aae260", - "segment_to_ref.pickle:md5,628eb8bd24cda6f7dd6a2de7f591ffda", - "splices_to_transcripts.pickle:md5,4b7d114268be85793fa0b2de64c8adbe", - "transcripts_to_splices.pickle:md5,3e307206909ed029a69b65f6afca02d0" - ], - "database.db:md5,f9b780bf5a0a5d23256afb99df7137d9" - ] - ], - "versions": [ - "versions.yml:md5,45fdc5637701f0c91e005244cc09a199" - ] - } - ], - "meta": { - "nf-test": "0.9.2", - "nextflow": "24.10.5" - }, - "timestamp": "2025-04-01T13:48:22.364563262" - } -} \ No newline at end of file diff --git a/modules/nf-core/ultra/index/tests/nextflow.config b/modules/nf-core/ultra/index/tests/nextflow.config deleted file mode 100644 index 5d52e18c0d31..000000000000 --- a/modules/nf-core/ultra/index/tests/nextflow.config +++ /dev/null @@ -1,9 +0,0 @@ -process { - withName: "GNU_SORT" { - ext.args = params.sort_args - } - - withName: "ULTRA_INDEX" { - ext.args = params.module_args - } -} diff --git a/modules/nf-core/variancepartition/dream/main.nf b/modules/nf-core/variancepartition/dream/main.nf index c9fa12dabfbe..c3b4a59ff0fd 100644 --- a/modules/nf-core/variancepartition/dream/main.nf +++ b/modules/nf-core/variancepartition/dream/main.nf @@ -1,5 +1,5 @@ process VARIANCEPARTITION_DREAM { - tag "${meta.id} - ${meta.contrast_id}" + tag "${meta.id}" label 'process_single' conda "${moduleDir}/environment.yml" @@ -8,10 +8,12 @@ process VARIANCEPARTITION_DREAM { 'community.wave.seqera.io/library/bioconductor-edger_bioconductor-variancepartition_r-optparse:ba778938d72f30c5' }" input: - tuple val(meta), path(samplesheet), path(counts) + tuple val(meta), val(contrast_variable), val(reference), val(target), val(formula) + tuple val(meta2), path(samplesheet), path(counts) output: tuple val(meta), path("*.dream.results.tsv") , emit: results + tuple val(meta), path("*.dream.model.txt") , emit: model path "versions.yml" , emit: versions when: @@ -21,9 +23,9 @@ process VARIANCEPARTITION_DREAM { template 'dream.R' stub: - prefix = task.ext.prefix ?: "${meta.id}" """ - touch "${meta.contrast_id}.dream.results.tsv" + touch "${meta.id}.dream.results.tsv" + touch "${meta.id}.dream.model.txt" cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/variancepartition/dream/meta.yml b/modules/nf-core/variancepartition/dream/meta.yml index da5b3a900d4d..48011b8451b7 100644 --- a/modules/nf-core/variancepartition/dream/meta.yml +++ b/modules/nf-core/variancepartition/dream/meta.yml @@ -18,16 +18,30 @@ input: - - meta: type: map description: | - Groovy Map containing run and contrast information. This can be used at the - workflow level to pass optional parameters to the module, e.g. - [ - contrast_id: 'treatment_mCherry_hND6', - contrast_variable: 'treatment', - contrast_reference: 'mCherry', - contrast_target: 'hND6', - formula: '~ treatment + (1 | sample_number)' - ] - Plus mandatory `id` and other fields created along the run. + Groovy Map containing run and contrast information. + - contrast_variable: + type: string + description: | + The column in the sample sheet that should be used to define groups for + comparison + - reference: + type: string + description: | + The value within the contrast_variable column of the sample sheet that + should be used to derive the reference samples + - target: + type: string + description: | + The value within the contrast_variable column of the sample sheet that + should be used to derive the target samples + - formula: + type: string + description: (Mandatory) R formula string used for modeling, e.g. '~ treatment + (1 | sample_number)'. + - - meta2: + type: map + description: | + Groovy map containing study-wide metadata related to the sample sheet + and matrix - samplesheet: type: file description: Sample sheet file containing sample metadata. @@ -35,8 +49,7 @@ input: - counts: type: file description: | - Raw TSV or CSV format expression matrix with count data by row and samples - by column + TSV or CSV format expression matrix with genes as rows and samples as columns. ontologies: [] output: - results: @@ -49,13 +62,25 @@ output: description: | TSV-format table of differential expression information as output by Dream pattern: "*.dream.results.tsv" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + - model: + - meta: + type: map + description: Metadata map passed through from input. + - "*.dream.model.txt": + type: file + description: | + R model description text file. + pattern: "*.dream.model.txt" ontologies: [] - versions: - versions.yml: type: file description: File containing software versions pattern: "versions.yml" - ontologies: [] + ontologies: + - edam: http://edamontology.org/format_3750 # YAML authors: - "@alanmmobbs03" - "@nschcolnicov" diff --git a/modules/nf-core/variancepartition/dream/templates/dream.R b/modules/nf-core/variancepartition/dream/templates/dream.R index 653fd459004a..3bd8c627989a 100644 --- a/modules/nf-core/variancepartition/dream/templates/dream.R +++ b/modules/nf-core/variancepartition/dream/templates/dream.R @@ -47,12 +47,12 @@ read_delim_flexible <- function(file, header = TRUE, row.names = NULL, check.nam # Options list opt <- list( - output_prefix = "$meta.contrast_id", # Prefix for output files + output_prefix = ifelse('$task.ext.prefix' == 'null', '$meta.id', '$task.ext.prefix'), count_file = "$counts", # File containing raw counts sample_file = "$samplesheet", # File containing sample information - contrast_variable = "$meta.contrast_variable", # Variable for contrast (e.g., "treatment") - contrast_reference = "$meta.contrast_reference",# Reference level for the contrast - contrast_target = "$meta.contrast_target", # Target level for the contrast (e.g., "mCherry") + contrast_variable = "$contrast_variable", # Variable for contrast (e.g., "treatment") + contrast_reference = "$reference", # Reference level for the contrast + contrast_target = "$target", # Target level for the contrast (e.g., "mCherry") sample_id_col = "sample", # Column name for sample IDs threads = "$task.cpus", # Number of threads for multithreading subset_to_contrast_samples = FALSE, # Whether to subset to contrast samples @@ -69,7 +69,7 @@ opt <- list( winsor_tail_p = "0.05,0.1", # Winsor tail probabilities for eBayes ddf = "adaptive", # 'Satterthwaite', 'Kenward-Roger', or 'adaptive' reml = FALSE, - formula = "$meta.formula", # User-specified formula (e.g. "~ + (1 | sample_number)") + formula = "$formula", # User-specified formula (e.g. "~ + (1 | sample_number)") apply_voom = FALSE # Whether to apply `voomWithDreamWeights` ) @@ -159,6 +159,9 @@ results <- topTable(fitmm, coef = coef_name, write.table(results, file = paste(opt\$output_prefix, 'dream.results.tsv', sep = '.'), col.names = TRUE, row.names = FALSE, sep = '\t', quote = FALSE ) +# Save model to file +write(deparse(form), file=paste(opt\$output_prefix, 'dream.model.txt', sep = '.')) + ################################################ ################################################ ## VERSIONS FILE ## diff --git a/modules/nf-core/variancepartition/dream/tests/main.nf.test b/modules/nf-core/variancepartition/dream/tests/main.nf.test index 107e238f16fd..319e444dcaa9 100644 --- a/modules/nf-core/variancepartition/dream/tests/main.nf.test +++ b/modules/nf-core/variancepartition/dream/tests/main.nf.test @@ -14,17 +14,13 @@ nextflow_process { when { process { """ - // contrast data + counts + samplesheet - input[0] = Channel.of( - [ - [ - contrast_id: 'treatment_mCherry_hND6', - contrast_variable: 'treatment', - contrast_reference: 'mCherry', - contrast_target: 'hND6', - blocking_factors: null, - formula: null - ], + input[0] = Channel.of(['id': 'treatment_mCherry_hND6', 'variable': 'treatment', 'reference': 'mCherry', 'target': 'hND6', 'blocking_factors':null, 'formula':null]) + .map{ + tuple(it, it.variable, it.reference, it.target, it.formula) + } + + input[1] = Channel.of([ + [ id:'test' ], file("https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/modules/data/genomics/mus_musculus/rnaseq_expression/SRP254919.samplesheet.csv", checkIfExists: true), file("https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/modules/data/genomics/mus_musculus/rnaseq_expression/SRP254919.salmon.merged.gene_counts.top1000cov.tsv", checkIfExists: true) ] @@ -45,17 +41,13 @@ nextflow_process { when { process { """ - // contrast data + counts + samplesheet - input[0] = Channel.of( - [ - [ - contrast_id: 'treatment_mCherry_hND6', - contrast_variable: 'treatment', - contrast_reference: 'mCherry', - contrast_target: 'hND6', - blocking_factors: 'sample_number', - formula: '~ treatment + (1 | sample_number)' - ], + input[0] = Channel.of(['id': 'treatment_mCherry_hND6', 'variable': 'treatment', 'reference': 'mCherry', 'target': 'hND6', 'blocking_factors':'sample_number', 'formula':'~ treatment + (1 | sample_number)']) + .map{ + tuple(it, it.variable, it.reference, it.target, it.formula) + } + + input[1] = Channel.of([ + [ id:'test' ], file("https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/modules/data/genomics/mus_musculus/rnaseq_expression/SRP254919.samplesheet.csv", checkIfExists: true), file("https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/modules/data/genomics/mus_musculus/rnaseq_expression/SRP254919.salmon.merged.gene_counts.top1000cov.tsv", checkIfExists: true) ] @@ -78,17 +70,13 @@ nextflow_process { when { process { """ - // contrast data + counts + samplesheet - input[0] = Channel.of( - [ - [ - contrast_id: 'treatment_mCherry_hND6', - contrast_variable: 'treatment', - contrast_reference: 'mCherry', - contrast_target: 'hND6', - blocking_factors: 'sample_number', - formula: null - ], + input[0] = Channel.of(['id': 'treatment_mCherry_hND6', 'variable': 'treatment', 'reference': 'mCherry', 'target': 'hND6', 'blocking_factors':'sample_number', 'formula':'~ treatment + (1 | sample_number)']) + .map{ + tuple(it, it.variable, it.reference, it.target, it.formula) + } + + input[1] = Channel.of([ + [ id:'test' ], file("https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/modules/data/genomics/mus_musculus/rnaseq_expression/SRP254919.samplesheet.csv", checkIfExists: true), file("https://raw.githubusercontent.com/nf-core/test-datasets/refs/heads/modules/data/genomics/mus_musculus/rnaseq_expression/SRP254919.salmon.merged.gene_counts.top1000cov.tsv", checkIfExists: true) ] diff --git a/modules/nf-core/variancepartition/dream/tests/main.nf.test.snap b/modules/nf-core/variancepartition/dream/tests/main.nf.test.snap index ca054e3fa0f0..34257f3b24d1 100644 --- a/modules/nf-core/variancepartition/dream/tests/main.nf.test.snap +++ b/modules/nf-core/variancepartition/dream/tests/main.nf.test.snap @@ -5,10 +5,10 @@ "0": [ [ { - "contrast_id": "treatment_mCherry_hND6", - "contrast_variable": "treatment", - "contrast_reference": "mCherry", - "contrast_target": "hND6", + "id": "treatment_mCherry_hND6", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", "blocking_factors": "sample_number", "formula": "~ treatment + (1 | sample_number)" }, @@ -16,15 +16,41 @@ ] ], "1": [ + [ + { + "id": "treatment_mCherry_hND6", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking_factors": "sample_number", + "formula": "~ treatment + (1 | sample_number)" + }, + "treatment_mCherry_hND6.dream.model.txt:md5,7103206474aa480ffd9cec149263489f" + ] + ], + "2": [ "versions.yml:md5,fc1f26eb2194018e99fc2916332676b7" ], + "model": [ + [ + { + "id": "treatment_mCherry_hND6", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking_factors": "sample_number", + "formula": "~ treatment + (1 | sample_number)" + }, + "treatment_mCherry_hND6.dream.model.txt:md5,7103206474aa480ffd9cec149263489f" + ] + ], "results": [ [ { - "contrast_id": "treatment_mCherry_hND6", - "contrast_variable": "treatment", - "contrast_reference": "mCherry", - "contrast_target": "hND6", + "id": "treatment_mCherry_hND6", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", "blocking_factors": "sample_number", "formula": "~ treatment + (1 | sample_number)" }, @@ -40,7 +66,7 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-13T14:40:25.867780675" + "timestamp": "2025-03-31T15:03:03.556133605" }, "Mus musculus - expression table - contrasts + blocking factors stub": { "content": [ @@ -48,28 +74,54 @@ "0": [ [ { - "contrast_id": "treatment_mCherry_hND6", - "contrast_variable": "treatment", - "contrast_reference": "mCherry", - "contrast_target": "hND6", + "id": "treatment_mCherry_hND6", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", "blocking_factors": "sample_number", - "formula": null + "formula": "~ treatment + (1 | sample_number)" }, "treatment_mCherry_hND6.dream.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], "1": [ + [ + { + "id": "treatment_mCherry_hND6", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking_factors": "sample_number", + "formula": "~ treatment + (1 | sample_number)" + }, + "treatment_mCherry_hND6.dream.model.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "2": [ "versions.yml:md5,03b686ec8c67a91501ebb2b2a5234e77" ], + "model": [ + [ + { + "id": "treatment_mCherry_hND6", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking_factors": "sample_number", + "formula": "~ treatment + (1 | sample_number)" + }, + "treatment_mCherry_hND6.dream.model.txt:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], "results": [ [ { - "contrast_id": "treatment_mCherry_hND6", - "contrast_variable": "treatment", - "contrast_reference": "mCherry", - "contrast_target": "hND6", + "id": "treatment_mCherry_hND6", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", "blocking_factors": "sample_number", - "formula": null + "formula": "~ treatment + (1 | sample_number)" }, "treatment_mCherry_hND6.dream.results.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] @@ -83,7 +135,7 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-13T14:40:39.315196311" + "timestamp": "2025-03-31T15:03:25.932056996" }, "Mus musculus - expression table - contrasts": { "content": [ diff --git a/modules/nf-core/vrhyme/extractunbinned/main.nf b/modules/nf-core/vrhyme/extractunbinned/main.nf index 0050bb3066d6..7da7e3cfe330 100644 --- a/modules/nf-core/vrhyme/extractunbinned/main.nf +++ b/modules/nf-core/vrhyme/extractunbinned/main.nf @@ -9,25 +9,33 @@ process VRHYME_EXTRACTUNBINNED { input: tuple val(meta), path(membership) - tuple val(meta), path(fasta) + tuple val(meta2), path(fasta) output: - tuple val(meta), path("*_unbinned_sequences.fasta") , emit: unbinned_sequences - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}.fasta") , emit: unbinned_sequences + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}_unbinned_sequences" + def fasta_input = fasta.toString().replaceAll(/\.gz$/, '') + def gunzip = fasta.getExtension() == "gz" ? "gunzip -c ${fasta} > ${fasta_input}" : "" + def cleanup = fasta.getExtension() == "gz" ? "rm ${fasta_input}" : "" + if( "$fasta_input" == "${prefix}.fasta" ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ + ${gunzip} + extract_unbinned_sequences.py \\ -i $membership \\ - -f $fasta \\ - -o ${prefix}_unbinned_sequences.fasta \\ + -f $fasta_input \\ + -o ${prefix}.fasta \\ $args + ${cleanup} + cat <<-END_VERSIONS > versions.yml "${task.process}": vrhyme: \$(echo \$(vRhyme --version 2>&1) | sed 's/^.*vRhyme v//; s/Using.*\$//' ) @@ -35,10 +43,11 @@ process VRHYME_EXTRACTUNBINNED { """ stub: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" + prefix = task.ext.prefix ?: "${meta.id}_unbinned_sequences" + def fasta_input = fasta.toString() - ~/\.gz$/ + if( "$fasta_input" == "${prefix}.fasta" ) error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ - touch ${prefix}_unbinned_sequences.fasta + touch ${prefix}.fasta cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/vrhyme/extractunbinned/meta.yml b/modules/nf-core/vrhyme/extractunbinned/meta.yml index c9a9b941d595..416798f1add1 100644 --- a/modules/nf-core/vrhyme/extractunbinned/meta.yml +++ b/modules/nf-core/vrhyme/extractunbinned/meta.yml @@ -22,21 +22,25 @@ input: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - membership: type: file description: TSV file containing information regarding which bins input sequences were placed information pattern: "*.{tsv}" - - - meta: + ontologies: + - edam: http://edamontology.org/format_3475 # TSV + - - meta2: type: map description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + Groovy Map containing information related to the fasta + e.g. [ id:'test' ] - fasta: type: file description: FASTA file containing contigs/scaffolds input into vRhyme - pattern: "*.{fasta,fna,fa}" + pattern: "*.{fasta,fna,fa,fasta.gz,fna.gz,fa.gz}" + ontologies: + - edam: http://edamontology.org/format_1929 # FASTA output: - unbinned_sequences: - meta: @@ -44,10 +48,12 @@ output: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - "*_unbinned_sequences.fasta": + - "${prefix}.fasta": type: file description: FASTA file containing unbinned sequences pattern: "*_unbinned_sequences.fasta" + ontologies: + - edam: http://edamontology.org/format_1929 # FASTA - versions: - versions.yml: type: file diff --git a/modules/nf-core/vrhyme/extractunbinned/tests/main.nf.test b/modules/nf-core/vrhyme/extractunbinned/tests/main.nf.test new file mode 100644 index 000000000000..4899735b029f --- /dev/null +++ b/modules/nf-core/vrhyme/extractunbinned/tests/main.nf.test @@ -0,0 +1,79 @@ +nextflow_process { + + name "Test Process VRHYME_EXTRACTUNBINNED" + + script "../main.nf" + process "VRHYME_EXTRACTUNBINNED" + + tag "modules" + tag "modules_nfcore" + tag "vrhyme" + tag "vrhyme/vrhyme" + tag "vrhyme/extractunbinned" + + setup { + + run("VRHYME_VRHYME") { + script "../../vrhyme/main.nf" + + process { + """ + input[0] = [ + [id:'test',single_end:false], + [ + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = [ + [id:'test',single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) + ] + """ + } + } + } + + test("test_vrhyme_extractunbinned") { + + when { + process { + """ + input[0] = VRHYME_VRHYME.out.membership + input[1] = [ + [id:'test',single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + test("test_vrhyme_extractunbinned -- stub") { + options '-stub' + when { + process { + """ + input[0] = VRHYME_VRHYME.out.membership + input[1] = [ + [id:'test',single_end:false],// meta map + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) + ] + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/vrhyme/extractunbinned/tests/main.nf.test.snap b/modules/nf-core/vrhyme/extractunbinned/tests/main.nf.test.snap new file mode 100644 index 000000000000..110efdc2b26d --- /dev/null +++ b/modules/nf-core/vrhyme/extractunbinned/tests/main.nf.test.snap @@ -0,0 +1,72 @@ +{ + "test_vrhyme_extractunbinned -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_unbinned_sequences.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,19f257878bced6c770eaf8ed45151b96" + ], + "unbinned_sequences": [ + [ + { + "id": "test", + "single_end": false + }, + "test_unbinned_sequences.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,19f257878bced6c770eaf8ed45151b96" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-30T20:31:33.979555851" + }, + "test_vrhyme_extractunbinned": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test_unbinned_sequences.fasta:md5,816e986c8ad8f277eb4a4891a12d7aff" + ] + ], + "1": [ + "versions.yml:md5,19f257878bced6c770eaf8ed45151b96" + ], + "unbinned_sequences": [ + [ + { + "id": "test", + "single_end": false + }, + "test_unbinned_sequences.fasta:md5,816e986c8ad8f277eb4a4891a12d7aff" + ] + ], + "versions": [ + "versions.yml:md5,19f257878bced6c770eaf8ed45151b96" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-31T10:00:14.099653894" + } +} \ No newline at end of file diff --git a/modules/nf-core/vrhyme/linkbins/meta.yml b/modules/nf-core/vrhyme/linkbins/meta.yml index 1302b2ea24fe..ccbb1a401acd 100644 --- a/modules/nf-core/vrhyme/linkbins/meta.yml +++ b/modules/nf-core/vrhyme/linkbins/meta.yml @@ -22,7 +22,7 @@ input: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - bins: type: directory description: Directory file containing bin FASTA files output by vRhyme (each @@ -38,11 +38,14 @@ output: type: file description: FASTA file containing all bins that have been linked by N's pattern: "*_linked_bins.fasta" + ontologies: + - edam: http://edamontology.org/format_1929 # FASTA - versions: - versions.yml: type: file description: File containing software versions pattern: "versions.yml" + ontologies: [] authors: - "@CarsonJM" maintainers: diff --git a/modules/nf-core/vrhyme/linkbins/tests/main.nf.test b/modules/nf-core/vrhyme/linkbins/tests/main.nf.test new file mode 100644 index 000000000000..36936f018c17 --- /dev/null +++ b/modules/nf-core/vrhyme/linkbins/tests/main.nf.test @@ -0,0 +1,70 @@ +nextflow_process { + + name "Test Process VRHYME_LINKBINS" + + script "../main.nf" + process "VRHYME_LINKBINS" + + tag "modules" + tag "modules_nfcore" + tag "vrhyme" + tag "vrhyme/vrhyme" + tag "vrhyme/linkbins" + + setup { + run("VRHYME_VRHYME") { + script "../../vrhyme/main.nf" + + process { + """ + input[0] = [ + [ id:'test' ], + [ + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_1.fastq.gz', checkIfExists: true), + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_2.fastq.gz', checkIfExists: true) + ] + ] + input[1] = [ + [ id:'test' ], + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) + ] + """ + } + } + } + + test("vrhyme_linkbins") { + + when { + process { + """ + input[0] = VRHYME_VRHYME.out.bins + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } + + + test("test_vrhyme_linkbins -- stub") { + options '-stub' + when { + process { + """ + input[0] = VRHYME_VRHYME.out.bins + """ + } + } + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} \ No newline at end of file diff --git a/modules/nf-core/vrhyme/linkbins/tests/main.nf.test.snap b/modules/nf-core/vrhyme/linkbins/tests/main.nf.test.snap new file mode 100644 index 000000000000..2ca129f165ca --- /dev/null +++ b/modules/nf-core/vrhyme/linkbins/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "vrhyme_linkbins": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_linked_bins.fasta:md5,92cee5d85211d1e657f67ba75d3b2b30" + ] + ], + "1": [ + "versions.yml:md5,3e9001733bcdf459aafc8786cce5c4ca" + ], + "linked_bins": [ + [ + { + "id": "test" + }, + "test_linked_bins.fasta:md5,92cee5d85211d1e657f67ba75d3b2b30" + ] + ], + "versions": [ + "versions.yml:md5,3e9001733bcdf459aafc8786cce5c4ca" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-31T14:18:15.131038697" + }, + "test_vrhyme_linkbins -- stub": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test_linked_bins.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "1": [ + "versions.yml:md5,3e9001733bcdf459aafc8786cce5c4ca" + ], + "linked_bins": [ + [ + { + "id": "test" + }, + "test_linked_bins.fasta:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "versions": [ + "versions.yml:md5,3e9001733bcdf459aafc8786cce5c4ca" + ] + } + ], + "meta": { + "nf-test": "0.9.2", + "nextflow": "24.10.5" + }, + "timestamp": "2025-03-31T14:18:32.716327779" + } +} \ No newline at end of file diff --git a/modules/nf-core/vrhyme/vrhyme/main.nf b/modules/nf-core/vrhyme/vrhyme/main.nf index 65be074ac8cd..a65788613816 100644 --- a/modules/nf-core/vrhyme/vrhyme/main.nf +++ b/modules/nf-core/vrhyme/vrhyme/main.nf @@ -9,7 +9,7 @@ process VRHYME_VRHYME { input: tuple val(meta), path(reads) - tuple val(meta), path(fasta) + tuple val(meta2), path(fasta) output: tuple val(meta), path("vRhyme_best_bins_fasta/") , emit: bins @@ -23,9 +23,14 @@ process VRHYME_VRHYME { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def fasta_input = fasta.toString().replaceAll(/\.gz$/, '') + def gunzip = fasta.getExtension() == "gz" ? "gunzip -c ${fasta} > ${fasta_input}" : "" + def cleanup = fasta.getExtension() == "gz" ? "rm ${fasta_input}" : "" """ + ${gunzip} + vRhyme \\ - -i $fasta \\ + -i $fasta_input \\ -r $reads \\ -o $prefix \\ -t $task.cpus \\ @@ -33,6 +38,8 @@ process VRHYME_VRHYME { mv $prefix/vRhyme_best_bins_fasta/ vRhyme_best_bins_fasta + ${cleanup} + cat <<-END_VERSIONS > versions.yml "${task.process}": vrhyme: \$(echo \$(vRhyme --version 2>&1) | sed 's/^.*vRhyme v//; s/Using.*\$//' )) @@ -40,7 +47,6 @@ process VRHYME_VRHYME { """ stub: - def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ mkdir -p $prefix diff --git a/modules/nf-core/vrhyme/vrhyme/meta.yml b/modules/nf-core/vrhyme/vrhyme/meta.yml index e020a1acde04..b76810fbc4dc 100644 --- a/modules/nf-core/vrhyme/vrhyme/meta.yml +++ b/modules/nf-core/vrhyme/vrhyme/meta.yml @@ -22,27 +22,31 @@ input: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test'] - reads: type: file description: Preprocessed FASTQ file containing sample reads pattern: "*.{fastq}" - - - meta: + ontologies: + - edam: http://edamontology.org/format_1930 # FASTQ + - - meta2: type: map description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + Groovy Map containing fasta information + e.g. [ id:'test'] - fasta: type: file description: Contigs/scaffolds identified as viral - pattern: "*.{fna,fasta,fa}" + pattern: "*.{fna,fasta,fa,fasta.gz,fa.gz}" + ontologies: + - edam: http://edamontology.org/format_1929 # FASTA output: - bins: - meta: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test' ] - vRhyme_best_bins_fasta/: type: directory description: Directory containing bin FASTA files @@ -52,11 +56,13 @@ output: type: map description: | Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] + e.g. [ id:'test'] - "**/vRhyme_best_bins.*.membership.tsv": type: file description: TSV file describing the contig/scaffold membership of each bin pattern: "vRhyme_best_bins.*.membership.tsv" + ontologies: + - edam: http://edamontology.org/format_3475 # TSV - summary: - meta: type: map @@ -67,11 +73,13 @@ output: type: file description: TSV file summarizing the attributes of each bin pattern: "vRhyme_best_bins.*.summary.tsv" + ontologies: [] - versions: - versions.yml: type: file description: File containing software versions pattern: "versions.yml" + ontologies: [] authors: - "@CarsonJM" maintainers: diff --git a/modules/nf-core/vrhyme/vrhyme/tests/main.nf.test b/modules/nf-core/vrhyme/vrhyme/tests/main.nf.test index 5ff7f4e2dc98..57af398ec47d 100644 --- a/modules/nf-core/vrhyme/vrhyme/tests/main.nf.test +++ b/modules/nf-core/vrhyme/vrhyme/tests/main.nf.test @@ -10,22 +10,6 @@ nextflow_process { tag "modules_vrhyme" tag "vrhyme" tag "vrhyme/vrhyme" - tag "gunzip" - - setup { - run("GUNZIP") { - script "../../../gunzip/main.nf" - process { - """ - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) - ] - - """ - } - } - } test("test-vrhyme-vrhyme") { @@ -33,14 +17,16 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map + [ id:'test', single_end:false ], [ file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_1.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_2.fastq.gz', checkIfExists: true) ] ] - input[1] = GUNZIP.out.gunzip - + input[1] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) + ] """ } } @@ -65,14 +51,16 @@ nextflow_process { process { """ input[0] = [ - [ id:'test', single_end:false ], // meta map + [ id:'test', single_end:false ], [ file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_1.fastq.gz', checkIfExists: true), file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fastq/test1_2.fastq.gz', checkIfExists: true) ] ] - input[1] = GUNZIP.out.gunzip - + input[1] = [ + [ id:'test', single_end:false ], + file(params.modules_testdata_base_path + 'genomics/prokaryotes/bacteroides_fragilis/illumina/fasta/test1.contigs.fa.gz', checkIfExists: true) + ] """ } } diff --git a/subworkflows/nf-core/abundance_differential_filter/main.nf b/subworkflows/nf-core/abundance_differential_filter/main.nf index 75bea40daf8c..86cc060786ea 100644 --- a/subworkflows/nf-core/abundance_differential_filter/main.nf +++ b/subworkflows/nf-core/abundance_differential_filter/main.nf @@ -26,21 +26,22 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { ch_samplesheet // [ meta_exp, samplesheet ] ch_transcript_lengths // [ meta_exp, transcript_lengths] ch_control_features // [meta_exp, control_features] - ch_contrasts // [[ meta_contrast, contrast_variable, reference, target ]] - ch_contrasts_dream // [meta_contrast, samplesheet, matrix] + ch_contrasts // [[ meta_contrast, contrast_variable, reference, target, formula ]] main: ch_versions = Channel.empty() // Set up how the channels crossed below will be used to generate channels for processing - def criteria = multiMapCriteria { meta_input, abundance, analysis_method, fc_threshold, stat_threshold, meta_exp, samplesheet, meta_contrasts, variable, reference, target -> + def criteria = multiMapCriteria { meta_input, abundance, analysis_method, fc_threshold, stat_threshold, meta_exp, samplesheet, meta_contrasts, variable, reference, target, formula -> def meta_for_diff = mergeMaps(meta_contrasts, meta_input) + [ 'method_differential': analysis_method ] def meta_input_new = meta_input + [ 'method_differential': analysis_method ] samples_and_matrix: [ meta_input_new, samplesheet, abundance ] contrasts_for_diff: [ meta_for_diff, variable, reference, target ] + contrasts_for_diff_with_formula: + [ meta_for_diff, variable, reference, target, formula ] filter_params: [ meta_for_diff, [ 'fc_threshold': fc_threshold, 'stat_threshold': stat_threshold ]] contrasts_for_norm: @@ -131,6 +132,23 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { ch_versions = ch_versions.mix(PROPR_PROPD.out.versions.first()) + // ---------------------------------------------------- + // Run DREAM + // ---------------------------------------------------- + + // DREAM only runs with formula + dream_inputs = inputs.contrasts_for_diff_with_formula + .filter { meta, variable, reference, target, formula -> + meta.method_differential == 'dream' && formula != null + } + + VARIANCEPARTITION_DREAM( + dream_inputs, + inputs.samples_and_matrix.filter{ it[0].method_differential == 'dream' } + ) + + ch_versions = ch_versions.mix( VARIANCEPARTITION_DREAM.out.versions.first() ) + // ---------------------------------------------------- // Collect results // ---------------------------------------------------- @@ -138,12 +156,14 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { ch_results = DESEQ2_DIFFERENTIAL.out.results .mix(LIMMA_DIFFERENTIAL.out.results) .mix(PROPR_PROPD.out.results_genewise) + .mix(VARIANCEPARTITION_DREAM.out.results) ch_normalised_matrix = DESEQ2_NORM.out.normalised_counts .mix(LIMMA_NORM.out.normalised_counts) ch_model = DESEQ2_DIFFERENTIAL.out.model .mix(LIMMA_DIFFERENTIAL.out.model) + .mix(VARIANCEPARTITION_DREAM.out.model) ch_variance_stabilised_matrix = DESEQ2_NORM.out.rlog_counts .mix(DESEQ2_NORM.out.vst_counts) @@ -168,6 +188,10 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { 'propd' : [ fc_column: 'lfc', fc_cardinality: '>=', stat_column: 'weighted_connectivity', stat_cardinality: '>=' + ], + 'dream' : [ + fc_column: 'logFC', fc_cardinality: '>=', + stat_column: 'adj.P.Val', stat_cardinality: '<=' ] ] filter_input: [meta + filter_meta, results] @@ -191,18 +215,10 @@ workflow ABUNDANCE_DIFFERENTIAL_FILTER { ) ch_versions = ch_versions.mix(CUSTOM_FILTERDIFFERENTIALTABLE.out.versions.first()) - ch_dream_results = Channel.empty() - - VARIANCEPARTITION_DREAM(ch_contrasts_dream) - ch_versions = ch_versions.mix( VARIANCEPARTITION_DREAM.out.versions.first() ) - ch_dream_results = VARIANCEPARTITION_DREAM.out.results - - emit: // main results results_genewise = ch_results results_genewise_filtered = CUSTOM_FILTERDIFFERENTIALTABLE.out.filtered - results_dream = ch_dream_results // pairwise results adjacency = PROPR_PROPD.out.adjacency diff --git a/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test b/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test index 7bc99257399a..2d7b968dd60a 100644 --- a/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test +++ b/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test @@ -21,48 +21,30 @@ nextflow_workflow { when { workflow { """ - // Define test data + def testData = [ expression_test_data_dir: params.modules_testdata_base_path + 'genomics/mus_musculus/rnaseq_expression/', contrasts_file: 'SRP254919.contrasts.csv', - samplesheet_file: 'SRP254919.samplesheet.csv', - dream_matrix_file: 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv' + abundance_file: 'SRP254919.salmon.merged.gene_counts.top1000cov.tsv', + samplesheet_file: 'SRP254919.samplesheet.csv' ] - // Input (not used) - ch_input = Channel.of([ - [ id:'test' ], - file(testData.expression_test_data_dir + 'dummy_counts.tsv'), - 'dream', // analysis method - 1.5, // FC threshold - 0.05 // stat (adjusted p-value) threshold - ]) - - // Define additional workflow inputs (not used) - ch_samplesheet = Channel.of([ + ch_samplesheet = Channel.of([ [ id:'test' ], file(testData.expression_test_data_dir + testData.samplesheet_file) ]) ch_transcript_lengths = Channel.of([ [], [] ]) ch_control_features = Channel.of([ [], [] ]) - ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) - .splitCsv ( header:true, sep:',' ) + ch_contrasts = Channel.of(['id': 'treatment_mCherry_hND6', 'variable': 'treatment', 'reference': 'mCherry', 'target': 'hND6', 'blocking_factors':'sample_number', 'formula':'~ treatment + (1 | sample_number)']) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } - - // Contrasts dream input (used) - ch_dream_input = Channel.of([ - [ id: 'test', - contrast_id: 'treatment_mCherry_hND6', - contrast_variable: 'treatment', - contrast_reference: 'mCherry', - contrast_target: 'hND6', - blocking_factors: 'sample_number', - formula: '~ treatment + (1 | sample_number)' - ], - file(testData.expression_test_data_dir + testData.samplesheet_file), - file(testData.expression_test_data_dir + testData.dream_matrix_file) + ch_input = Channel.of([ + [ id:'test' ], + file(testData.expression_test_data_dir + testData.abundance_file), + 'dream', // analysis method + 1.5, // FC threshold + 0.05 // stat (adjusted p-value) threshold ]) input[0] = ch_input @@ -70,7 +52,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = ch_dream_input """ } } @@ -78,7 +59,9 @@ nextflow_workflow { assertAll( { assert workflow.success }, { assert snapshot( - workflow.out.results_dream, + workflow.out.results_genewise, + workflow.out.results_genewise_filtered, + workflow.out.model, workflow.out.versions ).match() } ) @@ -110,7 +93,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = Channel.of([ [ id:'test' ], @@ -125,7 +108,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() """ } } @@ -195,7 +177,7 @@ nextflow_workflow { ch_control_features = Channel.of([ [], [] ]) ch_contrasts = Channel.of(['id': 'diagnosis_normal_uremia', 'variable': 'diagnosis', 'reference': 'normal', 'target': 'uremia']) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = AFFY_JUSTRMA.out.expression.map{ meta, file -> [ meta, @@ -210,8 +192,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() - """ } } @@ -255,7 +235,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = Channel.of([ [ id:'test' ], @@ -270,7 +250,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() """ } } @@ -317,7 +296,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = Channel.of([ [ id:'test' ], @@ -332,7 +311,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() """ } } @@ -376,7 +354,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = Channel.of([ [ id:'test' ], @@ -391,7 +369,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() """ } } @@ -433,7 +410,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = Channel.of( [ @@ -457,7 +434,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() """ } } @@ -503,7 +479,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = Channel.of( [ @@ -534,7 +510,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() """ } } @@ -583,7 +558,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = Channel.of([ [ id:'test' ], @@ -598,7 +573,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() """ } } diff --git a/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap b/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap index e2dd9c911219..0bd9aedbf07f 100644 --- a/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap +++ b/subworkflows/nf-core/abundance_differential_filter/tests/main.nf.test.snap @@ -330,18 +330,49 @@ [ [ { - "id": "test", - "contrast_id": "treatment_mCherry_hND6", - "contrast_variable": "treatment", - "contrast_reference": "mCherry", - "contrast_target": "hND6", + "id": "treatment_mCherry_hND6_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", "blocking_factors": "sample_number", - "formula": "~ treatment + (1 | sample_number)" + "formula": "~ treatment + (1 | sample_number)", + "method_differential": "dream" }, - "treatment_mCherry_hND6.dream.results.tsv:md5,37742ab4ac3152e34339ef423ab1a0a3" + "treatment_mCherry_hND6_test.dream.results.tsv:md5,37742ab4ac3152e34339ef423ab1a0a3" ] ], [ + [ + { + "id": "treatment_mCherry_hND6_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking_factors": "sample_number", + "formula": "~ treatment + (1 | sample_number)", + "method_differential": "dream", + "fc_threshold": 1.5, + "stat_threshold": 0.05 + }, + "treatment_mCherry_hND6_test_filtered.tsv:md5,9642188f60e8b93abe55a85e99f3dedc" + ] + ], + [ + [ + { + "id": "treatment_mCherry_hND6_test", + "variable": "treatment", + "reference": "mCherry", + "target": "hND6", + "blocking_factors": "sample_number", + "formula": "~ treatment + (1 | sample_number)", + "method_differential": "dream" + }, + "treatment_mCherry_hND6_test.dream.model.txt:md5,7103206474aa480ffd9cec149263489f" + ] + ], + [ + "versions.yml:md5,1c02d4e455e8f3809c8ce37bee947690", "versions.yml:md5,736da31f06f854355d45aeb9d9c874e0" ] ], @@ -349,7 +380,7 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-13T14:51:50.020742089" + "timestamp": "2025-03-31T18:16:12.171347414" }, "stub": { "content": [ @@ -410,9 +441,6 @@ ], "3": [ - - ], - "4": [ [ { "id": "test", @@ -421,7 +449,7 @@ "test.normalised_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "5": [ + "4": [ [ { "id": "test", @@ -432,7 +460,7 @@ ] ] ], - "6": [ + "5": [ [ { "id": "treatment_mCherry_hND6__test", @@ -456,7 +484,7 @@ "treatment_mCherry_hND6_sample_number_test.deseq2.model.txt:md5,d41d8cd98f00b204e9800998ecf8427e" ] ], - "7": [ + "6": [ "versions.yml:md5,05e3901f6d78f8839a7e07f422e9bc03", "versions.yml:md5,1d567f203085b6ae7b621d5587260a23", "versions.yml:md5,50cd86004ca6259274b10316b1b96f00" @@ -496,9 +524,6 @@ }, "test.normalised_counts.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" ] - ], - "results_dream": [ - ], "results_genewise": [ [ @@ -574,7 +599,7 @@ "nf-test": "0.9.2", "nextflow": "24.10.5" }, - "timestamp": "2025-03-11T17:52:36.213485364" + "timestamp": "2025-03-31T18:43:26.944581418" }, "deseq2 - mouse - basic": { "content": [ diff --git a/subworkflows/nf-core/bam_ngscheckmate/tests/main.nf.test b/subworkflows/nf-core/bam_ngscheckmate/tests/main.nf.test index 9d06145068d4..8aabc9bfbf66 100644 --- a/subworkflows/nf-core/bam_ngscheckmate/tests/main.nf.test +++ b/subworkflows/nf-core/bam_ngscheckmate/tests/main.nf.test @@ -10,6 +10,9 @@ nextflow_workflow { tag "samtools" tag "samtools/sort" tag "samtools/index" + tag "ngscheckmate/ncm" + tag "bcftools/mpileup" + config "./nextflow.config" test("sarscov2 - bam") { @@ -46,7 +49,7 @@ nextflow_workflow { { assert workflow.success}, { assert snapshot( workflow.out.corr_matrix, - workflow.out.matched, + file(workflow.out.matched[0][1]).name, workflow.out.all, workflow.out.vcf.collect {meta, vcf -> path(vcf).vcf.variantsMD5 }, file(workflow.out.pdf[0][1]).name, @@ -129,7 +132,14 @@ nextflow_workflow { then { assertAll( { assert workflow.success}, - { assert snapshot(workflow.out).match()} + { assert snapshot( + file(workflow.out.corr_matrix[0][1]).name, + file(workflow.out.matched[0][1]).name, + file(workflow.out.all[0][1]).name, + // workflow.out.vcf.collect {meta, vcf -> path(vcf).vcf.variantsMD5 }, + file(workflow.out.pdf[0][1]).name, + workflow.out.versions + ).match()} ) } } diff --git a/subworkflows/nf-core/bam_ngscheckmate/tests/main.nf.test.snap b/subworkflows/nf-core/bam_ngscheckmate/tests/main.nf.test.snap index f1cfed35c836..872274ec580a 100644 --- a/subworkflows/nf-core/bam_ngscheckmate/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_ngscheckmate/tests/main.nf.test.snap @@ -1,116 +1,21 @@ { "sarscov2 - bam - stub": { "content": [ - { - "0": [ - [ - { - "id": "test_bed" - }, - "test_bed_output_corr_matrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "1": [ - [ - { - "id": "test_bed" - }, - "test_bed_matched.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "2": [ - [ - { - "id": "test_bed" - }, - "test_bed_all.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "3": [ - [ - { - "id": "test1" - }, - "test1.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ], - [ - { - "id": "test2" - }, - "test2.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "4": [ - [ - { - "id": "test_bed" - }, - "test_bed.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "5": [ - "versions.yml:md5,73d5516e0d2dd84537b11e5eabcbe3ab", - "versions.yml:md5,ef35c999cb0eaf32e3a167021fde5acb", - "versions.yml:md5,ef35c999cb0eaf32e3a167021fde5acb" - ], - "all": [ - [ - { - "id": "test_bed" - }, - "test_bed_all.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "corr_matrix": [ - [ - { - "id": "test_bed" - }, - "test_bed_output_corr_matrix.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "matched": [ - [ - { - "id": "test_bed" - }, - "test_bed_matched.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "pdf": [ - [ - { - "id": "test_bed" - }, - "test_bed.pdf:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], - "vcf": [ - [ - { - "id": "test1" - }, - "test1.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ], - [ - { - "id": "test2" - }, - "test2.vcf.gz:md5,68b329da9893e34099c7d8ad5cb9c940" - ] - ], - "versions": [ - "versions.yml:md5,73d5516e0d2dd84537b11e5eabcbe3ab", - "versions.yml:md5,ef35c999cb0eaf32e3a167021fde5acb", - "versions.yml:md5,ef35c999cb0eaf32e3a167021fde5acb" - ] - } + "test_bed_output_corr_matrix.txt", + "test_bed_matched.txt", + "test_bed_all.txt", + "test_bed.pdf", + [ + "versions.yml:md5,73d5516e0d2dd84537b11e5eabcbe3ab", + "versions.yml:md5,d0f4716ff5035090e3129d50d029e7c8", + "versions.yml:md5,d0f4716ff5035090e3129d50d029e7c8" + ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "24.10.5" }, - "timestamp": "2025-03-03T07:29:50.686838875" + "timestamp": "2025-04-01T17:50:34.789565772" }, "sarscov2 - cram": { "content": [ @@ -139,21 +44,21 @@ ] ], [ - "1ab17b219dbcd4b760b1e19f1cf3f154", - "fd5de4fc04e60573b4557531fbb8ef15" + "d5b1e887b104cd33f18747abd377f47a", + "30feeb598a3730af169e3d14c56a05c2" ], "test_bed.pdf", [ "versions.yml:md5,73d5516e0d2dd84537b11e5eabcbe3ab", - "versions.yml:md5,ef35c999cb0eaf32e3a167021fde5acb", - "versions.yml:md5,ef35c999cb0eaf32e3a167021fde5acb" + "versions.yml:md5,d0f4716ff5035090e3129d50d029e7c8", + "versions.yml:md5,d0f4716ff5035090e3129d50d029e7c8" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "24.10.5" }, - "timestamp": "2025-03-05T15:06:58.780928754" + "timestamp": "2025-04-01T16:46:55.771293323" }, "sarscov2 - bam": { "content": [ @@ -165,14 +70,7 @@ "test_bed_output_corr_matrix.txt:md5,3a23347ff7071d5d8e273bfc29731d4a" ] ], - [ - [ - { - "id": "test_bed" - }, - "test_bed_matched.txt:md5,d41d8cd98f00b204e9800998ecf8427e" - ] - ], + "test_bed_matched.txt", [ [ { @@ -182,20 +80,20 @@ ] ], [ - "748c1158a2e2341c80082fd467ff3e3b", - "7aeb02c2ee40182485f619406e2bfb24" + "9341ed6b9cca02d6b0b822308f4a48c6", + "3d6ba59b24dc0a699d9bd5a78bc76869" ], "test_bed.pdf", [ "versions.yml:md5,73d5516e0d2dd84537b11e5eabcbe3ab", - "versions.yml:md5,ef35c999cb0eaf32e3a167021fde5acb", - "versions.yml:md5,ef35c999cb0eaf32e3a167021fde5acb" + "versions.yml:md5,d0f4716ff5035090e3129d50d029e7c8", + "versions.yml:md5,d0f4716ff5035090e3129d50d029e7c8" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "24.10.5" }, - "timestamp": "2025-03-05T15:06:44.703957197" + "timestamp": "2025-04-01T17:45:22.458317234" } -} \ No newline at end of file +} diff --git a/subworkflows/nf-core/bam_variant_demix_boot_freyja/tests/main.nf.test.snap b/subworkflows/nf-core/bam_variant_demix_boot_freyja/tests/main.nf.test.snap index c16d8793d08b..2e18e624f0fe 100644 --- a/subworkflows/nf-core/bam_variant_demix_boot_freyja/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_variant_demix_boot_freyja/tests/main.nf.test.snap @@ -12,16 +12,16 @@ ] ], [ - "versions.yml:md5,d3e911c025e35de092f7ef0073ccf807", - "versions.yml:md5,df54ea89f3bcb7e5952e7e3dae1d22a4", - "versions.yml:md5,e66aeb30f8646d583bec6fbf4fe02426" + "versions.yml:md5,3058c750cfdd13e5c2448debfb2d1029", + "versions.yml:md5,67aa350d7830af571a7e9fd507fd53ec", + "versions.yml:md5,ee7a7985addc258263151e82e6fc90e8" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-02T16:12:55.505491641" + "timestamp": "2025-04-01T16:11:46.751764888" }, "sarscov2 - bam - skip - val - nodb": { "content": [ @@ -36,16 +36,16 @@ ] ], [ - "versions.yml:md5,4b7dccb03c75e8e94d7c6bdefaa90c95", - "versions.yml:md5,df54ea89f3bcb7e5952e7e3dae1d22a4", - "versions.yml:md5,e66aeb30f8646d583bec6fbf4fe02426" + "versions.yml:md5,3058c750cfdd13e5c2448debfb2d1029", + "versions.yml:md5,670c845058d3da5dac16f65c7a53ee34", + "versions.yml:md5,67aa350d7830af571a7e9fd507fd53ec" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-02T16:13:29.413908034" + "timestamp": "2025-04-01T16:12:02.32769656" }, "sarscov2 - bam - val - nodb": { "content": [ @@ -60,16 +60,16 @@ ] ], [ - "versions.yml:md5,4b7dccb03c75e8e94d7c6bdefaa90c95", - "versions.yml:md5,d3e911c025e35de092f7ef0073ccf807", - "versions.yml:md5,df54ea89f3bcb7e5952e7e3dae1d22a4", - "versions.yml:md5,e66aeb30f8646d583bec6fbf4fe02426" + "versions.yml:md5,3058c750cfdd13e5c2448debfb2d1029", + "versions.yml:md5,670c845058d3da5dac16f65c7a53ee34", + "versions.yml:md5,67aa350d7830af571a7e9fd507fd53ec", + "versions.yml:md5,ee7a7985addc258263151e82e6fc90e8" ] ], "meta": { - "nf-test": "0.8.4", - "nextflow": "23.10.1" + "nf-test": "0.9.2", + "nextflow": "24.10.5" }, - "timestamp": "2024-05-02T16:12:09.796799525" + "timestamp": "2025-04-01T16:11:21.971966389" } } \ No newline at end of file diff --git a/subworkflows/nf-core/differential_functional_enrichment/main.nf b/subworkflows/nf-core/differential_functional_enrichment/main.nf index 802812a5d938..e219a7d0dafc 100644 --- a/subworkflows/nf-core/differential_functional_enrichment/main.nf +++ b/subworkflows/nf-core/differential_functional_enrichment/main.nf @@ -26,7 +26,7 @@ workflow DIFFERENTIAL_FUNCTIONAL_ENRICHMENT { // other - for the moment these files are only needed for GSEA // as it is the only one that takes expression data as input // if in the future this setting is changed, this section could be removed - ch_contrasts // [ meta_contrast, contrast_variable, reference, target ] + ch_contrasts // [ meta_contrast, contrast_variable, reference, target, formula ] ch_samplesheet // [ meta_exp, samples sheet ] ch_featuresheet // [ meta_exp, features sheet, features id, features symbol ] @@ -53,7 +53,7 @@ workflow DIFFERENTIAL_FUNCTIONAL_ENRICHMENT { // In the case of GSEA, it needs additional files coming from other channels that other methods don't use // here we define the input channel for the GSEA section - def criteria = multiMapCriteria { meta_input, input, genesets, meta_exp, samplesheet, featuresheet, features_id, features_symbol, meta_contrasts, variable, reference, target -> + def criteria = multiMapCriteria { meta_input, input, genesets, meta_exp, samplesheet, featuresheet, features_id, features_symbol, meta_contrasts, variable, reference, target, _formula -> def meta_contrasts_new = meta_contrasts + [ 'variable': variable, 'reference': reference, 'target': target ] // make sure variable, reference, target are in the meta def meta_all = mergeMaps(meta_contrasts_new, meta_input) input: diff --git a/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test b/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test index d71e7a508eb0..145688c46687 100644 --- a/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test +++ b/subworkflows/nf-core/differential_functional_enrichment/tests/main.nf.test @@ -37,7 +37,7 @@ nextflow_workflow { ]) input[0] = ch_input - input[1] = Channel.of([[], [], [], []]) + input[1] = Channel.of([[], [], [], [], []]) input[2] = Channel.of([[], []]) input[3] = Channel.of([[], [], [], []]) """ @@ -85,7 +85,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = Channel.of([ [ id:'test' ], @@ -100,7 +100,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() """ } } @@ -115,7 +114,7 @@ nextflow_workflow { } input[0] = ch_input - input[1] = Channel.of([[], [], [], []]) + input[1] = Channel.of([[], [], [], [], []]) input[2] = Channel.of([[], []]) input[3] = Channel.of([[], [], [], []]) """ @@ -163,7 +162,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = Channel.of([ [ id:'test' ], @@ -178,7 +177,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() """ } } @@ -205,7 +203,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_samplesheet = Channel.of([ [ id:'test' ], @@ -265,7 +263,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = Channel.of([ [ id:'test' ], @@ -280,7 +278,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() """ } } @@ -296,7 +293,7 @@ nextflow_workflow { } input[0] = ch_input - input[1] = Channel.of([[], [], [], []]) + input[1] = Channel.of([[], [], [], [], []]) input[2] = Channel.of([[], []]) input[3] = Channel.of([[], [], [], []]) """ @@ -342,7 +339,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.expression_test_data_dir + testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_input = Channel.of( [ @@ -373,7 +370,6 @@ nextflow_workflow { input[2] = ch_transcript_lengths input[3] = ch_control_features input[4] = ch_contrasts - input[5] = Channel.empty() """ } } @@ -410,7 +406,7 @@ nextflow_workflow { ch_contrasts = Channel.fromPath(file(testData.contrasts_file)) .splitCsv ( header:true, sep:',' ) .map{ - tuple(it, it.variable, it.reference, it.target) + tuple(it, it.variable, it.reference, it.target, it.formula) } ch_samplesheet = Channel.of([ [ id:'test' ], @@ -464,7 +460,7 @@ nextflow_workflow { ]) input[0] = ch_input - input[1] = Channel.of([[], [], [], []]) + input[1] = Channel.of([[], [], [], [], []]) input[2] = Channel.of([[], []]) input[3] = Channel.of([[], [], [], []]) """ diff --git a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf index 1c3ef6b9e20f..c385612f792e 100644 --- a/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf +++ b/subworkflows/nf-core/fastq_qc_trim_filter_setstrandedness/main.nf @@ -153,7 +153,7 @@ workflow FASTQ_QC_TRIM_FILTER_SETSTRANDEDNESS { ) ch_versions = ch_versions.mix(FQ_LINT.out.versions.first()) ch_lint_log = ch_lint_log.mix(FQ_LINT.out.lint) - ch_filtered_reads = ch_reads.join(FQ_LINT.out.lint.map{it[0]}) + ch_filtered_reads = ch_filtered_reads.join(FQ_LINT.out.lint.map{it[0]}) } // diff --git a/subworkflows/nf-core/vcf_impute_glimpse/tests/main.nf.test.snap b/subworkflows/nf-core/vcf_impute_glimpse/tests/main.nf.test.snap index b338fbc9d6c7..ba4bf68782db 100644 --- a/subworkflows/nf-core/vcf_impute_glimpse/tests/main.nf.test.snap +++ b/subworkflows/nf-core/vcf_impute_glimpse/tests/main.nf.test.snap @@ -49,10 +49,10 @@ "versions.yml:md5,227d8e960e4382d8a615e040b874fc27", "versions.yml:md5,227d8e960e4382d8a615e040b874fc27", "versions.yml:md5,227d8e960e4382d8a615e040b874fc27", - "versions.yml:md5,47202c93baf73d3ad45971e632e6ba28", - "versions.yml:md5,47202c93baf73d3ad45971e632e6ba28", - "versions.yml:md5,47202c93baf73d3ad45971e632e6ba28", - "versions.yml:md5,47202c93baf73d3ad45971e632e6ba28", + "versions.yml:md5,2da388fbfa046fb49d5b7475946565ab", + "versions.yml:md5,2da388fbfa046fb49d5b7475946565ab", + "versions.yml:md5,2da388fbfa046fb49d5b7475946565ab", + "versions.yml:md5,2da388fbfa046fb49d5b7475946565ab", "versions.yml:md5,73621eae1bfd89c2ceb009524fe680d4", "versions.yml:md5,73621eae1bfd89c2ceb009524fe680d4", "versions.yml:md5,73621eae1bfd89c2ceb009524fe680d4", @@ -61,17 +61,17 @@ "versions.yml:md5,7ae4d2b0252f9382dd08d783b7a234d2", "versions.yml:md5,7ae4d2b0252f9382dd08d783b7a234d2", "versions.yml:md5,7ae4d2b0252f9382dd08d783b7a234d2", - "versions.yml:md5,8c6ce76e0c02205fc17bce7b86ecc135", - "versions.yml:md5,8c6ce76e0c02205fc17bce7b86ecc135", - "versions.yml:md5,8c6ce76e0c02205fc17bce7b86ecc135", - "versions.yml:md5,8c6ce76e0c02205fc17bce7b86ecc135" + "versions.yml:md5,f9cf90f8bc8666204dd170f9c3394a03", + "versions.yml:md5,f9cf90f8bc8666204dd170f9c3394a03", + "versions.yml:md5,f9cf90f8bc8666204dd170f9c3394a03", + "versions.yml:md5,f9cf90f8bc8666204dd170f9c3394a03" ] ], "meta": { "nf-test": "0.9.2", - "nextflow": "24.10.4" + "nextflow": "24.10.5" }, - "timestamp": "2025-03-01T13:00:44.890381019" + "timestamp": "2025-04-01T13:30:02.259419945" }, "merged": { "content": [ diff --git a/tests/config/nextflow.config b/tests/config/nextflow.config index 9beb754e7374..f279a62e190d 100644 --- a/tests/config/nextflow.config +++ b/tests/config/nextflow.config @@ -7,8 +7,8 @@ params { process { resourceLimits = [ - cpus: 2, - memory: '4.GB', + cpus: 4, + memory: '16.GB', time: '1.h' ] } diff --git a/tests/config/pytest_modules.yml b/tests/config/pytest_modules.yml index 3449f48a2bfa..48980a313e56 100644 --- a/tests/config/pytest_modules.yml +++ b/tests/config/pytest_modules.yml @@ -1,16 +1,6 @@ -cellrangerarc/count: - - modules/nf-core/cellrangerarc/count/** - - tests/modules/nf-core/cellrangerarc/count/** - - modules/nf-core/cellrangerarc/mkref/** - - tests/modules/nf-core/cellrangerarc/mkref/** cellrangerarc/mkfastq: - modules/nf-core/cellrangerarc/mkfastq/** - tests/modules/nf-core/cellrangerarc/mkfastq/** -cellrangerarc/mkref: - - modules/nf-core/cellrangerarc/mkref/** - - tests/modules/nf-core/cellrangerarc/mkref/** - - modules/nf-core/cellrangerarc/mkgtf/** - - tests/modules/nf-core/cellrangerarc/mkgtf/** cellrangeratac/count: - modules/nf-core/cellrangeratac/count/** - tests/modules/nf-core/cellrangeratac/count/** @@ -22,33 +12,12 @@ cellrangeratac/mkfastq: cellrangeratac/mkref: - modules/nf-core/cellrangeratac/mkref/** - tests/modules/nf-core/cellrangeratac/mkref/** -damageprofiler: - - modules/nf-core/damageprofiler/** - - tests/modules/nf-core/damageprofiler/** -fcs/fcsgx: - - modules/nf-core/fcs/fcsgx/** - - tests/modules/nf-core/fcs/fcsgx/** gangstr: - modules/nf-core/gangstr/** - tests/modules/nf-core/gangstr/** gatk/indelrealigner: - modules/nf-core/gatk/indelrealigner/** - tests/modules/nf-core/gatk/indelrealigner/** -gem2/gem2bedmappability: - - modules/nf-core/gem2/gem2bedmappability/** - - tests/modules/nf-core/gem2/gem2bedmappability/** -gem2/gemmappability: - - modules/nf-core/gem2/gemmappability/** - - tests/modules/nf-core/gem2/gemmappability/** -genescopefk: - - modules/nf-core/genescopefk/** - - tests/modules/nf-core/genescopefk/** -genmap/map: - - modules/nf-core/genmap/map/** - - tests/modules/nf-core/genmap/map/** -genotyphi/parse: - - modules/nf-core/genotyphi/parse/** - - tests/modules/nf-core/genotyphi/parse/** gget/gget: - modules/nf-core/gget/gget/** - tests/modules/nf-core/gget/gget/** @@ -154,9 +123,6 @@ paragraph/multigrmpy: phyloflash: - modules/nf-core/phyloflash/** - tests/modules/nf-core/phyloflash/** -plink/indeppairwise: - - modules/nf-core/plink/indeppairwise/** - - tests/modules/nf-core/plink/indeppairwise/** pneumocat: - modules/nf-core/pneumocat/** - tests/modules/nf-core/pneumocat/** @@ -206,9 +172,6 @@ sgdemux: - modules/nf-core/sgdemux/** - modules/nf-core/untar/** - tests/modules/nf-core/sgdemux/** -shigeifinder: - - modules/nf-core/shigeifinder/** - - tests/modules/nf-core/shigeifinder/** somalier/ancestry: - modules/nf-core/somalier/ancestry/** - tests/modules/nf-core/somalier/ancestry/** @@ -218,9 +181,6 @@ spatyper: srst2/srst2: - modules/nf-core/srst2/srst2/** - tests/modules/nf-core/srst2/srst2/** -stecfinder: - - modules/nf-core/stecfinder/** - - tests/modules/nf-core/stecfinder/** subworkflows/bam_cnv_wisecondorx: - subworkflows/nf-core/bam_cnv_wisecondorx/** - tests/subworkflows/nf-core/bam_cnv_wisecondorx/** @@ -275,30 +235,24 @@ subworkflows/vcf_gather_bcftools: subworkflows/vcf_phase_shapeit5: - subworkflows/nf-core/vcf_phase_shapeit5/** - tests/subworkflows/nf-core/vcf_phase_shapeit5/** -survivor/filter: - - modules/nf-core/survivor/filter/** - - tests/modules/nf-core/survivor/filter/** -survivor/simsv: - - modules/nf-core/survivor/simsv/** - - tests/modules/nf-core/survivor/simsv/** svaba: - modules/nf-core/svaba/** - tests/modules/nf-core/svaba/** svtk/baftest: - modules/nf-core/svtk/baftest/** - tests/modules/nf-core/svtk/baftest/** -svtk/rdtest2vcf: - - modules/nf-core/svtk/rdtest2vcf/** - - tests/modules/nf-core/svtk/rdtest2vcf/** -svtk/standardize: - - modules/nf-core/svtk/standardize/** - - tests/modules/nf-core/svtk/standardize/** +topas/gencons: + - modules/nf-core/topas/gencons/** + - tests/modules/nf-core/topas/gencons/** truvari/bench: - modules/nf-core/truvari/bench/** - tests/modules/nf-core/truvari/bench/** ultra/align: - modules/nf-core/ultra/align/** - tests/modules/nf-core/ultra/align/** +ultra/index: + - modules/nf-core/ultra/index/** + - tests/modules/nf-core/ultra/index/** universc: - modules/nf-core/universc/** - tests/modules/nf-core/universc/** @@ -308,9 +262,3 @@ varlociraptor/callvariants: varlociraptor/preprocess: - modules/nf-core/varlociraptor/preprocess/** - tests/modules/nf-core/varlociraptor/preprocess/** -vrhyme/extractunbinned: - - modules/nf-core/vrhyme/extractunbinned/** - - tests/modules/nf-core/vrhyme/extractunbinned/** -vrhyme/linkbins: - - modules/nf-core/vrhyme/linkbins/** - - tests/modules/nf-core/vrhyme/linkbins/** diff --git a/tests/modules/nf-core/cellrangerarc/count/main.nf b/tests/modules/nf-core/cellrangerarc/count/main.nf deleted file mode 100644 index dca5ded3a4de..000000000000 --- a/tests/modules/nf-core/cellrangerarc/count/main.nf +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { CELLRANGERARC_MKREF } from '../../../../../modules/nf-core/cellrangerarc/mkref/main.nf' -include { CELLRANGERARC_COUNT } from '../../../../../modules/nf-core/cellrangerarc/count/main.nf' -include { UNZIP } from '../../../../../modules/nf-core/unzip/main.nf' - -workflow test_cellrangerarc_count { - - input = [ [ id:'test' ], [ 'gex','atac' ], [ 'SRR18907480_chr19_sub','SRR18907481_chr19_sub' ], - [ file(params.test_data['mus_musculus']['illumina']['test_scARC_gex_R1_fastq_gz'], checkIfExists: true), - file(params.test_data['mus_musculus']['illumina']['test_scARC_gex_R2_fastq_gz'], checkIfExists: true), - file(params.test_data['mus_musculus']['illumina']['test_scARC_atac_R1_fastq_gz'], checkIfExists: true), - file(params.test_data['mus_musculus']['illumina']['test_scARC_atac_R2_fastq_gz'], checkIfExists: true), - file(params.test_data['mus_musculus']['illumina']['test_scARC_atac_I2_fastq_gz'], checkIfExists: true) - ] - ] - - fasta = [ [], file(params.test_data['mus_musculus']['genome']['genome_19_fasta'], checkIfExists: true)] - gtf = file(params.test_data['mus_musculus']['genome']['genome_19_gtf'], checkIfExists: true) - motifs = file(params.test_data['homo_sapiens']['genome']['genome_motifs'], checkIfExists: true) - reference_config = file(params.test_data['mus_musculus']['illumina']['genome_config'], checkIfExists: true) - reference_name = "cellrangerarc_reference" - lib_csv = file(params.test_data['mus_musculus']['illumina']['multiome_lib_csv'], checkIfExists: true) - - UNZIP( fasta ) - - CELLRANGERARC_MKREF ( UNZIP.out.unzipped_archive.map{ it[1] } + "/chr19.fa", - gtf, - motifs, - reference_config, - reference_name ) - - CELLRANGERARC_COUNT( - input, - CELLRANGERARC_MKREF.out.reference - ) -} diff --git a/tests/modules/nf-core/cellrangerarc/count/nextflow.config b/tests/modules/nf-core/cellrangerarc/count/nextflow.config deleted file mode 100644 index 1df91eee5da5..000000000000 --- a/tests/modules/nf-core/cellrangerarc/count/nextflow.config +++ /dev/null @@ -1,27 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName: CELLRANGERARC_MKGTF { - ext.args = '--attribute=gene_biotype:protein_coding \ - --attribute=gene_biotype:lincRNA \ - --attribute=gene_biotype:antisense \ - --attribute=gene_biotype:IG_LV_gene \ - --attribute=gene_biotype:IG_V_gene \ - --attribute=gene_biotype:IG_V_pseudogene \ - --attribute=gene_biotype:IG_D_gene \ - --attribute=gene_biotype:IG_J_gene \ - --attribute=gene_biotype:IG_J_pseudogene \ - --attribute=gene_biotype:IG_C_gene \ - --attribute=gene_biotype:IG_C_pseudogene \ - --attribute=gene_biotype:TR_V_gene \ - --attribute=gene_biotype:TR_V_pseudogene \ - --attribute=gene_biotype:TR_D_gene \ - --attribute=gene_biotype:TR_J_gene \ - --attribute=gene_biotype:TR_J_pseudogene \ - --attribute=gene_biotype:TR_C_gene' - - - } - -} diff --git a/tests/modules/nf-core/cellrangerarc/count/test.yml b/tests/modules/nf-core/cellrangerarc/count/test.yml deleted file mode 100644 index c94c786fbbbb..000000000000 --- a/tests/modules/nf-core/cellrangerarc/count/test.yml +++ /dev/null @@ -1,38 +0,0 @@ -- name: cellrangerarc_count test_cellrangerarc_count - command: nextflow run ./tests/modules/nf-core/cellrangerarc/count -entry test_cellrangerarc_count -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/cellrangerarc/count/nextflow.config - tags: - - cellrangerarc/count - - cellrangerarc - files: - - path: output/cellrangerarc/cellrangerarc_reference/fasta/genome.fa - md5sum: dd9375c0cfa5de18757a0608411ff608 - - path: output/cellrangerarc/cellrangerarc_reference/fasta/genome.fa.fai - md5sum: 291a00d5431e0f97c356c272d201d8bd - - path: output/cellrangerarc/cellrangerarc_reference/genes/genes.gtf.gz - md5sum: f9fc85cbe202ecd716f05f16a352ce19 - - path: output/cellrangerarc/cellrangerarc_reference/reference.json - md5sum: 1ff977fa99515695d81b8da012569901 - - path: output/cellrangerarc/cellrangerarc_reference/regions/motifs.pfm - md5sum: 294d4041e4ffd4c633376c2b9d180ac0 - - path: output/cellrangerarc/cellrangerarc_reference/regions/transcripts.bed - md5sum: bc5cfb75dc1795cfc2caeddfc15aaa30 - - path: output/cellrangerarc/cellrangerarc_reference/regions/tss.bed - md5sum: 6aa464a762cab3ca3bf004dd6f35de8e - - path: output/cellrangerarc/test/outs/filtered_feature_bc_matrix.h5 - - path: output/cellrangerarc/test/outs/filtered_feature_bc_matrix/barcodes.tsv.gz - - path: output/cellrangerarc/test/outs/filtered_feature_bc_matrix/features.tsv.gz - - path: output/cellrangerarc/test/outs/filtered_feature_bc_matrix/matrix.mtx.gz - - path: output/cellrangerarc/test/outs/summary.csv - md5sum: 7641192d4cc0c6072dc447a46d5f89a2 - - path: output/cellrangerarc/test/outs/gex_possorted_bam.bam - md5sum: 8455846fa1aa417e4252bd09584d1098 - - path: output/cellrangerarc/test/outs/gex_possorted_bam.bam.bai - md5sum: 444fb175b75d0e22c8e14724b7790e34 - - path: output/cellrangerarc/test/outs/raw_feature_bc_matrix.h5 - - path: output/cellrangerarc/test/outs/raw_feature_bc_matrix/barcodes.tsv.gz - - path: output/cellrangerarc/test/outs/raw_feature_bc_matrix/features.tsv.gz - - path: output/cellrangerarc/test/outs/raw_feature_bc_matrix/matrix.mtx.gz - - path: output/cellrangerarc/test/outs/atac_peaks.bed - - path: output/cellrangerarc/test/outs/atac_possorted_bam.bam - - path: output/cellrangerarc/test/outs/atac_possorted_bam.bam.bai - - path: output/cellrangerarc/test/outs/web_summary.html diff --git a/tests/modules/nf-core/cellrangerarc/mkref/main.nf b/tests/modules/nf-core/cellrangerarc/mkref/main.nf deleted file mode 100644 index 90a3534f5431..000000000000 --- a/tests/modules/nf-core/cellrangerarc/mkref/main.nf +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { CELLRANGERARC_MKREF } from '../../../../../modules/nf-core/cellrangerarc/mkref/main.nf' -include { UNZIP } from '../../../../../modules/nf-core/unzip/main.nf' - -workflow test_cellrangerarc_mkref { - - fasta = [ [], file(params.test_data['mus_musculus']['genome']['genome_19_fasta'], checkIfExists: true)] - gtf = file(params.test_data['mus_musculus']['genome']['genome_19_gtf'], checkIfExists: true) - motifs = file(params.test_data['homo_sapiens']['genome']['genome_motifs'], checkIfExists: true) - reference_config = file(params.test_data['mus_musculus']['illumina']['genome_config'], checkIfExists: true) - reference_name = "cellrangerarc_reference" - - UNZIP( fasta ) - - CELLRANGERARC_MKREF ( UNZIP.out.unzipped_archive.map{ it[1] } + "/chr19.fa", - gtf, - motifs, - reference_config, - reference_name ) -} diff --git a/tests/modules/nf-core/cellrangerarc/mkref/nextflow.config b/tests/modules/nf-core/cellrangerarc/mkref/nextflow.config deleted file mode 100644 index 8730f1c4b930..000000000000 --- a/tests/modules/nf-core/cellrangerarc/mkref/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} diff --git a/tests/modules/nf-core/cellrangerarc/mkref/test.yml b/tests/modules/nf-core/cellrangerarc/mkref/test.yml deleted file mode 100644 index 2e631f7cb8af..000000000000 --- a/tests/modules/nf-core/cellrangerarc/mkref/test.yml +++ /dev/null @@ -1,20 +0,0 @@ -- name: cellrangerarc_mkref test_cellrangerarc_mkref - command: nextflow run ./tests/modules/nf-core/cellrangerarc/mkref -entry test_cellrangerarc_mkref -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/cellrangerarc/mkref/nextflow.config - tags: - - cellrangerarc/mkref - - cellrangerarc - files: - - path: output/cellrangerarc/cellrangerarc_reference/fasta/genome.fa - md5sum: dd9375c0cfa5de18757a0608411ff608 - - path: output/cellrangerarc/cellrangerarc_reference/fasta/genome.fa.fai - md5sum: 291a00d5431e0f97c356c272d201d8bd - - path: output/cellrangerarc/cellrangerarc_reference/genes/genes.gtf.gz - md5sum: f9fc85cbe202ecd716f05f16a352ce19 - - path: output/cellrangerarc/cellrangerarc_reference/reference.json - md5sum: 1ff977fa99515695d81b8da012569901 - - path: output/cellrangerarc/cellrangerarc_reference/regions/motifs.pfm - md5sum: 294d4041e4ffd4c633376c2b9d180ac0 - - path: output/cellrangerarc/cellrangerarc_reference/regions/transcripts.bed - md5sum: bc5cfb75dc1795cfc2caeddfc15aaa30 - - path: output/cellrangerarc/cellrangerarc_reference/regions/tss.bed - md5sum: 6aa464a762cab3ca3bf004dd6f35de8e diff --git a/tests/modules/nf-core/damageprofiler/main.nf b/tests/modules/nf-core/damageprofiler/main.nf deleted file mode 100644 index 128bc52124f9..000000000000 --- a/tests/modules/nf-core/damageprofiler/main.nf +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { DAMAGEPROFILER } from '../../../../modules/nf-core/damageprofiler/main.nf' - -workflow test_damageprofiler { - - input = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['homo_sapiens']['illumina']['test_paired_end_markduplicates_sorted_bam'], checkIfExists: true) ] ] - fasta = [] - fai = [] - species_list = [] - - - DAMAGEPROFILER ( input, fasta, fai, species_list ) -} - -workflow test_damageprofiler_reference { - - input = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['homo_sapiens']['illumina']['test_paired_end_markduplicates_sorted_bam'], checkIfExists: true) ] ] - fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - fai = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) - species_list = [] - - DAMAGEPROFILER ( input, fasta, fai, species_list ) -} - -workflow test_damageprofiler_specieslist { - - input = [ [ id:'test', single_end:false ], // meta map - [ file(params.test_data['homo_sapiens']['illumina']['test_paired_end_markduplicates_sorted_bam'], checkIfExists: true) ] ] - fasta = [] - fai = [] - species_list = file(params.test_data['homo_sapiens']['genome']['genome_header'], checkIfExists: true) - - DAMAGEPROFILER ( input, fasta, fai, species_list ) -} diff --git a/tests/modules/nf-core/damageprofiler/nextflow.config b/tests/modules/nf-core/damageprofiler/nextflow.config deleted file mode 100644 index 8730f1c4b930..000000000000 --- a/tests/modules/nf-core/damageprofiler/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} diff --git a/tests/modules/nf-core/damageprofiler/test.yml b/tests/modules/nf-core/damageprofiler/test.yml deleted file mode 100644 index bbaa31c0f825..000000000000 --- a/tests/modules/nf-core/damageprofiler/test.yml +++ /dev/null @@ -1,77 +0,0 @@ -- name: damageprofiler test_damageprofiler - command: nextflow run ./tests/modules/nf-core/damageprofiler -entry test_damageprofiler -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/damageprofiler/nextflow.config - tags: - - damageprofiler - files: - - path: output/damageprofiler/test/3pGtoA_freq.txt - md5sum: 56c165bbc9197e0b3d5bd3d464f9e235 - - path: output/damageprofiler/test/3p_freq_misincorporations.txt - md5sum: 62e60259dd7fa2b54cdab6afc1adc9c4 - - path: output/damageprofiler/test/5pCtoT_freq.txt - md5sum: 38b5d7c87ec2d8422bc5587095711c5f - - path: output/damageprofiler/test/5p_freq_misincorporations.txt - md5sum: 05e041ff47e7c6d08ede51f5c81a2464 - - path: output/damageprofiler/test/DNA_comp_genome.txt - md5sum: e4d949c6aceddc2c2ef14de9c4aafde5 - - path: output/damageprofiler/test/DNA_composition_sample.txt - md5sum: 16be9c91a06fa7defee376230b12862f - - path: output/damageprofiler/test/DamagePlot.pdf - - path: output/damageprofiler/test/DamagePlot_five_prime.svg - - path: output/damageprofiler/test/DamagePlot_three_prime.svg - - path: output/damageprofiler/test/DamageProfiler.log - - path: output/damageprofiler/test/Length_plot.pdf - - path: output/damageprofiler/test/Length_plot_combined_data.svg - - path: output/damageprofiler/test/Length_plot_forward_reverse_separated.svg - - path: output/damageprofiler/test/dmgprof.json - md5sum: a011a47edaadb3a07527c329a6492570 - - path: output/damageprofiler/test/editDistance.txt - md5sum: 7590dac007633ee11025cc99ec9f009b - - path: output/damageprofiler/test/edit_distance.pdf - - path: output/damageprofiler/test/edit_distance.svg - - path: output/damageprofiler/test/lgdistribution.txt - md5sum: 583fd98094de3fb462b133daeaadcf52 - - path: output/damageprofiler/test/misincorporation.txt - md5sum: 25119c0fcc8839fdbb3ed10922fb07f4 - -- name: damageprofiler test_damageprofiler_reference - command: nextflow run ./tests/modules/nf-core/damageprofiler -entry test_damageprofiler_reference -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/damageprofiler/nextflow.config - tags: - - damageprofiler - files: - - path: output/damageprofiler/test/3pGtoA_freq.txt - md5sum: 56c165bbc9197e0b3d5bd3d464f9e235 - - path: output/damageprofiler/test/3p_freq_misincorporations.txt - md5sum: 62e60259dd7fa2b54cdab6afc1adc9c4 - - path: output/damageprofiler/test/5pCtoT_freq.txt - md5sum: 38b5d7c87ec2d8422bc5587095711c5f - - path: output/damageprofiler/test/5p_freq_misincorporations.txt - md5sum: 05e041ff47e7c6d08ede51f5c81a2464 - - path: output/damageprofiler/test/DNA_comp_genome.txt - md5sum: e4d949c6aceddc2c2ef14de9c4aafde5 - - path: output/damageprofiler/test/DNA_composition_sample.txt - md5sum: 16be9c91a06fa7defee376230b12862f - - path: output/damageprofiler/test/DamagePlot.pdf - - path: output/damageprofiler/test/DamagePlot_five_prime.svg - - path: output/damageprofiler/test/DamagePlot_three_prime.svg - - path: output/damageprofiler/test/DamageProfiler.log - - path: output/damageprofiler/test/Length_plot.pdf - - path: output/damageprofiler/test/Length_plot_combined_data.svg - - path: output/damageprofiler/test/Length_plot_forward_reverse_separated.svg - - path: output/damageprofiler/test/dmgprof.json - md5sum: a011a47edaadb3a07527c329a6492570 - - path: output/damageprofiler/test/editDistance.txt - md5sum: 7590dac007633ee11025cc99ec9f009b - - path: output/damageprofiler/test/edit_distance.pdf - - path: output/damageprofiler/test/edit_distance.svg - - path: output/damageprofiler/test/lgdistribution.txt - md5sum: 583fd98094de3fb462b133daeaadcf52 - - path: output/damageprofiler/test/misincorporation.txt - md5sum: 25119c0fcc8839fdbb3ed10922fb07f4 - -- name: damageprofiler test_damageprofiler_specieslist - command: nextflow run ./tests/modules/nf-core/damageprofiler -entry test_damageprofiler_specieslist -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/damageprofiler/nextflow.config - tags: - - damageprofiler - files: - - path: output/damageprofiler/test/DamageProfiler.log - #contains: '[ # TODO nf-core: file md5sum was variable, please replace this text with a string found in the file instead ]' diff --git a/tests/modules/nf-core/fcs/fcsgx/main.nf b/tests/modules/nf-core/fcs/fcsgx/main.nf deleted file mode 100644 index ff04a194dde0..000000000000 --- a/tests/modules/nf-core/fcs/fcsgx/main.nf +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { FCS_FCSGX } from '../../../../../modules/nf-core/fcs/fcsgx/main.nf' - -workflow test_fcs_fcsgx { - - input = [ - [ id:'test', taxid:'9606' ], // meta map - file(params.test_data['bacteroides_fragilis']['genome']['genome_fna_gz'], checkIfExists: true), - ] - - database = [ - file("https://ftp.ncbi.nlm.nih.gov/genomes/TOOLS/FCS/database/test-only/test-only.gxi"), - file("https://ftp.ncbi.nlm.nih.gov/genomes/TOOLS/FCS/database/test-only/test-only.gxs"), - file("https://ftp.ncbi.nlm.nih.gov/genomes/TOOLS/FCS/database/test-only/test-only.taxa.tsv"), - file("https://ftp.ncbi.nlm.nih.gov/genomes/TOOLS/FCS/database/test-only/test-only.meta.jsonl"), - file("https://ftp.ncbi.nlm.nih.gov/genomes/TOOLS/FCS/database/test-only/test-only.blast_div.tsv.gz") - ] - FCS_FCSGX ( input, database ) -} diff --git a/tests/modules/nf-core/fcs/fcsgx/nextflow.config b/tests/modules/nf-core/fcs/fcsgx/nextflow.config deleted file mode 100644 index 50f50a7a3579..000000000000 --- a/tests/modules/nf-core/fcs/fcsgx/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} \ No newline at end of file diff --git a/tests/modules/nf-core/fcs/fcsgx/test.yml b/tests/modules/nf-core/fcs/fcsgx/test.yml deleted file mode 100644 index fe5a23e8eaf6..000000000000 --- a/tests/modules/nf-core/fcs/fcsgx/test.yml +++ /dev/null @@ -1,10 +0,0 @@ -- name: fcs fcsgx test_fcs_fcsgx - command: nextflow run ./tests/modules/nf-core/fcs/fcsgx -entry test_fcs_fcsgx -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/fcs/fcsgx/nextflow.config - tags: - - fcs/fcsgx - - fcs - files: - - path: output/fcs/out/genome.fna.9606.fcs_gx_report.txt - contains: ["FCS genome report", "run-date", "prok:CFB group bacteria"] - - path: output/fcs/out/genome.fna.9606.taxonomy.rpt - contains: ["GX taxonomy analysis report", "run-date", "prok:CFB group bacteria"] diff --git a/tests/modules/nf-core/gem2/gem2bedmappability/main.nf b/tests/modules/nf-core/gem2/gem2bedmappability/main.nf deleted file mode 100644 index 7f0c7d854e72..000000000000 --- a/tests/modules/nf-core/gem2/gem2bedmappability/main.nf +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { GEM2_GEM2BEDMAPPABILITY } from '../../../../../modules/nf-core/gem2/gem2bedmappability/main.nf' -include { GEM2_GEMMAPPABILITY } from '../../../../../modules/nf-core/gem2/gemmappability/main.nf' -include { GEM2_GEMINDEXER } from '../../../../../modules/nf-core/gem2/gemindexer/main.nf' - -workflow test_gem2_gem2bedmappability { - - input = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - ] - - GEM2_GEMINDEXER ( input ) - - GEM2_GEMMAPPABILITY ( GEM2_GEMINDEXER.out.index, "100" ) - - GEM2_GEM2BEDMAPPABILITY ( GEM2_GEMMAPPABILITY.out.map, GEM2_GEMINDEXER.out.index ) -} diff --git a/tests/modules/nf-core/gem2/gem2bedmappability/nextflow.config b/tests/modules/nf-core/gem2/gem2bedmappability/nextflow.config deleted file mode 100644 index 247772f85ccd..000000000000 --- a/tests/modules/nf-core/gem2/gem2bedmappability/nextflow.config +++ /dev/null @@ -1,12 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName: GEM2_GEMINDEXER { - publishDir = [enabled:false] - } - - withName: GEM2_GEMMAPPABILITY { - publishDir = [enabled:false] - } -} \ No newline at end of file diff --git a/tests/modules/nf-core/gem2/gem2bedmappability/test.yml b/tests/modules/nf-core/gem2/gem2bedmappability/test.yml deleted file mode 100644 index 60271f4e2abf..000000000000 --- a/tests/modules/nf-core/gem2/gem2bedmappability/test.yml +++ /dev/null @@ -1,11 +0,0 @@ -- name: gem2 gem2bedmappability test_gem2_gem2bedmappability - command: nextflow run ./tests/modules/nf-core/gem2/gem2bedmappability -entry test_gem2_gem2bedmappability -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/gem2/gem2bedmappability/nextflow.config - tags: - - gem2 - - gem2/gem2bedmappability - files: - - path: output/gem2/test.bg - md5sum: 42596230d57c308892bcaefb3eabbf1b - - path: output/gem2/test.sizes - md5sum: 58102c0866e0bc69831c94d02fd859e1 - - path: output/gem2/versions.yml diff --git a/tests/modules/nf-core/gem2/gemmappability/main.nf b/tests/modules/nf-core/gem2/gemmappability/main.nf deleted file mode 100644 index 21b403e86fe2..000000000000 --- a/tests/modules/nf-core/gem2/gemmappability/main.nf +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { GEM2_GEMMAPPABILITY } from '../../../../../modules/nf-core/gem2/gemmappability/main.nf' -include { GEM2_GEMINDEXER } from '../../../../../modules/nf-core/gem2/gemindexer/main.nf' - -workflow test_gem2_gemmappability { - - input = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - ] - - GEM2_GEMINDEXER ( input ) - - GEM2_GEMMAPPABILITY ( GEM2_GEMINDEXER.out.index, "100" ) -} diff --git a/tests/modules/nf-core/gem2/gemmappability/nextflow.config b/tests/modules/nf-core/gem2/gemmappability/nextflow.config deleted file mode 100644 index 35d34a63156b..000000000000 --- a/tests/modules/nf-core/gem2/gemmappability/nextflow.config +++ /dev/null @@ -1,8 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName: GEM2_GEMINDEXER { - publishDir = [enabled:false] - } -} \ No newline at end of file diff --git a/tests/modules/nf-core/gem2/gemmappability/test.yml b/tests/modules/nf-core/gem2/gemmappability/test.yml deleted file mode 100644 index bff542389836..000000000000 --- a/tests/modules/nf-core/gem2/gemmappability/test.yml +++ /dev/null @@ -1,9 +0,0 @@ -- name: gem2 gemmappability test_gem2_gemmappability - command: nextflow run ./tests/modules/nf-core/gem2/gemmappability -entry test_gem2_gemmappability -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/gem2/gemmappability/nextflow.config - tags: - - gem2 - - gem2/gemmappability - files: - - path: output/gem2/test.mappability - md5sum: 8380b048fec0e8c4f104f49d2bf784c4 - - path: output/gem2/versions.yml diff --git a/tests/modules/nf-core/genescopefk/main.nf b/tests/modules/nf-core/genescopefk/main.nf deleted file mode 100644 index fcd2fc491a5a..000000000000 --- a/tests/modules/nf-core/genescopefk/main.nf +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { FASTK_FASTK } from '../../../../modules/nf-core/fastk/fastk/main.nf' -include { FASTK_HISTEX } from '../../../../modules/nf-core/fastk/histex/main.nf' -include { GENESCOPEFK } from '../../../../modules/nf-core/genescopefk/main.nf' - -workflow test_genescopefk { - - input = [ - [ id:'test' , single_end: true ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_1_fastq_gz'], checkIfExists: true) - ] - - FASTK_FASTK ( input ) - FASTK_HISTEX ( FASTK_FASTK.out.hist ) - GENESCOPEFK ( FASTK_HISTEX.out.hist ) -} diff --git a/tests/modules/nf-core/genescopefk/nextflow.config b/tests/modules/nf-core/genescopefk/nextflow.config deleted file mode 100644 index f01f56c7386a..000000000000 --- a/tests/modules/nf-core/genescopefk/nextflow.config +++ /dev/null @@ -1,15 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName: 'FASTK_.*' { - publishDir = [ enabled: false ] - } - withName: 'FASTK_HISTEX' { - ext.args = '-G' - } - withName: 'GENESCOPEFK' { - ext.args = '--kmer_length 40 --ploidy 1' - } - -} diff --git a/tests/modules/nf-core/genescopefk/test.yml b/tests/modules/nf-core/genescopefk/test.yml deleted file mode 100644 index 4664582ff27e..000000000000 --- a/tests/modules/nf-core/genescopefk/test.yml +++ /dev/null @@ -1,18 +0,0 @@ -- name: genescopefk test_genescopefk - command: nextflow run ./tests/modules/nf-core/genescopefk -entry test_genescopefk -c ./tests/config/nextflow.config - tags: - - genescopefk - files: - - path: output/genescopefk/test_linear_plot.png - md5sum: bb221e2e21a6c0d04dcb6ec8f1bf1cd7 - - path: output/genescopefk/test_log_plot.png - md5sum: d71ad0c963775992043c8f3c55d27fc4 - - path: output/genescopefk/test_model.txt - md5sum: 49e5a66cf02b53a3b20880bfabef2ee8 - - path: output/genescopefk/test_summary.txt - md5sum: 34540dcc2ba4ab9530f8878bbdc0921c - - path: output/genescopefk/test_transformed_linear_plot.png - md5sum: 3c8e3ad315e6c15cdf51c87de277ec1f - - path: output/genescopefk/test_transformed_log_plot.png - md5sum: 90d983c6faa9b8a02a1d26b777feefc6 - - path: output/genescopefk/versions.yml diff --git a/tests/modules/nf-core/genmap/map/main.nf b/tests/modules/nf-core/genmap/map/main.nf deleted file mode 100644 index b2efe1f0cb68..000000000000 --- a/tests/modules/nf-core/genmap/map/main.nf +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { GENMAP_INDEX } from '../../../../../modules/nf-core/genmap/index/main.nf' -include { GENMAP_MAP } from '../../../../../modules/nf-core/genmap/map/main.nf' - -workflow test_genmap_map { - - input = [ - [id:"test"], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - ] - - beds = [ - [id:"bed"], - file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) - ] - - GENMAP_INDEX ( input ) - GENMAP_MAP ( GENMAP_INDEX.out.index, beds ) -} diff --git a/tests/modules/nf-core/genmap/map/nextflow.config b/tests/modules/nf-core/genmap/map/nextflow.config deleted file mode 100644 index e55dfa1df8a0..000000000000 --- a/tests/modules/nf-core/genmap/map/nextflow.config +++ /dev/null @@ -1,14 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName: GENMAP_INDEX { - publishDir = [enabled:false] - } - - withName: GENMAP_MAP { - ext.prefix = "test_map" - ext.args = '-K 50 -E 2 -w -t -bg -d' - } - -} diff --git a/tests/modules/nf-core/genmap/map/test.yml b/tests/modules/nf-core/genmap/map/test.yml deleted file mode 100644 index 6be5197eb4c2..000000000000 --- a/tests/modules/nf-core/genmap/map/test.yml +++ /dev/null @@ -1,15 +0,0 @@ -- name: genmap map test_genmap_map - command: nextflow run ./tests/modules/nf-core/genmap/map -entry test_genmap_map -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/genmap/map/nextflow.config - tags: - - genmap/map - - genmap - files: - - path: output/genmap/test_map.bedgraph - md5sum: 27ca54c920f3ff0c5985384e557a40f2 - - path: output/genmap/test_map.csv - md5sum: 4167a6c7ffbecc1a239c5c1e16b2cbc5 - - path: output/genmap/test_map.txt - md5sum: 7f9aeaa3d174bb5e6f552efd4f857b4e - - path: output/genmap/test_map.wig - md5sum: c940a5c35af6ac1c11ecc87b7662fc2a - - path: output/genmap/versions.yml diff --git a/tests/modules/nf-core/genotyphi/parse/main.nf b/tests/modules/nf-core/genotyphi/parse/main.nf deleted file mode 100644 index 6e5f633ec1be..000000000000 --- a/tests/modules/nf-core/genotyphi/parse/main.nf +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { MYKROBE_PREDICT } from '../../../../../modules/nf-core/mykrobe/predict/main.nf' -include { GENOTYPHI_PARSE } from '../../../../../modules/nf-core/genotyphi/parse/main.nf' - -workflow test_mykrobe_predict { - - input = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) - ] - - MYKROBE_PREDICT ( input, "typhi" ) - GENOTYPHI_PARSE ( MYKROBE_PREDICT.out.json ) -} diff --git a/tests/modules/nf-core/genotyphi/parse/nextflow.config b/tests/modules/nf-core/genotyphi/parse/nextflow.config deleted file mode 100644 index 50f50a7a3579..000000000000 --- a/tests/modules/nf-core/genotyphi/parse/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} \ No newline at end of file diff --git a/tests/modules/nf-core/genotyphi/parse/test.yml b/tests/modules/nf-core/genotyphi/parse/test.yml deleted file mode 100644 index 925b9963d9c1..000000000000 --- a/tests/modules/nf-core/genotyphi/parse/test.yml +++ /dev/null @@ -1,12 +0,0 @@ -- name: genotyphi parse test_mykrobe_predict - command: nextflow run ./tests/modules/nf-core/genotyphi/parse -entry test_mykrobe_predict -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/genotyphi/parse/nextflow.config - tags: - - genotyphi/parse - - genotyphi - files: - - path: output/genotyphi/test_predictResults.tsv - contains: ["genome", "confidence", "supported", "test", "NA"] - - path: output/mykrobe/test.csv - contains: ["susceptibility", "genotype_model", "variants", "test.paired_end.bam"] - - path: output/mykrobe/test.json - contains: ["susceptibility", "kmer_count", "files", "test.paired_end.bam"] diff --git a/tests/modules/nf-core/plink/indeppairwise/main.nf b/tests/modules/nf-core/plink/indeppairwise/main.nf deleted file mode 100644 index 52f3fb395cef..000000000000 --- a/tests/modules/nf-core/plink/indeppairwise/main.nf +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { PLINK_INDEPPAIRWISE } from '../../../../../modules/nf-core/plink/indeppairwise/main.nf' -include { PLINK_VCF } from '../../../../../modules/nf-core/plink/vcf/main.nf' - -workflow test_plink_indeppairwise { - - input = [ - [ id:'test', single_end:false ], // meta map - file("https://github.com/nf-core/test-datasets/raw/modules/data/genomics/homo_sapiens/genome/vcf/ped/justhusky_minimal.vcf.gz", checkIfExists: true) - ] - - PLINK_VCF ( input ) - - bed_ch = PLINK_VCF.out.bed - bim_ch = PLINK_VCF.out.bim - fam_ch = PLINK_VCF.out.fam - - ch_bed_bim_fam = bed_ch.join(bim_ch).join(fam_ch) - - ch_window_size = Channel.value(50) - ch_variant_count = Channel.value(5) - ch_r2_threshold = Channel.value(0.2) - - PLINK_INDEPPAIRWISE ( ch_bed_bim_fam, ch_window_size, ch_variant_count, ch_r2_threshold ) -} diff --git a/tests/modules/nf-core/plink/indeppairwise/nextflow.config b/tests/modules/nf-core/plink/indeppairwise/nextflow.config deleted file mode 100644 index 973d82507e7e..000000000000 --- a/tests/modules/nf-core/plink/indeppairwise/nextflow.config +++ /dev/null @@ -1,8 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName: PLINK_VCF { - ext.args = ' --make-bed --biallelic-only strict --vcf-half-call missing --allow-extra-chr' - } -} diff --git a/tests/modules/nf-core/plink/indeppairwise/test.yml b/tests/modules/nf-core/plink/indeppairwise/test.yml deleted file mode 100644 index 20c6c0a5c788..000000000000 --- a/tests/modules/nf-core/plink/indeppairwise/test.yml +++ /dev/null @@ -1,17 +0,0 @@ -- name: plink indeppairwise test_plink_indeppairwise - command: nextflow run ./tests/modules/nf-core/plink/indeppairwise -entry test_plink_indeppairwise -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/plink/indeppairwise/nextflow.config - tags: - - plink - - plink/indeppairwise - files: - - path: output/plink/test.bed - md5sum: 0cbb7bb2e4c9e23c75da1f338f9268bf - - path: output/plink/test.bim - md5sum: fe302f9edc5a217e55f1b6b17f187d2e - - path: output/plink/test.fam - md5sum: 619946963dc461d0e2ae4359da08eeb2 - - path: output/plink/test.prune.in - md5sum: 50c7ab703f7b5c01d7c7ddc7517aea37 - - path: output/plink/test.prune.out - md5sum: 6104a59d98bda81014870ecd059573fb - - path: output/plink/versions.yml diff --git a/tests/modules/nf-core/shigeifinder/main.nf b/tests/modules/nf-core/shigeifinder/main.nf deleted file mode 100644 index d9d8f48444dc..000000000000 --- a/tests/modules/nf-core/shigeifinder/main.nf +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { SHIGEIFINDER } from '../../../../modules/nf-core/shigeifinder/main.nf' -include { SHIGEIFINDER as SHIGEIFINDER_READS } from '../../../../modules/nf-core/shigeifinder/main.nf' - -workflow test_shigeifinder_assembly { - - input = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - ] - - SHIGEIFINDER ( input ) -} - -workflow test_shigeifinder_reads { - - input = [ - [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ] - ] - - SHIGEIFINDER_READS ( input ) -} diff --git a/tests/modules/nf-core/shigeifinder/nextflow.config b/tests/modules/nf-core/shigeifinder/nextflow.config deleted file mode 100644 index 05e45d893d88..000000000000 --- a/tests/modules/nf-core/shigeifinder/nextflow.config +++ /dev/null @@ -1,9 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName: SHIGEIFINDER_READS { - ext.args = '-r ' - } - -} diff --git a/tests/modules/nf-core/shigeifinder/test.yml b/tests/modules/nf-core/shigeifinder/test.yml deleted file mode 100644 index f42ab50904f3..000000000000 --- a/tests/modules/nf-core/shigeifinder/test.yml +++ /dev/null @@ -1,17 +0,0 @@ -- name: shigeifinder test_shigeifinder_assembly - command: nextflow run ./tests/modules/nf-core/shigeifinder -entry test_shigeifinder_assembly -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/shigeifinder/nextflow.config - tags: - - shigeifinder - files: - - path: output/shigeifinder/test.tsv - md5sum: b9b0837765b574c4c61e14d1e90179cc - - path: output/shigeifinder/versions.yml - -- name: shigeifinder test_shigeifinder_reads - command: nextflow run ./tests/modules/nf-core/shigeifinder -entry test_shigeifinder_reads -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/shigeifinder/nextflow.config - tags: - - shigeifinder - files: - - path: output/shigeifinder/test.tsv - md5sum: 8f7f7db057d9c53abaa4c647532433ed - - path: output/shigeifinder/versions.yml diff --git a/tests/modules/nf-core/stecfinder/main.nf b/tests/modules/nf-core/stecfinder/main.nf deleted file mode 100644 index d27e21d8c302..000000000000 --- a/tests/modules/nf-core/stecfinder/main.nf +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { STECFINDER } from '../../../../modules/nf-core/stecfinder/main.nf' -include { STECFINDER as STECFINDER_READS } from '../../../../modules/nf-core/stecfinder/main.nf' - -workflow test_stecfinder_fasta { - - input = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - ] - - STECFINDER ( input ) -} - -workflow test_stecfinder_reads { - - input = [ - [ id:'test', single_end:false ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) ], - ] - - STECFINDER_READS ( input ) -} diff --git a/tests/modules/nf-core/stecfinder/nextflow.config b/tests/modules/nf-core/stecfinder/nextflow.config deleted file mode 100644 index 73511a4546c9..000000000000 --- a/tests/modules/nf-core/stecfinder/nextflow.config +++ /dev/null @@ -1,9 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName: STECFINDER_READS { - ext.args = '-r' - } - -} diff --git a/tests/modules/nf-core/stecfinder/test.yml b/tests/modules/nf-core/stecfinder/test.yml deleted file mode 100644 index 456bae89268c..000000000000 --- a/tests/modules/nf-core/stecfinder/test.yml +++ /dev/null @@ -1,17 +0,0 @@ -- name: stecfinder test_stecfinder_fasta - command: nextflow run ./tests/modules/nf-core/stecfinder -entry test_stecfinder_fasta -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/stecfinder/nextflow.config - tags: - - stecfinder - files: - - path: output/stecfinder/test.tsv - md5sum: c17e1e69728b48c06c47a7d10086f1da - - path: output/stecfinder/versions.yml - -- name: stecfinder test_stecfinder_reads - command: nextflow run ./tests/modules/nf-core/stecfinder -entry test_stecfinder_reads -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/stecfinder/nextflow.config - tags: - - stecfinder - files: - - path: output/stecfinder/test.tsv - md5sum: f0a5c4e3509bc8bd03f09aa21c31c526 - - path: output/stecfinder/versions.yml diff --git a/tests/modules/nf-core/survivor/filter/main.nf b/tests/modules/nf-core/survivor/filter/main.nf deleted file mode 100644 index 5a5d4314af53..000000000000 --- a/tests/modules/nf-core/survivor/filter/main.nf +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { SURVIVOR_FILTER as SURVIVOR_FILTER_NO_BED} from '../../../../../modules/nf-core/survivor/filter/main.nf' -include { SURVIVOR_FILTER as SURVIVOR_FILTER_BED} from '../../../../../modules/nf-core/survivor/filter/main.nf' - -workflow test_survivor_filter_no_bed { - - input_no_bed = [ - [ id:'test'], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf'], checkIfExists: true), - [] - ] - - SURVIVOR_FILTER_NO_BED ( - input_no_bed, - 51, - 10001, - 0.01, - 10 - ) - -} - -workflow test_survivor_filter { - - input_bed = [ - [ id:'test'], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_genome_vcf'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed'], checkIfExists: true) - ] - - SURVIVOR_FILTER_BED ( - input_bed, - 51, - 10001, - 0.01, - 10 - ) - -} diff --git a/tests/modules/nf-core/survivor/filter/nextflow.config b/tests/modules/nf-core/survivor/filter/nextflow.config deleted file mode 100644 index 50f50a7a3579..000000000000 --- a/tests/modules/nf-core/survivor/filter/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} \ No newline at end of file diff --git a/tests/modules/nf-core/survivor/filter/test.yml b/tests/modules/nf-core/survivor/filter/test.yml deleted file mode 100644 index ebd79f201026..000000000000 --- a/tests/modules/nf-core/survivor/filter/test.yml +++ /dev/null @@ -1,23 +0,0 @@ -- name: "survivor filter without regions to ignore" - command: nextflow run ./tests/modules/nf-core/survivor/filter -entry test_survivor_filter_no_bed -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/survivor/filter/nextflow.config - tags: - - survivor - - survivor/filter - files: - - path: output/survivor/test.vcf - contains: - - "##fileformat=VCFv4.2" - md5sum: ec23f83ba5bb098d45027e63fab93d05 - - path: output/survivor/versions.yml - md5sum: 9dfd6d01fe01fbcee31c9a6da1c96f9f - -- name: "survivor filter with regions to ignore" - command: nextflow run ./tests/modules/nf-core/survivor/filter -entry test_survivor_filter -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/survivor/filter/nextflow.config - tags: - - survivor - - survivor/filter - files: - - path: output/survivor/test.vcf - md5sum: ec23f83ba5bb098d45027e63fab93d05 - - path: output/survivor/versions.yml - md5sum: 139b0674031a5ec44982107e7674de4f diff --git a/tests/modules/nf-core/svtk/rdtest2vcf/main.nf b/tests/modules/nf-core/svtk/rdtest2vcf/main.nf deleted file mode 100644 index be5c0a4972cf..000000000000 --- a/tests/modules/nf-core/svtk/rdtest2vcf/main.nf +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { SVTK_RDTEST2VCF } from '../../../../../modules/nf-core/svtk/rdtest2vcf/main.nf' -include { SVTK_VCF2BED } from '../../../../../modules/nf-core/svtk/vcf2bed/main.nf' -include { MANTA_GERMLINE } from '../../../../../modules/nf-core/manta/germline/main.nf' - -workflow test_svtk_rdtest2vcf { - - input = [ - [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true), - [], - [] - ] - - fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - fasta_fai = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) - - MANTA_GERMLINE ( - input, - fasta, - fasta_fai - ) - - SVTK_VCF2BED ( - MANTA_GERMLINE.out.diploid_sv_vcf.combine(MANTA_GERMLINE.out.diploid_sv_vcf_tbi, by:0) - ) - - samples = Channel.of("test").collectFile(name: "samples.txt") - - SVTK_RDTEST2VCF ( - SVTK_VCF2BED.out.bed.combine(samples), - fasta_fai - ) -} diff --git a/tests/modules/nf-core/svtk/rdtest2vcf/nextflow.config b/tests/modules/nf-core/svtk/rdtest2vcf/nextflow.config deleted file mode 100644 index b155a95faa98..000000000000 --- a/tests/modules/nf-core/svtk/rdtest2vcf/nextflow.config +++ /dev/null @@ -1,17 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName: MANTA_GERMLINE { - publishDir = [ - enabled: false - ] - } - - withName: SVTK_VCF2BED { - publishDir = [ - enabled: false - ] - } - -} diff --git a/tests/modules/nf-core/svtk/rdtest2vcf/test.yml b/tests/modules/nf-core/svtk/rdtest2vcf/test.yml deleted file mode 100644 index ac952560b16f..000000000000 --- a/tests/modules/nf-core/svtk/rdtest2vcf/test.yml +++ /dev/null @@ -1,10 +0,0 @@ -- name: svtk rdtest2vcf test_svtk_rdtest2vcf - command: nextflow run ./tests/modules/nf-core/svtk/rdtest2vcf -entry test_svtk_rdtest2vcf -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/svtk/rdtest2vcf/nextflow.config - tags: - - svtk - - svtk/rdtest2vcf - files: - - path: output/svtk/test.vcf.gz - md5sum: e9aac8e86191597f3727252a3a5ccb78 - - path: output/svtk/test.vcf.gz.tbi - md5sum: 4cb176febbc8c26d717a6c6e67b9c905 diff --git a/tests/modules/nf-core/svtk/standardize/main.nf b/tests/modules/nf-core/svtk/standardize/main.nf deleted file mode 100644 index 0964ace06848..000000000000 --- a/tests/modules/nf-core/svtk/standardize/main.nf +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { SVTK_STANDARDIZE } from '../../../../../modules/nf-core/svtk/standardize/main.nf' -include { MANTA_GERMLINE } from '../../../../../modules/nf-core/manta/germline/main.nf' - -workflow test_svtk_standardize { - - input = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed_gz_tbi'], checkIfExists: true) - ] - - fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - fasta_fai = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) - - MANTA_GERMLINE( - input, - fasta, - fasta_fai - ) - - SVTK_STANDARDIZE ( - MANTA_GERMLINE.out.diploid_sv_vcf, - fasta_fai - ) -} - -workflow test_svtk_standardize_no_contigs { - - input = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram_crai'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed_gz'], checkIfExists: true), - file(params.test_data['homo_sapiens']['genome']['genome_bed_gz_tbi'], checkIfExists: true) - ] - - fasta = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - fasta_fai = file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) - - MANTA_GERMLINE( - input, - fasta, - fasta_fai - ) - - SVTK_STANDARDIZE ( - MANTA_GERMLINE.out.diploid_sv_vcf, - [] - ) -} diff --git a/tests/modules/nf-core/svtk/standardize/nextflow.config b/tests/modules/nf-core/svtk/standardize/nextflow.config deleted file mode 100644 index f432a5e69bd9..000000000000 --- a/tests/modules/nf-core/svtk/standardize/nextflow.config +++ /dev/null @@ -1,12 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName: SVTK_STANDARDIZE { - ext.args = [ - args : '', - caller : 'manta' - ] - } - -} \ No newline at end of file diff --git a/tests/modules/nf-core/svtk/standardize/test.yml b/tests/modules/nf-core/svtk/standardize/test.yml deleted file mode 100644 index cd0e9ea2ab79..000000000000 --- a/tests/modules/nf-core/svtk/standardize/test.yml +++ /dev/null @@ -1,35 +0,0 @@ -- name: svtk standardize test_svtk_standardize - command: nextflow run ./tests/modules/nf-core/svtk/standardize -entry test_svtk_standardize -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/svtk/standardize/nextflow.config - tags: - - svtk - - svtk/standardize - files: - - path: output/manta/test.candidate_small_indels.vcf.gz - - path: output/manta/test.candidate_small_indels.vcf.gz.tbi - md5sum: 4cb176febbc8c26d717a6c6e67b9c905 - - path: output/manta/test.candidate_sv.vcf.gz - - path: output/manta/test.candidate_sv.vcf.gz.tbi - md5sum: 4cb176febbc8c26d717a6c6e67b9c905 - - path: output/manta/test.diploid_sv.vcf.gz - - path: output/manta/test.diploid_sv.vcf.gz.tbi - md5sum: 4cb176febbc8c26d717a6c6e67b9c905 - - path: output/svtk/test.std.vcf.gz - md5sum: f7530f3bc7e6020e758cc996adc8ae35 - -- name: svtk standardize test_svtk_standardize_no_contigs - command: nextflow run ./tests/modules/nf-core/svtk/standardize -entry test_svtk_standardize_no_contigs -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/svtk/standardize/nextflow.config - tags: - - svtk - - svtk/standardize - files: - - path: output/manta/test.candidate_small_indels.vcf.gz - - path: output/manta/test.candidate_small_indels.vcf.gz.tbi - md5sum: 4cb176febbc8c26d717a6c6e67b9c905 - - path: output/manta/test.candidate_sv.vcf.gz - - path: output/manta/test.candidate_sv.vcf.gz.tbi - md5sum: 4cb176febbc8c26d717a6c6e67b9c905 - - path: output/manta/test.diploid_sv.vcf.gz - - path: output/manta/test.diploid_sv.vcf.gz.tbi - md5sum: 4cb176febbc8c26d717a6c6e67b9c905 - - path: output/svtk/test.std.vcf.gz - md5sum: ea67be7438a0fb72db8096e1bc1bb957 diff --git a/tests/modules/nf-core/ultra/index/main.nf b/tests/modules/nf-core/ultra/index/main.nf new file mode 100644 index 000000000000..892f8d332e0c --- /dev/null +++ b/tests/modules/nf-core/ultra/index/main.nf @@ -0,0 +1,18 @@ +#!/usr/bin/env nextflow + +nextflow.enable.dsl = 2 + +include { ULTRA_INDEX } from '../../../../../modules/nf-core/ultra/index/main.nf' +include { GNU_SORT } from '../../../../../modules/nf-core/gnu/sort/main.nf' + +workflow test_ultra_index { + + input = [ + [ id:'test' ], + file(params.test_data['homo_sapiens']['genome']['genome_gtf'] , checkIfExists: true) + ] + genome = file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + + GNU_SORT ( input ) + ULTRA_INDEX ( genome, GNU_SORT.out.sorted.map{ it[1] } ) +} diff --git a/tests/modules/nf-core/ultra/index/nextflow.config b/tests/modules/nf-core/ultra/index/nextflow.config new file mode 100644 index 000000000000..bb62486aef24 --- /dev/null +++ b/tests/modules/nf-core/ultra/index/nextflow.config @@ -0,0 +1,14 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: GNU_SORT { + ext.args = '-k1,1 -k4,4n' + ext.prefix = { "${input.baseName}_sorted" } + } + + withName: ULTRA_INDEX { + ext.args = '--disable_infer' + } + +} diff --git a/tests/modules/nf-core/ultra/index/test.yml b/tests/modules/nf-core/ultra/index/test.yml new file mode 100644 index 000000000000..85374f5851bb --- /dev/null +++ b/tests/modules/nf-core/ultra/index/test.yml @@ -0,0 +1,31 @@ +- name: ultra index test_ultra_index + command: nextflow run ./tests/modules/nf-core/ultra/index -entry test_ultra_index -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/ultra/index/nextflow.config + tags: + - ultra/index + - ultra + files: + - path: output/gnu/genome_sorted.gtf + md5sum: 5cc4a890e302e08c88c8645e62be50d6 + - path: output/gnu/versions.yml + - path: output/ultra/all_splice_pairs_annotations.pickle + - path: output/ultra/all_splice_sites_annotations.pickle + - path: output/ultra/chr_to_id.pickle + - path: output/ultra/database.db + - path: output/ultra/exon_choordinates_to_id.pickle + - path: output/ultra/flank_choordinates.pickle + - path: output/ultra/gene_to_small_segments.pickle + - path: output/ultra/id_to_chr.pickle + - path: output/ultra/max_intron_chr.pickle + - path: output/ultra/parts_to_segments.pickle + - path: output/ultra/ref_exon_sequences.pickle + - path: output/ultra/ref_flank_sequences.pickle + - path: output/ultra/ref_part_sequences.pickle + - path: output/ultra/ref_segment_sequences.pickle + - path: output/ultra/refs_id_lengths.pickle + - path: output/ultra/refs_lengths.pickle + - path: output/ultra/segment_id_to_choordinates.pickle + - path: output/ultra/segment_to_gene.pickle + - path: output/ultra/segment_to_ref.pickle + - path: output/ultra/splices_to_transcripts.pickle + - path: output/ultra/transcripts_to_splices.pickle + - path: output/ultra/versions.yml diff --git a/tests/modules/nf-core/vrhyme/extractunbinned/main.nf b/tests/modules/nf-core/vrhyme/extractunbinned/main.nf deleted file mode 100644 index c30ee1b88213..000000000000 --- a/tests/modules/nf-core/vrhyme/extractunbinned/main.nf +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { GUNZIP } from '../../../../../modules/nf-core/gunzip/main.nf' -include { VRHYME_VRHYME } from '../../../../../modules/nf-core/vrhyme/vrhyme/main.nf' -include { VRHYME_EXTRACTUNBINNED } from '../../../../../modules/nf-core/vrhyme/extractunbinned/main.nf' - -workflow test_vrhyme_extractunbinned { - - reads = [ - [ id:'test', single_end:false ], // meta map - [ - file(params.test_data['bacteroides_fragilis']['illumina']['test1_1_fastq_gz'], checkIfExists: true), - file(params.test_data['bacteroides_fragilis']['illumina']['test1_2_fastq_gz'], checkIfExists: true) - ] - ] - - fasta = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['bacteroides_fragilis']['illumina']['test1_contigs_fa_gz'], checkIfExists: true) - ] - - GUNZIP ( fasta ) - - VRHYME_VRHYME ( reads , GUNZIP.out.gunzip ) - - VRHYME_EXTRACTUNBINNED ( VRHYME_VRHYME.out.membership , GUNZIP.out.gunzip ) -} diff --git a/tests/modules/nf-core/vrhyme/extractunbinned/nextflow.config b/tests/modules/nf-core/vrhyme/extractunbinned/nextflow.config deleted file mode 100644 index 50f50a7a3579..000000000000 --- a/tests/modules/nf-core/vrhyme/extractunbinned/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} \ No newline at end of file diff --git a/tests/modules/nf-core/vrhyme/extractunbinned/test.yml b/tests/modules/nf-core/vrhyme/extractunbinned/test.yml deleted file mode 100644 index 1c7dd18effae..000000000000 --- a/tests/modules/nf-core/vrhyme/extractunbinned/test.yml +++ /dev/null @@ -1,18 +0,0 @@ -- name: vrhyme extractunbinned test_vrhyme_extractunbinned - command: nextflow run ./tests/modules/nf-core/vrhyme/extractunbinned -entry test_vrhyme_extractunbinned -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/vrhyme/extractunbinned/nextflow.config - tags: - - vrhyme - - vrhyme/extractunbinned - files: - - path: output/vrhyme/test_unbinned_sequences.fasta - md5sum: 816e986c8ad8f277eb4a4891a12d7aff - - path: output/vrhyme/versions.yml - -- name: vrhyme extractunbinned test_vrhyme_extractunbinned_stub - command: nextflow run ./tests/modules/nf-core/vrhyme/extractunbinned -entry test_vrhyme_extractunbinned -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/vrhyme/extractunbinned/nextflow.config -stub-run - tags: - - vrhyme - - vrhyme/extractunbinned - files: - - path: output/vrhyme/test_unbinned_sequences.fasta - - path: output/vrhyme/versions.yml diff --git a/tests/modules/nf-core/vrhyme/linkbins/main.nf b/tests/modules/nf-core/vrhyme/linkbins/main.nf deleted file mode 100644 index c03ac4d6ebc0..000000000000 --- a/tests/modules/nf-core/vrhyme/linkbins/main.nf +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env nextflow - -nextflow.enable.dsl = 2 - -include { GUNZIP } from '../../../../../modules/nf-core/gunzip/main.nf' -include { VRHYME_VRHYME } from '../../../../../modules/nf-core/vrhyme/vrhyme/main.nf' -include { VRHYME_LINKBINS } from '../../../../../modules/nf-core/vrhyme/linkbins/main.nf' - -workflow test_vrhyme_linkbins { - - reads = [ - [ id:'test', single_end:false ], // meta map - [ - file(params.test_data['bacteroides_fragilis']['illumina']['test1_1_fastq_gz'], checkIfExists: true), - file(params.test_data['bacteroides_fragilis']['illumina']['test1_2_fastq_gz'], checkIfExists: true) - ] - ] - - fasta = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['bacteroides_fragilis']['illumina']['test1_contigs_fa_gz'], checkIfExists: true) - ] - - GUNZIP ( fasta ) - VRHYME_VRHYME ( reads , GUNZIP.out.gunzip ) - VRHYME_LINKBINS ( VRHYME_VRHYME.out.bins ) -} diff --git a/tests/modules/nf-core/vrhyme/linkbins/nextflow.config b/tests/modules/nf-core/vrhyme/linkbins/nextflow.config deleted file mode 100644 index 50f50a7a3579..000000000000 --- a/tests/modules/nf-core/vrhyme/linkbins/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} \ No newline at end of file diff --git a/tests/modules/nf-core/vrhyme/linkbins/test.yml b/tests/modules/nf-core/vrhyme/linkbins/test.yml deleted file mode 100644 index f4b3bbb698c1..000000000000 --- a/tests/modules/nf-core/vrhyme/linkbins/test.yml +++ /dev/null @@ -1,18 +0,0 @@ -- name: vrhyme linkbins test_vrhyme_linkbins - command: nextflow run ./tests/modules/nf-core/vrhyme/linkbins -entry test_vrhyme_linkbins -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/vrhyme/linkbins/nextflow.config - tags: - - vrhyme/linkbins - - vrhyme - files: - - path: output/vrhyme/test_linked_bins.fasta - md5sum: 92cee5d85211d1e657f67ba75d3b2b30 - - path: output/vrhyme/versions.yml - -- name: vrhyme linkbins test_vrhyme_linkbins_stub - command: nextflow run ./tests/modules/nf-core/vrhyme/linkbins -entry test_vrhyme_linkbins -c ./tests/config/nextflow.config -c ./tests/modules/nf-core/vrhyme/linkbins/nextflow.config -stub-run - tags: - - vrhyme/linkbins - - vrhyme - files: - - path: output/vrhyme/test_linked_bins.fasta - - path: output/vrhyme/versions.yml