From 9eadd68b7ea72c11f11bd31b56c54e8c6af94fb2 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Tue, 21 Nov 2023 11:44:48 +0000 Subject: [PATCH 01/62] Bump versions for work on 3.14.0 milestone --- CHANGELOG.md | 11 +++++++++++ nextflow.config | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ef0b84d7..58e29b10c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v3.14.0dev - [date] + +### Credits + +### Enhancements & fixes + +### Software dependencies + +### Modules / Subworkflows + + ## [[3.13.2](https://github.com/nf-core/rnaseq/releases/tag/3.13.2)] - 2023-11-21 ### Credits diff --git a/nextflow.config b/nextflow.config index 89f72ec5b..d15d4435c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -317,7 +317,7 @@ manifest { description = """RNA sequencing analysis pipeline for gene/isoform quantification and extensive quality control.""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '3.13.2' + version = '3.14.0dev' doi = 'https://doi.org/10.5281/zenodo.1400710' } From e9ebeaa5e6cf00a585ea88ec547dbe9fa757437c Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Tue, 21 Nov 2023 11:47:21 +0000 Subject: [PATCH 02/62] [automated] Fix linting with Prettier --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58e29b10c..36b2ad811 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Modules / Subworkflows - ## [[3.13.2](https://github.com/nf-core/rnaseq/releases/tag/3.13.2)] - 2023-11-21 ### Credits From 0156233efa0cc9a84fd05e4a7754bc5014e766c1 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 27 Nov 2023 19:24:52 +0000 Subject: [PATCH 03/62] Update cloud_tests_full to action-tower-launch-v2 --- .github/workflows/cloud_tests_full.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cloud_tests_full.yml b/.github/workflows/cloud_tests_full.yml index 3c4b23106..b7f050ae9 100644 --- a/.github/workflows/cloud_tests_full.yml +++ b/.github/workflows/cloud_tests_full.yml @@ -23,7 +23,7 @@ jobs: matrix: aligner: ["star_salmon", "star_rsem"] steps: - - uses: seqeralabs/action-tower-launch@v1 + - uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} @@ -48,7 +48,7 @@ jobs: matrix: aligner: ["star_salmon", "star_rsem"] steps: - - uses: seqeralabs/action-tower-launch@v1 + - uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} @@ -73,7 +73,7 @@ jobs: matrix: aligner: ["star_salmon", "star_rsem"] steps: - - uses: seqeralabs/action-tower-launch@v1 + - uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} From 5371d63941580b30c6f0ff05d35de4a3b1508814 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Mon, 27 Nov 2023 19:25:22 +0000 Subject: [PATCH 04/62] Update cloud_tests_small to action-tower-launch v2 --- .github/workflows/cloud_tests_small.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cloud_tests_small.yml b/.github/workflows/cloud_tests_small.yml index 6f2e6d8a9..4c0cd2596 100644 --- a/.github/workflows/cloud_tests_small.yml +++ b/.github/workflows/cloud_tests_small.yml @@ -18,7 +18,7 @@ jobs: if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'aws' }} runs-on: ubuntu-latest steps: - - uses: seqeralabs/action-tower-launch@v1 + - uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} @@ -38,7 +38,7 @@ jobs: if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'gcp' }} runs-on: ubuntu-latest steps: - - uses: seqeralabs/action-tower-launch@v1 + - uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} @@ -58,7 +58,7 @@ jobs: if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'azure' }} runs-on: ubuntu-latest steps: - - uses: seqeralabs/action-tower-launch@v1 + - uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} From 0a1d53aad18f5f27f4c9a31e2b9ddd2ec2d2fa12 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:03:09 +0000 Subject: [PATCH 05/62] Make output directory path instead of file? --- .github/workflows/cloud_tests_full.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cloud_tests_full.yml b/.github/workflows/cloud_tests_full.yml index b7f050ae9..216ec955c 100644 --- a/.github/workflows/cloud_tests_full.yml +++ b/.github/workflows/cloud_tests_full.yml @@ -35,7 +35,7 @@ jobs: { "hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}", "aligner": "${{ matrix.aligner }}", - "outdir": "${{ secrets.TOWER_BUCKET_AWS }}/rnaseq/results-${{ github.sha }}/aligner_${{ matrix.aligner }}" + "outdir": "${{ secrets.TOWER_BUCKET_AWS }}/rnaseq/results-${{ github.sha }}/aligner_${{ matrix.aligner }}/" } - uses: actions/upload-artifact@v3 with: @@ -60,7 +60,7 @@ jobs: { "hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}", "aligner": "${{ matrix.aligner }}", - "outdir": "${{ secrets.TOWER_BUCKET_GCP }}/rnaseq/results-${{ github.sha }}/aligner_${{ matrix.aligner }}" + "outdir": "${{ secrets.TOWER_BUCKET_GCP }}/rnaseq/results-${{ github.sha }}/aligner_${{ matrix.aligner }}/" } - uses: actions/upload-artifact@v3 with: @@ -85,7 +85,7 @@ jobs: { "hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}", "aligner": "${{ matrix.aligner }}", - "outdir": "${{ secrets.TOWER_BUCKET_AZURE }}/rnaseq/results-${{ github.sha }}/aligner_${{ matrix.aligner }}", + "outdir": "${{ secrets.TOWER_BUCKET_AZURE }}/rnaseq/results-${{ github.sha }}/aligner_${{ matrix.aligner }}/", "igenomes_base": "${{ secrets.TOWER_IGENOMES_BASE_AZURE }}" } - uses: actions/upload-artifact@v3 From 73fd071b25b652c425ff9eb736a52113dd598bb3 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:14:07 +0000 Subject: [PATCH 06/62] Run on self-hosted --- .github/workflows/cloud_tests_full.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cloud_tests_full.yml b/.github/workflows/cloud_tests_full.yml index 216ec955c..da3378c5e 100644 --- a/.github/workflows/cloud_tests_full.yml +++ b/.github/workflows/cloud_tests_full.yml @@ -18,7 +18,7 @@ on: jobs: run-full-tests-on-aws: if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'aws' || !github.event.inputs }} - runs-on: ubuntu-latest + runs-on: self-hosted strategy: matrix: aligner: ["star_salmon", "star_rsem"] @@ -43,7 +43,7 @@ jobs: path: tower_action_*.log run-full-tests-on-gcp: if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'gcp' || !github.event.inputs }} - runs-on: ubuntu-latest + runs-on: self-hosted strategy: matrix: aligner: ["star_salmon", "star_rsem"] @@ -68,7 +68,7 @@ jobs: path: tower_action_*.log run-full-tests-on-azure: if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'azure' || !github.event.inputs }} - runs-on: ubuntu-latest + runs-on: self-hosted strategy: matrix: aligner: ["star_salmon", "star_rsem"] From d66151db5dce517179f60b0ea8a283f646386834 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:19:35 +0000 Subject: [PATCH 07/62] Revert self-hosted --- .github/workflows/cloud_tests_full.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cloud_tests_full.yml b/.github/workflows/cloud_tests_full.yml index da3378c5e..216ec955c 100644 --- a/.github/workflows/cloud_tests_full.yml +++ b/.github/workflows/cloud_tests_full.yml @@ -18,7 +18,7 @@ on: jobs: run-full-tests-on-aws: if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'aws' || !github.event.inputs }} - runs-on: self-hosted + runs-on: ubuntu-latest strategy: matrix: aligner: ["star_salmon", "star_rsem"] @@ -43,7 +43,7 @@ jobs: path: tower_action_*.log run-full-tests-on-gcp: if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'gcp' || !github.event.inputs }} - runs-on: self-hosted + runs-on: ubuntu-latest strategy: matrix: aligner: ["star_salmon", "star_rsem"] @@ -68,7 +68,7 @@ jobs: path: tower_action_*.log run-full-tests-on-azure: if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'azure' || !github.event.inputs }} - runs-on: self-hosted + runs-on: ubuntu-latest strategy: matrix: aligner: ["star_salmon", "star_rsem"] From c958a013daf98221d907aa8bcc3ab302aae7e71a Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:25:39 +0000 Subject: [PATCH 08/62] Add revision parameter to action --- .github/workflows/cloud_tests_full.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/cloud_tests_full.yml b/.github/workflows/cloud_tests_full.yml index 216ec955c..0396119f6 100644 --- a/.github/workflows/cloud_tests_full.yml +++ b/.github/workflows/cloud_tests_full.yml @@ -25,6 +25,7 @@ jobs: steps: - uses: seqeralabs/action-tower-launch@v2 with: + revision: ${{ github.sha }} workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} compute_env: ${{ secrets.TOWER_CE_AWS_CPU }} @@ -41,6 +42,7 @@ jobs: with: name: Tower debug log file path: tower_action_*.log + run-full-tests-on-gcp: if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'gcp' || !github.event.inputs }} runs-on: ubuntu-latest @@ -50,6 +52,7 @@ jobs: steps: - uses: seqeralabs/action-tower-launch@v2 with: + revision: ${{ github.sha }} workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} compute_env: ${{ secrets.TOWER_CE_GCP_CPU }} @@ -66,6 +69,7 @@ jobs: with: name: Tower debug log file path: tower_action_*.log + run-full-tests-on-azure: if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'azure' || !github.event.inputs }} runs-on: ubuntu-latest @@ -75,6 +79,7 @@ jobs: steps: - uses: seqeralabs/action-tower-launch@v2 with: + revision: ${{ github.sha }} workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} compute_env: ${{ secrets.TOWER_CE_AZURE_CPU }} From dbb185ff2c6368be7d0d4468d648c6d3fa1eb484 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:37:17 +0000 Subject: [PATCH 09/62] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36b2ad811..9810936b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Enhancements & fixes +- Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling. + ### Software dependencies ### Modules / Subworkflows From a9f581078daca557aff42e5ba91625b6e84b1d58 Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:38:04 +0000 Subject: [PATCH 10/62] Add PR to CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9810936b3..d6544378a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Enhancements & fixes -- Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling. +- [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling. ### Software dependencies From dc2d75e817d0b103a16b065fc59954fe779afb71 Mon Sep 17 00:00:00 2001 From: vladsaveliev Date: Mon, 4 Dec 2023 15:13:02 +0100 Subject: [PATCH 11/62] MultiQC dupradar custom plot: specify plot_type explicitly --- bin/dupradar.r | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/dupradar.r b/bin/dupradar.r index d58b0eee1..00119f550 100755 --- a/bin/dupradar.r +++ b/bin/dupradar.r @@ -93,6 +93,7 @@ curve_y <- curve_y[seq(1, length(curve_y), 10)] curve_x = 10^curve_x # Write to file line="#id: dupradar +#plot_type: 'linegraph' #section_name: 'DupRadar' #section_href: 'bioconductor.org/packages/release/bioc/html/dupRadar.html' #description: \"provides duplication rate quality control for RNA-Seq datasets. Highly expressed genes can be expected to have a lot of duplicate reads, but high numbers of duplicates at low read counts can indicate low library complexity with technical duplication. From 277af7d8801f0f30af827c0a484e67e30f35a41e Mon Sep 17 00:00:00 2001 From: Mahesh Binzer-Panchal Date: Fri, 8 Dec 2023 10:17:04 +0000 Subject: [PATCH 12/62] Update FastQC and UMItools modules --- modules.json | 44 +- modules/nf-core/fastp/environment.yml | 7 + modules/nf-core/fastp/main.nf | 2 +- modules/nf-core/fastp/meta.yml | 4 +- modules/nf-core/fastp/tests/main.nf.test | 485 ++++++++++++++++++ modules/nf-core/fastp/tests/main.nf.test.snap | 52 ++ modules/nf-core/fastp/tests/nextflow.config | 6 + modules/nf-core/fastp/tests/tags.yml | 2 + modules/nf-core/fastqc/environment.yml | 7 + modules/nf-core/fastqc/main.nf | 6 +- modules/nf-core/fastqc/meta.yml | 5 + modules/nf-core/fastqc/tests/main.nf.test | 73 ++- modules/nf-core/fastqc/tests/tags.yml | 2 + .../picard/markduplicates/environment.yml | 7 + modules/nf-core/picard/markduplicates/main.nf | 6 +- .../nf-core/picard/markduplicates/meta.yml | 4 + .../picard/markduplicates/tests/main.nf.test | 111 ++++ .../markduplicates/tests/main.nf.test.snap | 44 ++ .../markduplicates/tests/nextflow.config | 6 + .../picard/markduplicates/tests/tags.yml | 2 + .../nf-core/samtools/flagstat/environment.yml | 7 + modules/nf-core/samtools/flagstat/main.nf | 6 +- modules/nf-core/samtools/flagstat/meta.yml | 2 + .../samtools/flagstat/tests/main.nf.test | 36 ++ .../samtools/flagstat/tests/main.nf.test.snap | 16 + .../nf-core/samtools/flagstat/tests/tags.yml | 2 + .../nf-core/samtools/idxstats/environment.yml | 7 + modules/nf-core/samtools/idxstats/main.nf | 6 +- modules/nf-core/samtools/idxstats/meta.yml | 2 + .../samtools/idxstats/tests/main.nf.test | 36 ++ .../samtools/idxstats/tests/main.nf.test.snap | 16 + .../nf-core/samtools/idxstats/tests/tags.yml | 2 + .../nf-core/samtools/index/environment.yml | 7 + modules/nf-core/samtools/index/main.nf | 6 +- modules/nf-core/samtools/index/meta.yml | 4 + .../samtools/index/tests/csi.nextflow.config | 7 + .../nf-core/samtools/index/tests/main.nf.test | 87 ++++ .../samtools/index/tests/main.nf.test.snap | 28 + modules/nf-core/samtools/index/tests/tags.yml | 2 + modules/nf-core/samtools/sort/environment.yml | 7 + modules/nf-core/samtools/sort/main.nf | 6 +- modules/nf-core/samtools/sort/meta.yml | 3 + .../nf-core/samtools/sort/tests/main.nf.test | 73 +++ .../samtools/sort/tests/main.nf.test.snap | 48 ++ .../samtools/sort/tests/nextflow.config | 7 + modules/nf-core/samtools/sort/tests/tags.yml | 3 + .../nf-core/samtools/stats/environment.yml | 7 + modules/nf-core/samtools/stats/main.nf | 6 +- modules/nf-core/samtools/stats/meta.yml | 4 + .../nf-core/samtools/stats/tests/main.nf.test | 78 +++ .../samtools/stats/tests/main.nf.test.snap | 64 +++ modules/nf-core/samtools/stats/tests/tags.yml | 2 + modules/nf-core/trimgalore/environment.yml | 7 + modules/nf-core/trimgalore/main.nf | 2 +- modules/nf-core/trimgalore/meta.yml | 4 + modules/nf-core/trimgalore/tests/main.nf.test | 105 ++++ .../trimgalore/tests/main.nf.test.snap | 148 ++++++ modules/nf-core/trimgalore/tests/tags.yml | 2 + .../nf-core/umitools/dedup/environment.yml | 7 + modules/nf-core/umitools/dedup/main.nf | 6 +- modules/nf-core/umitools/dedup/meta.yml | 9 +- .../nf-core/umitools/extract/environment.yml | 7 + modules/nf-core/umitools/extract/main.nf | 6 +- modules/nf-core/umitools/extract/meta.yml | 17 +- .../umitools/extract/tests/main.nf.test | 35 ++ .../umitools/extract/tests/main.nf.test.snap | 10 + .../umitools/extract/tests/nextflow.config | 9 + .../nf-core/umitools/extract/tests/tags.yml | 2 + .../meta.yml | 4 +- .../tests/main.nf.test | 51 ++ .../tests/main.nf.test.snap | 41 ++ .../tests/tags.yml | 2 + .../bam_markduplicates_picard/meta.yml | 5 +- .../nf-core/bam_sort_stats_samtools/meta.yml | 3 + .../tests/main.nf.test | 78 +++ .../tests/main.nf.test.snap | 86 ++++ .../bam_sort_stats_samtools/tests/tags.yml | 2 + .../nf-core/bam_stats_samtools/meta.yml | 2 + .../bam_stats_samtools/tests/main.nf.test | 102 ++++ .../tests/main.nf.test.snap | 128 +++++ .../nf-core/bam_stats_samtools/tests/tags.yml | 2 + .../fastq_fastqc_umitools_fastp/meta.yml | 8 +- .../tests/main.nf.test | 60 +++ .../tests/main.nf.test.snap | 81 +++ .../tests/tags.yml | 2 + .../fastq_fastqc_umitools_trimgalore/meta.yml | 10 +- 86 files changed, 2432 insertions(+), 73 deletions(-) create mode 100644 modules/nf-core/fastp/environment.yml create mode 100644 modules/nf-core/fastp/tests/main.nf.test create mode 100644 modules/nf-core/fastp/tests/main.nf.test.snap create mode 100644 modules/nf-core/fastp/tests/nextflow.config create mode 100644 modules/nf-core/fastp/tests/tags.yml create mode 100644 modules/nf-core/fastqc/environment.yml create mode 100644 modules/nf-core/fastqc/tests/tags.yml create mode 100644 modules/nf-core/picard/markduplicates/environment.yml create mode 100644 modules/nf-core/picard/markduplicates/tests/main.nf.test create mode 100644 modules/nf-core/picard/markduplicates/tests/main.nf.test.snap create mode 100644 modules/nf-core/picard/markduplicates/tests/nextflow.config create mode 100644 modules/nf-core/picard/markduplicates/tests/tags.yml create mode 100644 modules/nf-core/samtools/flagstat/environment.yml create mode 100644 modules/nf-core/samtools/flagstat/tests/main.nf.test create mode 100644 modules/nf-core/samtools/flagstat/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/flagstat/tests/tags.yml create mode 100644 modules/nf-core/samtools/idxstats/environment.yml create mode 100644 modules/nf-core/samtools/idxstats/tests/main.nf.test create mode 100644 modules/nf-core/samtools/idxstats/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/idxstats/tests/tags.yml create mode 100644 modules/nf-core/samtools/index/environment.yml create mode 100644 modules/nf-core/samtools/index/tests/csi.nextflow.config create mode 100644 modules/nf-core/samtools/index/tests/main.nf.test create mode 100644 modules/nf-core/samtools/index/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/index/tests/tags.yml create mode 100644 modules/nf-core/samtools/sort/environment.yml create mode 100644 modules/nf-core/samtools/sort/tests/main.nf.test create mode 100644 modules/nf-core/samtools/sort/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/sort/tests/nextflow.config create mode 100644 modules/nf-core/samtools/sort/tests/tags.yml create mode 100644 modules/nf-core/samtools/stats/environment.yml create mode 100644 modules/nf-core/samtools/stats/tests/main.nf.test create mode 100644 modules/nf-core/samtools/stats/tests/main.nf.test.snap create mode 100644 modules/nf-core/samtools/stats/tests/tags.yml create mode 100644 modules/nf-core/trimgalore/environment.yml create mode 100644 modules/nf-core/trimgalore/tests/main.nf.test create mode 100644 modules/nf-core/trimgalore/tests/main.nf.test.snap create mode 100644 modules/nf-core/trimgalore/tests/tags.yml create mode 100644 modules/nf-core/umitools/dedup/environment.yml create mode 100644 modules/nf-core/umitools/extract/environment.yml create mode 100644 modules/nf-core/umitools/extract/tests/main.nf.test create mode 100644 modules/nf-core/umitools/extract/tests/main.nf.test.snap create mode 100644 modules/nf-core/umitools/extract/tests/nextflow.config create mode 100644 modules/nf-core/umitools/extract/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_stats_samtools/tests/tags.yml create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml diff --git a/modules.json b/modules.json index 74bd0d197..a469fc895 100644 --- a/modules.json +++ b/modules.json @@ -27,12 +27,12 @@ }, "fastp": { "branch": "master", - "git_sha": "d497a4868ace3302016ea8ed4b395072d5e833cd", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] }, "fastqc": { "branch": "master", - "git_sha": "102cc9b709a6da9f7cee2373563ab1464fca9c0a", + "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", "installed_by": ["fastq_fastqc_umitools_trimgalore", "fastq_fastqc_umitools_fastp"] }, "fq/subsample": { @@ -77,7 +77,7 @@ }, "picard/markduplicates": { "branch": "master", - "git_sha": "2ee934606f1fdf7fc1cb05d6e8abc13bec8ab448", + "git_sha": "20b0918591d4ba20047d7e13e5094bcceba81447", "installed_by": ["bam_markduplicates_picard"] }, "preseq/lcextrap": { @@ -152,31 +152,31 @@ }, "samtools/flagstat": { "branch": "master", - "git_sha": "570ec5bcfe19c49e16c9ca35a7a116563af6cc1c", + "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", "installed_by": ["bam_stats_samtools"] }, "samtools/idxstats": { "branch": "master", - "git_sha": "e662ab16e0c11f1e62983e21de9871f59371a639", + "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", "installed_by": ["bam_stats_samtools"] }, "samtools/index": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", "installed_by": [ + "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", - "bam_sort_stats_samtools", - "bam_dedup_stats_samtools_umitools" + "bam_sort_stats_samtools" ] }, "samtools/sort": { "branch": "master", - "git_sha": "a0f7be95788366c1923171e358da7d049eb440f9", + "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", "installed_by": ["bam_sort_stats_samtools"] }, "samtools/stats": { "branch": "master", - "git_sha": "735e1e04e7e01751d2d6e97055bbdb6f70683cc1", + "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", "installed_by": ["bam_stats_samtools"] }, "sortmerna": { @@ -206,7 +206,7 @@ }, "trimgalore": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, "ucsc/bedclip": { @@ -221,13 +221,13 @@ }, "umitools/dedup": { "branch": "master", - "git_sha": "7297204bf49273300a3dbfa4b7a4027c8683f1bd", + "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", "installed_by": ["bam_dedup_stats_samtools_umitools"] }, "umitools/extract": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] + "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", + "installed_by": ["fastq_fastqc_umitools_trimgalore", "fastq_fastqc_umitools_fastp"] }, "untar": { "branch": "master", @@ -240,12 +240,12 @@ "nf-core": { "bam_dedup_stats_samtools_umitools": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", "installed_by": ["subworkflows"] }, "bam_markduplicates_picard": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", "installed_by": ["subworkflows"] }, "bam_rseqc": { @@ -255,16 +255,16 @@ }, "bam_sort_stats_samtools": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", "installed_by": ["fastq_align_hisat2"] }, "bam_stats_samtools": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", "installed_by": [ - "bam_sort_stats_samtools", + "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", - "bam_dedup_stats_samtools_umitools" + "bam_sort_stats_samtools" ] }, "bedgraph_bedclip_bedgraphtobigwig": { @@ -279,12 +279,12 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "3e8b0c1144ccf60b7848efbdc2be285ff20b49ee", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", - "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", + "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { diff --git a/modules/nf-core/fastp/environment.yml b/modules/nf-core/fastp/environment.yml new file mode 100644 index 000000000..70389e664 --- /dev/null +++ b/modules/nf-core/fastp/environment.yml @@ -0,0 +1,7 @@ +name: fastp +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::fastp=0.23.4 diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index 831b7f128..c8e815aea 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -2,7 +2,7 @@ process FASTP { tag "$meta.id" label 'process_medium' - conda "bioconda::fastp=0.23.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/fastp:0.23.4--h5f740d0_0' : 'biocontainers/fastp:0.23.4--h5f740d0_0' }" diff --git a/modules/nf-core/fastp/meta.yml b/modules/nf-core/fastp/meta.yml index 197ea7ca6..c22a16abd 100644 --- a/modules/nf-core/fastp/meta.yml +++ b/modules/nf-core/fastp/meta.yml @@ -33,7 +33,6 @@ input: - save_merged: type: boolean description: Specify true to save all merged reads to the a file ending in `*.merged.fastq.gz` - output: - meta: type: map @@ -71,3 +70,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test new file mode 100644 index 000000000..f610b735e --- /dev/null +++ b/modules/nf-core/fastp/tests/main.nf.test @@ -0,0 +1,485 @@ +nextflow_process { + + name "Test Process FASTP" + script "../main.nf" + process "FASTP" + tag "modules" + tag "modules_nfcore" + tag "fastp" + + test("test_fastp_single_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + input[0] = [ + [ id:'test', single_end:true ], + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + ] + + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:12.922000 K (92.984097%)", + "single end (151 cycles)" ] + def log_text = [ "Q20 bases: 12922(92.9841%)", + "reads passed filter: 99" ] + def read_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { assert snapshot(process.out.json).match("test_fastp_single_end_json") }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + test("test_fastp_paired_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + input[0] = [ + [ 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) ] + ] + + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:25.719000 K (93.033098%)", + "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] + def log_text = [ "No adapter detected for read1", + "Q30 bases: 12281(88.3716%)"] + def json_text = ['"passed_filter_reads": 198'] + def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + test("fastp test_fastp_interleaved") { + config './nextflow.config' + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = false + + input[0] = [ [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_interleaved_fastq_gz'], checkIfExists: true) ] + ] + + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:25.719000 K (93.033098%)", + "paired end (151 cycles + 151 cycles)"] + def log_text = [ "Q20 bases: 12922(92.9841%)", + "reads passed filter: 198"] + def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { assert snapshot(process.out.json).match("fastp test_fastp_interleaved_json") }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + test("test_fastp_single_end_trim_fail") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = true + save_merged = false + + input[0] = [ [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + ] + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:12.922000 K (92.984097%)", + "single end (151 cycles)"] + def log_text = [ "Q20 bases: 12922(92.9841%)", + "reads passed filter: 99" ] + def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } + } + }, + { failed_read_lines.each { failed_read_line -> + { assert path(process.out.reads_fail.get(0).get(1)).linesGzip.contains(failed_read_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { assert snapshot(process.out.json).match("test_fastp_single_end_trim_fail_json") }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + test("test_fastp_paired_end_trim_fail") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = true + save_merged = false + + input[0] = [ + [ 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) + ] + ] + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "Q20 bases:25.719000 K (93.033098%)", + "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] + def log_text = [ "No adapter detected for read1", + "Q30 bases: 12281(88.3716%)"] + def json_text = ['"passed_filter_reads": 198'] + def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { failed_read2_lines.each { failed_read2_line -> + { assert path(process.out.reads_fail.get(0).get(1).get(1)).linesGzip.contains(failed_read2_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + test("test_fastp_paired_end_merged") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = [] + save_trimmed_fail = false + save_merged = true + + input[0] = [ [ 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) ] + ] + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "
"] + def log_text = [ "Merged and filtered:", + "total reads: 75", + "total bases: 13683"] + def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683'] + def read1_lines = [ "@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", + "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", + "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { read_merged_lines.each { read_merged_line -> + { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + } + + test("test_fastp_paired_end_merged_adapterlist") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + adapter_fasta = file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/fastp/adapters.fasta", checkIfExists: true) + save_trimmed_fail = false + save_merged = true + + input[0] = [ [ 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) ] + ] + input[1] = adapter_fasta + input[2] = save_trimmed_fail + input[3] = save_merged + """ + } + } + + then { + def html_text = [ "
"] + def log_text = [ "Merged and filtered:", + "total reads: 75", + "total bases: 13683"] + def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683',"--adapter_fasta"] + def read1_lines = ["@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", + "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", + "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { read_merged_lines.each { read_merged_line -> + { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } + } + }, + { html_text.each { html_part -> + { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } + } + }, + { json_text.each { json_part -> + { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } + } + }, + { log_text.each { log_part -> + { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } + } + }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + } +} diff --git a/modules/nf-core/fastp/tests/main.nf.test.snap b/modules/nf-core/fastp/tests/main.nf.test.snap new file mode 100644 index 000000000..0fa68c7d7 --- /dev/null +++ b/modules/nf-core/fastp/tests/main.nf.test.snap @@ -0,0 +1,52 @@ +{ + "fastp test_fastp_interleaved_json": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,168f516f7bd4b7b6c32da7cba87299a4" + ] + ] + ], + "timestamp": "2023-10-17T11:04:45.794175881" + }, + "test_fastp_single_end_json": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" + ] + ] + ], + "timestamp": "2023-10-17T11:04:10.566343705" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" + ] + ], + "timestamp": "2023-10-17T11:04:10.582076024" + }, + "test_fastp_single_end_trim_fail_json": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" + ] + ] + ], + "timestamp": "2023-10-17T11:05:00.379878948" + } +} \ No newline at end of file diff --git a/modules/nf-core/fastp/tests/nextflow.config b/modules/nf-core/fastp/tests/nextflow.config new file mode 100644 index 000000000..0f7849ad9 --- /dev/null +++ b/modules/nf-core/fastp/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + + withName: FASTP { + ext.args = "--interleaved_in" + } +} diff --git a/modules/nf-core/fastp/tests/tags.yml b/modules/nf-core/fastp/tests/tags.yml new file mode 100644 index 000000000..c1afcce75 --- /dev/null +++ b/modules/nf-core/fastp/tests/tags.yml @@ -0,0 +1,2 @@ +fastp: + - modules/nf-core/fastp/** diff --git a/modules/nf-core/fastqc/environment.yml b/modules/nf-core/fastqc/environment.yml new file mode 100644 index 000000000..1787b38a9 --- /dev/null +++ b/modules/nf-core/fastqc/environment.yml @@ -0,0 +1,7 @@ +name: fastqc +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::fastqc=0.12.1 diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 67209f793..9e19a74c5 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -2,7 +2,7 @@ process FASTQC { tag "$meta.id" label 'process_medium' - conda "bioconda::fastqc=0.12.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' : 'biocontainers/fastqc:0.12.1--hdfd78af_0' }" @@ -37,7 +37,7 @@ process FASTQC { cat <<-END_VERSIONS > versions.yml "${task.process}": - fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) + fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) END_VERSIONS """ @@ -49,7 +49,7 @@ process FASTQC { cat <<-END_VERSIONS > versions.yml "${task.process}": - fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) + fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) END_VERSIONS """ } diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml index 4da5bb5a0..ee5507e06 100644 --- a/modules/nf-core/fastqc/meta.yml +++ b/modules/nf-core/fastqc/meta.yml @@ -50,3 +50,8 @@ authors: - "@grst" - "@ewels" - "@FelixKrueger" +maintainers: + - "@drpatelh" + - "@grst" + - "@ewels" + - "@FelixKrueger" diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index badb67161..b9e8f926e 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -1,10 +1,11 @@ nextflow_process { name "Test Process FASTQC" - script "modules/nf-core/fastqc/main.nf" + script "../main.nf" process "FASTQC" - tag "fastqc" + tag "modules" tag "modules_nfcore" + tag "fastqc" test("Single-Read") { @@ -37,4 +38,72 @@ nextflow_process { ) } } +// TODO +// // +// // Test with paired-end data +// // +// workflow test_fastqc_paired_end { +// 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) +// ] +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with interleaved data +// // +// workflow test_fastqc_interleaved { +// input = [ +// [id: 'test', single_end: false], // meta map +// file(params.test_data['sarscov2']['illumina']['test_interleaved_fastq_gz'], checkIfExists: true) +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with bam data +// // +// workflow test_fastqc_bam { +// input = [ +// [id: 'test', single_end: false], // meta map +// file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with multiple samples +// // +// workflow test_fastqc_multiple { +// 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), +// file(params.test_data['sarscov2']['illumina']['test2_1_fastq_gz'], checkIfExists: true), +// file(params.test_data['sarscov2']['illumina']['test2_2_fastq_gz'], checkIfExists: true) +// ] +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with custom prefix +// // +// workflow test_fastqc_custom_prefix { +// input = [ +// [ id:'mysample', single_end:true ], // meta map +// file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) +// ] + +// FASTQC ( input ) +// } } diff --git a/modules/nf-core/fastqc/tests/tags.yml b/modules/nf-core/fastqc/tests/tags.yml new file mode 100644 index 000000000..7834294ba --- /dev/null +++ b/modules/nf-core/fastqc/tests/tags.yml @@ -0,0 +1,2 @@ +fastqc: + - modules/nf-core/fastqc/** diff --git a/modules/nf-core/picard/markduplicates/environment.yml b/modules/nf-core/picard/markduplicates/environment.yml new file mode 100644 index 000000000..58b795f54 --- /dev/null +++ b/modules/nf-core/picard/markduplicates/environment.yml @@ -0,0 +1,7 @@ +name: picard_markduplicates +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::picard=3.1.1 diff --git a/modules/nf-core/picard/markduplicates/main.nf b/modules/nf-core/picard/markduplicates/main.nf index ebfa0864d..80930cc41 100644 --- a/modules/nf-core/picard/markduplicates/main.nf +++ b/modules/nf-core/picard/markduplicates/main.nf @@ -2,10 +2,10 @@ process PICARD_MARKDUPLICATES { tag "$meta.id" label 'process_medium' - conda "bioconda::picard=3.0.0" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.0.0--hdfd78af_1' : - 'biocontainers/picard:3.0.0--hdfd78af_1' }" + 'https://depot.galaxyproject.org/singularity/picard:3.1.1--hdfd78af_0' : + 'biocontainers/picard:3.1.1--hdfd78af_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/picard/markduplicates/meta.yml b/modules/nf-core/picard/markduplicates/meta.yml index f7693d2f0..1ab90c075 100644 --- a/modules/nf-core/picard/markduplicates/meta.yml +++ b/modules/nf-core/picard/markduplicates/meta.yml @@ -69,3 +69,7 @@ authors: - "@drpatelh" - "@projectoriented" - "@ramprasadn" +maintainers: + - "@drpatelh" + - "@projectoriented" + - "@ramprasadn" diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test b/modules/nf-core/picard/markduplicates/tests/main.nf.test new file mode 100644 index 000000000..b2bba094f --- /dev/null +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test @@ -0,0 +1,111 @@ +nextflow_process { + + name "Test Process PICARD_MARKDUPLICATES" + script "../main.nf" + process "PICARD_MARKDUPLICATES" + config "./nextflow.config" + tag "modules" + tag "modules_nfcore" + tag "picard" + tag "picard/markduplicates" + + test("sarscov2 - bam, fasta, fai - sorted bam") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + input[2] = [ + [ id:'genome' ], + file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + path(process.out.metrics.get(0).get(1)).readLines()[0..2], + process.out.versions + ).match() } + ) + } + } + + test("sarscov2 - bam, fasta, fai - unsorted bam") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + input[2] = [ + [ id:'genome' ], + file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + path(process.out.metrics.get(0).get(1)).readLines()[0..2], + process.out.versions + ).match() } + ) + } + } + + test("homo_sapiens - cram, fasta, fai") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true) + ] + input[1] = [ + [ id:'genome' ], + file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + ] + input[2] = [ + [ id:'genome' ], + file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + path(process.out.metrics.get(0).get(1)).readLines()[0..2], + process.out.versions + ).match() } + ) + } + } + +} diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap new file mode 100644 index 000000000..cd788a4d6 --- /dev/null +++ b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap @@ -0,0 +1,44 @@ +{ + "sarscov2 - bam, fasta, fai - unsorted bam": { + "content": [ + "test.marked.bam", + [ + "## htsjdk.samtools.metrics.StringHeader", + "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "## htsjdk.samtools.metrics.StringHeader" + ], + [ + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" + ] + ], + "timestamp": "2023-11-28T10:50:37.735339781" + }, + "homo_sapiens - cram, fasta, fai": { + "content": [ + "test.marked.bam", + [ + "## htsjdk.samtools.metrics.StringHeader", + "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "## htsjdk.samtools.metrics.StringHeader" + ], + [ + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" + ] + ], + "timestamp": "2023-11-28T10:50:48.897954543" + }, + "sarscov2 - bam, fasta, fai - sorted bam": { + "content": [ + "test.marked.bam", + [ + "## htsjdk.samtools.metrics.StringHeader", + "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", + "## htsjdk.samtools.metrics.StringHeader" + ], + [ + "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" + ] + ], + "timestamp": "2023-11-28T10:50:26.591387512" + } +} \ No newline at end of file diff --git a/modules/nf-core/picard/markduplicates/tests/nextflow.config b/modules/nf-core/picard/markduplicates/tests/nextflow.config new file mode 100644 index 000000000..02818dd6e --- /dev/null +++ b/modules/nf-core/picard/markduplicates/tests/nextflow.config @@ -0,0 +1,6 @@ +process { + withName: PICARD_MARKDUPLICATES { + ext.prefix = { "${meta.id}.marked" } + ext.args = '--ASSUME_SORT_ORDER queryname' + } +} diff --git a/modules/nf-core/picard/markduplicates/tests/tags.yml b/modules/nf-core/picard/markduplicates/tests/tags.yml new file mode 100644 index 000000000..4f213d620 --- /dev/null +++ b/modules/nf-core/picard/markduplicates/tests/tags.yml @@ -0,0 +1,2 @@ +picard/markduplicates: + - modules/nf-core/picard/markduplicates/** diff --git a/modules/nf-core/samtools/flagstat/environment.yml b/modules/nf-core/samtools/flagstat/environment.yml new file mode 100644 index 000000000..5efae053f --- /dev/null +++ b/modules/nf-core/samtools/flagstat/environment.yml @@ -0,0 +1,7 @@ +name: samtools_flagstat +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.18 diff --git a/modules/nf-core/samtools/flagstat/main.nf b/modules/nf-core/samtools/flagstat/main.nf index b75707eca..f1893d7cc 100644 --- a/modules/nf-core/samtools/flagstat/main.nf +++ b/modules/nf-core/samtools/flagstat/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_FLAGSTAT { tag "$meta.id" label 'process_single' - conda "bioconda::samtools=1.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : - 'biocontainers/samtools:1.17--h00cdaf9_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : + 'biocontainers/samtools:1.18--h50ea8bc_1' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/flagstat/meta.yml b/modules/nf-core/samtools/flagstat/meta.yml index 954225dfc..97991358e 100644 --- a/modules/nf-core/samtools/flagstat/meta.yml +++ b/modules/nf-core/samtools/flagstat/meta.yml @@ -47,3 +47,5 @@ output: pattern: "versions.yml" authors: - "@drpatelh" +maintainers: + - "@drpatelh" diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test b/modules/nf-core/samtools/flagstat/tests/main.nf.test new file mode 100644 index 000000000..c8dd8dc9f --- /dev/null +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process SAMTOOLS_FLAGSTAT" + script "../main.nf" + process "SAMTOOLS_FLAGSTAT" + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/flagstat" + + test("BAM") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // 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) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.flagstat).match() }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } +} diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap new file mode 100644 index 000000000..880019f2f --- /dev/null +++ b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap @@ -0,0 +1,16 @@ +{ + "BAM": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + ] + ] + ], + "timestamp": "2023-11-14T15:49:22.577133" + } +} \ No newline at end of file diff --git a/modules/nf-core/samtools/flagstat/tests/tags.yml b/modules/nf-core/samtools/flagstat/tests/tags.yml new file mode 100644 index 000000000..2d2b7255e --- /dev/null +++ b/modules/nf-core/samtools/flagstat/tests/tags.yml @@ -0,0 +1,2 @@ +samtools/flagstat: + - modules/nf-core/samtools/flagstat/** diff --git a/modules/nf-core/samtools/idxstats/environment.yml b/modules/nf-core/samtools/idxstats/environment.yml new file mode 100644 index 000000000..2401db0f1 --- /dev/null +++ b/modules/nf-core/samtools/idxstats/environment.yml @@ -0,0 +1,7 @@ +name: samtools_idxstats +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.18 diff --git a/modules/nf-core/samtools/idxstats/main.nf b/modules/nf-core/samtools/idxstats/main.nf index 83c7c34b9..00d916bbf 100644 --- a/modules/nf-core/samtools/idxstats/main.nf +++ b/modules/nf-core/samtools/idxstats/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_IDXSTATS { tag "$meta.id" label 'process_single' - conda "bioconda::samtools=1.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : - 'biocontainers/samtools:1.17--h00cdaf9_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : + 'biocontainers/samtools:1.18--h50ea8bc_1' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/idxstats/meta.yml b/modules/nf-core/samtools/idxstats/meta.yml index dda87e1ee..344e92a3f 100644 --- a/modules/nf-core/samtools/idxstats/meta.yml +++ b/modules/nf-core/samtools/idxstats/meta.yml @@ -48,3 +48,5 @@ output: pattern: "versions.yml" authors: - "@drpatelh" +maintainers: + - "@drpatelh" diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test b/modules/nf-core/samtools/idxstats/tests/main.nf.test new file mode 100644 index 000000000..f6c92150c --- /dev/null +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process SAMTOOLS_IDXSTATS" + script "../main.nf" + process "SAMTOOLS_IDXSTATS" + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/idxstats" + + test("BAM") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], // 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) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.idxstats).match() }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } +} diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap new file mode 100644 index 000000000..4c6c12bd5 --- /dev/null +++ b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap @@ -0,0 +1,16 @@ +{ + "BAM": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + ] + ] + ], + "timestamp": "2023-11-14T15:52:19.875194" + } +} \ No newline at end of file diff --git a/modules/nf-core/samtools/idxstats/tests/tags.yml b/modules/nf-core/samtools/idxstats/tests/tags.yml new file mode 100644 index 000000000..d3057c61f --- /dev/null +++ b/modules/nf-core/samtools/idxstats/tests/tags.yml @@ -0,0 +1,2 @@ +samtools/idxstats: + - modules/nf-core/samtools/idxstats/** diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml new file mode 100644 index 000000000..296ed99e5 --- /dev/null +++ b/modules/nf-core/samtools/index/environment.yml @@ -0,0 +1,7 @@ +name: samtools_index +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.18 diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index 0b20aa4bb..8ad18fdc2 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_INDEX { tag "$meta.id" label 'process_low' - conda "bioconda::samtools=1.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : - 'biocontainers/samtools:1.17--h00cdaf9_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : + 'biocontainers/samtools:1.18--h50ea8bc_1' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml index 8bd2fa6fb..01a4ee03e 100644 --- a/modules/nf-core/samtools/index/meta.yml +++ b/modules/nf-core/samtools/index/meta.yml @@ -51,3 +51,7 @@ authors: - "@drpatelh" - "@ewels" - "@maxulysse" +maintainers: + - "@drpatelh" + - "@ewels" + - "@maxulysse" diff --git a/modules/nf-core/samtools/index/tests/csi.nextflow.config b/modules/nf-core/samtools/index/tests/csi.nextflow.config new file mode 100644 index 000000000..0ed260efa --- /dev/null +++ b/modules/nf-core/samtools/index/tests/csi.nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: SAMTOOLS_INDEX { + ext.args = '-c' + } + +} diff --git a/modules/nf-core/samtools/index/tests/main.nf.test b/modules/nf-core/samtools/index/tests/main.nf.test new file mode 100644 index 000000000..c76a9169f --- /dev/null +++ b/modules/nf-core/samtools/index/tests/main.nf.test @@ -0,0 +1,87 @@ +nextflow_process { + + name "Test Process SAMTOOLS_INDEX" + script "../main.nf" + process "SAMTOOLS_INDEX" + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/index" + + test("sarscov2 [BAI]") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.bai).match("bai") }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } + + test("homo_sapiens [CRAI]") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.crai).match("crai") }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } + + test("homo_sapiens [CSI]") { + + config "./csi.nextflow.config" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert path(process.out.csi.get(0).get(1)).exists() }, + { assert path(process.out.versions.get(0)).getText().contains("samtools") } + ) + } + } +} diff --git a/modules/nf-core/samtools/index/tests/main.nf.test.snap b/modules/nf-core/samtools/index/tests/main.nf.test.snap new file mode 100644 index 000000000..b3baee7fb --- /dev/null +++ b/modules/nf-core/samtools/index/tests/main.nf.test.snap @@ -0,0 +1,28 @@ +{ + "crai": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" + ] + ] + ], + "timestamp": "2023-11-15T15:17:37.30801" + }, + "bai": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" + ] + ] + ], + "timestamp": "2023-11-15T15:17:30.869234" + } +} \ No newline at end of file diff --git a/modules/nf-core/samtools/index/tests/tags.yml b/modules/nf-core/samtools/index/tests/tags.yml new file mode 100644 index 000000000..e0f58a7a3 --- /dev/null +++ b/modules/nf-core/samtools/index/tests/tags.yml @@ -0,0 +1,2 @@ +samtools/index: + - modules/nf-core/samtools/index/** diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml new file mode 100644 index 000000000..cd50868c5 --- /dev/null +++ b/modules/nf-core/samtools/sort/environment.yml @@ -0,0 +1,7 @@ +name: samtools_sort +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.18 diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index 2b7753fd8..4a666d42e 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_SORT { tag "$meta.id" label 'process_medium' - conda "bioconda::samtools=1.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : - 'biocontainers/samtools:1.17--h00cdaf9_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : + 'biocontainers/samtools:1.18--h50ea8bc_1' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/samtools/sort/meta.yml b/modules/nf-core/samtools/sort/meta.yml index 073284316..2200de72f 100644 --- a/modules/nf-core/samtools/sort/meta.yml +++ b/modules/nf-core/samtools/sort/meta.yml @@ -46,3 +46,6 @@ output: authors: - "@drpatelh" - "@ewels" +maintainers: + - "@drpatelh" + - "@ewels" diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test new file mode 100644 index 000000000..abb80978e --- /dev/null +++ b/modules/nf-core/samtools/sort/tests/main.nf.test @@ -0,0 +1,73 @@ +nextflow_process { + + name "Test Process SAMTOOLS_SORT" + script "../main.nf" + process "SAMTOOLS_SORT" + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/sort" + + test("test_samtools_sort") { + + config "./nextflow.config" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + [ + file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) + ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + + test("test_samtools_sort_stub") { + + config "./nextflow.config" + options "-stub-run" + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id:'test', single_end:false ], + [ + file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) + ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot( + file(process.out.bam[0][1]).name, + process.out.versions + ).match() } + ) + } + + } + +} diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap new file mode 100644 index 000000000..ff7222597 --- /dev/null +++ b/modules/nf-core/samtools/sort/tests/main.nf.test.snap @@ -0,0 +1,48 @@ +{ + "test_samtools_sort": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,ea6a0fef94eb534e901f107a05a33a06" + ] + ], + "1": [ + + ], + "2": [ + "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + ], + "bam": [ + [ + { + "id": "test", + "single_end": false + }, + "test.sorted.bam:md5,ea6a0fef94eb534e901f107a05a33a06" + ] + ], + "csi": [ + + ], + "versions": [ + "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + ] + } + ], + "timestamp": "2023-12-04T11:11:22.005628301" + }, + "test_samtools_sort_stub": { + "content": [ + "test.sorted.bam", + [ + "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" + ] + ], + "timestamp": "2023-12-04T17:47:22.314445935" + } +} \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/tests/nextflow.config b/modules/nf-core/samtools/sort/tests/nextflow.config new file mode 100644 index 000000000..d0f350868 --- /dev/null +++ b/modules/nf-core/samtools/sort/tests/nextflow.config @@ -0,0 +1,7 @@ +process { + + withName: SAMTOOLS_SORT { + ext.prefix = { "${meta.id}.sorted" } + } + +} diff --git a/modules/nf-core/samtools/sort/tests/tags.yml b/modules/nf-core/samtools/sort/tests/tags.yml new file mode 100644 index 000000000..cd63ea208 --- /dev/null +++ b/modules/nf-core/samtools/sort/tests/tags.yml @@ -0,0 +1,3 @@ +samtools/sort: + - modules/nf-core/samtools/sort/** + - tests/modules/nf-core/samtools/sort/** diff --git a/modules/nf-core/samtools/stats/environment.yml b/modules/nf-core/samtools/stats/environment.yml new file mode 100644 index 000000000..b89ce6475 --- /dev/null +++ b/modules/nf-core/samtools/stats/environment.yml @@ -0,0 +1,7 @@ +name: samtools_stats +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::samtools=1.18 diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf index 4a2607ded..7539140ab 100644 --- a/modules/nf-core/samtools/stats/main.nf +++ b/modules/nf-core/samtools/stats/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_STATS { tag "$meta.id" label 'process_single' - conda "bioconda::samtools=1.17" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : - 'biocontainers/samtools:1.17--h00cdaf9_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : + 'biocontainers/samtools:1.18--h50ea8bc_1' }" input: tuple val(meta), path(input), path(input_index) diff --git a/modules/nf-core/samtools/stats/meta.yml b/modules/nf-core/samtools/stats/meta.yml index 90e6345f5..735ff8122 100644 --- a/modules/nf-core/samtools/stats/meta.yml +++ b/modules/nf-core/samtools/stats/meta.yml @@ -57,3 +57,7 @@ authors: - "@drpatelh" - "@FriederikeHanssen" - "@ramprasadn" +maintainers: + - "@drpatelh" + - "@FriederikeHanssen" + - "@ramprasadn" diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test b/modules/nf-core/samtools/stats/tests/main.nf.test new file mode 100644 index 000000000..20c3efe12 --- /dev/null +++ b/modules/nf-core/samtools/stats/tests/main.nf.test @@ -0,0 +1,78 @@ +nextflow_process { + + name "Test Process SAMTOOLS_STATS" + script "../main.nf" + process "SAMTOOLS_STATS" + tag "modules" + tag "modules_nfcore" + tag "samtools" + tag "samtools/stats" + + test("SAMTOOLS STATS Should run without failures") { + + when { + params { + + outdir = "$outputDir" + } + process { + """ + // define inputs of the process here. + input[0] = [ + [ id:'test', single_end:false ], // 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[1] = [[],[]] + """ + + } + } + + then { + assertAll( + {assert process.success}, + {assert snapshot(process.out).match()} + ) + } + + } + + test("SAMTOOLS CRAM Should run without failures") { + + when { + params { + + outdir = "$outputDir" + } + process { + """ + // define inputs of the process here + input[0] = [ + [ id:'test', single_end:false ], // meta map + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram'], checkIfExists: true), + file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram_crai'], checkIfExists: true) + + ] + input[1] = [ + [ id:'genome' ], + file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + + + } + + then { + assertAll( + {assert process.success}, + {assert snapshot(process.out).match()} + ) + } + + } + + +} diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test.snap b/modules/nf-core/samtools/stats/tests/main.nf.test.snap new file mode 100644 index 000000000..025c83a55 --- /dev/null +++ b/modules/nf-core/samtools/stats/tests/main.nf.test.snap @@ -0,0 +1,64 @@ +{ + "SAMTOOLS STATS Should run without failures": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" + ] + ], + "1": [ + "versions.yml:md5,650a365c6635001436008350ae83337c" + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" + ] + ], + "versions": [ + "versions.yml:md5,650a365c6635001436008350ae83337c" + ] + } + ], + "timestamp": "2023-12-04T11:07:28.26821485" + }, + "SAMTOOLS CRAM Should run without failures": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" + ] + ], + "1": [ + "versions.yml:md5,650a365c6635001436008350ae83337c" + ], + "stats": [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" + ] + ], + "versions": [ + "versions.yml:md5,650a365c6635001436008350ae83337c" + ] + } + ], + "timestamp": "2023-12-04T11:07:50.356233402" + } +} \ No newline at end of file diff --git a/modules/nf-core/samtools/stats/tests/tags.yml b/modules/nf-core/samtools/stats/tests/tags.yml new file mode 100644 index 000000000..7c28e30f3 --- /dev/null +++ b/modules/nf-core/samtools/stats/tests/tags.yml @@ -0,0 +1,2 @@ +samtools/stats: + - modules/nf-core/samtools/stats/** diff --git a/modules/nf-core/trimgalore/environment.yml b/modules/nf-core/trimgalore/environment.yml new file mode 100644 index 000000000..6cd0f51b3 --- /dev/null +++ b/modules/nf-core/trimgalore/environment.yml @@ -0,0 +1,7 @@ +name: trimgalore +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::trim-galore=0.6.7 diff --git a/modules/nf-core/trimgalore/main.nf b/modules/nf-core/trimgalore/main.nf index dcb77ae7b..24ead8714 100644 --- a/modules/nf-core/trimgalore/main.nf +++ b/modules/nf-core/trimgalore/main.nf @@ -2,7 +2,7 @@ process TRIMGALORE { tag "$meta.id" label 'process_high' - conda "bioconda::trim-galore=0.6.7" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/trim-galore:0.6.7--hdfd78af_0' : 'biocontainers/trim-galore:0.6.7--hdfd78af_0' }" diff --git a/modules/nf-core/trimgalore/meta.yml b/modules/nf-core/trimgalore/meta.yml index f84c4d771..e649088ce 100644 --- a/modules/nf-core/trimgalore/meta.yml +++ b/modules/nf-core/trimgalore/meta.yml @@ -62,3 +62,7 @@ authors: - "@drpatelh" - "@ewels" - "@FelixKrueger" +maintainers: + - "@drpatelh" + - "@ewels" + - "@FelixKrueger" diff --git a/modules/nf-core/trimgalore/tests/main.nf.test b/modules/nf-core/trimgalore/tests/main.nf.test new file mode 100644 index 000000000..bc6812ccd --- /dev/null +++ b/modules/nf-core/trimgalore/tests/main.nf.test @@ -0,0 +1,105 @@ +nextflow_process { + + name "Test Process TRIMGALORE" + script "../main.nf" + process "TRIMGALORE" + tag "modules" + tag "modules_nfcore" + tag "trimgalore" + + test("test_trimgalore_single_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + ] + """ + } + } + + then { + def read_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } + } + }, + { report1_lines.each { report1_line -> + { assert path(process.out.log.get(0).get(1)).getText().contains(report1_line) } + } + } + ) + } + } + + test("test_trimgalore_paired_end") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [ 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) ] + ] + """ + } + } + + then { + def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", + "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", + "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE + { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } + } + }, + { read2_lines.each { read2_line -> + { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } + } + }, + { report1_lines.each { report1_line -> + { assert path(process.out.log.get(0).get(1).get(0)).getText().contains(report1_line) } + } + }, + { report2_lines.each { report2_line -> + { assert path(process.out.log.get(0).get(1).get(1)).getText().contains(report2_line) } + } + } + ) + } + } +} diff --git a/modules/nf-core/trimgalore/tests/main.nf.test.snap b/modules/nf-core/trimgalore/tests/main.nf.test.snap new file mode 100644 index 000000000..84feacca2 --- /dev/null +++ b/modules/nf-core/trimgalore/tests/main.nf.test.snap @@ -0,0 +1,148 @@ +{ + "test_trimgalore_single_end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4" + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastq.gz_trimming_report.txt:md5,a1ab3958205f1ddf48af623242b5b429" + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "html": [ + + ], + "log": [ + [ + { + "id": "test", + "single_end": true + }, + "test.fastq.gz_trimming_report.txt:md5,a1ab3958205f1ddf48af623242b5b429" + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": true + }, + "test_trimmed.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4" + ] + ], + "unpaired": [ + + ], + "versions": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "zip": [ + + ] + } + ], + "timestamp": "2023-10-17T15:24:57.782141441" + }, + "test_trimgalore_paired_end": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1_val_1.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4", + "test_2_val_2.fq.gz:md5,f3d61189e6d10202da7b8686f1dbb71b" + ] + ] + ], + "1": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastq.gz_trimming_report.txt:md5,315d40465412f9909bbaabf52269274d", + "test_2.fastq.gz_trimming_report.txt:md5,34436303da1c78811103427a2fb57f7b" + ] + ] + ], + "2": [ + + ], + "3": [ + + ], + "4": [ + + ], + "5": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "html": [ + + ], + "log": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastq.gz_trimming_report.txt:md5,315d40465412f9909bbaabf52269274d", + "test_2.fastq.gz_trimming_report.txt:md5,34436303da1c78811103427a2fb57f7b" + ] + ] + ], + "reads": [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1_val_1.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4", + "test_2_val_2.fq.gz:md5,f3d61189e6d10202da7b8686f1dbb71b" + ] + ] + ], + "unpaired": [ + + ], + "versions": [ + "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" + ], + "zip": [ + + ] + } + ], + "timestamp": "2023-10-17T15:25:08.513589909" + } +} \ No newline at end of file diff --git a/modules/nf-core/trimgalore/tests/tags.yml b/modules/nf-core/trimgalore/tests/tags.yml new file mode 100644 index 000000000..e9937691a --- /dev/null +++ b/modules/nf-core/trimgalore/tests/tags.yml @@ -0,0 +1,2 @@ +trimgalore: + - modules/nf-core/trimgalore/** diff --git a/modules/nf-core/umitools/dedup/environment.yml b/modules/nf-core/umitools/dedup/environment.yml new file mode 100644 index 000000000..f443735f4 --- /dev/null +++ b/modules/nf-core/umitools/dedup/environment.yml @@ -0,0 +1,7 @@ +name: umitools_dedup +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::umi_tools=1.1.4 diff --git a/modules/nf-core/umitools/dedup/main.nf b/modules/nf-core/umitools/dedup/main.nf index 56ea04691..64ab8f98e 100644 --- a/modules/nf-core/umitools/dedup/main.nf +++ b/modules/nf-core/umitools/dedup/main.nf @@ -2,7 +2,7 @@ process UMITOOLS_DEDUP { tag "$meta.id" label "process_medium" - conda "bioconda::umi_tools=1.1.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" @@ -42,7 +42,7 @@ process UMITOOLS_DEDUP { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) END_VERSIONS """ @@ -56,7 +56,7 @@ process UMITOOLS_DEDUP { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) END_VERSIONS """ } diff --git a/modules/nf-core/umitools/dedup/meta.yml b/modules/nf-core/umitools/dedup/meta.yml index 534d4c6b0..38d3fd465 100644 --- a/modules/nf-core/umitools/dedup/meta.yml +++ b/modules/nf-core/umitools/dedup/meta.yml @@ -7,8 +7,8 @@ keywords: tools: - umi_tools: description: > - UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) - and single cell RNA-Seq cell barcodes + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) and single cell RNA-Seq cell barcodes + documentation: https://umi-tools.readthedocs.io/en/latest/ license: ["MIT"] input: @@ -61,8 +61,11 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@drpatelh" - "@grst" - "@klkeys" +maintainers: + - "@drpatelh" + - "@grst" + - "@klkeys" diff --git a/modules/nf-core/umitools/extract/environment.yml b/modules/nf-core/umitools/extract/environment.yml new file mode 100644 index 000000000..7d08ac0ec --- /dev/null +++ b/modules/nf-core/umitools/extract/environment.yml @@ -0,0 +1,7 @@ +name: umitools_extract +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::umi_tools=1.1.4 diff --git a/modules/nf-core/umitools/extract/main.nf b/modules/nf-core/umitools/extract/main.nf index 2f94fa93e..4bd79e79f 100644 --- a/modules/nf-core/umitools/extract/main.nf +++ b/modules/nf-core/umitools/extract/main.nf @@ -3,7 +3,7 @@ process UMITOOLS_EXTRACT { label "process_single" label "process_long" - conda "bioconda::umi_tools=1.1.4" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" @@ -33,7 +33,7 @@ process UMITOOLS_EXTRACT { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) END_VERSIONS """ } else { @@ -49,7 +49,7 @@ process UMITOOLS_EXTRACT { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) END_VERSIONS """ } diff --git a/modules/nf-core/umitools/extract/meta.yml b/modules/nf-core/umitools/extract/meta.yml index db64a0f88..7695b2717 100644 --- a/modules/nf-core/umitools/extract/meta.yml +++ b/modules/nf-core/umitools/extract/meta.yml @@ -1,15 +1,16 @@ name: umitools_extract description: Extracts UMI barcode from a read and add it to the read name, leaving any sample barcode in place keywords: - - umitools + - UMI + - barcode - extract + - umitools tools: - umi_tools: description: > - UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) - and single cell RNA-Seq cell barcodes + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) and single cell RNA-Seq cell barcodes documentation: https://umi-tools.readthedocs.io/en/latest/ - license: ["MIT"] + license: "MIT" input: - meta: type: map @@ -29,9 +30,7 @@ output: - reads: type: file description: > - Extracted FASTQ files. | - For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | - For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. + Extracted FASTQ files. | For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. pattern: "*.{fastq.gz}" - log: type: file @@ -41,7 +40,9 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@drpatelh" - "@grst" +maintainers: + - "@drpatelh" + - "@grst" diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test b/modules/nf-core/umitools/extract/tests/main.nf.test new file mode 100644 index 000000000..22242d1df --- /dev/null +++ b/modules/nf-core/umitools/extract/tests/main.nf.test @@ -0,0 +1,35 @@ +nextflow_process { + + name "Test Process UMITOOLS_EXTRACT" + script "../main.nf" + process "UMITOOLS_EXTRACT" + config "./nextflow.config" + tag "modules_nfcore" + tag "modules" + tag "umitools" + tag "umitools/extract" + + test("Should run without failures") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ [ id:'test', single_end:true ], // meta map + [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + { assert snapshot(process.out.versions).match("versions") } + ) + } + + } +} \ No newline at end of file diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test.snap b/modules/nf-core/umitools/extract/tests/main.nf.test.snap new file mode 100644 index 000000000..6d5944f1d --- /dev/null +++ b/modules/nf-core/umitools/extract/tests/main.nf.test.snap @@ -0,0 +1,10 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,5a18da2d3a5a4de15e7aaae9082d7abb" + ] + ], + "timestamp": "2023-12-08T09:41:43.540658352" + } +} \ No newline at end of file diff --git a/modules/nf-core/umitools/extract/tests/nextflow.config b/modules/nf-core/umitools/extract/tests/nextflow.config new file mode 100644 index 000000000..c866f5a00 --- /dev/null +++ b/modules/nf-core/umitools/extract/tests/nextflow.config @@ -0,0 +1,9 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + + withName: UMITOOLS_EXTRACT { + ext.args = '--bc-pattern="NNNN"' + } + +} diff --git a/modules/nf-core/umitools/extract/tests/tags.yml b/modules/nf-core/umitools/extract/tests/tags.yml new file mode 100644 index 000000000..c3fb23de4 --- /dev/null +++ b/modules/nf-core/umitools/extract/tests/tags.yml @@ -0,0 +1,2 @@ +umitools/extract: + - modules/nf-core/umitools/extract/** diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml index f11e7ab6f..e655484e7 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml @@ -53,7 +53,9 @@ output: description: | Files containing software versions Structure: [ path(versions.yml) ] - authors: - "@drpatelh" - "@KamilMaliszArdigen" +maintainers: + - "@drpatelh" + - "@KamilMaliszArdigen" diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test new file mode 100644 index 000000000..e3214d4f2 --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test @@ -0,0 +1,51 @@ +nextflow_workflow { + + name "Test Workflow BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" + script "../main.nf" + workflow "BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/bam_dedup_stats_samtools_umitools" + tag "subworkflows/bam_stats_samtools" + tag "bam_dedup_stats_samtools_umitools" + tag "bam_stats_samtools" + tag "samtools" + tag "samtools/index" + tag "samtools/stats" + tag "samtools/idxstats" + tag "samtools/flagstat" + tag "umitools" + tag "umitools/dedup" + + test("sarscov2_bam_bai") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + 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) + ] + input[1] = false + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, + { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, + { assert snapshot(workflow.out.stats).match("test_bam_dedup_stats_samtools_umitools_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_dedup_stats_samtools_umitools_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_dedup_stats_samtools_umitools_idxstats") } + ) + } + + } + +} diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap new file mode 100644 index 000000000..036a63bbe --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap @@ -0,0 +1,41 @@ +{ + "test_bam_dedup_stats_samtools_umitools_idxstats": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.idxstats:md5,1adb27b52d4d64b826f48b59d61dcd4d" + ] + ] + ], + "timestamp": "2023-11-06T09:58:40.394333937" + }, + "test_bam_dedup_stats_samtools_umitools_flagstats": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.flagstat:md5,0bb716e40fae381b97484b58e0b16efe" + ] + ] + ], + "timestamp": "2023-11-06T09:58:40.385185447" + }, + "test_bam_dedup_stats_samtools_umitools_stats": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.stats:md5,6c296bce3659651fb5a08c31db314d91" + ] + ] + ], + "timestamp": "2023-12-04T11:06:41.700472756" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml new file mode 100644 index 000000000..bfd5e023e --- /dev/null +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_dedup_stats_samtools_umitools: + - subworkflows/nf-core/bam_dedup_stats_samtools_umitools/** diff --git a/subworkflows/nf-core/bam_markduplicates_picard/meta.yml b/subworkflows/nf-core/bam_markduplicates_picard/meta.yml index b924596d8..fe63068e6 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/meta.yml +++ b/subworkflows/nf-core/bam_markduplicates_picard/meta.yml @@ -6,7 +6,6 @@ keywords: - bam - sam - cram - components: - picard/markduplicates - samtools/index @@ -14,7 +13,6 @@ components: - samtools/idxstats - samtools/flagstat - bam_stats_samtools - input: - ch_bam: description: | @@ -60,3 +58,6 @@ output: authors: - "@dmarron" - "@drpatelh" +maintainers: + - "@dmarron" + - "@drpatelh" diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml b/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml index 69c16be41..e01f9ccf6 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml +++ b/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml @@ -65,3 +65,6 @@ output: authors: - "@drpatelh" - "@ewels" +maintainers: + - "@drpatelh" + - "@ewels" diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test new file mode 100644 index 000000000..59b749d8f --- /dev/null +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test @@ -0,0 +1,78 @@ +nextflow_workflow { + + name "Test Workflow BAM_SORT_STATS_SAMTOOLS" + script "../main.nf" + workflow "BAM_SORT_STATS_SAMTOOLS" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/bam_sort_stats_samtools" + tag "bam_sort_stats_samtools" + tag "subworkflows/bam_stats_samtools" + tag "bam_stats_samtools" + tag "samtools" + tag "samtools/index" + tag "samtools/sort" + tag "samtools/stats" + tag "samtools/idxstats" + tag "samtools/flagstat" + + test("test_bam_sort_stats_samtools_single_end") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true) + ] + input[1] = [ [ id:'genome' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, + { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, + { assert snapshot(workflow.out.stats).match("test_bam_sort_stats_samtools_single_end_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_sort_stats_samtools_single_end_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_sort_stats_samtools_single_end_idxstats") } + ) + } + } + + test("test_bam_sort_stats_samtools_paired_end") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + input[0] = [ [ id:'test', single_end:false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) + ] + input[1] = [ [ id:'genome' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, + { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, + { assert snapshot(workflow.out.stats).match("test_bam_sort_stats_samtools_paired_end_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_sort_stats_samtools_paired_end_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_sort_stats_samtools_paired_end_idxstats") } + ) + } + } +} diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap new file mode 100644 index 000000000..77afbf176 --- /dev/null +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap @@ -0,0 +1,86 @@ +{ + "test_bam_sort_stats_samtools_paired_end_flagstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + ] + ] + ], + "timestamp": "2023-10-22T20:25:03.687121177" + }, + "test_bam_sort_stats_samtools_paired_end_idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + ] + ] + ], + "timestamp": "2023-10-22T20:25:03.709648916" + }, + "test_bam_sort_stats_samtools_single_end_stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,f281507081517414eb1a04b2d9c855b2" + ] + ] + ], + "timestamp": "2023-12-04T11:06:50.951881479" + }, + "test_bam_sort_stats_samtools_paired_end_stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,e32e7e49dce1fbe327a89e0fb7bc01b1" + ] + ] + ], + "timestamp": "2023-12-04T11:06:59.253905951" + }, + "test_bam_sort_stats_samtools_single_end_idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,613e048487662c694aa4a2f73ca96a20" + ] + ] + ], + "timestamp": "2023-10-22T20:25:58.451364604" + }, + "test_bam_sort_stats_samtools_single_end_flagstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,2191911d72575a2358b08b1df64ccb53" + ] + ] + ], + "timestamp": "2023-10-22T20:25:58.416859285" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml b/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml new file mode 100644 index 000000000..30b69d6a4 --- /dev/null +++ b/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_sort_stats_samtools: + - subworkflows/nf-core/bam_sort_stats_samtools/** diff --git a/subworkflows/nf-core/bam_stats_samtools/meta.yml b/subworkflows/nf-core/bam_stats_samtools/meta.yml index 87863b11b..809bf736b 100644 --- a/subworkflows/nf-core/bam_stats_samtools/meta.yml +++ b/subworkflows/nf-core/bam_stats_samtools/meta.yml @@ -39,3 +39,5 @@ output: Structure: [ path(versions.yml) ] authors: - "@drpatelh" +maintainers: + - "@drpatelh" diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test new file mode 100644 index 000000000..972108905 --- /dev/null +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test @@ -0,0 +1,102 @@ +nextflow_workflow { + + name "Test Workflow BAM_STATS_SAMTOOLS" + script "../main.nf" + workflow "BAM_STATS_SAMTOOLS" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "bam_stats_samtools" + tag "subworkflows/bam_stats_samtools" + tag "samtools" + tag "samtools/flagstat" + tag "samtools/idxstats" + tag "samtools/stats" + + test("test_bam_stats_samtools_single_end") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + input[0] = [ [ id:'test', single_end:true ], // meta map + file(params.test_data['sarscov2']['illumina']['test_single_end_sorted_bam'], checkIfExists: true), + file(params.test_data['sarscov2']['illumina']['test_single_end_sorted_bam_bai'], checkIfExists: true) + ] + input[1] = [ [ id:'genome' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_single_end_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_single_end_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_single_end_idxstats") } + ) + } + } + + test("test_bam_stats_samtools_paired_end") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + input[0] = [ [ id:'test', single_end:true ], // 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[1] = [ [ id:'genome' ], + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_paired_end_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_paired_end_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_paired_end_idxstats") } + ) + } + } + + test("test_bam_stats_samtools_paired_end_cram") { + + when { + params { + outdir = "$outputDir" + } + workflow { + """ + input[0] = [ [ 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) + ] + input[1] = [ [ id:'genome' ], + file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_paired_end_cram_stats") }, + { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_paired_end_cram_flagstats") }, + { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_paired_end_cram_idxstats") } + ) + } + } + +} diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap new file mode 100644 index 000000000..d3af13769 --- /dev/null +++ b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap @@ -0,0 +1,128 @@ +{ + "test_bam_stats_samtools_paired_end_cram_flagstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.flagstat:md5,a53f3d26e2e9851f7d528442bbfe9781" + ] + ] + ], + "timestamp": "2023-11-06T09:31:26.194017574" + }, + "test_bam_stats_samtools_paired_end_stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,49e2b43344ff92bc4c02463a58f7ba4a" + ] + ] + ], + "timestamp": "2023-12-04T11:07:13.965061942" + }, + "test_bam_stats_samtools_paired_end_flagstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" + ] + ] + ], + "timestamp": "2023-11-06T09:31:11.668517251" + }, + "test_bam_stats_samtools_single_end_flagstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.flagstat:md5,2191911d72575a2358b08b1df64ccb53" + ] + ] + ], + "timestamp": "2023-11-06T09:26:10.340046381" + }, + "test_bam_stats_samtools_paired_end_cram_idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15" + ] + ] + ], + "timestamp": "2023-11-06T09:31:26.207052003" + }, + "test_bam_stats_samtools_single_end_stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.stats:md5,5a6667d97806e5002731e9cf23674fad" + ] + ] + ], + "timestamp": "2023-12-04T11:07:06.676820877" + }, + "test_bam_stats_samtools_paired_end_idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" + ] + ] + ], + "timestamp": "2023-11-06T09:31:11.68246157" + }, + "test_bam_stats_samtools_single_end_idxstats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": true + }, + "test.idxstats:md5,613e048487662c694aa4a2f73ca96a20" + ] + ] + ], + "timestamp": "2023-11-06T09:26:10.349439801" + }, + "test_bam_stats_samtools_paired_end_cram_stats": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.stats:md5,2cf2fe93596ee3d74f946097b204a629" + ] + ] + ], + "timestamp": "2023-12-04T11:07:22.30295557" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml b/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml new file mode 100644 index 000000000..ec2f2d68f --- /dev/null +++ b/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_stats_samtools: + - subworkflows/nf-core/bam_stats_samtools/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml index f76b40261..220e8db1c 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml @@ -69,8 +69,10 @@ output: - reads: type: file description: > - Extracted FASTQ files. | - For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | + Extracted FASTQ files. | For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | + + + For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. pattern: "*.{fastq.gz}" - fastqc_html: @@ -122,3 +124,5 @@ output: pattern: "versions.yml" authors: - "@robsyme" +maintainers: + - "@robsyme" diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test new file mode 100644 index 000000000..cdd73984c --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test @@ -0,0 +1,60 @@ +nextflow_workflow { + + name "Test Workflow FASTQ_FASTQC_UMITOOLS_FASTP" + script "../main.nf" + workflow "FASTQ_FASTQC_UMITOOLS_FASTP" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/fastq_fastqc_umitools_fastp" + tag "fastq_fastqc_umitools_fastp" + tag "fastqc" + tag "umitools/extract" + tag "fastp" + + + test("sarscov2 paired-end [fastq]") { + + when { + workflow { + """ + input[0] = [ + [ 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) + ] + ] + input[1] = false // skip_fastqc + input[2] = false // with_umi + input[3] = false // skip_umi_extract + input[4] = 1 // umi_discard_read + input[5] = false // skip_trimming + input[6] = [] // adapter_fasta + input[7] = false // save_trimmed_fail + input[8] = false // save_merged + input[9] = 1 // min_trimmed_reads + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert snapshot(workflow.out.reads).match("reads") }, + { assert snapshot(workflow.out.umi_log).match("umi_log") }, + { assert snapshot(workflow.out.trim_json).match("trim_json") }, + { assert snapshot(workflow.out.trim_reads_fail).match("trim_reads_fail") }, + { assert snapshot(workflow.out.trim_reads_merged).match("trim_reads_merged") }, + { assert snapshot(workflow.out.trim_read_count).match("trim_read_count") }, + { assert snapshot(workflow.out.versions).match("versions") }, + + { assert workflow.out.fastqc_raw_html }, + { assert workflow.out.fastqc_raw_zip }, + { assert workflow.out.trim_html }, + { assert workflow.out.trim_log }, + { assert workflow.out.fastqc_trim_html }, + { assert workflow.out.fastqc_trim_zip } + ) + } + } +} diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap new file mode 100644 index 000000000..38a65aebe --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap @@ -0,0 +1,81 @@ +{ + "trim_reads_merged": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-26T02:28:26.26920982" + }, + "trim_reads_fail": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-26T02:28:26.25861515" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", + "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", + "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" + ] + ], + "timestamp": "2023-11-26T02:28:26.30891403" + }, + "trim_json": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" + ] + ] + ], + "timestamp": "2023-11-26T02:28:26.24768259" + }, + "reads": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + [ + "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", + "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" + ] + ] + ] + ], + "timestamp": "2023-12-04T11:30:32.061644815" + }, + "umi_log": { + "content": [ + [ + + ] + ], + "timestamp": "2023-11-26T02:28:26.238536" + }, + "trim_read_count": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + 198 + ] + ] + ], + "timestamp": "2023-11-26T02:28:26.27984169" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml new file mode 100644 index 000000000..84a4b5676 --- /dev/null +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/fastq_fastqc_umitools_fastp: + - subworkflows/nf-core/fastq_fastqc_umitools_fastp/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml index e32e90f43..a7df97f77 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml @@ -47,13 +47,14 @@ input: type: integer description: | Inputs with fewer than this reads will be filtered out of the "reads" output channel - output: - reads: type: file description: > - Extracted FASTQ files. | - For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | + Extracted FASTQ files. | For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | + + + For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. pattern: "*.{fastq.gz}" - fastqc_html: @@ -95,3 +96,6 @@ output: authors: - "@drpatelh" - "@KamilMaliszArdigen" +maintainers: + - "@drpatelh" + - "@KamilMaliszArdigen" From d6803dc14654fd4a4f2a62a6239712416f25f2e1 Mon Sep 17 00:00:00 2001 From: Mahesh Binzer-Panchal Date: Fri, 8 Dec 2023 10:44:44 +0000 Subject: [PATCH 13/62] Update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36b2ad811..bfc45524f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Enhancements & fixes +- [PR #1103](https://github.com/nf-core/rnaseq/issues/1103) - Updates FASTQC and UMITOOLS modules and their dependencies which have had their version string extraction commands updated. + ### Software dependencies ### Modules / Subworkflows From 8e66ae35825db6929db6825bce667ce33c85102c Mon Sep 17 00:00:00 2001 From: Mahesh Binzer-Panchal Date: Fri, 8 Dec 2023 12:16:49 +0000 Subject: [PATCH 14/62] Update modules with stderr updated --- modules.json | 22 +-- modules/nf-core/fastp/main.nf | 6 +- modules/nf-core/rseqc/bamstat/environment.yml | 8 + modules/nf-core/rseqc/bamstat/main.nf | 2 +- modules/nf-core/rseqc/bamstat/meta.yml | 3 + .../nf-core/rseqc/bamstat/tests/main.nf.test | 38 ++++ .../rseqc/bamstat/tests/main.nf.test.snap | 31 ++++ .../rseqc/bamstat/tests/nextflow.config | 5 + modules/nf-core/rseqc/bamstat/tests/tags.yml | 2 + .../rseqc/inferexperiment/environment.yml | 8 + modules/nf-core/rseqc/inferexperiment/main.nf | 2 +- .../nf-core/rseqc/inferexperiment/meta.yml | 4 + .../rseqc/inferexperiment/tests/main.nf.test | 34 ++++ .../inferexperiment/tests/main.nf.test.snap | 31 ++++ .../inferexperiment/tests/nextflow.config | 5 + .../rseqc/inferexperiment/tests/tags.yml | 2 + .../rseqc/innerdistance/environment.yml | 8 + modules/nf-core/rseqc/innerdistance/main.nf | 2 +- modules/nf-core/rseqc/innerdistance/meta.yml | 4 + .../rseqc/innerdistance/tests/main.nf.test | 41 +++++ .../innerdistance/tests/main.nf.test.snap | 68 +++++++ .../rseqc/innerdistance/tests/nextflow.config | 5 + .../rseqc/innerdistance/tests/tags.yml | 2 + .../rseqc/junctionannotation/environment.yml | 8 + .../nf-core/rseqc/junctionannotation/main.nf | 4 +- .../nf-core/rseqc/junctionannotation/meta.yml | 3 + .../junctionannotation/tests/main.nf.test | 37 ++++ .../tests/main.nf.test.snap | 24 +++ .../rseqc/junctionannotation/tests/tags.yml | 2 + .../rseqc/junctionsaturation/environment.yml | 8 + .../nf-core/rseqc/junctionsaturation/main.nf | 2 +- .../nf-core/rseqc/junctionsaturation/meta.yml | 3 + .../junctionsaturation/tests/main.nf.test | 36 ++++ .../tests/main.nf.test.snap | 30 ++++ .../rseqc/junctionsaturation/tests/tags.yml | 2 + .../rseqc/readdistribution/environment.yml | 8 + .../nf-core/rseqc/readdistribution/main.nf | 2 +- .../nf-core/rseqc/readdistribution/meta.yml | 3 + .../rseqc/readdistribution/tests/main.nf.test | 33 ++++ .../readdistribution/tests/main.nf.test.snap | 33 ++++ .../rseqc/readdistribution/tests/tags.yml | 2 + .../rseqc/readduplication/environment.yml | 8 + modules/nf-core/rseqc/readduplication/main.nf | 2 +- .../nf-core/rseqc/readduplication/meta.yml | 5 + .../rseqc/readduplication/tests/main.nf.test | 36 ++++ .../readduplication/tests/main.nf.test.snap | 58 ++++++ .../rseqc/readduplication/tests/tags.yml | 2 + modules/nf-core/rseqc/tin/environment.yml | 8 + modules/nf-core/rseqc/tin/main.nf | 2 +- modules/nf-core/rseqc/tin/meta.yml | 2 + modules/nf-core/rseqc/tin/tests/main.nf.test | 35 ++++ .../nf-core/rseqc/tin/tests/main.nf.test.snap | 47 +++++ modules/nf-core/rseqc/tin/tests/tags.yml | 2 + subworkflows/nf-core/bam_rseqc/main.nf | 166 +++++++++--------- subworkflows/nf-core/bam_rseqc/meta.yml | 13 +- .../nf-core/bam_rseqc/tests/main.nf.test | 65 +++++++ .../nf-core/bam_rseqc/tests/main.nf.test.snap | 151 ++++++++++++++++ subworkflows/nf-core/bam_rseqc/tests/tags.yml | 2 + 58 files changed, 1074 insertions(+), 103 deletions(-) create mode 100644 modules/nf-core/rseqc/bamstat/environment.yml create mode 100644 modules/nf-core/rseqc/bamstat/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/bamstat/tests/nextflow.config create mode 100644 modules/nf-core/rseqc/bamstat/tests/tags.yml create mode 100644 modules/nf-core/rseqc/inferexperiment/environment.yml create mode 100644 modules/nf-core/rseqc/inferexperiment/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/inferexperiment/tests/nextflow.config create mode 100644 modules/nf-core/rseqc/inferexperiment/tests/tags.yml create mode 100644 modules/nf-core/rseqc/innerdistance/environment.yml create mode 100644 modules/nf-core/rseqc/innerdistance/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/innerdistance/tests/nextflow.config create mode 100644 modules/nf-core/rseqc/innerdistance/tests/tags.yml create mode 100644 modules/nf-core/rseqc/junctionannotation/environment.yml create mode 100644 modules/nf-core/rseqc/junctionannotation/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/junctionannotation/tests/tags.yml create mode 100644 modules/nf-core/rseqc/junctionsaturation/environment.yml create mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/tags.yml create mode 100644 modules/nf-core/rseqc/readdistribution/environment.yml create mode 100644 modules/nf-core/rseqc/readdistribution/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/readdistribution/tests/tags.yml create mode 100644 modules/nf-core/rseqc/readduplication/environment.yml create mode 100644 modules/nf-core/rseqc/readduplication/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/readduplication/tests/tags.yml create mode 100644 modules/nf-core/rseqc/tin/environment.yml create mode 100644 modules/nf-core/rseqc/tin/tests/main.nf.test create mode 100644 modules/nf-core/rseqc/tin/tests/main.nf.test.snap create mode 100644 modules/nf-core/rseqc/tin/tests/tags.yml create mode 100644 subworkflows/nf-core/bam_rseqc/tests/main.nf.test create mode 100644 subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap create mode 100644 subworkflows/nf-core/bam_rseqc/tests/tags.yml diff --git a/modules.json b/modules.json index a469fc895..f24a07889 100644 --- a/modules.json +++ b/modules.json @@ -27,8 +27,8 @@ }, "fastp": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] + "git_sha": "3c77ca9aac783e76c3614a06db3bfe4fef619bde", + "installed_by": ["modules", "fastq_fastqc_umitools_fastp"] }, "fastqc": { "branch": "master", @@ -102,42 +102,42 @@ }, "rseqc/bamstat": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "65acf692457e8c466e104c6a3e5ac392e98fe688", "installed_by": ["bam_rseqc"] }, "rseqc/inferexperiment": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "f2a3328fde9a2b4185285057f8d3727f39dd2aef", "installed_by": ["bam_rseqc"] }, "rseqc/innerdistance": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3e839096a1be5da4f68d1de1066e4d0bc13f5d6d", "installed_by": ["bam_rseqc"] }, "rseqc/junctionannotation": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "3c77ca9aac783e76c3614a06db3bfe4fef619bde", "installed_by": ["bam_rseqc"] }, "rseqc/junctionsaturation": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "9dfed3180f80f599c91daf5112d73a5e59367c24", "installed_by": ["bam_rseqc"] }, "rseqc/readdistribution": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "7bb1b295a359bcbf0a0ea03d19d40a00916805ee", "installed_by": ["bam_rseqc"] }, "rseqc/readduplication": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "db02573fdd89210d09ce9e2ac06857902a7fffec", "installed_by": ["bam_rseqc"] }, "rseqc/tin": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "4acfdd20843d5b6d63f9181721a6856447cb7bec", "installed_by": ["bam_rseqc"] }, "salmon/index": { @@ -250,7 +250,7 @@ }, "bam_rseqc": { "branch": "master", - "git_sha": "a9784afdd5dcda23b84e64db75dc591065d64653", + "git_sha": "045c3b47040a8284766b78500801ec21e7678277", "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index c8e815aea..5fac3c1ad 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -45,7 +45,7 @@ process FASTP { $adapter_list \\ $fail_fastq \\ $args \\ - 2> ${prefix}.fastp.log \\ + 2> >(tee ${prefix}.fastp.log >&2) \\ | gzip -c > ${prefix}.fastp.fastq.gz cat <<-END_VERSIONS > versions.yml @@ -66,7 +66,7 @@ process FASTP { $adapter_list \\ $fail_fastq \\ $args \\ - 2> ${prefix}.fastp.log + 2> >(tee ${prefix}.fastp.log >&2) cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -91,7 +91,7 @@ process FASTP { --thread $task.cpus \\ --detect_adapter_for_pe \\ $args \\ - 2> ${prefix}.fastp.log + 2> >(tee ${prefix}.fastp.log >&2) cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/rseqc/bamstat/environment.yml b/modules/nf-core/rseqc/bamstat/environment.yml new file mode 100644 index 000000000..bf0bf0829 --- /dev/null +++ b/modules/nf-core/rseqc/bamstat/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_bamstat +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=3.0.1 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/bamstat/main.nf b/modules/nf-core/rseqc/bamstat/main.nf index 04c1eefd0..33e6959e7 100644 --- a/modules/nf-core/rseqc/bamstat/main.nf +++ b/modules/nf-core/rseqc/bamstat/main.nf @@ -2,7 +2,7 @@ process RSEQC_BAMSTAT { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/bamstat/meta.yml b/modules/nf-core/rseqc/bamstat/meta.yml index 2d7fa7996..72745310c 100644 --- a/modules/nf-core/rseqc/bamstat/meta.yml +++ b/modules/nf-core/rseqc/bamstat/meta.yml @@ -35,3 +35,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test b/modules/nf-core/rseqc/bamstat/tests/main.nf.test new file mode 100644 index 000000000..1facabea0 --- /dev/null +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test @@ -0,0 +1,38 @@ +nextflow_process { + + name "Test Process RSEQC_BAMSTAT" + script "../main.nf" + process "RSEQC_BAMSTAT" + + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/bamstat" + + config "./nextflow.config" + + test("sarscov2 - [meta] - bam") { + + when { + params { + // define parameters here. Example: + // outdir = "tests/results" + } + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + """ + } + } + + then { + assert process.success + assert snapshot(process.out).match() + } + + } + +} diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap new file mode 100644 index 000000000..b3cc3f55f --- /dev/null +++ b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap @@ -0,0 +1,31 @@ +{ + "sarscov2 - [meta] - bam": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + ] + ], + "1": [ + "versions.yml:md5,300e8a9b6f8213d3621e53af09a9c728" + ], + "txt": [ + [ + { + "id": "test" + }, + "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + ] + ], + "versions": [ + "versions.yml:md5,300e8a9b6f8213d3621e53af09a9c728" + ] + } + ], + "timestamp": "2023-11-23T11:26:51.281041171" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/bamstat/tests/nextflow.config b/modules/nf-core/rseqc/bamstat/tests/nextflow.config new file mode 100644 index 000000000..8730f1c4b --- /dev/null +++ b/modules/nf-core/rseqc/bamstat/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/modules/nf-core/rseqc/bamstat/tests/tags.yml b/modules/nf-core/rseqc/bamstat/tests/tags.yml new file mode 100644 index 000000000..ed9a41fa9 --- /dev/null +++ b/modules/nf-core/rseqc/bamstat/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/bamstat: + - modules/nf-core/rseqc/bamstat/** diff --git a/modules/nf-core/rseqc/inferexperiment/environment.yml b/modules/nf-core/rseqc/inferexperiment/environment.yml new file mode 100644 index 000000000..1d3936f4e --- /dev/null +++ b/modules/nf-core/rseqc/inferexperiment/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_inferexperiment +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=3.0.1 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/inferexperiment/main.nf b/modules/nf-core/rseqc/inferexperiment/main.nf index 5f9f4b111..db6163387 100644 --- a/modules/nf-core/rseqc/inferexperiment/main.nf +++ b/modules/nf-core/rseqc/inferexperiment/main.nf @@ -2,7 +2,7 @@ process RSEQC_INFEREXPERIMENT { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/inferexperiment/meta.yml b/modules/nf-core/rseqc/inferexperiment/meta.yml index b4162059d..d9b9ff63e 100644 --- a/modules/nf-core/rseqc/inferexperiment/meta.yml +++ b/modules/nf-core/rseqc/inferexperiment/meta.yml @@ -2,6 +2,7 @@ name: rseqc_inferexperiment description: Infer strandedness from sequencing reads keywords: - rnaseq + - strandedness - experiment tools: - rseqc: @@ -38,3 +39,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test new file mode 100644 index 000000000..97cd2cb9a --- /dev/null +++ b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test @@ -0,0 +1,34 @@ +nextflow_process { + + name "Test Process RSEQC_INFEREXPERIMENT" + script "../main.nf" + process "RSEQC_INFEREXPERIMENT" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/inferexperiment" + + test("sarscov2 - [[meta] - bam] - bed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + """ + } + } + + then { + assert process.success + assert snapshot(process.out).match() + } + + } + +} diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap new file mode 100644 index 000000000..ca4faba2d --- /dev/null +++ b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap @@ -0,0 +1,31 @@ +{ + "sarscov2 - [[meta] - bam] - bed": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" + ] + ], + "1": [ + "versions.yml:md5,c0d7ecdb2e1fbf7a2ba0c28dae49e428" + ], + "txt": [ + [ + { + "id": "test" + }, + "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" + ] + ], + "versions": [ + "versions.yml:md5,c0d7ecdb2e1fbf7a2ba0c28dae49e428" + ] + } + ], + "timestamp": "2023-11-23T16:21:55.713158354" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/inferexperiment/tests/nextflow.config b/modules/nf-core/rseqc/inferexperiment/tests/nextflow.config new file mode 100644 index 000000000..8730f1c4b --- /dev/null +++ b/modules/nf-core/rseqc/inferexperiment/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/modules/nf-core/rseqc/inferexperiment/tests/tags.yml b/modules/nf-core/rseqc/inferexperiment/tests/tags.yml new file mode 100644 index 000000000..f9ba7e26a --- /dev/null +++ b/modules/nf-core/rseqc/inferexperiment/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/inferexperiment: + - modules/nf-core/rseqc/inferexperiment/** diff --git a/modules/nf-core/rseqc/innerdistance/environment.yml b/modules/nf-core/rseqc/innerdistance/environment.yml new file mode 100644 index 000000000..bb61cce24 --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_innerdistance +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=3.0.1 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/innerdistance/main.nf b/modules/nf-core/rseqc/innerdistance/main.nf index a63a2bf03..a87399a98 100644 --- a/modules/nf-core/rseqc/innerdistance/main.nf +++ b/modules/nf-core/rseqc/innerdistance/main.nf @@ -2,7 +2,7 @@ process RSEQC_INNERDISTANCE { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/innerdistance/meta.yml b/modules/nf-core/rseqc/innerdistance/meta.yml index d10a4c445..d0a5bf181 100644 --- a/modules/nf-core/rseqc/innerdistance/meta.yml +++ b/modules/nf-core/rseqc/innerdistance/meta.yml @@ -1,6 +1,7 @@ name: rseqc_innerdistance description: Calculate inner distance between read pairs. keywords: + - read_pairs - fragment_size - inner_distance tools: @@ -54,3 +55,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test new file mode 100644 index 000000000..ee8901422 --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test @@ -0,0 +1,41 @@ +nextflow_process { + + name "Test Process RSEQC_INNERDISTANCE" + script "../main.nf" + process "RSEQC_INNERDISTANCE" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/innerdistance" + + test("sarscov2 - [[meta] - bam] - bed") { + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.distance).match("pe_distance") }, + { assert snapshot(process.out.freq).match("freq") }, + { assert snapshot(process.out.mean).match("mean") }, + { assert snapshot(process.out.freq).match("rscript") }, + { assert snapshot(process.out.versions).match("pe_versions") }, + { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap new file mode 100644 index 000000000..9743d1bd6 --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap @@ -0,0 +1,68 @@ +{ + "pe_distance": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" + ] + ] + ], + "timestamp": "2023-11-23T16:59:21.812491711" + }, + "rscript": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + ] + ] + ], + "timestamp": "2023-11-23T16:59:21.847527889" + }, + "pdf": { + "content": [ + "test.inner_distance_plot.pdf" + ], + "timestamp": "2023-11-23T17:23:20.046679629" + }, + "mean": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" + ] + ] + ], + "timestamp": "2023-11-23T16:59:21.839422659" + }, + "freq": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + ] + ] + ], + "timestamp": "2023-11-23T16:59:21.83183025" + }, + "pe_versions": { + "content": [ + [ + "versions.yml:md5,c2a05298a9c55bd61cc6e07396815a27" + ] + ], + "timestamp": "2023-11-23T16:59:21.854738078" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/innerdistance/tests/nextflow.config b/modules/nf-core/rseqc/innerdistance/tests/nextflow.config new file mode 100644 index 000000000..8730f1c4b --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + + publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } + +} diff --git a/modules/nf-core/rseqc/innerdistance/tests/tags.yml b/modules/nf-core/rseqc/innerdistance/tests/tags.yml new file mode 100644 index 000000000..4a9d0acf9 --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/innerdistance: + - modules/nf-core/rseqc/innerdistance/** diff --git a/modules/nf-core/rseqc/junctionannotation/environment.yml b/modules/nf-core/rseqc/junctionannotation/environment.yml new file mode 100644 index 000000000..105ea25ea --- /dev/null +++ b/modules/nf-core/rseqc/junctionannotation/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_junctionannotation +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=3.0.1 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/junctionannotation/main.nf b/modules/nf-core/rseqc/junctionannotation/main.nf index 4029ac765..58574a278 100644 --- a/modules/nf-core/rseqc/junctionannotation/main.nf +++ b/modules/nf-core/rseqc/junctionannotation/main.nf @@ -2,7 +2,7 @@ process RSEQC_JUNCTIONANNOTATION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" @@ -33,7 +33,7 @@ process RSEQC_JUNCTIONANNOTATION { -r $bed \\ -o $prefix \\ $args \\ - 2> ${prefix}.junction_annotation.log + 2> >(tee ${prefix}.junction_annotation.log >&2) cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/rseqc/junctionannotation/meta.yml b/modules/nf-core/rseqc/junctionannotation/meta.yml index 48c43260e..a88aa2db3 100644 --- a/modules/nf-core/rseqc/junctionannotation/meta.yml +++ b/modules/nf-core/rseqc/junctionannotation/meta.yml @@ -63,3 +63,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test new file mode 100644 index 000000000..ed2c27558 --- /dev/null +++ b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test @@ -0,0 +1,37 @@ +nextflow_process { + + name "Test Process RSEQC_JUNCTIONANNOTATION" + script "../main.nf" + process "RSEQC_JUNCTIONANNOTATION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/junctionannotation" + + test("sarscov2 - paired end [bam]") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end: false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.log).match("log") }, + { assert snapshot(process.out.versions).match("versions") }, + { assert process.out.xls.get(0).get(1) ==~ ".*/test.junction.xls" }, + { assert process.out.rscript.get(0).get(1) ==~ ".*/test.junction_plot.r" } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap new file mode 100644 index 000000000..a9fc2cbb7 --- /dev/null +++ b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap @@ -0,0 +1,24 @@ +{ + "log": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.junction_annotation.log:md5,ef37d06d169a1adbeec23fddf82aee2b" + ] + ] + ], + "timestamp": "2023-11-23T21:11:28.772327081" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,78807fd7b5d9df98730e6c66641b48a0" + ] + ], + "timestamp": "2023-11-23T21:11:28.7811548" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/junctionannotation/tests/tags.yml b/modules/nf-core/rseqc/junctionannotation/tests/tags.yml new file mode 100644 index 000000000..5f719fb8d --- /dev/null +++ b/modules/nf-core/rseqc/junctionannotation/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/junctionannotation: + - modules/nf-core/rseqc/junctionannotation/** diff --git a/modules/nf-core/rseqc/junctionsaturation/environment.yml b/modules/nf-core/rseqc/junctionsaturation/environment.yml new file mode 100644 index 000000000..78ffd06ad --- /dev/null +++ b/modules/nf-core/rseqc/junctionsaturation/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_junctionsaturation +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=3.0.1 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/junctionsaturation/main.nf b/modules/nf-core/rseqc/junctionsaturation/main.nf index 93cc61b23..552865bbf 100644 --- a/modules/nf-core/rseqc/junctionsaturation/main.nf +++ b/modules/nf-core/rseqc/junctionsaturation/main.nf @@ -2,7 +2,7 @@ process RSEQC_JUNCTIONSATURATION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/junctionsaturation/meta.yml b/modules/nf-core/rseqc/junctionsaturation/meta.yml index 340fec0d0..19ae3f52d 100644 --- a/modules/nf-core/rseqc/junctionsaturation/meta.yml +++ b/modules/nf-core/rseqc/junctionsaturation/meta.yml @@ -43,3 +43,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test new file mode 100644 index 000000000..347b5fccd --- /dev/null +++ b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process RSEQC_JUNCTIONSATURATION" + script "../main.nf" + process "RSEQC_JUNCTIONSATURATION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/junctionsaturation" + + test("sarscov2 paired-end [bam]") { + + when { + process { + """ + input[0] = [ + [ id:'test', single_end: false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.rscript).match("rscript") }, + { assert snapshot(process.out.versions).match("versions") }, + { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap new file mode 100644 index 000000000..708782da6 --- /dev/null +++ b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap @@ -0,0 +1,30 @@ +{ + "rscript": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.junctionSaturation_plot.r:md5,caa6e63dcb477aabb169882b2f30dadd" + ] + ] + ], + "timestamp": "2023-11-24T00:15:43.655261555" + }, + "pdf": { + "content": [ + "test.junctionSaturation_plot.pdf" + ], + "timestamp": "2023-11-24T00:15:43.682673802" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,2a187a15edb3a5ba114ab3d9f003a8bc" + ] + ], + "timestamp": "2023-11-24T00:15:43.667463564" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml b/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml new file mode 100644 index 000000000..7022b59ad --- /dev/null +++ b/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/junctionsaturation: + - modules/nf-core/rseqc/junctionsaturation/** diff --git a/modules/nf-core/rseqc/readdistribution/environment.yml b/modules/nf-core/rseqc/readdistribution/environment.yml new file mode 100644 index 000000000..a20fef74e --- /dev/null +++ b/modules/nf-core/rseqc/readdistribution/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_readdistribution +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=3.0.1 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/readdistribution/main.nf b/modules/nf-core/rseqc/readdistribution/main.nf index f3e588d69..901b364c0 100644 --- a/modules/nf-core/rseqc/readdistribution/main.nf +++ b/modules/nf-core/rseqc/readdistribution/main.nf @@ -2,7 +2,7 @@ process RSEQC_READDISTRIBUTION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/readdistribution/meta.yml b/modules/nf-core/rseqc/readdistribution/meta.yml index 94c647120..989792faa 100644 --- a/modules/nf-core/rseqc/readdistribution/meta.yml +++ b/modules/nf-core/rseqc/readdistribution/meta.yml @@ -39,3 +39,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test new file mode 100644 index 000000000..4da721ab6 --- /dev/null +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test @@ -0,0 +1,33 @@ +nextflow_process { + + name "Test Process RSEQC_READDISTRIBUTION" + script "../main.nf" + process "RSEQC_READDISTRIBUTION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/readdistribution" + + test("sarscov2 paired-end [bam]") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end: false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap new file mode 100644 index 000000000..90cf8b029 --- /dev/null +++ b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap @@ -0,0 +1,33 @@ +{ + "sarscov2 paired-end [bam]": { + "content": [ + { + "0": [ + [ + { + "id": "test", + "single_end": false + }, + "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" + ] + ], + "1": [ + "versions.yml:md5,15fd23aafd4d3aeabc4fede518d1b3a4" + ], + "txt": [ + [ + { + "id": "test", + "single_end": false + }, + "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" + ] + ], + "versions": [ + "versions.yml:md5,15fd23aafd4d3aeabc4fede518d1b3a4" + ] + } + ], + "timestamp": "2023-11-24T00:35:28.404023432" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/readdistribution/tests/tags.yml b/modules/nf-core/rseqc/readdistribution/tests/tags.yml new file mode 100644 index 000000000..c0c477b6d --- /dev/null +++ b/modules/nf-core/rseqc/readdistribution/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/readdistribution: + - modules/nf-core/rseqc/readdistribution/** diff --git a/modules/nf-core/rseqc/readduplication/environment.yml b/modules/nf-core/rseqc/readduplication/environment.yml new file mode 100644 index 000000000..bba52d8fa --- /dev/null +++ b/modules/nf-core/rseqc/readduplication/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_readduplication +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=3.0.1 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/readduplication/main.nf b/modules/nf-core/rseqc/readduplication/main.nf index 023118536..68c1296ea 100644 --- a/modules/nf-core/rseqc/readduplication/main.nf +++ b/modules/nf-core/rseqc/readduplication/main.nf @@ -2,7 +2,7 @@ process RSEQC_READDUPLICATION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/readduplication/meta.yml b/modules/nf-core/rseqc/readduplication/meta.yml index 5a8666435..4b24d3032 100644 --- a/modules/nf-core/rseqc/readduplication/meta.yml +++ b/modules/nf-core/rseqc/readduplication/meta.yml @@ -3,6 +3,8 @@ description: Calculate read duplication rate keywords: - rnaseq - duplication + - sequence-based + - mapping-based tools: - rseqc: description: | @@ -50,3 +52,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test b/modules/nf-core/rseqc/readduplication/tests/main.nf.test new file mode 100644 index 000000000..93d0cccd6 --- /dev/null +++ b/modules/nf-core/rseqc/readduplication/tests/main.nf.test @@ -0,0 +1,36 @@ +nextflow_process { + + name "Test Process RSEQC_READDUPLICATION" + script "../main.nf" + process "RSEQC_READDUPLICATION" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/readduplication" + + test("sarscov2 paired-end [bam]") { + + when { + process { + """ + input[0] = [ [ id:'test', single_end: false ], // meta map + file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) + ] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out.seq_xls).match("seq_xls") }, + { assert snapshot(process.out.pos_xls).match("pos_xls") }, + { assert snapshot(process.out.rscript).match("rscript") }, + { assert snapshot(process.out.versions).match("versions") }, + { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap b/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap new file mode 100644 index 000000000..e3e4ec3fd --- /dev/null +++ b/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap @@ -0,0 +1,58 @@ +{ + "pos_xls": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" + ] + ] + ], + "timestamp": "2023-11-24T00:52:45.27809706" + }, + "rscript": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" + ] + ] + ], + "timestamp": "2023-11-24T00:52:45.285457599" + }, + "pdf": { + "content": [ + "test.DupRate_plot.pdf" + ], + "timestamp": "2023-11-24T00:52:45.304152477" + }, + "seq_xls": { + "content": [ + [ + [ + { + "id": "test", + "single_end": false + }, + "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" + ] + ] + ], + "timestamp": "2023-11-24T00:52:45.262656562" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,06a70ece474de57fc1dc7585e7cfd5a0" + ] + ], + "timestamp": "2023-11-24T00:52:45.292599738" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/readduplication/tests/tags.yml b/modules/nf-core/rseqc/readduplication/tests/tags.yml new file mode 100644 index 000000000..fce3d35d4 --- /dev/null +++ b/modules/nf-core/rseqc/readduplication/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/readduplication: + - modules/nf-core/rseqc/readduplication/** diff --git a/modules/nf-core/rseqc/tin/environment.yml b/modules/nf-core/rseqc/tin/environment.yml new file mode 100644 index 000000000..48b7efa53 --- /dev/null +++ b/modules/nf-core/rseqc/tin/environment.yml @@ -0,0 +1,8 @@ +name: rseqc_tin +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::rseqc=3.0.1 + - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/tin/main.nf b/modules/nf-core/rseqc/tin/main.nf index 872938b62..718aabb89 100644 --- a/modules/nf-core/rseqc/tin/main.nf +++ b/modules/nf-core/rseqc/tin/main.nf @@ -2,7 +2,7 @@ process RSEQC_TIN { tag "$meta.id" label 'process_high' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/tin/meta.yml b/modules/nf-core/rseqc/tin/meta.yml index 381edfde0..f760bb2f4 100644 --- a/modules/nf-core/rseqc/tin/meta.yml +++ b/modules/nf-core/rseqc/tin/meta.yml @@ -46,3 +46,5 @@ output: pattern: "versions.yml" authors: - "@drpatelh" +maintainers: + - "@drpatelh" diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test b/modules/nf-core/rseqc/tin/tests/main.nf.test new file mode 100644 index 000000000..c339d343a --- /dev/null +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test @@ -0,0 +1,35 @@ +nextflow_process { + + name "Test Process RSEQC_TIN" + script "../main.nf" + process "RSEQC_TIN" + tag "modules" + tag "modules_nfcore" + tag "rseqc" + tag "rseqc/tin" + + test("sarscov2 paired-end [bam]") { + + when { + 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) + ] + input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + + } + +} diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test.snap b/modules/nf-core/rseqc/tin/tests/main.nf.test.snap new file mode 100644 index 000000000..4bed8ac9b --- /dev/null +++ b/modules/nf-core/rseqc/tin/tests/main.nf.test.snap @@ -0,0 +1,47 @@ +{ + "sarscov2 paired-end [bam]": { + "content": [ + { + "0": [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" + ] + ], + "1": [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.tin.xls:md5,6b1b1b0dc1dc265342ba8c3f27fa60e6" + ] + ], + "2": [ + "versions.yml:md5,77a0664abb6e486d1a0dd2078d4916d2" + ], + "txt": [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" + ] + ], + "versions": [ + "versions.yml:md5,77a0664abb6e486d1a0dd2078d4916d2" + ], + "xls": [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.tin.xls:md5,6b1b1b0dc1dc265342ba8c3f27fa60e6" + ] + ] + } + ], + "timestamp": "2023-11-24T02:30:03.446989864" + } +} \ No newline at end of file diff --git a/modules/nf-core/rseqc/tin/tests/tags.yml b/modules/nf-core/rseqc/tin/tests/tags.yml new file mode 100644 index 000000000..741bbd0c0 --- /dev/null +++ b/modules/nf-core/rseqc/tin/tests/tags.yml @@ -0,0 +1,2 @@ +rseqc/tin: + - modules/nf-core/rseqc/tin/** diff --git a/subworkflows/nf-core/bam_rseqc/main.nf b/subworkflows/nf-core/bam_rseqc/main.nf index a698b30ab..65fb18609 100644 --- a/subworkflows/nf-core/bam_rseqc/main.nf +++ b/subworkflows/nf-core/bam_rseqc/main.nf @@ -28,141 +28,149 @@ workflow BAM_RSEQC { // // Run RSeQC bam_stat.py // - bamstat_txt = Channel.empty() + ch_bamstat = Channel.empty() if ('bam_stat' in rseqc_modules) { RSEQC_BAMSTAT ( ch_bam ) - bamstat_txt = RSEQC_BAMSTAT.out.txt + ch_bamstat = RSEQC_BAMSTAT.out.txt ch_versions = ch_versions.mix(RSEQC_BAMSTAT.out.versions.first()) } // // Run RSeQC inner_distance.py // - innerdistance_distance = Channel.empty() - innerdistance_freq = Channel.empty() - innerdistance_mean = Channel.empty() - innerdistance_pdf = Channel.empty() - innerdistance_rscript = Channel.empty() + ch_innerdistance_distance = Channel.empty() + ch_innerdistance_freq = Channel.empty() + ch_innerdistance_mean = Channel.empty() + ch_innerdistance_pdf = Channel.empty() + ch_innerdistance_rscript = Channel.empty() if ('inner_distance' in rseqc_modules) { RSEQC_INNERDISTANCE ( ch_bam, ch_bed ) - innerdistance_distance = RSEQC_INNERDISTANCE.out.distance - innerdistance_freq = RSEQC_INNERDISTANCE.out.freq - innerdistance_mean = RSEQC_INNERDISTANCE.out.mean - innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf - innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript - ch_versions = ch_versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) + ch_innerdistance_distance = RSEQC_INNERDISTANCE.out.distance + ch_innerdistance_freq = RSEQC_INNERDISTANCE.out.freq + ch_innerdistance_mean = RSEQC_INNERDISTANCE.out.mean + ch_innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf + ch_innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript + ch_inner_distance = ch_innerdistance_distance.mix(ch_innerdistance_freq, ch_innerdistance_mean, ch_innerdistance_pdf, ch_innerdistance_rscript) + ch_versions = ch_versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) } // // Run RSeQC infer_experiment.py // - inferexperiment_txt = Channel.empty() + ch_inferexperiment = Channel.empty() if ('infer_experiment' in rseqc_modules) { RSEQC_INFEREXPERIMENT ( ch_bam, ch_bed ) - inferexperiment_txt = RSEQC_INFEREXPERIMENT.out.txt - ch_versions = ch_versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) + ch_inferexperiment = RSEQC_INFEREXPERIMENT.out.txt + ch_versions = ch_versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) } // // Run RSeQC junction_annotation.py // - junctionannotation_bed = Channel.empty() - junctionannotation_interact_bed = Channel.empty() - junctionannotation_xls = Channel.empty() - junctionannotation_pdf = Channel.empty() - junctionannotation_events_pdf = Channel.empty() - junctionannotation_rscript = Channel.empty() - junctionannotation_log = Channel.empty() + ch_junctionannotation_bed = Channel.empty() + ch_junctionannotation_interact_bed = Channel.empty() + ch_junctionannotation_xls = Channel.empty() + ch_junctionannotation_pdf = Channel.empty() + ch_junctionannotation_events_pdf = Channel.empty() + ch_junctionannotation_rscript = Channel.empty() + ch_junctionannotation_log = Channel.empty() if ('junction_annotation' in rseqc_modules) { RSEQC_JUNCTIONANNOTATION ( ch_bam, ch_bed ) - junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed - junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed - junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls - junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf - junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf - junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript - junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log - ch_versions = ch_versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) + ch_junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed + ch_junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed + ch_junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls + ch_junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf + ch_junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf + ch_junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript + ch_junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log + ch_junction_annotation = ch_junctionannotation_bed.mix(ch_junctionannotation_interact_bed, ch_junctionannotation_xls, ch_junctionannotation_pdf, ch_junctionannotation_events_pdf, ch_junctionannotation_rscript, ch_junctionannotation_log) + ch_versions = ch_versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) } // // Run RSeQC junction_saturation.py // - junctionsaturation_pdf = Channel.empty() - junctionsaturation_rscript = Channel.empty() + ch_junctionsaturation_pdf = Channel.empty() + ch_junctionsaturation_rscript = Channel.empty() if ('junction_saturation' in rseqc_modules) { RSEQC_JUNCTIONSATURATION ( ch_bam, ch_bed ) - junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf - junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript - ch_versions = ch_versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) + ch_junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf + ch_junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript + ch_junction_saturation = ch_junctionsaturation_pdf.mix(ch_junctionsaturation_rscript) + ch_versions = ch_versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) } // // Run RSeQC read_distribution.py // - readdistribution_txt = Channel.empty() + ch_readdistribution = Channel.empty() if ('read_distribution' in rseqc_modules) { RSEQC_READDISTRIBUTION ( ch_bam, ch_bed ) - readdistribution_txt = RSEQC_READDISTRIBUTION.out.txt - ch_versions = ch_versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) + ch_readdistribution = RSEQC_READDISTRIBUTION.out.txt + ch_versions = ch_versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) } // // Run RSeQC read_duplication.py // - readduplication_seq_xls = Channel.empty() - readduplication_pos_xls = Channel.empty() - readduplication_pdf = Channel.empty() - readduplication_rscript = Channel.empty() + ch_readduplication_seq_xls = Channel.empty() + ch_readduplication_pos_xls = Channel.empty() + ch_readduplication_pdf = Channel.empty() + ch_readduplication_rscript = Channel.empty() if ('read_duplication' in rseqc_modules) { RSEQC_READDUPLICATION ( ch_bam ) - readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls - readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls - readduplication_pdf = RSEQC_READDUPLICATION.out.pdf - readduplication_rscript = RSEQC_READDUPLICATION.out.rscript - ch_versions = ch_versions.mix(RSEQC_READDUPLICATION.out.versions.first()) + ch_readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls + ch_readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls + ch_readduplication_pdf = RSEQC_READDUPLICATION.out.pdf + ch_readduplication_rscript = RSEQC_READDUPLICATION.out.rscript + ch_read_duplication = ch_readduplication_seq_xls.mix(ch_readduplication_pos_xls, ch_readduplication_pdf, ch_readduplication_rscript) + ch_versions = ch_versions.mix(RSEQC_READDUPLICATION.out.versions.first()) } // // Run RSeQC tin.py // - tin_txt = Channel.empty() + ch_tin = Channel.empty() if ('tin' in rseqc_modules) { RSEQC_TIN ( ch_bam_bai, ch_bed ) - tin_txt = RSEQC_TIN.out.txt + ch_tin = RSEQC_TIN.out.txt ch_versions = ch_versions.mix(RSEQC_TIN.out.versions.first()) } emit: - bamstat_txt // channel: [ val(meta), txt ] - - innerdistance_distance // channel: [ val(meta), txt ] - innerdistance_freq // channel: [ val(meta), txt ] - innerdistance_mean // channel: [ val(meta), txt ] - innerdistance_pdf // channel: [ val(meta), pdf ] - innerdistance_rscript // channel: [ val(meta), r ] - - inferexperiment_txt // channel: [ val(meta), txt ] - - junctionannotation_bed // channel: [ val(meta), bed ] - junctionannotation_interact_bed // channel: [ val(meta), bed ] - junctionannotation_xls // channel: [ val(meta), xls ] - junctionannotation_pdf // channel: [ val(meta), pdf ] - junctionannotation_events_pdf // channel: [ val(meta), pdf ] - junctionannotation_rscript // channel: [ val(meta), r ] - junctionannotation_log // channel: [ val(meta), log ] - - junctionsaturation_pdf // channel: [ val(meta), pdf ] - junctionsaturation_rscript // channel: [ val(meta), r ] - - readdistribution_txt // channel: [ val(meta), txt ] - - readduplication_seq_xls // channel: [ val(meta), xls ] - readduplication_pos_xls // channel: [ val(meta), xls ] - readduplication_pdf // channel: [ val(meta), pdf ] - readduplication_rscript // channel: [ val(meta), r ] - - tin_txt // channel: [ val(meta), txt ] + ch_bamstat // channel: [ val(meta), txt ] + + ch_inner_distance + ch_innerdistance_distance // channel: [ val(meta), txt ] + ch_innerdistance_freq // channel: [ val(meta), txt ] + ch_innerdistance_mean // channel: [ val(meta), txt ] + ch_innerdistance_pdf // channel: [ val(meta), pdf ] + ch_innerdistance_rscript // channel: [ val(meta), r ] + + ch_inferexperiment // channel: [ val(meta), txt ] + + ch_junction_annotation + ch_junctionannotation_bed // channel: [ val(meta), bed ] + ch_junctionannotation_interact_bed // channel: [ val(meta), bed ] + ch_junctionannotation_xls // channel: [ val(meta), xls ] + ch_junctionannotation_pdf // channel: [ val(meta), pdf ] + ch_junctionannotation_events_pdf // channel: [ val(meta), pdf ] + ch_junctionannotation_rscript // channel: [ val(meta), r ] + ch_junctionannotation_log // channel: [ val(meta), log ] + + ch_junction_saturation + ch_junctionsaturation_pdf // channel: [ val(meta), pdf ] + ch_junctionsaturation_rscript // channel: [ val(meta), r ] + + ch_readdistribution // channel: [ val(meta), txt ] + + ch_read_duplication + ch_readduplication_seq_xls // channel: [ val(meta), xls ] + ch_readduplication_pos_xls // channel: [ val(meta), xls ] + ch_readduplication_pdf // channel: [ val(meta), pdf ] + ch_readduplication_rscript // channel: [ val(meta), r ] + + ch_tin // channel: [ val(meta), txt ] versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/bam_rseqc/meta.yml b/subworkflows/nf-core/bam_rseqc/meta.yml index 428b83e6d..781922de7 100644 --- a/subworkflows/nf-core/bam_rseqc/meta.yml +++ b/subworkflows/nf-core/bam_rseqc/meta.yml @@ -12,8 +12,16 @@ keywords: - readdistribution - readduplication - tin -modules: +components: - rseqc + - rseqc/tin + - rseqc/readduplication + - rseqc/readdistribution + - rseqc/junctionsaturation + - rseqc/junctionannotation + - rseqc/innerdistance + - rseqc/inferexperiment + - rseqc/bamstat input: - meta: type: map @@ -133,3 +141,6 @@ output: authors: - "@drpatelh" - "@kevinmenden" +maintainers: + - "@drpatelh" + - "@kevinmenden" diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test new file mode 100644 index 000000000..976fb67e8 --- /dev/null +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test @@ -0,0 +1,65 @@ +nextflow_workflow { + + name "Test Workflow BAM_RSEQC" + script "../main.nf" + workflow "BAM_RSEQC" + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/bam_rseqc" + tag "bam_rseqc" + tag "rseqc" + tag "rseqc/bamstat" + tag "rseqc/inferexperiment" + tag "rseqc/innerdistance" + tag "rseqc/junctionannotation" + tag "rseqc/junctionsaturation" + tag "rseqc/readdistribution" + tag "rseqc/readduplication" + tag "rseqc/tin" + + test("sarscov2 paired-end [bam]") { + + when { + workflow { + """ + input[0] = Channel.of([ + [ 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[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) + input[2] = ['bam_stat', 'inner_distance', 'infer_experiment', 'junction_annotation', 'junction_saturation', 'read_distribution', 'read_duplication', 'tin'] + """ + } + } + + then { + assertAll( + { assert workflow.success}, + { assert snapshot(workflow.out.ch_bamstat).match("bamstat")}, + + { assert snapshot(workflow.out.ch_inner_distance.findAll { it[1].endsWith('.pdf') == false }).match("inner_distance")}, + { assert workflow.out.ch_inner_distance.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + + { assert snapshot(workflow.out.ch_inferexperiment).match("inferexperiment")}, + + { assert snapshot(workflow.out.ch_junction_annotation.findAll { + it[1].endsWith('.xls') == false && + it[1].endsWith('.r') == false }).match("junction_annotation")}, + + { assert snapshot(workflow.out.ch_junction_saturation.findAll { it[1].endsWith('.pdf') == false }).match("junction_saturation")}, + { assert workflow.out.ch_junction_saturation.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + + { assert snapshot(workflow.out.ch_readdistribution).match("readdistribution")}, + { assert snapshot(workflow.out.ch_read_duplication.findAll { it[1].endsWith('.pdf') == false }).match("read_duplication")}, + + { assert workflow.out.ch_read_duplication.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + + { assert snapshot(workflow.out.ch_tin).match("tin")}, + { assert snapshot(workflow.out.versions).match("versions")}, + ) + } + + } + +} diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap new file mode 100644 index 000000000..98b8b2eab --- /dev/null +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap @@ -0,0 +1,151 @@ +{ + "inner_distance": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" + ], + [ + { + "id": "test" + }, + "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" + ], + [ + { + "id": "test" + }, + "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" + ], + [ + { + "id": "test" + }, + "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" + ] + ] + ], + "timestamp": "2023-11-25T18:02:43.884125559" + }, + "junction_saturation": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.junctionSaturation_plot.r:md5,caa6e63dcb477aabb169882b2f30dadd" + ] + ] + ], + "timestamp": "2023-11-25T18:02:43.919027887" + }, + "versions": { + "content": [ + [ + "versions.yml:md5,07b3ad789260bd746d872e7ff18153b2", + "versions.yml:md5,59d1ee2d13b29d10549187562d8fe1e0", + "versions.yml:md5,5eb5515f8009effdbb601170bb90ba29", + "versions.yml:md5,71818a5705b87b9d5c2532403a436bd8", + "versions.yml:md5,a09f406b0da71ca4291fd935e49d377d", + "versions.yml:md5,c9124387d6090cb4c94aaa9bf0e1c321", + "versions.yml:md5,e1e69eaa546288ace5e97285313e1420", + "versions.yml:md5,fe3bf0ac57c99687880ee62b28a4d4df" + ] + ], + "timestamp": "2023-11-25T18:02:43.951402764" + }, + "tin": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" + ] + ] + ], + "timestamp": "2023-11-25T18:02:43.943409965" + }, + "bamstat": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" + ] + ] + ], + "timestamp": "2023-11-25T18:02:43.862772491" + }, + "inferexperiment": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" + ] + ] + ], + "timestamp": "2023-11-25T18:02:43.899686868" + }, + "read_duplication": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" + ], + [ + { + "id": "test" + }, + "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" + ], + [ + { + "id": "test" + }, + "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" + ] + ] + ], + "timestamp": "2023-11-25T18:02:43.934467786" + }, + "junction_annotation": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" + ] + ] + ], + "timestamp": "2023-11-25T18:49:45.387109599" + }, + "readdistribution": { + "content": [ + [ + [ + { + "id": "test" + }, + "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" + ] + ] + ], + "timestamp": "2023-11-25T18:02:43.926520106" + } +} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_rseqc/tests/tags.yml b/subworkflows/nf-core/bam_rseqc/tests/tags.yml new file mode 100644 index 000000000..c8dfce3a9 --- /dev/null +++ b/subworkflows/nf-core/bam_rseqc/tests/tags.yml @@ -0,0 +1,2 @@ +subworkflows/bam_rseqc: + - subworkflows/nf-core/bam_rseqc/** From c9fd01c19815454b6efdcf350cc7c39939f91288 Mon Sep 17 00:00:00 2001 From: Mahesh Binzer-Panchal Date: Fri, 8 Dec 2023 12:27:28 +0000 Subject: [PATCH 15/62] Update Changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81a5f41f3..6e89eb70b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling. - [PR #1138](https://github.com/nf-core/rnaseq/pull/1138) - Updates FASTQC and UMITOOLS modules and their dependencies which have had their version string extraction commands updated ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) +- Picard module version updated 3.0.0 -> 3.1.1. +- Samtools module version updated 1.17 -> 1.18. +- Update Rseqc and Fastp modules to print STDERR to screen and file. + ### Software dependencies From 9e5cdc74980676f3ebd9593283b7c22884fb6920 Mon Sep 17 00:00:00 2001 From: Mahesh Binzer-Panchal Date: Fri, 8 Dec 2023 12:30:42 +0000 Subject: [PATCH 16/62] Fix formatting --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e89eb70b..6de4afaa6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Samtools module version updated 1.17 -> 1.18. - Update Rseqc and Fastp modules to print STDERR to screen and file. - ### Software dependencies ### Modules / Subworkflows From 75dde11d590c8eb252cfd455221a0d6f9f4367e4 Mon Sep 17 00:00:00 2001 From: Mahesh Binzer-Panchal Date: Fri, 8 Dec 2023 13:01:19 +0000 Subject: [PATCH 17/62] Update channel names from bam_rseqc subworkflow update --- workflows/rnaseq.nf | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/workflows/rnaseq.nf b/workflows/rnaseq.nf index f8def2d10..5827b753a 100755 --- a/workflows/rnaseq.nf +++ b/workflows/rnaseq.nf @@ -40,15 +40,15 @@ if (!params.skip_alignment) { prepareToolIndices << params.aligner } if (!params.skip_pseudo_alignment && params.pseudo_aligner) { prepareToolIndices << params.pseudo_aligner } // Determine whether to filter the GTF or not -def filterGtf = +def filterGtf = (( // Condition 1: Alignment is required and aligner is set !params.skip_alignment && params.aligner - ) || + ) || ( // Condition 2: Pseudoalignment is required and pseudoaligner is set !params.skip_pseudo_alignment && params.pseudo_aligner - ) || + ) || ( // Condition 3: Transcript FASTA file is not provided !params.transcript_fasta @@ -774,14 +774,14 @@ workflow RNASEQ { PREPARE_GENOME.out.gene_bed, rseqc_modules ) - ch_bamstat_multiqc = BAM_RSEQC.out.bamstat_txt - ch_inferexperiment_multiqc = BAM_RSEQC.out.inferexperiment_txt - ch_innerdistance_multiqc = BAM_RSEQC.out.innerdistance_freq - ch_junctionannotation_multiqc = BAM_RSEQC.out.junctionannotation_log - ch_junctionsaturation_multiqc = BAM_RSEQC.out.junctionsaturation_rscript - ch_readdistribution_multiqc = BAM_RSEQC.out.readdistribution_txt - ch_readduplication_multiqc = BAM_RSEQC.out.readduplication_pos_xls - ch_tin_multiqc = BAM_RSEQC.out.tin_txt + ch_bamstat_multiqc = BAM_RSEQC.out.ch_bamstat + ch_inferexperiment_multiqc = BAM_RSEQC.out.ch_inferexperiment + ch_innerdistance_multiqc = BAM_RSEQC.out.ch_innerdistance_freq + ch_junctionannotation_multiqc = BAM_RSEQC.out.ch_junctionannotation_log + ch_junctionsaturation_multiqc = BAM_RSEQC.out.ch_junctionsaturation_rscript + ch_readdistribution_multiqc = BAM_RSEQC.out.ch_readdistribution + ch_readduplication_multiqc = BAM_RSEQC.out.ch_readduplication_pos_xls + ch_tin_multiqc = BAM_RSEQC.out.ch_tin ch_versions = ch_versions.mix(BAM_RSEQC.out.versions) ch_inferexperiment_multiqc @@ -816,7 +816,7 @@ workflow RNASEQ { // ch_pseudo_multiqc = Channel.empty() ch_pseudoaligner_pca_multiqc = Channel.empty() - ch_pseudoaligner_clustering_multiqc = Channel.empty() + ch_pseudoaligner_clustering_multiqc = Channel.empty() if (!params.skip_pseudo_alignment && params.pseudo_aligner) { if (params.pseudo_aligner == 'salmon') { @@ -851,7 +851,7 @@ workflow RNASEQ { ch_versions = ch_versions.mix(DESEQ2_QC_PSEUDO.out.versions) } } - + // // MODULE: Pipeline reporting // @@ -922,7 +922,7 @@ workflow.onComplete { if (params.email || params.email_on_fail) { NfcoreTemplate.email(workflow, params, summary_params, projectDir, log, multiqc_report, pass_mapped_reads, pass_trimmed_reads, pass_strand_check) } - + NfcoreTemplate.dump_parameters(workflow, params) NfcoreTemplate.summary(workflow, params, log, pass_mapped_reads, pass_trimmed_reads, pass_strand_check) From a294bb5c3c43cd311737569189056c7ae2733460 Mon Sep 17 00:00:00 2001 From: Mahesh Binzer-Panchal Date: Fri, 8 Dec 2023 15:25:32 +0000 Subject: [PATCH 18/62] Update bam_rseqc subworkflow again --- modules.json | 2 +- subworkflows/nf-core/bam_rseqc/main.nf | 30 ++++++---- subworkflows/nf-core/bam_rseqc/meta.yml | 60 ++++++++++++------- .../nf-core/bam_rseqc/tests/main.nf.test | 45 +++++++++++--- .../nf-core/bam_rseqc/tests/main.nf.test.snap | 18 +++--- 5 files changed, 103 insertions(+), 52 deletions(-) diff --git a/modules.json b/modules.json index f24a07889..31bd38cc9 100644 --- a/modules.json +++ b/modules.json @@ -250,7 +250,7 @@ }, "bam_rseqc": { "branch": "master", - "git_sha": "045c3b47040a8284766b78500801ec21e7678277", + "git_sha": "92793c143c93acd9129f15f35f25d3aab2b23c0e", "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { diff --git a/subworkflows/nf-core/bam_rseqc/main.nf b/subworkflows/nf-core/bam_rseqc/main.nf index 65fb18609..bf530f09d 100644 --- a/subworkflows/nf-core/bam_rseqc/main.nf +++ b/subworkflows/nf-core/bam_rseqc/main.nf @@ -38,6 +38,7 @@ workflow BAM_RSEQC { // // Run RSeQC inner_distance.py // + ch_innerdistance = Channel.empty() ch_innerdistance_distance = Channel.empty() ch_innerdistance_freq = Channel.empty() ch_innerdistance_mean = Channel.empty() @@ -50,7 +51,7 @@ workflow BAM_RSEQC { ch_innerdistance_mean = RSEQC_INNERDISTANCE.out.mean ch_innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf ch_innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript - ch_inner_distance = ch_innerdistance_distance.mix(ch_innerdistance_freq, ch_innerdistance_mean, ch_innerdistance_pdf, ch_innerdistance_rscript) + ch_innerdistance = ch_innerdistance_distance.mix(ch_innerdistance_freq, ch_innerdistance_mean, ch_innerdistance_pdf, ch_innerdistance_rscript) ch_versions = ch_versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) } @@ -67,6 +68,7 @@ workflow BAM_RSEQC { // // Run RSeQC junction_annotation.py // + ch_junctionannotation = Channel.empty() ch_junctionannotation_bed = Channel.empty() ch_junctionannotation_interact_bed = Channel.empty() ch_junctionannotation_xls = Channel.empty() @@ -83,20 +85,21 @@ workflow BAM_RSEQC { ch_junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf ch_junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript ch_junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log - ch_junction_annotation = ch_junctionannotation_bed.mix(ch_junctionannotation_interact_bed, ch_junctionannotation_xls, ch_junctionannotation_pdf, ch_junctionannotation_events_pdf, ch_junctionannotation_rscript, ch_junctionannotation_log) + ch_junctionannotation = ch_junctionannotation_bed.mix(ch_junctionannotation_interact_bed, ch_junctionannotation_xls, ch_junctionannotation_pdf, ch_junctionannotation_events_pdf, ch_junctionannotation_rscript, ch_junctionannotation_log) ch_versions = ch_versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) } // // Run RSeQC junction_saturation.py // + ch_junctionsaturation = Channel.empty() ch_junctionsaturation_pdf = Channel.empty() ch_junctionsaturation_rscript = Channel.empty() if ('junction_saturation' in rseqc_modules) { RSEQC_JUNCTIONSATURATION ( ch_bam, ch_bed ) ch_junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf ch_junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript - ch_junction_saturation = ch_junctionsaturation_pdf.mix(ch_junctionsaturation_rscript) + ch_junctionsaturation = ch_junctionsaturation_pdf.mix(ch_junctionsaturation_rscript) ch_versions = ch_versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) } @@ -113,6 +116,7 @@ workflow BAM_RSEQC { // // Run RSeQC read_duplication.py // + ch_readduplication = Channel.empty() ch_readduplication_seq_xls = Channel.empty() ch_readduplication_pos_xls = Channel.empty() ch_readduplication_pdf = Channel.empty() @@ -123,7 +127,7 @@ workflow BAM_RSEQC { ch_readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls ch_readduplication_pdf = RSEQC_READDUPLICATION.out.pdf ch_readduplication_rscript = RSEQC_READDUPLICATION.out.rscript - ch_read_duplication = ch_readduplication_seq_xls.mix(ch_readduplication_pos_xls, ch_readduplication_pdf, ch_readduplication_rscript) + ch_readduplication = ch_readduplication_seq_xls.mix(ch_readduplication_pos_xls, ch_readduplication_pdf, ch_readduplication_rscript) ch_versions = ch_versions.mix(RSEQC_READDUPLICATION.out.versions.first()) } @@ -138,18 +142,18 @@ workflow BAM_RSEQC { } emit: - ch_bamstat // channel: [ val(meta), txt ] + ch_bamstat // channel: [ val(meta), txt ] - ch_inner_distance + ch_innerdistance ch_innerdistance_distance // channel: [ val(meta), txt ] ch_innerdistance_freq // channel: [ val(meta), txt ] ch_innerdistance_mean // channel: [ val(meta), txt ] ch_innerdistance_pdf // channel: [ val(meta), pdf ] ch_innerdistance_rscript // channel: [ val(meta), r ] - ch_inferexperiment // channel: [ val(meta), txt ] + ch_inferexperiment // channel: [ val(meta), txt ] - ch_junction_annotation + ch_junctionannotation ch_junctionannotation_bed // channel: [ val(meta), bed ] ch_junctionannotation_interact_bed // channel: [ val(meta), bed ] ch_junctionannotation_xls // channel: [ val(meta), xls ] @@ -158,19 +162,19 @@ workflow BAM_RSEQC { ch_junctionannotation_rscript // channel: [ val(meta), r ] ch_junctionannotation_log // channel: [ val(meta), log ] - ch_junction_saturation + ch_junctionsaturation ch_junctionsaturation_pdf // channel: [ val(meta), pdf ] ch_junctionsaturation_rscript // channel: [ val(meta), r ] - ch_readdistribution // channel: [ val(meta), txt ] + ch_readdistribution // channel: [ val(meta), txt ] - ch_read_duplication + ch_readduplication ch_readduplication_seq_xls // channel: [ val(meta), xls ] ch_readduplication_pos_xls // channel: [ val(meta), xls ] ch_readduplication_pdf // channel: [ val(meta), pdf ] ch_readduplication_rscript // channel: [ val(meta), r ] - ch_tin // channel: [ val(meta), txt ] + ch_tin // channel: [ val(meta), txt ] - versions = ch_versions // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/bam_rseqc/meta.yml b/subworkflows/nf-core/bam_rseqc/meta.yml index 781922de7..2fef88737 100644 --- a/subworkflows/nf-core/bam_rseqc/meta.yml +++ b/subworkflows/nf-core/bam_rseqc/meta.yml @@ -46,91 +46,107 @@ input: List of rseqc modules to run e.g. [ 'bam_stat', 'infer_experiment' ] output: - - bamstat_txt: + - ch_bamstat: type: file description: bam statistics report pattern: "*.bam_stat.txt" - - innerdistance_distance: + - ch_innerdistance: + type: file + description: All the output files from RSEQC_INNERDISTANCE + pattern: "*.{txt,pdf,R}" + - ch_innerdistance_distance: type: file description: the inner distances pattern: "*.inner_distance.txt" - - innerdistance_freq: + - ch_innerdistance_freq: type: file description: frequencies of different insert sizes pattern: "*.inner_distance_freq.txt" - - innerdistance_mean: + - ch_innerdistance_mean: type: file description: mean/median values of inner distances pattern: "*.inner_distance_mean.txt" - - innerdistance_pdf: + - ch_innerdistance_pdf: type: file description: distribution plot of inner distances pattern: "*.inner_distance_plot.pdf" - - innerdistance_rscript: + - ch_innerdistance_rscript: type: file description: script to reproduce the plot pattern: "*.inner_distance_plot.R" - - inferexperiment_txt: + - ch_inferexperiment: type: file description: infer_experiment results report pattern: "*.infer_experiment.txt" - - junctionannotation_bed: + - ch_junctionannotation: + type: file + description: All the output files from RSEQC_JUNCTIONANNOTATION + pattern: "*.{bed,xls,pdf,R,log}" + - ch_junctionannotation_bed: type: file description: bed file of annotated junctions pattern: "*.junction.bed" - - junctionannotation_interact_bed: + - ch_junctionannotation_interact_bed: type: file description: Interact bed file pattern: "*.Interact.bed" - - junctionannotation_xls: + - ch_junctionannotation_xls: type: file description: xls file with junction information pattern: "*.xls" - - junctionannotation_pdf: + - ch_junctionannotation_pdf: type: file description: junction plot pattern: "*.junction.pdf" - - junctionannotation_events_pdf: + - ch_junctionannotation_events_pdf: type: file description: events plot pattern: "*.events.pdf" - - junctionannotation_rscript: + - ch_junctionannotation_rscript: type: file description: Rscript to reproduce the plots pattern: "*.r" - - junctionannotation_log: + - ch_junctionannotation_log: type: file description: Log file generated by tool pattern: "*.log" - - junctionsaturation_pdf: + - ch_junctionsaturation: + type: file + description: All the output files from RSEQC_JUNCTIONSATURATION + pattern: "*.{pdf,R}" + - ch_junctionsaturation_pdf: type: file description: Junction saturation report pattern: "*.pdf" - - junctionsaturation_rscript: + - ch_junctionsaturation_rscript: type: file description: Junction saturation R-script pattern: "*.r" - - readdistribution_txt: + - ch_readdistribution: type: file description: the read distribution report pattern: "*.read_distribution.txt" - - readduplication_seq_xls: + - ch_readduplication: + type: file + description: All the output files from RSEQC_READDUPLICATION + pattern: "*.{xls,pdf,R}" + - ch_readduplication_seq_xls: type: file description: Read duplication rate determined from mapping position of read pattern: "*seq.DupRate.xls" - - readduplication_pos_xls: + - ch_readduplication_pos_xls: type: file description: Read duplication rate determined from sequence of read pattern: "*pos.DupRate.xls" - - readduplication_pdf: + - ch_readduplication_pdf: type: file description: plot of duplication rate pattern: "*.pdf" - - readduplication_rscript: + - ch_readduplication_rscript: type: file description: script to reproduce the plot pattern: "*.R" - - tin_txt: + - ch_tin: type: file description: TXT file containing tin.py results summary pattern: "*.txt" diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test index 976fb67e8..171476a91 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test @@ -38,28 +38,59 @@ nextflow_workflow { { assert workflow.success}, { assert snapshot(workflow.out.ch_bamstat).match("bamstat")}, - { assert snapshot(workflow.out.ch_inner_distance.findAll { it[1].endsWith('.pdf') == false }).match("inner_distance")}, - { assert workflow.out.ch_inner_distance.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.ch_innerdistance.findAll { it[1].endsWith('.pdf') == false }).match("inner_distance")}, + { assert workflow.out.ch_innerdistance.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, { assert snapshot(workflow.out.ch_inferexperiment).match("inferexperiment")}, - { assert snapshot(workflow.out.ch_junction_annotation.findAll { + { assert snapshot(workflow.out.ch_junctionannotation.findAll { it[1].endsWith('.xls') == false && it[1].endsWith('.r') == false }).match("junction_annotation")}, - { assert snapshot(workflow.out.ch_junction_saturation.findAll { it[1].endsWith('.pdf') == false }).match("junction_saturation")}, - { assert workflow.out.ch_junction_saturation.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.ch_junctionsaturation.findAll { it[1].endsWith('.pdf') == false }).match("junction_saturation")}, + { assert workflow.out.ch_junctionsaturation.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, { assert snapshot(workflow.out.ch_readdistribution).match("readdistribution")}, - { assert snapshot(workflow.out.ch_read_duplication.findAll { it[1].endsWith('.pdf') == false }).match("read_duplication")}, - { assert workflow.out.ch_read_duplication.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, + { assert snapshot(workflow.out.ch_readduplication.findAll { it[1].endsWith('.pdf') == false }).match("read_duplication")}, + { assert workflow.out.ch_readduplication.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, { assert snapshot(workflow.out.ch_tin).match("tin")}, { assert snapshot(workflow.out.versions).match("versions")}, ) } + } + + test("sarscov2 paired-end [bam] no modules") { + when { + workflow { + """ + input[0] = Channel.of([ + [ 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[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) + input[2] = [] + """ + } + } + + then { + assertAll( + { assert workflow.success }, + { assert workflow.out.ch_bamstat.size() == 0 }, + { assert workflow.out.ch_innerdistance.size() == 0 }, + { assert workflow.out.ch_inferexperiment.size() == 0 }, + { assert workflow.out.ch_junctionannotation.size() == 0 }, + { assert workflow.out.ch_junctionsaturation.size() == 0 }, + { assert workflow.out.ch_readdistribution.size() == 0 }, + { assert workflow.out.ch_readduplication.size() == 0 }, + { assert workflow.out.ch_tin.size() == 0 }, + { assert workflow.out.versions.size() == 0 }, + ) + } } } diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap index 98b8b2eab..13285ef06 100644 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap +++ b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap @@ -28,7 +28,7 @@ ] ] ], - "timestamp": "2023-11-25T18:02:43.884125559" + "timestamp": "2023-12-08T14:37:45.734509133" }, "junction_saturation": { "content": [ @@ -41,7 +41,7 @@ ] ] ], - "timestamp": "2023-11-25T18:02:43.919027887" + "timestamp": "2023-12-08T14:37:45.825157699" }, "versions": { "content": [ @@ -56,7 +56,7 @@ "versions.yml:md5,fe3bf0ac57c99687880ee62b28a4d4df" ] ], - "timestamp": "2023-11-25T18:02:43.951402764" + "timestamp": "2023-12-08T14:37:45.942304603" }, "tin": { "content": [ @@ -69,7 +69,7 @@ ] ] ], - "timestamp": "2023-11-25T18:02:43.943409965" + "timestamp": "2023-12-08T14:37:45.935155313" }, "bamstat": { "content": [ @@ -82,7 +82,7 @@ ] ] ], - "timestamp": "2023-11-25T18:02:43.862772491" + "timestamp": "2023-12-08T14:37:45.671792186" }, "inferexperiment": { "content": [ @@ -95,7 +95,7 @@ ] ] ], - "timestamp": "2023-11-25T18:02:43.899686868" + "timestamp": "2023-12-08T14:37:45.747507043" }, "read_duplication": { "content": [ @@ -120,7 +120,7 @@ ] ] ], - "timestamp": "2023-11-25T18:02:43.934467786" + "timestamp": "2023-12-08T14:37:45.927253593" }, "junction_annotation": { "content": [ @@ -133,7 +133,7 @@ ] ] ], - "timestamp": "2023-11-25T18:49:45.387109599" + "timestamp": "2023-12-08T14:37:45.757733033" }, "readdistribution": { "content": [ @@ -146,6 +146,6 @@ ] ] ], - "timestamp": "2023-11-25T18:02:43.926520106" + "timestamp": "2023-12-08T14:37:45.841855468" } } \ No newline at end of file From ed2b8aaaaa7797a1632e6d024ba98602651b76dc Mon Sep 17 00:00:00 2001 From: Mahesh Binzer-Panchal Date: Fri, 8 Dec 2023 15:41:09 +0000 Subject: [PATCH 19/62] Update CHANGELOG.md --- CHANGELOG.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6de4afaa6..ba6701c2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,14 +11,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling. - [PR #1138](https://github.com/nf-core/rnaseq/pull/1138) - Updates FASTQC and UMITOOLS modules and their dependencies which have had their version string extraction commands updated ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) -- Picard module version updated 3.0.0 -> 3.1.1. -- Samtools module version updated 1.17 -> 1.18. - Update Rseqc and Fastp modules to print STDERR to screen and file. ### Software dependencies +| Dependency | Old version | New version | +| ---------- | ----------- | ----------- | +| `picard` | 3.0.0 | 3.1.1 | +| `samtools` | 1.17 | 1.18 | + +> **NB:** Dependency has been **updated** if both old and new version information is present. +> +> **NB:** Dependency has been **added** if just the new version information is present. +> +> **NB:** Dependency has been **removed** if new version information isn't present. + ### Modules / Subworkflows +- BAM_RSEQC subworkflow updated with new channel names. + ## [[3.13.2](https://github.com/nf-core/rnaseq/releases/tag/3.13.2)] - 2023-11-21 ### Credits From efff19f9d9e6d727ebc238ce9a1ad6ae8d6f8d21 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Tue, 19 Dec 2023 18:36:48 +0000 Subject: [PATCH 20/62] Template update for nf-core/tools version 2.11 --- .github/CONTRIBUTING.md | 3 + .github/PULL_REQUEST_TEMPLATE.md | 1 + .github/workflows/ci.yml | 2 +- .github/workflows/fix-linting.yml | 4 +- .github/workflows/linting.yml | 12 +- .gitpod.yml | 4 +- CHANGELOG.md | 2 +- README.md | 17 +-- assets/multiqc_config.yml | 2 +- assets/slackreport.json | 2 +- conf/modules.config | 2 +- docs/usage.md | 4 +- lib/NfcoreTemplate.groovy | 32 ++--- modules.json | 6 +- .../dumpsoftwareversions/environment.yml | 7 ++ .../custom/dumpsoftwareversions/main.nf | 6 +- .../custom/dumpsoftwareversions/meta.yml | 7 +- .../dumpsoftwareversions/tests/main.nf.test | 38 ++++++ .../tests/main.nf.test.snap | 27 +++++ .../dumpsoftwareversions/tests/tags.yml | 2 + modules/nf-core/fastqc/environment.yml | 7 ++ modules/nf-core/fastqc/main.nf | 10 +- modules/nf-core/fastqc/meta.yml | 5 + modules/nf-core/fastqc/tests/main.nf.test | 109 ++++++++++++++++++ .../nf-core/fastqc/tests/main.nf.test.snap | 10 ++ modules/nf-core/fastqc/tests/tags.yml | 2 + modules/nf-core/multiqc/environment.yml | 7 ++ modules/nf-core/multiqc/main.nf | 8 +- modules/nf-core/multiqc/meta.yml | 11 +- modules/nf-core/multiqc/tests/main.nf.test | 63 ++++++++++ modules/nf-core/multiqc/tests/tags.yml | 2 + nextflow.config | 12 +- 32 files changed, 360 insertions(+), 66 deletions(-) create mode 100644 modules/nf-core/custom/dumpsoftwareversions/environment.yml create mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test create mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap create mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml create mode 100644 modules/nf-core/fastqc/environment.yml create mode 100644 modules/nf-core/fastqc/tests/main.nf.test create mode 100644 modules/nf-core/fastqc/tests/main.nf.test.snap create mode 100644 modules/nf-core/fastqc/tests/tags.yml create mode 100644 modules/nf-core/multiqc/environment.yml create mode 100644 modules/nf-core/multiqc/tests/main.nf.test create mode 100644 modules/nf-core/multiqc/tests/tags.yml diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index ec7e537b7..82ce14f40 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -27,6 +27,9 @@ If you're not used to this workflow with git, you can start with some [docs from ## Tests +You can optionally test your changes by running the pipeline locally. Then it is recommended to use the `debug` profile to +receive warnings about process selectors and other debug info. Example: `nextflow run . -profile debug,test,docker --outdir `. + When you create a pull request with changes, [GitHub Actions](https://github.com/features/actions) will run automatic tests. Typically, pull-requests are only fully reviewed when these tests are passing, though of course we can help out before then. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index fdc75549e..5ed2fd931 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -19,6 +19,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/rnas - [ ] If necessary, also make a PR on the nf-core/rnaseq _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core lint`). - [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). +- [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). - [ ] Usage Documentation in `docs/usage.md` is updated. - [ ] Output Documentation in `docs/output.md` is updated. - [ ] `CHANGELOG.md` is updated. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9f7050723..fcfb093f9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: - "latest-everything" steps: - name: Check out pipeline code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Nextflow uses: nf-core/setup-nextflow@v1 diff --git a/.github/workflows/fix-linting.yml b/.github/workflows/fix-linting.yml index 8b2617a2e..619e58a6e 100644 --- a/.github/workflows/fix-linting.yml +++ b/.github/workflows/fix-linting.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: # Use the @nf-core-bot token to check out so we can push later - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: token: ${{ secrets.nf_core_bot_auth_token }} @@ -24,7 +24,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }} - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 - name: Install Prettier run: npm install -g prettier @prettier/plugin-php diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index b8bdd2143..905c58e44 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -14,9 +14,9 @@ jobs: EditorConfig: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 - name: Install editorconfig-checker run: npm install -g editorconfig-checker @@ -27,9 +27,9 @@ jobs: Prettier: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 - name: Install Prettier run: npm install -g prettier @@ -40,7 +40,7 @@ jobs: PythonBlack: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Check code lints with Black uses: psf/black@stable @@ -71,7 +71,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out pipeline code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Nextflow uses: nf-core/setup-nextflow@v1 diff --git a/.gitpod.yml b/.gitpod.yml index 25488dcc0..acf726953 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -4,7 +4,9 @@ tasks: command: | pre-commit install --install-hooks nextflow self-update - + - name: unset JAVA_TOOL_OPTIONS + command: | + unset JAVA_TOOL_OPTIONS vscode: extensions: # based on nf-core.nf-core-extensionpack - codezombiech.gitignore # Language support for .gitignore files diff --git a/CHANGELOG.md b/CHANGELOG.md index d06775028..4b300c08c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v3.13.0dev - [date] +## v3.14.0dev - [date] Initial release of nf-core/rnaseq, created with the [nf-core](https://nf-co.re/) template. diff --git a/README.md b/README.md index 78e612f97..99ceefe19 100644 --- a/README.md +++ b/README.md @@ -30,11 +30,8 @@ ## Usage -:::note -If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how -to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) -with `-profile test` before running the workflow on actual data. -::: +> [!NOTE] +> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data. - + diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index ceaee1795..d968a5742 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,5 +1,5 @@ report_comment: > - This report has been generated by the nf-core/rnaseq + This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: diff --git a/assets/slackreport.json b/assets/slackreport.json index b03fc11c5..fc84fa5e5 100644 --- a/assets/slackreport.json +++ b/assets/slackreport.json @@ -3,7 +3,7 @@ { "fallback": "Plain-text summary of the attachment.", "color": "<% if (success) { %>good<% } else { %>danger<%} %>", - "author_name": "nf-core/rnaseq v${version} - ${runName}", + "author_name": "nf-core/rnaseq ${version} - ${runName}", "author_icon": "https://www.nextflow.io/docs/latest/_static/favicon.ico", "text": "<% if (success) { %>Pipeline completed successfully!<% } else { %>Pipeline completed with errors<% } %>", "fields": [ diff --git a/conf/modules.config b/conf/modules.config index 39e813865..d91c6aba0 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -39,7 +39,7 @@ process { } withName: 'MULTIQC' { - ext.args = params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' + ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } publishDir = [ path: { "${params.outdir}/multiqc" }, mode: params.publish_dir_mode, diff --git a/docs/usage.md b/docs/usage.md index 69300fbac..07cf6cc79 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -20,7 +20,7 @@ You will need to create a samplesheet with information about the samples you wou The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will concatenate the raw reads before performing any downstream analysis. Below is an example for the same sample sequenced across 3 lanes: -```console +```csv title="samplesheet.csv" sample,fastq_1,fastq_2 CONTROL_REP1,AEG588A1_S1_L002_R1_001.fastq.gz,AEG588A1_S1_L002_R2_001.fastq.gz CONTROL_REP1,AEG588A1_S1_L003_R1_001.fastq.gz,AEG588A1_S1_L003_R2_001.fastq.gz @@ -33,7 +33,7 @@ The pipeline will auto-detect whether a sample is single- or paired-end using th A final samplesheet file consisting of both single- and paired-end data may look something like the one below. This is for 6 samples, where `TREATMENT_REP3` has been sequenced twice. -```console +```csv title="samplesheet.csv" sample,fastq_1,fastq_2 CONTROL_REP1,AEG588A1_S1_L002_R1_001.fastq.gz,AEG588A1_S1_L002_R2_001.fastq.gz CONTROL_REP2,AEG588A2_S2_L002_R1_001.fastq.gz,AEG588A2_S2_L002_R2_001.fastq.gz diff --git a/lib/NfcoreTemplate.groovy b/lib/NfcoreTemplate.groovy index 01b8653d0..e248e4c3f 100755 --- a/lib/NfcoreTemplate.groovy +++ b/lib/NfcoreTemplate.groovy @@ -4,6 +4,7 @@ import org.yaml.snakeyaml.Yaml import groovy.json.JsonOutput +import nextflow.extension.FilesEx class NfcoreTemplate { @@ -141,12 +142,14 @@ class NfcoreTemplate { try { if (params.plaintext_email) { throw GroovyException('Send plaintext e-mail, not HTML') } // Try to send HTML e-mail using sendmail + def sendmail_tf = new File(workflow.launchDir.toString(), ".sendmail_tmp.html") + sendmail_tf.withWriter { w -> w << sendmail_html } [ 'sendmail', '-t' ].execute() << sendmail_html log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Sent summary e-mail to $email_address (sendmail)-" } catch (all) { // Catch failures and try with plaintext def mail_cmd = [ 'mail', '-s', subject, '--content-type=text/html', email_address ] - if ( mqc_report.size() <= max_multiqc_email_size.toBytes() ) { + if ( mqc_report != null && mqc_report.size() <= max_multiqc_email_size.toBytes() ) { mail_cmd += [ '-A', mqc_report ] } mail_cmd.execute() << email_html @@ -155,14 +158,16 @@ class NfcoreTemplate { } // Write summary e-mail HTML to a file - def output_d = new File("${params.outdir}/pipeline_info/") - if (!output_d.exists()) { - output_d.mkdirs() - } - def output_hf = new File(output_d, "pipeline_report.html") + def output_hf = new File(workflow.launchDir.toString(), ".pipeline_report.html") output_hf.withWriter { w -> w << email_html } - def output_tf = new File(output_d, "pipeline_report.txt") + FilesEx.copyTo(output_hf.toPath(), "${params.outdir}/pipeline_info/pipeline_report.html"); + output_hf.delete() + + // Write summary e-mail TXT to a file + def output_tf = new File(workflow.launchDir.toString(), ".pipeline_report.txt") output_tf.withWriter { w -> w << email_txt } + FilesEx.copyTo(output_tf.toPath(), "${params.outdir}/pipeline_info/pipeline_report.txt"); + output_tf.delete() } // @@ -227,15 +232,14 @@ class NfcoreTemplate { // Dump pipeline parameters in a json file // public static void dump_parameters(workflow, params) { - def output_d = new File("${params.outdir}/pipeline_info/") - if (!output_d.exists()) { - output_d.mkdirs() - } - def timestamp = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss') - def output_pf = new File(output_d, "params_${timestamp}.json") + def filename = "params_${timestamp}.json" + def temp_pf = new File(workflow.launchDir.toString(), ".${filename}") def jsonStr = JsonOutput.toJson(params) - output_pf.text = JsonOutput.prettyPrint(jsonStr) + temp_pf.text = JsonOutput.prettyPrint(jsonStr) + + FilesEx.copyTo(temp_pf.toPath(), "${params.outdir}/pipeline_info/params_${timestamp}.json") + temp_pf.delete() } // diff --git a/modules.json b/modules.json index 4385755a3..92fa8c846 100644 --- a/modules.json +++ b/modules.json @@ -7,17 +7,17 @@ "nf-core": { "custom/dumpsoftwareversions": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "bba7e362e4afead70653f84d8700588ea28d0f9e", "installed_by": ["modules"] }, "fastqc": { "branch": "master", - "git_sha": "bd8092b67b5103bdd52e300f75889442275c3117", + "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", "installed_by": ["modules"] }, "multiqc": { "branch": "master", - "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "git_sha": "4ab13872435962dadc239979554d13709e20bf29", "installed_by": ["modules"] } } diff --git a/modules/nf-core/custom/dumpsoftwareversions/environment.yml b/modules/nf-core/custom/dumpsoftwareversions/environment.yml new file mode 100644 index 000000000..f0c63f698 --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/environment.yml @@ -0,0 +1,7 @@ +name: custom_dumpsoftwareversions +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::multiqc=1.17 diff --git a/modules/nf-core/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf index ebc872733..7685b33cd 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/main.nf +++ b/modules/nf-core/custom/dumpsoftwareversions/main.nf @@ -2,10 +2,10 @@ process CUSTOM_DUMPSOFTWAREVERSIONS { label 'process_single' // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container - conda "bioconda::multiqc=1.14" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.14--pyhdfd78af_0' : - 'biocontainers/multiqc:1.14--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.17--pyhdfd78af_0' : + 'biocontainers/multiqc:1.17--pyhdfd78af_0' }" input: path versions diff --git a/modules/nf-core/custom/dumpsoftwareversions/meta.yml b/modules/nf-core/custom/dumpsoftwareversions/meta.yml index c32657de7..5f15a5fde 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/meta.yml +++ b/modules/nf-core/custom/dumpsoftwareversions/meta.yml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json name: custom_dumpsoftwareversions description: Custom module used to dump software versions within the nf-core pipeline template keywords: @@ -16,7 +16,6 @@ input: type: file description: YML file containing software versions pattern: "*.yml" - output: - yml: type: file @@ -30,7 +29,9 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@drpatelh" - "@grst" +maintainers: + - "@drpatelh" + - "@grst" diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test new file mode 100644 index 000000000..eec1db10a --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test @@ -0,0 +1,38 @@ +nextflow_process { + + name "Test Process CUSTOM_DUMPSOFTWAREVERSIONS" + script "../main.nf" + process "CUSTOM_DUMPSOFTWAREVERSIONS" + tag "modules" + tag "modules_nfcore" + tag "custom" + tag "dumpsoftwareversions" + tag "custom/dumpsoftwareversions" + + test("Should run without failures") { + when { + process { + """ + def tool1_version = ''' + TOOL1: + tool1: 0.11.9 + '''.stripIndent() + + def tool2_version = ''' + TOOL2: + tool2: 1.9 + '''.stripIndent() + + input[0] = Channel.of(tool1_version, tool2_version).collectFile() + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap new file mode 100644 index 000000000..4274ed57a --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap @@ -0,0 +1,27 @@ +{ + "Should run without failures": { + "content": [ + { + "0": [ + "software_versions.yml:md5,1c851188476409cda5752ce971b20b58" + ], + "1": [ + "software_versions_mqc.yml:md5,2570f4ba271ad08357b0d3d32a9cf84d" + ], + "2": [ + "versions.yml:md5,3843ac526e762117eedf8825b40683df" + ], + "mqc_yml": [ + "software_versions_mqc.yml:md5,2570f4ba271ad08357b0d3d32a9cf84d" + ], + "versions": [ + "versions.yml:md5,3843ac526e762117eedf8825b40683df" + ], + "yml": [ + "software_versions.yml:md5,1c851188476409cda5752ce971b20b58" + ] + } + ], + "timestamp": "2023-11-03T14:43:22.157011" + } +} diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml b/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml new file mode 100644 index 000000000..405aa24ae --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml @@ -0,0 +1,2 @@ +custom/dumpsoftwareversions: + - modules/nf-core/custom/dumpsoftwareversions/** diff --git a/modules/nf-core/fastqc/environment.yml b/modules/nf-core/fastqc/environment.yml new file mode 100644 index 000000000..1787b38a9 --- /dev/null +++ b/modules/nf-core/fastqc/environment.yml @@ -0,0 +1,7 @@ +name: fastqc +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::fastqc=0.12.1 diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 249f90644..9e19a74c5 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -2,10 +2,10 @@ process FASTQC { tag "$meta.id" label 'process_medium' - conda "bioconda::fastqc=0.11.9" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/fastqc:0.11.9--0' : - 'biocontainers/fastqc:0.11.9--0' }" + 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' : + 'biocontainers/fastqc:0.12.1--hdfd78af_0' }" input: tuple val(meta), path(reads) @@ -37,7 +37,7 @@ process FASTQC { cat <<-END_VERSIONS > versions.yml "${task.process}": - fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) + fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) END_VERSIONS """ @@ -49,7 +49,7 @@ process FASTQC { cat <<-END_VERSIONS > versions.yml "${task.process}": - fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) + fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) END_VERSIONS """ } diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml index 4da5bb5a0..ee5507e06 100644 --- a/modules/nf-core/fastqc/meta.yml +++ b/modules/nf-core/fastqc/meta.yml @@ -50,3 +50,8 @@ authors: - "@grst" - "@ewels" - "@FelixKrueger" +maintainers: + - "@drpatelh" + - "@grst" + - "@ewels" + - "@FelixKrueger" diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test new file mode 100644 index 000000000..b9e8f926e --- /dev/null +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -0,0 +1,109 @@ +nextflow_process { + + name "Test Process FASTQC" + script "../main.nf" + process "FASTQC" + tag "modules" + tag "modules_nfcore" + tag "fastqc" + + test("Single-Read") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = [ + [ id: 'test', single_end:true ], + [ + file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) + ] + ] + """ + } + } + + then { + assertAll ( + { assert process.success }, + // NOTE The report contains the date inside it, which means that the md5sum is stable per day, but not longer than that. So you can't md5sum it. + // looks like this:
Mon 2 Oct 2023
test.gz
+ // https://github.com/nf-core/modules/pull/3903#issuecomment-1743620039 + { assert process.out.html.get(0).get(1) ==~ ".*/test_fastqc.html" }, + { assert path(process.out.html.get(0).get(1)).getText().contains("File typeConventional base calls") }, + { assert snapshot(process.out.versions).match("versions") }, + { assert process.out.zip.get(0).get(1) ==~ ".*/test_fastqc.zip" } + ) + } + } +// TODO +// // +// // Test with paired-end data +// // +// workflow test_fastqc_paired_end { +// 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) +// ] +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with interleaved data +// // +// workflow test_fastqc_interleaved { +// input = [ +// [id: 'test', single_end: false], // meta map +// file(params.test_data['sarscov2']['illumina']['test_interleaved_fastq_gz'], checkIfExists: true) +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with bam data +// // +// workflow test_fastqc_bam { +// input = [ +// [id: 'test', single_end: false], // meta map +// file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with multiple samples +// // +// workflow test_fastqc_multiple { +// 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), +// file(params.test_data['sarscov2']['illumina']['test2_1_fastq_gz'], checkIfExists: true), +// file(params.test_data['sarscov2']['illumina']['test2_2_fastq_gz'], checkIfExists: true) +// ] +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with custom prefix +// // +// workflow test_fastqc_custom_prefix { +// input = [ +// [ id:'mysample', single_end:true ], // meta map +// file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) +// ] + +// FASTQC ( input ) +// } +} diff --git a/modules/nf-core/fastqc/tests/main.nf.test.snap b/modules/nf-core/fastqc/tests/main.nf.test.snap new file mode 100644 index 000000000..636a32cea --- /dev/null +++ b/modules/nf-core/fastqc/tests/main.nf.test.snap @@ -0,0 +1,10 @@ +{ + "versions": { + "content": [ + [ + "versions.yml:md5,e1cc25ca8af856014824abd842e93978" + ] + ], + "timestamp": "2023-10-09T23:40:54+0000" + } +} \ No newline at end of file diff --git a/modules/nf-core/fastqc/tests/tags.yml b/modules/nf-core/fastqc/tests/tags.yml new file mode 100644 index 000000000..7834294ba --- /dev/null +++ b/modules/nf-core/fastqc/tests/tags.yml @@ -0,0 +1,2 @@ +fastqc: + - modules/nf-core/fastqc/** diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml new file mode 100644 index 000000000..bc0bdb5b6 --- /dev/null +++ b/modules/nf-core/multiqc/environment.yml @@ -0,0 +1,7 @@ +name: multiqc +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::multiqc=1.18 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 1fc387bee..00cc48d27 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -1,10 +1,10 @@ process MULTIQC { label 'process_single' - conda "bioconda::multiqc=1.14" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.14--pyhdfd78af_0' : - 'biocontainers/multiqc:1.14--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.18--pyhdfd78af_0' : + 'biocontainers/multiqc:1.18--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" @@ -25,12 +25,14 @@ process MULTIQC { def args = task.ext.args ?: '' def config = multiqc_config ? "--config $multiqc_config" : '' def extra_config = extra_multiqc_config ? "--config $extra_multiqc_config" : '' + def logo = multiqc_logo ? /--cl-config 'custom_logo: "${multiqc_logo}"'/ : '' """ multiqc \\ --force \\ $args \\ $config \\ $extra_config \\ + $logo \\ . cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index f93b5ee51..f1aa660eb 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -1,5 +1,5 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/yaml-schema.json -name: MultiQC +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: multiqc description: Aggregate results from bioinformatics analyses across many samples into a single report keywords: - QC @@ -13,7 +13,6 @@ tools: homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ licence: ["GPL-3.0-or-later"] - input: - multiqc_files: type: file @@ -31,7 +30,6 @@ input: type: file description: Optional logo file for MultiQC pattern: "*.{png}" - output: - report: type: file @@ -54,3 +52,8 @@ authors: - "@bunop" - "@drpatelh" - "@jfy133" +maintainers: + - "@abhi18av" + - "@bunop" + - "@drpatelh" + - "@jfy133" diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test new file mode 100644 index 000000000..c2dad217c --- /dev/null +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -0,0 +1,63 @@ +nextflow_process { + + name "Test Process MULTIQC" + script "../main.nf" + process "MULTIQC" + tag "modules" + tag "modules_nfcore" + tag "multiqc" + + test("MULTIQC: FASTQC") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) + input[1] = [] + input[2] = [] + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.report.get(0)).exists() }, + { assert path(process.out.data.get(0)).exists() }, + { assert path(process.out.versions.get(0)).getText().contains("multiqc") } + ) + } + + } + + test("MULTIQC: FASTQC and a config file") { + + when { + params { + outdir = "$outputDir" + } + process { + """ + input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) + input[1] = Channel.of(file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true)) + input[2] = [] + input[3] = [] + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert path(process.out.report.get(0)).exists() }, + { assert path(process.out.data.get(0)).exists() }, + { assert path(process.out.versions.get(0)).getText().contains("multiqc") } + ) + } + + } +} diff --git a/modules/nf-core/multiqc/tests/tags.yml b/modules/nf-core/multiqc/tests/tags.yml new file mode 100644 index 000000000..bea6c0d37 --- /dev/null +++ b/modules/nf-core/multiqc/tests/tags.yml @@ -0,0 +1,2 @@ +multiqc: + - modules/nf-core/multiqc/** diff --git a/nextflow.config b/nextflow.config index e1a884a41..cec01c19e 100644 --- a/nextflow.config +++ b/nextflow.config @@ -14,7 +14,7 @@ params { input = null // References genome = null - igenomes_base = 's3://ngi-igenomes/igenomes' + igenomes_base = 's3://ngi-igenomes/igenomes/' igenomes_ignore = false @@ -82,6 +82,7 @@ profiles { dumpHashes = true process.beforeScript = 'echo $HOSTNAME' cleanup = false + nextflow.enable.configProcessNamesValidation = true } conda { conda.enabled = true @@ -104,13 +105,13 @@ profiles { } docker { docker.enabled = true - docker.userEmulation = true conda.enabled = false singularity.enabled = false podman.enabled = false shifter.enabled = false charliecloud.enabled = false apptainer.enabled = false + runOptions = '-u $(id -u):$(id -g)' } arm { docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' @@ -181,7 +182,7 @@ singularity.registry = 'quay.io' // Nextflow plugins plugins { - id 'nf-validation' // Validation of pipeline parameters and creation of an input channel from a sample sheet + id 'nf-validation@1.1.3' // Validation of pipeline parameters and creation of an input channel from a sample sheet } // Load igenomes.config if required @@ -204,6 +205,9 @@ env { // Capture exit codes from upstream processes when piping process.shell = ['/bin/bash', '-euo', 'pipefail'] +// Disable process selector warnings by default. Use debug profile to enable warnings. +nextflow.enable.configProcessNamesValidation = false + def trace_timestamp = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss') timeline { enabled = true @@ -229,7 +233,7 @@ manifest { description = """RNA sequencing analysis pipeline for gene/isoform quantification and extensive quality control.""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '3.13.0dev' + version = '3.14.0dev' doi = '' } From 0ad09701317c84a405f73e2368233bd065623768 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Wed, 20 Dec 2023 15:57:50 +0000 Subject: [PATCH 21/62] Template update for nf-core/tools version 2.11.1 --- .../{release-announcments.yml => release-announcements.yml} | 0 nextflow.config | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename .github/workflows/{release-announcments.yml => release-announcements.yml} (100%) diff --git a/.github/workflows/release-announcments.yml b/.github/workflows/release-announcements.yml similarity index 100% rename from .github/workflows/release-announcments.yml rename to .github/workflows/release-announcements.yml diff --git a/nextflow.config b/nextflow.config index cec01c19e..50e190382 100644 --- a/nextflow.config +++ b/nextflow.config @@ -111,10 +111,10 @@ profiles { shifter.enabled = false charliecloud.enabled = false apptainer.enabled = false - runOptions = '-u $(id -u):$(id -g)' + docker.runOptions = '-u $(id -u):$(id -g)' } arm { - docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' + docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' } singularity { singularity.enabled = true From d4455203323ec4ac8b503c0a690d39f3b0a9c264 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 21 Dec 2023 11:47:18 +0000 Subject: [PATCH 22/62] Try more flexible requires for genome --- nextflow_schema.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 60e6585cf..29bbba499 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -212,7 +212,10 @@ "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." } }, - "required": ["fasta"] + "oneOf": [ + {"required": ["fasta"]}, + {"required": ["genome"]} + ] }, "read_trimming_options": { "title": "Read trimming options", From db3702d6a7dd0155a2baae20f291c6cf689f3b42 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 21 Dec 2023 11:49:57 +0000 Subject: [PATCH 23/62] Prettier --- nextflow_schema.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 29bbba499..9e28206a4 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -212,10 +212,7 @@ "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." } }, - "oneOf": [ - {"required": ["fasta"]}, - {"required": ["genome"]} - ] + "oneOf": [{ "required": ["fasta"] }, { "required": ["genome"] }] }, "read_trimming_options": { "title": "Read trimming options", From 8de95b793905e0b7a7b798f6b84bcfd316335896 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 22 Dec 2023 14:10:33 +0000 Subject: [PATCH 24/62] Provide interface to pseudoaligner kmer length --- conf/modules.config | 7 +++++-- nextflow.config | 1 + nextflow_schema.json | 9 ++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index efef36974..d1576e1e3 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -75,7 +75,10 @@ process { } withName: 'SALMON_INDEX' { - ext.args = params.gencode ? '--gencode' : '' + ext.args = { [ + params.gencode ? '--gencode' : '', + params.pseudo_kmer_size ? "-k ${params.pseudo_kmer_size}": '' + ].join(' ').trim() } publishDir = [ path: { "${params.outdir}/genome/index" }, mode: params.publish_dir_mode, @@ -84,7 +87,7 @@ process { } withName: 'KALLISTO_INDEX' { - ext.args = { params.gencode ? '--gencode' : '' } + ext.args = params.kmer_size ? "-k ${params.pseudo_kmer_size}" : '' publishDir = [ path: { "${params.outdir}/genome/index" }, mode: params.publish_dir_mode, diff --git a/nextflow.config b/nextflow.config index d15d4435c..366a82a74 100644 --- a/nextflow.config +++ b/nextflow.config @@ -59,6 +59,7 @@ params { // Alignment aligner = 'star_salmon' pseudo_aligner = null + pseudo_aligner_kmer_size = 31 seq_center = null bam_csi_index = false star_ignore_sjdbgtf = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 60e6585cf..f696c76c9 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -361,6 +361,13 @@ "fa_icon": "fas fa-hamburger", "enum": ["salmon", "kallisto"] }, + "pseudo_aligner_kmer_size": { + "type": "integer", + "default": 31, + "description": "Kmer length passed to indexing step of pseudoaligners", + "help_text": "Failure to set a good kmer size could cause issues with quantification with Kallisto or Salmon. This is mostly an issue for short reads (<50bp), where the default kmer size of 31 is an problem.", + "fa_icon": "fas fa-ruler-horizontal" + }, "bam_csi_index": { "type": "boolean", "description": "Create a CSI index for BAM files instead of the traditional BAI index. This will be required for genomes with larger chromosome sizes.", @@ -397,7 +404,7 @@ }, "min_mapped_reads": { "type": "number", - "default": 5.0, + "default": 5, "fa_icon": "fas fa-percentage", "description": "Minimum percentage of uniquely mapped reads below which samples are removed from further processing.", "help_text": "Some downstream steps in the pipeline will fail if this threshold is too low." From aeab5ffc9218f988b6bffee940bc36b397f743d6 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 22 Dec 2023 14:15:05 +0000 Subject: [PATCH 25/62] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba6701c2f..d1c7beb95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling. - [PR #1138](https://github.com/nf-core/rnaseq/pull/1138) - Updates FASTQC and UMITOOLS modules and their dependencies which have had their version string extraction commands updated ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) - Update Rseqc and Fastp modules to print STDERR to screen and file. +- [PR #1144](https://github.com/nf-core/rnaseq/pull/1144) - Interface to kmer size for pseudoaligners ### Software dependencies From 5b1765d7b14aed4d1229b4a54afcc88b03bb033f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 22 Dec 2023 14:17:31 +0000 Subject: [PATCH 26/62] Fix param name --- conf/modules.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index d1576e1e3..466521922 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -77,7 +77,7 @@ process { withName: 'SALMON_INDEX' { ext.args = { [ params.gencode ? '--gencode' : '', - params.pseudo_kmer_size ? "-k ${params.pseudo_kmer_size}": '' + params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}": '' ].join(' ').trim() } publishDir = [ path: { "${params.outdir}/genome/index" }, @@ -87,7 +87,7 @@ process { } withName: 'KALLISTO_INDEX' { - ext.args = params.kmer_size ? "-k ${params.pseudo_kmer_size}" : '' + ext.args = params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}" : '' publishDir = [ path: { "${params.outdir}/genome/index" }, mode: params.publish_dir_mode, From 4d05fbb4933f24d76a5079e203d657e4388afdf5 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 22 Dec 2023 15:39:27 +0000 Subject: [PATCH 27/62] Temporarily disable latest testing --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6ce4d2098..3c96ebd79 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: matrix: NXF_VER: - "23.04.0" - - "latest-everything" + #- "latest-everything" steps: - name: Check out pipeline code uses: actions/checkout@v3 From e686a75d1d79cd28570828dee42792b061f9ce15 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 22 Dec 2023 16:10:50 +0000 Subject: [PATCH 28/62] Fix module --- modules/nf-core/gffread/main.nf | 2 +- modules/nf-core/gffread/meta.yml | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/nf-core/gffread/main.nf b/modules/nf-core/gffread/main.nf index f4472b0e8..68f8045b5 100644 --- a/modules/nf-core/gffread/main.nf +++ b/modules/nf-core/gffread/main.nf @@ -2,7 +2,7 @@ process GFFREAD { tag "$gff" label 'process_low' - conda "bioconda::gffread=0.12.1" + conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/gffread:0.12.1--h8b12597_0' : 'biocontainers/gffread:0.12.1--h8b12597_0' }" diff --git a/modules/nf-core/gffread/meta.yml b/modules/nf-core/gffread/meta.yml index 203357477..f486f8bb5 100644 --- a/modules/nf-core/gffread/meta.yml +++ b/modules/nf-core/gffread/meta.yml @@ -12,13 +12,11 @@ tools: tool_dev_url: https://github.com/gpertea/gffread doi: 10.12688/f1000research.23297.1 licence: ["MIT"] - input: - gff: type: file description: A reference file in either the GFF3, GFF2 or GTF format. pattern: "*.{gff, gtf}" - output: - gtf: type: file @@ -28,6 +26,7 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@emiller88" +maintainers: + - "@emiller88" From 2e721100a37c08a92f2ca667a5ca3941ab9b083b Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 22 Dec 2023 16:40:16 +0000 Subject: [PATCH 29/62] Don't put STDERR in versions string for UMITOOLS_PREPAREFORRSEM --- modules/local/umitools_prepareforrsem/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/local/umitools_prepareforrsem/main.nf b/modules/local/umitools_prepareforrsem/main.nf index 9ee41737d..d3c2bd2c2 100644 --- a/modules/local/umitools_prepareforrsem/main.nf +++ b/modules/local/umitools_prepareforrsem/main.nf @@ -30,7 +30,7 @@ process UMITOOLS_PREPAREFORRSEM { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') + umitools: \$(umi_tools --version | sed 's/^.*UMI-tools version://; s/ *\$//') END_VERSIONS """ } From 2408c3b03ed8d1ab5a14649736379b6a94014b66 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 22 Dec 2023 17:05:37 +0000 Subject: [PATCH 30/62] add missing changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1c7beb95..88366a564 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling. - [PR #1138](https://github.com/nf-core/rnaseq/pull/1138) - Updates FASTQC and UMITOOLS modules and their dependencies which have had their version string extraction commands updated ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) - Update Rseqc and Fastp modules to print STDERR to screen and file. +- [PR #1141](https://github.com/nf-core/rnaseq/pull/1141) - Important! Template update for nf-core/tools v2.11 - [PR #1144](https://github.com/nf-core/rnaseq/pull/1144) - Interface to kmer size for pseudoaligners ### Software dependencies From b23d761ac76027465029953b76357eeeb5eb0eab Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 3 Jan 2024 11:08:18 +0000 Subject: [PATCH 31/62] Update CHANGELOG --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88366a564..5123e6fd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1141](https://github.com/nf-core/rnaseq/pull/1141) - Important! Template update for nf-core/tools v2.11 - [PR #1144](https://github.com/nf-core/rnaseq/pull/1144) - Interface to kmer size for pseudoaligners +### Parameters + +| Old parameter | New parameter | +| ------------- | ---------------------------- | +| | `--pseudo_aligner_kmer_size` | + +> **NB:** Parameter has been **updated** if both old and new parameter information is present. +> **NB:** Parameter has been **added** if just the new parameter information is present. +> **NB:** Parameter has been **removed** if new parameter information isn't present. + ### Software dependencies | Dependency | Old version | New version | From c78108089c96508135b397a94da0d9f6dfc0878f Mon Sep 17 00:00:00 2001 From: Adam Talbot <12817534+adamrtalbot@users.noreply.github.com> Date: Wed, 3 Jan 2024 14:14:22 +0000 Subject: [PATCH 32/62] Revert "Update FastQC and UMItools modules" --- CHANGELOG.md | 15 - modules.json | 64 +-- modules/nf-core/fastp/environment.yml | 7 - modules/nf-core/fastp/main.nf | 8 +- modules/nf-core/fastp/meta.yml | 4 +- modules/nf-core/fastp/tests/main.nf.test | 485 ------------------ modules/nf-core/fastp/tests/main.nf.test.snap | 52 -- modules/nf-core/fastp/tests/nextflow.config | 6 - modules/nf-core/fastp/tests/tags.yml | 2 - modules/nf-core/fastqc/environment.yml | 7 - modules/nf-core/fastqc/main.nf | 6 +- modules/nf-core/fastqc/meta.yml | 5 - modules/nf-core/fastqc/tests/main.nf.test | 73 +-- modules/nf-core/fastqc/tests/tags.yml | 2 - .../picard/markduplicates/environment.yml | 7 - modules/nf-core/picard/markduplicates/main.nf | 6 +- .../nf-core/picard/markduplicates/meta.yml | 4 - .../picard/markduplicates/tests/main.nf.test | 111 ---- .../markduplicates/tests/main.nf.test.snap | 44 -- .../markduplicates/tests/nextflow.config | 6 - .../picard/markduplicates/tests/tags.yml | 2 - modules/nf-core/rseqc/bamstat/environment.yml | 8 - modules/nf-core/rseqc/bamstat/main.nf | 2 +- modules/nf-core/rseqc/bamstat/meta.yml | 3 - .../nf-core/rseqc/bamstat/tests/main.nf.test | 38 -- .../rseqc/bamstat/tests/main.nf.test.snap | 31 -- .../rseqc/bamstat/tests/nextflow.config | 5 - modules/nf-core/rseqc/bamstat/tests/tags.yml | 2 - .../rseqc/inferexperiment/environment.yml | 8 - modules/nf-core/rseqc/inferexperiment/main.nf | 2 +- .../nf-core/rseqc/inferexperiment/meta.yml | 4 - .../rseqc/inferexperiment/tests/main.nf.test | 34 -- .../inferexperiment/tests/main.nf.test.snap | 31 -- .../inferexperiment/tests/nextflow.config | 5 - .../rseqc/inferexperiment/tests/tags.yml | 2 - .../rseqc/innerdistance/environment.yml | 8 - modules/nf-core/rseqc/innerdistance/main.nf | 2 +- modules/nf-core/rseqc/innerdistance/meta.yml | 4 - .../rseqc/innerdistance/tests/main.nf.test | 41 -- .../innerdistance/tests/main.nf.test.snap | 68 --- .../rseqc/innerdistance/tests/nextflow.config | 5 - .../rseqc/innerdistance/tests/tags.yml | 2 - .../rseqc/junctionannotation/environment.yml | 8 - .../nf-core/rseqc/junctionannotation/main.nf | 4 +- .../nf-core/rseqc/junctionannotation/meta.yml | 3 - .../junctionannotation/tests/main.nf.test | 37 -- .../tests/main.nf.test.snap | 24 - .../rseqc/junctionannotation/tests/tags.yml | 2 - .../rseqc/junctionsaturation/environment.yml | 8 - .../nf-core/rseqc/junctionsaturation/main.nf | 2 +- .../nf-core/rseqc/junctionsaturation/meta.yml | 3 - .../junctionsaturation/tests/main.nf.test | 36 -- .../tests/main.nf.test.snap | 30 -- .../rseqc/junctionsaturation/tests/tags.yml | 2 - .../rseqc/readdistribution/environment.yml | 8 - .../nf-core/rseqc/readdistribution/main.nf | 2 +- .../nf-core/rseqc/readdistribution/meta.yml | 3 - .../rseqc/readdistribution/tests/main.nf.test | 33 -- .../readdistribution/tests/main.nf.test.snap | 33 -- .../rseqc/readdistribution/tests/tags.yml | 2 - .../rseqc/readduplication/environment.yml | 8 - modules/nf-core/rseqc/readduplication/main.nf | 2 +- .../nf-core/rseqc/readduplication/meta.yml | 5 - .../rseqc/readduplication/tests/main.nf.test | 36 -- .../readduplication/tests/main.nf.test.snap | 58 --- .../rseqc/readduplication/tests/tags.yml | 2 - modules/nf-core/rseqc/tin/environment.yml | 8 - modules/nf-core/rseqc/tin/main.nf | 2 +- modules/nf-core/rseqc/tin/meta.yml | 2 - modules/nf-core/rseqc/tin/tests/main.nf.test | 35 -- .../nf-core/rseqc/tin/tests/main.nf.test.snap | 47 -- modules/nf-core/rseqc/tin/tests/tags.yml | 2 - .../nf-core/samtools/flagstat/environment.yml | 7 - modules/nf-core/samtools/flagstat/main.nf | 6 +- modules/nf-core/samtools/flagstat/meta.yml | 2 - .../samtools/flagstat/tests/main.nf.test | 36 -- .../samtools/flagstat/tests/main.nf.test.snap | 16 - .../nf-core/samtools/flagstat/tests/tags.yml | 2 - .../nf-core/samtools/idxstats/environment.yml | 7 - modules/nf-core/samtools/idxstats/main.nf | 6 +- modules/nf-core/samtools/idxstats/meta.yml | 2 - .../samtools/idxstats/tests/main.nf.test | 36 -- .../samtools/idxstats/tests/main.nf.test.snap | 16 - .../nf-core/samtools/idxstats/tests/tags.yml | 2 - .../nf-core/samtools/index/environment.yml | 7 - modules/nf-core/samtools/index/main.nf | 6 +- modules/nf-core/samtools/index/meta.yml | 4 - .../samtools/index/tests/csi.nextflow.config | 7 - .../nf-core/samtools/index/tests/main.nf.test | 87 ---- .../samtools/index/tests/main.nf.test.snap | 28 - modules/nf-core/samtools/index/tests/tags.yml | 2 - modules/nf-core/samtools/sort/environment.yml | 7 - modules/nf-core/samtools/sort/main.nf | 6 +- modules/nf-core/samtools/sort/meta.yml | 3 - .../nf-core/samtools/sort/tests/main.nf.test | 73 --- .../samtools/sort/tests/main.nf.test.snap | 48 -- .../samtools/sort/tests/nextflow.config | 7 - modules/nf-core/samtools/sort/tests/tags.yml | 3 - .../nf-core/samtools/stats/environment.yml | 7 - modules/nf-core/samtools/stats/main.nf | 6 +- modules/nf-core/samtools/stats/meta.yml | 4 - .../nf-core/samtools/stats/tests/main.nf.test | 78 --- .../samtools/stats/tests/main.nf.test.snap | 64 --- modules/nf-core/samtools/stats/tests/tags.yml | 2 - modules/nf-core/trimgalore/environment.yml | 7 - modules/nf-core/trimgalore/main.nf | 2 +- modules/nf-core/trimgalore/meta.yml | 4 - modules/nf-core/trimgalore/tests/main.nf.test | 105 ---- .../trimgalore/tests/main.nf.test.snap | 148 ------ modules/nf-core/trimgalore/tests/tags.yml | 2 - .../nf-core/umitools/dedup/environment.yml | 7 - modules/nf-core/umitools/dedup/main.nf | 6 +- modules/nf-core/umitools/dedup/meta.yml | 9 +- .../nf-core/umitools/extract/environment.yml | 7 - modules/nf-core/umitools/extract/main.nf | 6 +- modules/nf-core/umitools/extract/meta.yml | 17 +- .../umitools/extract/tests/main.nf.test | 35 -- .../umitools/extract/tests/main.nf.test.snap | 10 - .../umitools/extract/tests/nextflow.config | 9 - .../nf-core/umitools/extract/tests/tags.yml | 2 - .../meta.yml | 4 +- .../tests/main.nf.test | 51 -- .../tests/main.nf.test.snap | 41 -- .../tests/tags.yml | 2 - .../bam_markduplicates_picard/meta.yml | 5 +- subworkflows/nf-core/bam_rseqc/main.nf | 158 +++--- subworkflows/nf-core/bam_rseqc/meta.yml | 73 +-- .../nf-core/bam_rseqc/tests/main.nf.test | 96 ---- .../nf-core/bam_rseqc/tests/main.nf.test.snap | 151 ------ subworkflows/nf-core/bam_rseqc/tests/tags.yml | 2 - .../nf-core/bam_sort_stats_samtools/meta.yml | 3 - .../tests/main.nf.test | 78 --- .../tests/main.nf.test.snap | 86 ---- .../bam_sort_stats_samtools/tests/tags.yml | 2 - .../nf-core/bam_stats_samtools/meta.yml | 2 - .../bam_stats_samtools/tests/main.nf.test | 102 ---- .../tests/main.nf.test.snap | 128 ----- .../nf-core/bam_stats_samtools/tests/tags.yml | 2 - .../fastq_fastqc_umitools_fastp/meta.yml | 8 +- .../tests/main.nf.test | 60 --- .../tests/main.nf.test.snap | 81 --- .../tests/tags.yml | 2 - .../fastq_fastqc_umitools_trimgalore/meta.yml | 10 +- workflows/rnaseq.nf | 28 +- 144 files changed, 205 insertions(+), 3601 deletions(-) delete mode 100644 modules/nf-core/fastp/environment.yml delete mode 100644 modules/nf-core/fastp/tests/main.nf.test delete mode 100644 modules/nf-core/fastp/tests/main.nf.test.snap delete mode 100644 modules/nf-core/fastp/tests/nextflow.config delete mode 100644 modules/nf-core/fastp/tests/tags.yml delete mode 100644 modules/nf-core/fastqc/environment.yml delete mode 100644 modules/nf-core/fastqc/tests/tags.yml delete mode 100644 modules/nf-core/picard/markduplicates/environment.yml delete mode 100644 modules/nf-core/picard/markduplicates/tests/main.nf.test delete mode 100644 modules/nf-core/picard/markduplicates/tests/main.nf.test.snap delete mode 100644 modules/nf-core/picard/markduplicates/tests/nextflow.config delete mode 100644 modules/nf-core/picard/markduplicates/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/bamstat/environment.yml delete mode 100644 modules/nf-core/rseqc/bamstat/tests/main.nf.test delete mode 100644 modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap delete mode 100644 modules/nf-core/rseqc/bamstat/tests/nextflow.config delete mode 100644 modules/nf-core/rseqc/bamstat/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/inferexperiment/environment.yml delete mode 100644 modules/nf-core/rseqc/inferexperiment/tests/main.nf.test delete mode 100644 modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap delete mode 100644 modules/nf-core/rseqc/inferexperiment/tests/nextflow.config delete mode 100644 modules/nf-core/rseqc/inferexperiment/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/innerdistance/environment.yml delete mode 100644 modules/nf-core/rseqc/innerdistance/tests/main.nf.test delete mode 100644 modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap delete mode 100644 modules/nf-core/rseqc/innerdistance/tests/nextflow.config delete mode 100644 modules/nf-core/rseqc/innerdistance/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/junctionannotation/environment.yml delete mode 100644 modules/nf-core/rseqc/junctionannotation/tests/main.nf.test delete mode 100644 modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap delete mode 100644 modules/nf-core/rseqc/junctionannotation/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/junctionsaturation/environment.yml delete mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test delete mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap delete mode 100644 modules/nf-core/rseqc/junctionsaturation/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/readdistribution/environment.yml delete mode 100644 modules/nf-core/rseqc/readdistribution/tests/main.nf.test delete mode 100644 modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap delete mode 100644 modules/nf-core/rseqc/readdistribution/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/readduplication/environment.yml delete mode 100644 modules/nf-core/rseqc/readduplication/tests/main.nf.test delete mode 100644 modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap delete mode 100644 modules/nf-core/rseqc/readduplication/tests/tags.yml delete mode 100644 modules/nf-core/rseqc/tin/environment.yml delete mode 100644 modules/nf-core/rseqc/tin/tests/main.nf.test delete mode 100644 modules/nf-core/rseqc/tin/tests/main.nf.test.snap delete mode 100644 modules/nf-core/rseqc/tin/tests/tags.yml delete mode 100644 modules/nf-core/samtools/flagstat/environment.yml delete mode 100644 modules/nf-core/samtools/flagstat/tests/main.nf.test delete mode 100644 modules/nf-core/samtools/flagstat/tests/main.nf.test.snap delete mode 100644 modules/nf-core/samtools/flagstat/tests/tags.yml delete mode 100644 modules/nf-core/samtools/idxstats/environment.yml delete mode 100644 modules/nf-core/samtools/idxstats/tests/main.nf.test delete mode 100644 modules/nf-core/samtools/idxstats/tests/main.nf.test.snap delete mode 100644 modules/nf-core/samtools/idxstats/tests/tags.yml delete mode 100644 modules/nf-core/samtools/index/environment.yml delete mode 100644 modules/nf-core/samtools/index/tests/csi.nextflow.config delete mode 100644 modules/nf-core/samtools/index/tests/main.nf.test delete mode 100644 modules/nf-core/samtools/index/tests/main.nf.test.snap delete mode 100644 modules/nf-core/samtools/index/tests/tags.yml delete mode 100644 modules/nf-core/samtools/sort/environment.yml delete mode 100644 modules/nf-core/samtools/sort/tests/main.nf.test delete mode 100644 modules/nf-core/samtools/sort/tests/main.nf.test.snap delete mode 100644 modules/nf-core/samtools/sort/tests/nextflow.config delete mode 100644 modules/nf-core/samtools/sort/tests/tags.yml delete mode 100644 modules/nf-core/samtools/stats/environment.yml delete mode 100644 modules/nf-core/samtools/stats/tests/main.nf.test delete mode 100644 modules/nf-core/samtools/stats/tests/main.nf.test.snap delete mode 100644 modules/nf-core/samtools/stats/tests/tags.yml delete mode 100644 modules/nf-core/trimgalore/environment.yml delete mode 100644 modules/nf-core/trimgalore/tests/main.nf.test delete mode 100644 modules/nf-core/trimgalore/tests/main.nf.test.snap delete mode 100644 modules/nf-core/trimgalore/tests/tags.yml delete mode 100644 modules/nf-core/umitools/dedup/environment.yml delete mode 100644 modules/nf-core/umitools/extract/environment.yml delete mode 100644 modules/nf-core/umitools/extract/tests/main.nf.test delete mode 100644 modules/nf-core/umitools/extract/tests/main.nf.test.snap delete mode 100644 modules/nf-core/umitools/extract/tests/nextflow.config delete mode 100644 modules/nf-core/umitools/extract/tests/tags.yml delete mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test delete mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap delete mode 100644 subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml delete mode 100644 subworkflows/nf-core/bam_rseqc/tests/main.nf.test delete mode 100644 subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap delete mode 100644 subworkflows/nf-core/bam_rseqc/tests/tags.yml delete mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test delete mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap delete mode 100644 subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml delete mode 100644 subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test delete mode 100644 subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap delete mode 100644 subworkflows/nf-core/bam_stats_samtools/tests/tags.yml delete mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test delete mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap delete mode 100644 subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index ba6701c2f..d6544378a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,26 +10,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Enhancements & fixes - [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling. -- [PR #1138](https://github.com/nf-core/rnaseq/pull/1138) - Updates FASTQC and UMITOOLS modules and their dependencies which have had their version string extraction commands updated ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) -- Update Rseqc and Fastp modules to print STDERR to screen and file. ### Software dependencies -| Dependency | Old version | New version | -| ---------- | ----------- | ----------- | -| `picard` | 3.0.0 | 3.1.1 | -| `samtools` | 1.17 | 1.18 | - -> **NB:** Dependency has been **updated** if both old and new version information is present. -> -> **NB:** Dependency has been **added** if just the new version information is present. -> -> **NB:** Dependency has been **removed** if new version information isn't present. - ### Modules / Subworkflows -- BAM_RSEQC subworkflow updated with new channel names. - ## [[3.13.2](https://github.com/nf-core/rnaseq/releases/tag/3.13.2)] - 2023-11-21 ### Credits diff --git a/modules.json b/modules.json index 7cc90d6d3..e78ca060c 100644 --- a/modules.json +++ b/modules.json @@ -27,12 +27,12 @@ }, "fastp": { "branch": "master", - "git_sha": "3c77ca9aac783e76c3614a06db3bfe4fef619bde", - "installed_by": ["modules", "fastq_fastqc_umitools_fastp"] + "git_sha": "d497a4868ace3302016ea8ed4b395072d5e833cd", + "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] }, "fastqc": { "branch": "master", - "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", + "git_sha": "102cc9b709a6da9f7cee2373563ab1464fca9c0a", "installed_by": ["fastq_fastqc_umitools_trimgalore", "fastq_fastqc_umitools_fastp"] }, "fq/subsample": { @@ -77,7 +77,7 @@ }, "picard/markduplicates": { "branch": "master", - "git_sha": "20b0918591d4ba20047d7e13e5094bcceba81447", + "git_sha": "2ee934606f1fdf7fc1cb05d6e8abc13bec8ab448", "installed_by": ["bam_markduplicates_picard"] }, "preseq/lcextrap": { @@ -102,42 +102,42 @@ }, "rseqc/bamstat": { "branch": "master", - "git_sha": "65acf692457e8c466e104c6a3e5ac392e98fe688", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["bam_rseqc"] }, "rseqc/inferexperiment": { "branch": "master", - "git_sha": "f2a3328fde9a2b4185285057f8d3727f39dd2aef", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["bam_rseqc"] }, "rseqc/innerdistance": { "branch": "master", - "git_sha": "3e839096a1be5da4f68d1de1066e4d0bc13f5d6d", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["bam_rseqc"] }, "rseqc/junctionannotation": { "branch": "master", - "git_sha": "3c77ca9aac783e76c3614a06db3bfe4fef619bde", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["bam_rseqc"] }, "rseqc/junctionsaturation": { "branch": "master", - "git_sha": "9dfed3180f80f599c91daf5112d73a5e59367c24", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["bam_rseqc"] }, "rseqc/readdistribution": { "branch": "master", - "git_sha": "7bb1b295a359bcbf0a0ea03d19d40a00916805ee", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["bam_rseqc"] }, "rseqc/readduplication": { "branch": "master", - "git_sha": "db02573fdd89210d09ce9e2ac06857902a7fffec", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["bam_rseqc"] }, "rseqc/tin": { "branch": "master", - "git_sha": "4acfdd20843d5b6d63f9181721a6856447cb7bec", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["bam_rseqc"] }, "salmon/index": { @@ -152,31 +152,31 @@ }, "samtools/flagstat": { "branch": "master", - "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", + "git_sha": "570ec5bcfe19c49e16c9ca35a7a116563af6cc1c", "installed_by": ["bam_stats_samtools"] }, "samtools/idxstats": { "branch": "master", - "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", + "git_sha": "e662ab16e0c11f1e62983e21de9871f59371a639", "installed_by": ["bam_stats_samtools"] }, "samtools/index": { "branch": "master", - "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": [ - "bam_dedup_stats_samtools_umitools", "bam_markduplicates_picard", - "bam_sort_stats_samtools" + "bam_sort_stats_samtools", + "bam_dedup_stats_samtools_umitools" ] }, "samtools/sort": { "branch": "master", - "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", + "git_sha": "a0f7be95788366c1923171e358da7d049eb440f9", "installed_by": ["bam_sort_stats_samtools"] }, "samtools/stats": { "branch": "master", - "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", + "git_sha": "735e1e04e7e01751d2d6e97055bbdb6f70683cc1", "installed_by": ["bam_stats_samtools"] }, "sortmerna": { @@ -206,7 +206,7 @@ }, "trimgalore": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, "ucsc/bedclip": { @@ -221,13 +221,13 @@ }, "umitools/dedup": { "branch": "master", - "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", + "git_sha": "7297204bf49273300a3dbfa4b7a4027c8683f1bd", "installed_by": ["bam_dedup_stats_samtools_umitools"] }, "umitools/extract": { "branch": "master", - "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", - "installed_by": ["fastq_fastqc_umitools_trimgalore", "fastq_fastqc_umitools_fastp"] + "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", + "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] }, "untar": { "branch": "master", @@ -240,31 +240,31 @@ "nf-core": { "bam_dedup_stats_samtools_umitools": { "branch": "master", - "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", + "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", "installed_by": ["subworkflows"] }, "bam_markduplicates_picard": { "branch": "master", - "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", + "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", "installed_by": ["subworkflows"] }, "bam_rseqc": { "branch": "master", - "git_sha": "92793c143c93acd9129f15f35f25d3aab2b23c0e", + "git_sha": "a9784afdd5dcda23b84e64db75dc591065d64653", "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { "branch": "master", - "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", + "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", "installed_by": ["fastq_align_hisat2"] }, "bam_stats_samtools": { "branch": "master", - "git_sha": "a64788f5ad388f1d2ac5bd5f1f3f8fc81476148c", + "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", "installed_by": [ - "bam_dedup_stats_samtools_umitools", + "bam_sort_stats_samtools", "bam_markduplicates_picard", - "bam_sort_stats_samtools" + "bam_dedup_stats_samtools_umitools" ] }, "bedgraph_bedclip_bedgraphtobigwig": { @@ -279,12 +279,12 @@ }, "fastq_fastqc_umitools_fastp": { "branch": "master", - "git_sha": "3e8b0c1144ccf60b7848efbdc2be285ff20b49ee", + "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", - "git_sha": "cfd937a668919d948f6fcbf4218e79de50c2f36f", + "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { diff --git a/modules/nf-core/fastp/environment.yml b/modules/nf-core/fastp/environment.yml deleted file mode 100644 index 70389e664..000000000 --- a/modules/nf-core/fastp/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: fastp -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::fastp=0.23.4 diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index 5fac3c1ad..831b7f128 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -2,7 +2,7 @@ process FASTP { tag "$meta.id" label 'process_medium' - conda "${moduleDir}/environment.yml" + conda "bioconda::fastp=0.23.4" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/fastp:0.23.4--h5f740d0_0' : 'biocontainers/fastp:0.23.4--h5f740d0_0' }" @@ -45,7 +45,7 @@ process FASTP { $adapter_list \\ $fail_fastq \\ $args \\ - 2> >(tee ${prefix}.fastp.log >&2) \\ + 2> ${prefix}.fastp.log \\ | gzip -c > ${prefix}.fastp.fastq.gz cat <<-END_VERSIONS > versions.yml @@ -66,7 +66,7 @@ process FASTP { $adapter_list \\ $fail_fastq \\ $args \\ - 2> >(tee ${prefix}.fastp.log >&2) + 2> ${prefix}.fastp.log cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -91,7 +91,7 @@ process FASTP { --thread $task.cpus \\ --detect_adapter_for_pe \\ $args \\ - 2> >(tee ${prefix}.fastp.log >&2) + 2> ${prefix}.fastp.log cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/fastp/meta.yml b/modules/nf-core/fastp/meta.yml index c22a16abd..197ea7ca6 100644 --- a/modules/nf-core/fastp/meta.yml +++ b/modules/nf-core/fastp/meta.yml @@ -33,6 +33,7 @@ input: - save_merged: type: boolean description: Specify true to save all merged reads to the a file ending in `*.merged.fastq.gz` + output: - meta: type: map @@ -70,6 +71,3 @@ output: authors: - "@drpatelh" - "@kevinmenden" -maintainers: - - "@drpatelh" - - "@kevinmenden" diff --git a/modules/nf-core/fastp/tests/main.nf.test b/modules/nf-core/fastp/tests/main.nf.test deleted file mode 100644 index f610b735e..000000000 --- a/modules/nf-core/fastp/tests/main.nf.test +++ /dev/null @@ -1,485 +0,0 @@ -nextflow_process { - - name "Test Process FASTP" - script "../main.nf" - process "FASTP" - tag "modules" - tag "modules_nfcore" - tag "fastp" - - test("test_fastp_single_end") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - - input[0] = [ - [ id:'test', single_end:true ], - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] - ] - - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "Q20 bases:12.922000 K (92.984097%)", - "single end (151 cycles)" ] - def log_text = [ "Q20 bases: 12922(92.9841%)", - "reads passed filter: 99" ] - def read_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { assert snapshot(process.out.json).match("test_fastp_single_end_json") }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions") } - ) - } - } - - test("test_fastp_paired_end") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - - input[0] = [ - [ 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) ] - ] - - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "Q20 bases:25.719000 K (93.033098%)", - "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] - def log_text = [ "No adapter detected for read1", - "Q30 bases: 12281(88.3716%)"] - def json_text = ['"passed_filter_reads": 198'] - def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions") } - ) - } - } - - test("fastp test_fastp_interleaved") { - config './nextflow.config' - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = false - - input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_interleaved_fastq_gz'], checkIfExists: true) ] - ] - - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "Q20 bases:25.719000 K (93.033098%)", - "paired end (151 cycles + 151 cycles)"] - def log_text = [ "Q20 bases: 12922(92.9841%)", - "reads passed filter: 198"] - def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { assert snapshot(process.out.json).match("fastp test_fastp_interleaved_json") }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions") } - ) - } - } - - test("test_fastp_single_end_trim_fail") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = true - save_merged = false - - input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] - ] - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "Q20 bases:12.922000 K (92.984097%)", - "single end (151 cycles)"] - def log_text = [ "Q20 bases: 12922(92.9841%)", - "reads passed filter: 99" ] - def read_lines = [ "@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } - } - }, - { failed_read_lines.each { failed_read_line -> - { assert path(process.out.reads_fail.get(0).get(1)).linesGzip.contains(failed_read_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { assert snapshot(process.out.json).match("test_fastp_single_end_trim_fail_json") }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions") } - ) - } - } - - test("test_fastp_paired_end_trim_fail") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = true - save_merged = false - - input[0] = [ - [ 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) - ] - ] - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "Q20 bases:25.719000 K (93.033098%)", - "The input has little adapter percentage (~0.000000%), probably it's trimmed before."] - def log_text = [ "No adapter detected for read1", - "Q30 bases: 12281(88.3716%)"] - def json_text = ['"passed_filter_reads": 198'] - def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { failed_read2_lines.each { failed_read2_line -> - { assert path(process.out.reads_fail.get(0).get(1).get(1)).linesGzip.contains(failed_read2_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions") } - ) - } - } - - test("test_fastp_paired_end_merged") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = [] - save_trimmed_fail = false - save_merged = true - - input[0] = [ [ 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) ] - ] - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "
"] - def log_text = [ "Merged and filtered:", - "total reads: 75", - "total bases: 13683"] - def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683'] - def read1_lines = [ "@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", - "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", - "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { read_merged_lines.each { read_merged_line -> - { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions") } - ) - } - } - - test("test_fastp_paired_end_merged_adapterlist") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - adapter_fasta = file("https://github.com/nf-core/test-datasets/raw/modules/data/delete_me/fastp/adapters.fasta", checkIfExists: true) - save_trimmed_fail = false - save_merged = true - - input[0] = [ [ 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) ] - ] - input[1] = adapter_fasta - input[2] = save_trimmed_fail - input[3] = save_merged - """ - } - } - - then { - def html_text = [ "
"] - def log_text = [ "Merged and filtered:", - "total reads: 75", - "total bases: 13683"] - def json_text = ['"merged_and_filtered": {', '"total_reads": 75', '"total_bases": 13683',"--adapter_fasta"] - def read1_lines = ["@ERR5069949.1066259 NS500628:121:HK3MMAFX2:1:11312:18369:8333/1", - "CCTTATGACAGCAAGAACTGTGTATGATGATGGTGCTAGGAGAGTGTGGACACTTATGAATGTCTTGACACTCGTTTATAAAGTTTATTATGGTAATGCTTTAGATCAAGCCATTTCCATGTGGGCTCTTATAATCTCTGTTACTTC", - "AAAAAEAEEAEEEEEEEEEEEEEEEEAEEEEAEEEEEEEEAEEEEEEEEEEEEEEEEE/EAEEEEEE/6EEEEEEEEEEAEEAEEE/EE/AEEAEEEEEAEEEA/EEAAEAE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { read_merged_lines.each { read_merged_line -> - { assert path(process.out.reads_merged.get(0).get(1)).linesGzip.contains(read_merged_line) } - } - }, - { html_text.each { html_part -> - { assert path(process.out.html.get(0).get(1)).getText().contains(html_part) } - } - }, - { json_text.each { json_part -> - { assert path(process.out.json.get(0).get(1)).getText().contains(json_part) } - } - }, - { log_text.each { log_part -> - { assert path(process.out.log.get(0).get(1)).getText().contains(log_part) } - } - }, - { assert snapshot(process.out.versions).match("versions") } - ) - } - } -} diff --git a/modules/nf-core/fastp/tests/main.nf.test.snap b/modules/nf-core/fastp/tests/main.nf.test.snap deleted file mode 100644 index 0fa68c7d7..000000000 --- a/modules/nf-core/fastp/tests/main.nf.test.snap +++ /dev/null @@ -1,52 +0,0 @@ -{ - "fastp test_fastp_interleaved_json": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,168f516f7bd4b7b6c32da7cba87299a4" - ] - ] - ], - "timestamp": "2023-10-17T11:04:45.794175881" - }, - "test_fastp_single_end_json": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,c852d7a6dba5819e4ac8d9673bedcacc" - ] - ] - ], - "timestamp": "2023-10-17T11:04:10.566343705" - }, - "versions": { - "content": [ - [ - "versions.yml:md5,48ffc994212fb1fc9f83a74fa69c9f02" - ] - ], - "timestamp": "2023-10-17T11:04:10.582076024" - }, - "test_fastp_single_end_trim_fail_json": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastp.json:md5,9a7ee180f000e8d00c7fb67f06293eb5" - ] - ] - ], - "timestamp": "2023-10-17T11:05:00.379878948" - } -} \ No newline at end of file diff --git a/modules/nf-core/fastp/tests/nextflow.config b/modules/nf-core/fastp/tests/nextflow.config deleted file mode 100644 index 0f7849ad9..000000000 --- a/modules/nf-core/fastp/tests/nextflow.config +++ /dev/null @@ -1,6 +0,0 @@ -process { - - withName: FASTP { - ext.args = "--interleaved_in" - } -} diff --git a/modules/nf-core/fastp/tests/tags.yml b/modules/nf-core/fastp/tests/tags.yml deleted file mode 100644 index c1afcce75..000000000 --- a/modules/nf-core/fastp/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -fastp: - - modules/nf-core/fastp/** diff --git a/modules/nf-core/fastqc/environment.yml b/modules/nf-core/fastqc/environment.yml deleted file mode 100644 index 1787b38a9..000000000 --- a/modules/nf-core/fastqc/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: fastqc -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::fastqc=0.12.1 diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 9e19a74c5..67209f793 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -2,7 +2,7 @@ process FASTQC { tag "$meta.id" label 'process_medium' - conda "${moduleDir}/environment.yml" + conda "bioconda::fastqc=0.12.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/fastqc:0.12.1--hdfd78af_0' : 'biocontainers/fastqc:0.12.1--hdfd78af_0' }" @@ -37,7 +37,7 @@ process FASTQC { cat <<-END_VERSIONS > versions.yml "${task.process}": - fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) + fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) END_VERSIONS """ @@ -49,7 +49,7 @@ process FASTQC { cat <<-END_VERSIONS > versions.yml "${task.process}": - fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) + fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) END_VERSIONS """ } diff --git a/modules/nf-core/fastqc/meta.yml b/modules/nf-core/fastqc/meta.yml index ee5507e06..4da5bb5a0 100644 --- a/modules/nf-core/fastqc/meta.yml +++ b/modules/nf-core/fastqc/meta.yml @@ -50,8 +50,3 @@ authors: - "@grst" - "@ewels" - "@FelixKrueger" -maintainers: - - "@drpatelh" - - "@grst" - - "@ewels" - - "@FelixKrueger" diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index b9e8f926e..badb67161 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -1,11 +1,10 @@ nextflow_process { name "Test Process FASTQC" - script "../main.nf" + script "modules/nf-core/fastqc/main.nf" process "FASTQC" - tag "modules" - tag "modules_nfcore" tag "fastqc" + tag "modules_nfcore" test("Single-Read") { @@ -38,72 +37,4 @@ nextflow_process { ) } } -// TODO -// // -// // Test with paired-end data -// // -// workflow test_fastqc_paired_end { -// 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) -// ] -// ] - -// FASTQC ( input ) -// } - -// // -// // Test with interleaved data -// // -// workflow test_fastqc_interleaved { -// input = [ -// [id: 'test', single_end: false], // meta map -// file(params.test_data['sarscov2']['illumina']['test_interleaved_fastq_gz'], checkIfExists: true) -// ] - -// FASTQC ( input ) -// } - -// // -// // Test with bam data -// // -// workflow test_fastqc_bam { -// input = [ -// [id: 'test', single_end: false], // meta map -// file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) -// ] - -// FASTQC ( input ) -// } - -// // -// // Test with multiple samples -// // -// workflow test_fastqc_multiple { -// 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), -// file(params.test_data['sarscov2']['illumina']['test2_1_fastq_gz'], checkIfExists: true), -// file(params.test_data['sarscov2']['illumina']['test2_2_fastq_gz'], checkIfExists: true) -// ] -// ] - -// FASTQC ( input ) -// } - -// // -// // Test with custom prefix -// // -// workflow test_fastqc_custom_prefix { -// input = [ -// [ id:'mysample', single_end:true ], // meta map -// file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) -// ] - -// FASTQC ( input ) -// } } diff --git a/modules/nf-core/fastqc/tests/tags.yml b/modules/nf-core/fastqc/tests/tags.yml deleted file mode 100644 index 7834294ba..000000000 --- a/modules/nf-core/fastqc/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -fastqc: - - modules/nf-core/fastqc/** diff --git a/modules/nf-core/picard/markduplicates/environment.yml b/modules/nf-core/picard/markduplicates/environment.yml deleted file mode 100644 index 58b795f54..000000000 --- a/modules/nf-core/picard/markduplicates/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: picard_markduplicates -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::picard=3.1.1 diff --git a/modules/nf-core/picard/markduplicates/main.nf b/modules/nf-core/picard/markduplicates/main.nf index 80930cc41..ebfa0864d 100644 --- a/modules/nf-core/picard/markduplicates/main.nf +++ b/modules/nf-core/picard/markduplicates/main.nf @@ -2,10 +2,10 @@ process PICARD_MARKDUPLICATES { tag "$meta.id" label 'process_medium' - conda "${moduleDir}/environment.yml" + conda "bioconda::picard=3.0.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/picard:3.1.1--hdfd78af_0' : - 'biocontainers/picard:3.1.1--hdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/picard:3.0.0--hdfd78af_1' : + 'biocontainers/picard:3.0.0--hdfd78af_1' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/picard/markduplicates/meta.yml b/modules/nf-core/picard/markduplicates/meta.yml index 1ab90c075..f7693d2f0 100644 --- a/modules/nf-core/picard/markduplicates/meta.yml +++ b/modules/nf-core/picard/markduplicates/meta.yml @@ -69,7 +69,3 @@ authors: - "@drpatelh" - "@projectoriented" - "@ramprasadn" -maintainers: - - "@drpatelh" - - "@projectoriented" - - "@ramprasadn" diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test b/modules/nf-core/picard/markduplicates/tests/main.nf.test deleted file mode 100644 index b2bba094f..000000000 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test +++ /dev/null @@ -1,111 +0,0 @@ -nextflow_process { - - name "Test Process PICARD_MARKDUPLICATES" - script "../main.nf" - process "PICARD_MARKDUPLICATES" - config "./nextflow.config" - tag "modules" - tag "modules_nfcore" - tag "picard" - tag "picard/markduplicates" - - test("sarscov2 - bam, fasta, fai - sorted bam") { - - when { - process { - """ - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = [ - [ id:'genome' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - ] - input[2] = [ - [ id:'genome' ], - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - file(process.out.bam[0][1]).name, - path(process.out.metrics.get(0).get(1)).readLines()[0..2], - process.out.versions - ).match() } - ) - } - } - - test("sarscov2 - bam, fasta, fai - unsorted bam") { - - when { - process { - """ - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) - ] - input[1] = [ - [ id:'genome' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - ] - input[2] = [ - [ id:'genome' ], - file(params.test_data['sarscov2']['genome']['genome_fasta_fai'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - file(process.out.bam[0][1]).name, - path(process.out.metrics.get(0).get(1)).readLines()[0..2], - process.out.versions - ).match() } - ) - } - } - - test("homo_sapiens - cram, fasta, fai") { - - when { - process { - """ - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_sorted_cram'], checkIfExists: true) - ] - input[1] = [ - [ id:'genome' ], - file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - ] - input[2] = [ - [ id:'genome' ], - file(params.test_data['homo_sapiens']['genome']['genome_fasta_fai'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot( - file(process.out.bam[0][1]).name, - path(process.out.metrics.get(0).get(1)).readLines()[0..2], - process.out.versions - ).match() } - ) - } - } - -} diff --git a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap b/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap deleted file mode 100644 index cd788a4d6..000000000 --- a/modules/nf-core/picard/markduplicates/tests/main.nf.test.snap +++ /dev/null @@ -1,44 +0,0 @@ -{ - "sarscov2 - bam, fasta, fai - unsorted bam": { - "content": [ - "test.marked.bam", - [ - "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", - "## htsjdk.samtools.metrics.StringHeader" - ], - [ - "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" - ] - ], - "timestamp": "2023-11-28T10:50:37.735339781" - }, - "homo_sapiens - cram, fasta, fai": { - "content": [ - "test.marked.bam", - [ - "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.cram --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", - "## htsjdk.samtools.metrics.StringHeader" - ], - [ - "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" - ] - ], - "timestamp": "2023-11-28T10:50:48.897954543" - }, - "sarscov2 - bam, fasta, fai - sorted bam": { - "content": [ - "test.marked.bam", - [ - "## htsjdk.samtools.metrics.StringHeader", - "# MarkDuplicates --INPUT test.paired_end.sorted.bam --OUTPUT test.marked.bam --METRICS_FILE test.marked.MarkDuplicates.metrics.txt --ASSUME_SORT_ORDER queryname --REFERENCE_SEQUENCE genome.fasta --MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP 50000 --MAX_FILE_HANDLES_FOR_READ_ENDS_MAP 8000 --SORTING_COLLECTION_SIZE_RATIO 0.25 --TAG_DUPLICATE_SET_MEMBERS false --REMOVE_SEQUENCING_DUPLICATES false --TAGGING_POLICY DontTag --CLEAR_DT true --DUPLEX_UMI false --FLOW_MODE false --FLOW_QUALITY_SUM_STRATEGY false --USE_END_IN_UNPAIRED_READS false --USE_UNPAIRED_CLIPPED_END false --UNPAIRED_END_UNCERTAINTY 0 --FLOW_SKIP_FIRST_N_FLOWS 0 --FLOW_Q_IS_KNOWN_END false --FLOW_EFFECTIVE_QUALITY_THRESHOLD 15 --ADD_PG_TAG_TO_READS true --REMOVE_DUPLICATES false --ASSUME_SORTED false --DUPLICATE_SCORING_STRATEGY SUM_OF_BASE_QUALITIES --PROGRAM_RECORD_ID MarkDuplicates --PROGRAM_GROUP_NAME MarkDuplicates --READ_NAME_REGEX --OPTICAL_DUPLICATE_PIXEL_DISTANCE 100 --MAX_OPTICAL_DUPLICATE_SET_SIZE 300000 --VERBOSITY INFO --QUIET false --VALIDATION_STRINGENCY STRICT --COMPRESSION_LEVEL 5 --MAX_RECORDS_IN_RAM 500000 --CREATE_INDEX false --CREATE_MD5_FILE false --help false --version false --showHidden false --USE_JDK_DEFLATER false --USE_JDK_INFLATER false", - "## htsjdk.samtools.metrics.StringHeader" - ], - [ - "versions.yml:md5,b699af51b1956f3810f8a7c066e0ab17" - ] - ], - "timestamp": "2023-11-28T10:50:26.591387512" - } -} \ No newline at end of file diff --git a/modules/nf-core/picard/markduplicates/tests/nextflow.config b/modules/nf-core/picard/markduplicates/tests/nextflow.config deleted file mode 100644 index 02818dd6e..000000000 --- a/modules/nf-core/picard/markduplicates/tests/nextflow.config +++ /dev/null @@ -1,6 +0,0 @@ -process { - withName: PICARD_MARKDUPLICATES { - ext.prefix = { "${meta.id}.marked" } - ext.args = '--ASSUME_SORT_ORDER queryname' - } -} diff --git a/modules/nf-core/picard/markduplicates/tests/tags.yml b/modules/nf-core/picard/markduplicates/tests/tags.yml deleted file mode 100644 index 4f213d620..000000000 --- a/modules/nf-core/picard/markduplicates/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -picard/markduplicates: - - modules/nf-core/picard/markduplicates/** diff --git a/modules/nf-core/rseqc/bamstat/environment.yml b/modules/nf-core/rseqc/bamstat/environment.yml deleted file mode 100644 index bf0bf0829..000000000 --- a/modules/nf-core/rseqc/bamstat/environment.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: rseqc_bamstat -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::rseqc=3.0.1 - - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/bamstat/main.nf b/modules/nf-core/rseqc/bamstat/main.nf index 33e6959e7..04c1eefd0 100644 --- a/modules/nf-core/rseqc/bamstat/main.nf +++ b/modules/nf-core/rseqc/bamstat/main.nf @@ -2,7 +2,7 @@ process RSEQC_BAMSTAT { tag "$meta.id" label 'process_medium' - conda "${moduleDir}/environment.yml" + conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/bamstat/meta.yml b/modules/nf-core/rseqc/bamstat/meta.yml index 72745310c..2d7fa7996 100644 --- a/modules/nf-core/rseqc/bamstat/meta.yml +++ b/modules/nf-core/rseqc/bamstat/meta.yml @@ -35,6 +35,3 @@ output: authors: - "@drpatelh" - "@kevinmenden" -maintainers: - - "@drpatelh" - - "@kevinmenden" diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test b/modules/nf-core/rseqc/bamstat/tests/main.nf.test deleted file mode 100644 index 1facabea0..000000000 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test +++ /dev/null @@ -1,38 +0,0 @@ -nextflow_process { - - name "Test Process RSEQC_BAMSTAT" - script "../main.nf" - process "RSEQC_BAMSTAT" - - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/bamstat" - - config "./nextflow.config" - - test("sarscov2 - [meta] - bam") { - - when { - params { - // define parameters here. Example: - // outdir = "tests/results" - } - process { - """ - input[0] = [ - [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - """ - } - } - - then { - assert process.success - assert snapshot(process.out).match() - } - - } - -} diff --git a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap b/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap deleted file mode 100644 index b3cc3f55f..000000000 --- a/modules/nf-core/rseqc/bamstat/tests/main.nf.test.snap +++ /dev/null @@ -1,31 +0,0 @@ -{ - "sarscov2 - [meta] - bam": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" - ] - ], - "1": [ - "versions.yml:md5,300e8a9b6f8213d3621e53af09a9c728" - ], - "txt": [ - [ - { - "id": "test" - }, - "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" - ] - ], - "versions": [ - "versions.yml:md5,300e8a9b6f8213d3621e53af09a9c728" - ] - } - ], - "timestamp": "2023-11-23T11:26:51.281041171" - } -} \ No newline at end of file diff --git a/modules/nf-core/rseqc/bamstat/tests/nextflow.config b/modules/nf-core/rseqc/bamstat/tests/nextflow.config deleted file mode 100644 index 8730f1c4b..000000000 --- a/modules/nf-core/rseqc/bamstat/tests/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} diff --git a/modules/nf-core/rseqc/bamstat/tests/tags.yml b/modules/nf-core/rseqc/bamstat/tests/tags.yml deleted file mode 100644 index ed9a41fa9..000000000 --- a/modules/nf-core/rseqc/bamstat/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/bamstat: - - modules/nf-core/rseqc/bamstat/** diff --git a/modules/nf-core/rseqc/inferexperiment/environment.yml b/modules/nf-core/rseqc/inferexperiment/environment.yml deleted file mode 100644 index 1d3936f4e..000000000 --- a/modules/nf-core/rseqc/inferexperiment/environment.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: rseqc_inferexperiment -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::rseqc=3.0.1 - - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/inferexperiment/main.nf b/modules/nf-core/rseqc/inferexperiment/main.nf index db6163387..5f9f4b111 100644 --- a/modules/nf-core/rseqc/inferexperiment/main.nf +++ b/modules/nf-core/rseqc/inferexperiment/main.nf @@ -2,7 +2,7 @@ process RSEQC_INFEREXPERIMENT { tag "$meta.id" label 'process_medium' - conda "${moduleDir}/environment.yml" + conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/inferexperiment/meta.yml b/modules/nf-core/rseqc/inferexperiment/meta.yml index d9b9ff63e..b4162059d 100644 --- a/modules/nf-core/rseqc/inferexperiment/meta.yml +++ b/modules/nf-core/rseqc/inferexperiment/meta.yml @@ -2,7 +2,6 @@ name: rseqc_inferexperiment description: Infer strandedness from sequencing reads keywords: - rnaseq - - strandedness - experiment tools: - rseqc: @@ -39,6 +38,3 @@ output: authors: - "@drpatelh" - "@kevinmenden" -maintainers: - - "@drpatelh" - - "@kevinmenden" diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test deleted file mode 100644 index 97cd2cb9a..000000000 --- a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test +++ /dev/null @@ -1,34 +0,0 @@ -nextflow_process { - - name "Test Process RSEQC_INFEREXPERIMENT" - script "../main.nf" - process "RSEQC_INFEREXPERIMENT" - config "./nextflow.config" - - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/inferexperiment" - - test("sarscov2 - [[meta] - bam] - bed") { - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) - """ - } - } - - then { - assert process.success - assert snapshot(process.out).match() - } - - } - -} diff --git a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap b/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap deleted file mode 100644 index ca4faba2d..000000000 --- a/modules/nf-core/rseqc/inferexperiment/tests/main.nf.test.snap +++ /dev/null @@ -1,31 +0,0 @@ -{ - "sarscov2 - [[meta] - bam] - bed": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" - ] - ], - "1": [ - "versions.yml:md5,c0d7ecdb2e1fbf7a2ba0c28dae49e428" - ], - "txt": [ - [ - { - "id": "test" - }, - "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" - ] - ], - "versions": [ - "versions.yml:md5,c0d7ecdb2e1fbf7a2ba0c28dae49e428" - ] - } - ], - "timestamp": "2023-11-23T16:21:55.713158354" - } -} \ No newline at end of file diff --git a/modules/nf-core/rseqc/inferexperiment/tests/nextflow.config b/modules/nf-core/rseqc/inferexperiment/tests/nextflow.config deleted file mode 100644 index 8730f1c4b..000000000 --- a/modules/nf-core/rseqc/inferexperiment/tests/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} diff --git a/modules/nf-core/rseqc/inferexperiment/tests/tags.yml b/modules/nf-core/rseqc/inferexperiment/tests/tags.yml deleted file mode 100644 index f9ba7e26a..000000000 --- a/modules/nf-core/rseqc/inferexperiment/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/inferexperiment: - - modules/nf-core/rseqc/inferexperiment/** diff --git a/modules/nf-core/rseqc/innerdistance/environment.yml b/modules/nf-core/rseqc/innerdistance/environment.yml deleted file mode 100644 index bb61cce24..000000000 --- a/modules/nf-core/rseqc/innerdistance/environment.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: rseqc_innerdistance -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::rseqc=3.0.1 - - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/innerdistance/main.nf b/modules/nf-core/rseqc/innerdistance/main.nf index a87399a98..a63a2bf03 100644 --- a/modules/nf-core/rseqc/innerdistance/main.nf +++ b/modules/nf-core/rseqc/innerdistance/main.nf @@ -2,7 +2,7 @@ process RSEQC_INNERDISTANCE { tag "$meta.id" label 'process_medium' - conda "${moduleDir}/environment.yml" + conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/innerdistance/meta.yml b/modules/nf-core/rseqc/innerdistance/meta.yml index d0a5bf181..d10a4c445 100644 --- a/modules/nf-core/rseqc/innerdistance/meta.yml +++ b/modules/nf-core/rseqc/innerdistance/meta.yml @@ -1,7 +1,6 @@ name: rseqc_innerdistance description: Calculate inner distance between read pairs. keywords: - - read_pairs - fragment_size - inner_distance tools: @@ -55,6 +54,3 @@ output: authors: - "@drpatelh" - "@kevinmenden" -maintainers: - - "@drpatelh" - - "@kevinmenden" diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test deleted file mode 100644 index ee8901422..000000000 --- a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test +++ /dev/null @@ -1,41 +0,0 @@ -nextflow_process { - - name "Test Process RSEQC_INNERDISTANCE" - script "../main.nf" - process "RSEQC_INNERDISTANCE" - config "./nextflow.config" - - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/innerdistance" - - test("sarscov2 - [[meta] - bam] - bed") { - - when { - process { - """ - input[0] = [ - [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out.distance).match("pe_distance") }, - { assert snapshot(process.out.freq).match("freq") }, - { assert snapshot(process.out.mean).match("mean") }, - { assert snapshot(process.out.freq).match("rscript") }, - { assert snapshot(process.out.versions).match("pe_versions") }, - { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } - ) - } - - } - -} diff --git a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap b/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap deleted file mode 100644 index 9743d1bd6..000000000 --- a/modules/nf-core/rseqc/innerdistance/tests/main.nf.test.snap +++ /dev/null @@ -1,68 +0,0 @@ -{ - "pe_distance": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" - ] - ] - ], - "timestamp": "2023-11-23T16:59:21.812491711" - }, - "rscript": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" - ] - ] - ], - "timestamp": "2023-11-23T16:59:21.847527889" - }, - "pdf": { - "content": [ - "test.inner_distance_plot.pdf" - ], - "timestamp": "2023-11-23T17:23:20.046679629" - }, - "mean": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" - ] - ] - ], - "timestamp": "2023-11-23T16:59:21.839422659" - }, - "freq": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" - ] - ] - ], - "timestamp": "2023-11-23T16:59:21.83183025" - }, - "pe_versions": { - "content": [ - [ - "versions.yml:md5,c2a05298a9c55bd61cc6e07396815a27" - ] - ], - "timestamp": "2023-11-23T16:59:21.854738078" - } -} \ No newline at end of file diff --git a/modules/nf-core/rseqc/innerdistance/tests/nextflow.config b/modules/nf-core/rseqc/innerdistance/tests/nextflow.config deleted file mode 100644 index 8730f1c4b..000000000 --- a/modules/nf-core/rseqc/innerdistance/tests/nextflow.config +++ /dev/null @@ -1,5 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - -} diff --git a/modules/nf-core/rseqc/innerdistance/tests/tags.yml b/modules/nf-core/rseqc/innerdistance/tests/tags.yml deleted file mode 100644 index 4a9d0acf9..000000000 --- a/modules/nf-core/rseqc/innerdistance/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/innerdistance: - - modules/nf-core/rseqc/innerdistance/** diff --git a/modules/nf-core/rseqc/junctionannotation/environment.yml b/modules/nf-core/rseqc/junctionannotation/environment.yml deleted file mode 100644 index 105ea25ea..000000000 --- a/modules/nf-core/rseqc/junctionannotation/environment.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: rseqc_junctionannotation -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::rseqc=3.0.1 - - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/junctionannotation/main.nf b/modules/nf-core/rseqc/junctionannotation/main.nf index 58574a278..4029ac765 100644 --- a/modules/nf-core/rseqc/junctionannotation/main.nf +++ b/modules/nf-core/rseqc/junctionannotation/main.nf @@ -2,7 +2,7 @@ process RSEQC_JUNCTIONANNOTATION { tag "$meta.id" label 'process_medium' - conda "${moduleDir}/environment.yml" + conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" @@ -33,7 +33,7 @@ process RSEQC_JUNCTIONANNOTATION { -r $bed \\ -o $prefix \\ $args \\ - 2> >(tee ${prefix}.junction_annotation.log >&2) + 2> ${prefix}.junction_annotation.log cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/rseqc/junctionannotation/meta.yml b/modules/nf-core/rseqc/junctionannotation/meta.yml index a88aa2db3..48c43260e 100644 --- a/modules/nf-core/rseqc/junctionannotation/meta.yml +++ b/modules/nf-core/rseqc/junctionannotation/meta.yml @@ -63,6 +63,3 @@ output: authors: - "@drpatelh" - "@kevinmenden" -maintainers: - - "@drpatelh" - - "@kevinmenden" diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test deleted file mode 100644 index ed2c27558..000000000 --- a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test +++ /dev/null @@ -1,37 +0,0 @@ -nextflow_process { - - name "Test Process RSEQC_JUNCTIONANNOTATION" - script "../main.nf" - process "RSEQC_JUNCTIONANNOTATION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/junctionannotation" - - test("sarscov2 - paired end [bam]") { - - when { - process { - """ - input[0] = [ - [ id:'test', single_end: false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out.log).match("log") }, - { assert snapshot(process.out.versions).match("versions") }, - { assert process.out.xls.get(0).get(1) ==~ ".*/test.junction.xls" }, - { assert process.out.rscript.get(0).get(1) ==~ ".*/test.junction_plot.r" } - ) - } - - } - -} diff --git a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap b/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap deleted file mode 100644 index a9fc2cbb7..000000000 --- a/modules/nf-core/rseqc/junctionannotation/tests/main.nf.test.snap +++ /dev/null @@ -1,24 +0,0 @@ -{ - "log": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.junction_annotation.log:md5,ef37d06d169a1adbeec23fddf82aee2b" - ] - ] - ], - "timestamp": "2023-11-23T21:11:28.772327081" - }, - "versions": { - "content": [ - [ - "versions.yml:md5,78807fd7b5d9df98730e6c66641b48a0" - ] - ], - "timestamp": "2023-11-23T21:11:28.7811548" - } -} \ No newline at end of file diff --git a/modules/nf-core/rseqc/junctionannotation/tests/tags.yml b/modules/nf-core/rseqc/junctionannotation/tests/tags.yml deleted file mode 100644 index 5f719fb8d..000000000 --- a/modules/nf-core/rseqc/junctionannotation/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/junctionannotation: - - modules/nf-core/rseqc/junctionannotation/** diff --git a/modules/nf-core/rseqc/junctionsaturation/environment.yml b/modules/nf-core/rseqc/junctionsaturation/environment.yml deleted file mode 100644 index 78ffd06ad..000000000 --- a/modules/nf-core/rseqc/junctionsaturation/environment.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: rseqc_junctionsaturation -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::rseqc=3.0.1 - - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/junctionsaturation/main.nf b/modules/nf-core/rseqc/junctionsaturation/main.nf index 552865bbf..93cc61b23 100644 --- a/modules/nf-core/rseqc/junctionsaturation/main.nf +++ b/modules/nf-core/rseqc/junctionsaturation/main.nf @@ -2,7 +2,7 @@ process RSEQC_JUNCTIONSATURATION { tag "$meta.id" label 'process_medium' - conda "${moduleDir}/environment.yml" + conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/junctionsaturation/meta.yml b/modules/nf-core/rseqc/junctionsaturation/meta.yml index 19ae3f52d..340fec0d0 100644 --- a/modules/nf-core/rseqc/junctionsaturation/meta.yml +++ b/modules/nf-core/rseqc/junctionsaturation/meta.yml @@ -43,6 +43,3 @@ output: authors: - "@drpatelh" - "@kevinmenden" -maintainers: - - "@drpatelh" - - "@kevinmenden" diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test deleted file mode 100644 index 347b5fccd..000000000 --- a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test +++ /dev/null @@ -1,36 +0,0 @@ -nextflow_process { - - name "Test Process RSEQC_JUNCTIONSATURATION" - script "../main.nf" - process "RSEQC_JUNCTIONSATURATION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/junctionsaturation" - - test("sarscov2 paired-end [bam]") { - - when { - process { - """ - input[0] = [ - [ id:'test', single_end: false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out.rscript).match("rscript") }, - { assert snapshot(process.out.versions).match("versions") }, - { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } - ) - } - - } - -} diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap b/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap deleted file mode 100644 index 708782da6..000000000 --- a/modules/nf-core/rseqc/junctionsaturation/tests/main.nf.test.snap +++ /dev/null @@ -1,30 +0,0 @@ -{ - "rscript": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.junctionSaturation_plot.r:md5,caa6e63dcb477aabb169882b2f30dadd" - ] - ] - ], - "timestamp": "2023-11-24T00:15:43.655261555" - }, - "pdf": { - "content": [ - "test.junctionSaturation_plot.pdf" - ], - "timestamp": "2023-11-24T00:15:43.682673802" - }, - "versions": { - "content": [ - [ - "versions.yml:md5,2a187a15edb3a5ba114ab3d9f003a8bc" - ] - ], - "timestamp": "2023-11-24T00:15:43.667463564" - } -} \ No newline at end of file diff --git a/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml b/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml deleted file mode 100644 index 7022b59ad..000000000 --- a/modules/nf-core/rseqc/junctionsaturation/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/junctionsaturation: - - modules/nf-core/rseqc/junctionsaturation/** diff --git a/modules/nf-core/rseqc/readdistribution/environment.yml b/modules/nf-core/rseqc/readdistribution/environment.yml deleted file mode 100644 index a20fef74e..000000000 --- a/modules/nf-core/rseqc/readdistribution/environment.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: rseqc_readdistribution -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::rseqc=3.0.1 - - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/readdistribution/main.nf b/modules/nf-core/rseqc/readdistribution/main.nf index 901b364c0..f3e588d69 100644 --- a/modules/nf-core/rseqc/readdistribution/main.nf +++ b/modules/nf-core/rseqc/readdistribution/main.nf @@ -2,7 +2,7 @@ process RSEQC_READDISTRIBUTION { tag "$meta.id" label 'process_medium' - conda "${moduleDir}/environment.yml" + conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/readdistribution/meta.yml b/modules/nf-core/rseqc/readdistribution/meta.yml index 989792faa..94c647120 100644 --- a/modules/nf-core/rseqc/readdistribution/meta.yml +++ b/modules/nf-core/rseqc/readdistribution/meta.yml @@ -39,6 +39,3 @@ output: authors: - "@drpatelh" - "@kevinmenden" -maintainers: - - "@drpatelh" - - "@kevinmenden" diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test deleted file mode 100644 index 4da721ab6..000000000 --- a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test +++ /dev/null @@ -1,33 +0,0 @@ -nextflow_process { - - name "Test Process RSEQC_READDISTRIBUTION" - script "../main.nf" - process "RSEQC_READDISTRIBUTION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/readdistribution" - - test("sarscov2 paired-end [bam]") { - - when { - process { - """ - input[0] = [ [ id:'test', single_end: false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - - } - -} diff --git a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap b/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap deleted file mode 100644 index 90cf8b029..000000000 --- a/modules/nf-core/rseqc/readdistribution/tests/main.nf.test.snap +++ /dev/null @@ -1,33 +0,0 @@ -{ - "sarscov2 paired-end [bam]": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" - ] - ], - "1": [ - "versions.yml:md5,15fd23aafd4d3aeabc4fede518d1b3a4" - ], - "txt": [ - [ - { - "id": "test", - "single_end": false - }, - "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" - ] - ], - "versions": [ - "versions.yml:md5,15fd23aafd4d3aeabc4fede518d1b3a4" - ] - } - ], - "timestamp": "2023-11-24T00:35:28.404023432" - } -} \ No newline at end of file diff --git a/modules/nf-core/rseqc/readdistribution/tests/tags.yml b/modules/nf-core/rseqc/readdistribution/tests/tags.yml deleted file mode 100644 index c0c477b6d..000000000 --- a/modules/nf-core/rseqc/readdistribution/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/readdistribution: - - modules/nf-core/rseqc/readdistribution/** diff --git a/modules/nf-core/rseqc/readduplication/environment.yml b/modules/nf-core/rseqc/readduplication/environment.yml deleted file mode 100644 index bba52d8fa..000000000 --- a/modules/nf-core/rseqc/readduplication/environment.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: rseqc_readduplication -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::rseqc=3.0.1 - - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/readduplication/main.nf b/modules/nf-core/rseqc/readduplication/main.nf index 68c1296ea..023118536 100644 --- a/modules/nf-core/rseqc/readduplication/main.nf +++ b/modules/nf-core/rseqc/readduplication/main.nf @@ -2,7 +2,7 @@ process RSEQC_READDUPLICATION { tag "$meta.id" label 'process_medium' - conda "${moduleDir}/environment.yml" + conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/readduplication/meta.yml b/modules/nf-core/rseqc/readduplication/meta.yml index 4b24d3032..5a8666435 100644 --- a/modules/nf-core/rseqc/readduplication/meta.yml +++ b/modules/nf-core/rseqc/readduplication/meta.yml @@ -3,8 +3,6 @@ description: Calculate read duplication rate keywords: - rnaseq - duplication - - sequence-based - - mapping-based tools: - rseqc: description: | @@ -52,6 +50,3 @@ output: authors: - "@drpatelh" - "@kevinmenden" -maintainers: - - "@drpatelh" - - "@kevinmenden" diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test b/modules/nf-core/rseqc/readduplication/tests/main.nf.test deleted file mode 100644 index 93d0cccd6..000000000 --- a/modules/nf-core/rseqc/readduplication/tests/main.nf.test +++ /dev/null @@ -1,36 +0,0 @@ -nextflow_process { - - name "Test Process RSEQC_READDUPLICATION" - script "../main.nf" - process "RSEQC_READDUPLICATION" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/readduplication" - - test("sarscov2 paired-end [bam]") { - - when { - process { - """ - input[0] = [ [ id:'test', single_end: false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out.seq_xls).match("seq_xls") }, - { assert snapshot(process.out.pos_xls).match("pos_xls") }, - { assert snapshot(process.out.rscript).match("rscript") }, - { assert snapshot(process.out.versions).match("versions") }, - { assert snapshot(file(process.out.pdf[0][1]).name).match("pdf") } - ) - } - - } - -} diff --git a/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap b/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap deleted file mode 100644 index e3e4ec3fd..000000000 --- a/modules/nf-core/rseqc/readduplication/tests/main.nf.test.snap +++ /dev/null @@ -1,58 +0,0 @@ -{ - "pos_xls": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" - ] - ] - ], - "timestamp": "2023-11-24T00:52:45.27809706" - }, - "rscript": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" - ] - ] - ], - "timestamp": "2023-11-24T00:52:45.285457599" - }, - "pdf": { - "content": [ - "test.DupRate_plot.pdf" - ], - "timestamp": "2023-11-24T00:52:45.304152477" - }, - "seq_xls": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" - ] - ] - ], - "timestamp": "2023-11-24T00:52:45.262656562" - }, - "versions": { - "content": [ - [ - "versions.yml:md5,06a70ece474de57fc1dc7585e7cfd5a0" - ] - ], - "timestamp": "2023-11-24T00:52:45.292599738" - } -} \ No newline at end of file diff --git a/modules/nf-core/rseqc/readduplication/tests/tags.yml b/modules/nf-core/rseqc/readduplication/tests/tags.yml deleted file mode 100644 index fce3d35d4..000000000 --- a/modules/nf-core/rseqc/readduplication/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/readduplication: - - modules/nf-core/rseqc/readduplication/** diff --git a/modules/nf-core/rseqc/tin/environment.yml b/modules/nf-core/rseqc/tin/environment.yml deleted file mode 100644 index 48b7efa53..000000000 --- a/modules/nf-core/rseqc/tin/environment.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: rseqc_tin -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::rseqc=3.0.1 - - conda-forge::r-base>=3.5 diff --git a/modules/nf-core/rseqc/tin/main.nf b/modules/nf-core/rseqc/tin/main.nf index 718aabb89..872938b62 100644 --- a/modules/nf-core/rseqc/tin/main.nf +++ b/modules/nf-core/rseqc/tin/main.nf @@ -2,7 +2,7 @@ process RSEQC_TIN { tag "$meta.id" label 'process_high' - conda "${moduleDir}/environment.yml" + conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" diff --git a/modules/nf-core/rseqc/tin/meta.yml b/modules/nf-core/rseqc/tin/meta.yml index f760bb2f4..381edfde0 100644 --- a/modules/nf-core/rseqc/tin/meta.yml +++ b/modules/nf-core/rseqc/tin/meta.yml @@ -46,5 +46,3 @@ output: pattern: "versions.yml" authors: - "@drpatelh" -maintainers: - - "@drpatelh" diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test b/modules/nf-core/rseqc/tin/tests/main.nf.test deleted file mode 100644 index c339d343a..000000000 --- a/modules/nf-core/rseqc/tin/tests/main.nf.test +++ /dev/null @@ -1,35 +0,0 @@ -nextflow_process { - - name "Test Process RSEQC_TIN" - script "../main.nf" - process "RSEQC_TIN" - tag "modules" - tag "modules_nfcore" - tag "rseqc" - tag "rseqc/tin" - - test("sarscov2 paired-end [bam]") { - - when { - 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) - ] - input[1] = file(params.test_data['sarscov2']['genome']['test_bed'], checkIfExists: true) - """ - } - } - - then { - assertAll( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - - } - -} diff --git a/modules/nf-core/rseqc/tin/tests/main.nf.test.snap b/modules/nf-core/rseqc/tin/tests/main.nf.test.snap deleted file mode 100644 index 4bed8ac9b..000000000 --- a/modules/nf-core/rseqc/tin/tests/main.nf.test.snap +++ /dev/null @@ -1,47 +0,0 @@ -{ - "sarscov2 paired-end [bam]": { - "content": [ - { - "0": [ - [ - { - "id": "test" - }, - "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" - ] - ], - "1": [ - [ - { - "id": "test" - }, - "test.paired_end.sorted.tin.xls:md5,6b1b1b0dc1dc265342ba8c3f27fa60e6" - ] - ], - "2": [ - "versions.yml:md5,77a0664abb6e486d1a0dd2078d4916d2" - ], - "txt": [ - [ - { - "id": "test" - }, - "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" - ] - ], - "versions": [ - "versions.yml:md5,77a0664abb6e486d1a0dd2078d4916d2" - ], - "xls": [ - [ - { - "id": "test" - }, - "test.paired_end.sorted.tin.xls:md5,6b1b1b0dc1dc265342ba8c3f27fa60e6" - ] - ] - } - ], - "timestamp": "2023-11-24T02:30:03.446989864" - } -} \ No newline at end of file diff --git a/modules/nf-core/rseqc/tin/tests/tags.yml b/modules/nf-core/rseqc/tin/tests/tags.yml deleted file mode 100644 index 741bbd0c0..000000000 --- a/modules/nf-core/rseqc/tin/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -rseqc/tin: - - modules/nf-core/rseqc/tin/** diff --git a/modules/nf-core/samtools/flagstat/environment.yml b/modules/nf-core/samtools/flagstat/environment.yml deleted file mode 100644 index 5efae053f..000000000 --- a/modules/nf-core/samtools/flagstat/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: samtools_flagstat -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::samtools=1.18 diff --git a/modules/nf-core/samtools/flagstat/main.nf b/modules/nf-core/samtools/flagstat/main.nf index f1893d7cc..b75707eca 100644 --- a/modules/nf-core/samtools/flagstat/main.nf +++ b/modules/nf-core/samtools/flagstat/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_FLAGSTAT { tag "$meta.id" label 'process_single' - conda "${moduleDir}/environment.yml" + conda "bioconda::samtools=1.17" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : + 'biocontainers/samtools:1.17--h00cdaf9_0' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/flagstat/meta.yml b/modules/nf-core/samtools/flagstat/meta.yml index 97991358e..954225dfc 100644 --- a/modules/nf-core/samtools/flagstat/meta.yml +++ b/modules/nf-core/samtools/flagstat/meta.yml @@ -47,5 +47,3 @@ output: pattern: "versions.yml" authors: - "@drpatelh" -maintainers: - - "@drpatelh" diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test b/modules/nf-core/samtools/flagstat/tests/main.nf.test deleted file mode 100644 index c8dd8dc9f..000000000 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test +++ /dev/null @@ -1,36 +0,0 @@ -nextflow_process { - - name "Test Process SAMTOOLS_FLAGSTAT" - script "../main.nf" - process "SAMTOOLS_FLAGSTAT" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/flagstat" - - test("BAM") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ - [ id:'test', single_end:false ], // 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) - ] - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out.flagstat).match() }, - { assert path(process.out.versions.get(0)).getText().contains("samtools") } - ) - } - } -} diff --git a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap b/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap deleted file mode 100644 index 880019f2f..000000000 --- a/modules/nf-core/samtools/flagstat/tests/main.nf.test.snap +++ /dev/null @@ -1,16 +0,0 @@ -{ - "BAM": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" - ] - ] - ], - "timestamp": "2023-11-14T15:49:22.577133" - } -} \ No newline at end of file diff --git a/modules/nf-core/samtools/flagstat/tests/tags.yml b/modules/nf-core/samtools/flagstat/tests/tags.yml deleted file mode 100644 index 2d2b7255e..000000000 --- a/modules/nf-core/samtools/flagstat/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/flagstat: - - modules/nf-core/samtools/flagstat/** diff --git a/modules/nf-core/samtools/idxstats/environment.yml b/modules/nf-core/samtools/idxstats/environment.yml deleted file mode 100644 index 2401db0f1..000000000 --- a/modules/nf-core/samtools/idxstats/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: samtools_idxstats -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::samtools=1.18 diff --git a/modules/nf-core/samtools/idxstats/main.nf b/modules/nf-core/samtools/idxstats/main.nf index 00d916bbf..83c7c34b9 100644 --- a/modules/nf-core/samtools/idxstats/main.nf +++ b/modules/nf-core/samtools/idxstats/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_IDXSTATS { tag "$meta.id" label 'process_single' - conda "${moduleDir}/environment.yml" + conda "bioconda::samtools=1.17" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : + 'biocontainers/samtools:1.17--h00cdaf9_0' }" input: tuple val(meta), path(bam), path(bai) diff --git a/modules/nf-core/samtools/idxstats/meta.yml b/modules/nf-core/samtools/idxstats/meta.yml index 344e92a3f..dda87e1ee 100644 --- a/modules/nf-core/samtools/idxstats/meta.yml +++ b/modules/nf-core/samtools/idxstats/meta.yml @@ -48,5 +48,3 @@ output: pattern: "versions.yml" authors: - "@drpatelh" -maintainers: - - "@drpatelh" diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test b/modules/nf-core/samtools/idxstats/tests/main.nf.test deleted file mode 100644 index f6c92150c..000000000 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test +++ /dev/null @@ -1,36 +0,0 @@ -nextflow_process { - - name "Test Process SAMTOOLS_IDXSTATS" - script "../main.nf" - process "SAMTOOLS_IDXSTATS" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/idxstats" - - test("BAM") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ - [ id:'test', single_end:false ], // 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) - ] - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out.idxstats).match() }, - { assert path(process.out.versions.get(0)).getText().contains("samtools") } - ) - } - } -} diff --git a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap b/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap deleted file mode 100644 index 4c6c12bd5..000000000 --- a/modules/nf-core/samtools/idxstats/tests/main.nf.test.snap +++ /dev/null @@ -1,16 +0,0 @@ -{ - "BAM": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" - ] - ] - ], - "timestamp": "2023-11-14T15:52:19.875194" - } -} \ No newline at end of file diff --git a/modules/nf-core/samtools/idxstats/tests/tags.yml b/modules/nf-core/samtools/idxstats/tests/tags.yml deleted file mode 100644 index d3057c61f..000000000 --- a/modules/nf-core/samtools/idxstats/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/idxstats: - - modules/nf-core/samtools/idxstats/** diff --git a/modules/nf-core/samtools/index/environment.yml b/modules/nf-core/samtools/index/environment.yml deleted file mode 100644 index 296ed99e5..000000000 --- a/modules/nf-core/samtools/index/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: samtools_index -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::samtools=1.18 diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index 8ad18fdc2..0b20aa4bb 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_INDEX { tag "$meta.id" label 'process_low' - conda "${moduleDir}/environment.yml" + conda "bioconda::samtools=1.17" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : + 'biocontainers/samtools:1.17--h00cdaf9_0' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml index 01a4ee03e..8bd2fa6fb 100644 --- a/modules/nf-core/samtools/index/meta.yml +++ b/modules/nf-core/samtools/index/meta.yml @@ -51,7 +51,3 @@ authors: - "@drpatelh" - "@ewels" - "@maxulysse" -maintainers: - - "@drpatelh" - - "@ewels" - - "@maxulysse" diff --git a/modules/nf-core/samtools/index/tests/csi.nextflow.config b/modules/nf-core/samtools/index/tests/csi.nextflow.config deleted file mode 100644 index 0ed260efa..000000000 --- a/modules/nf-core/samtools/index/tests/csi.nextflow.config +++ /dev/null @@ -1,7 +0,0 @@ -process { - - withName: SAMTOOLS_INDEX { - ext.args = '-c' - } - -} diff --git a/modules/nf-core/samtools/index/tests/main.nf.test b/modules/nf-core/samtools/index/tests/main.nf.test deleted file mode 100644 index c76a9169f..000000000 --- a/modules/nf-core/samtools/index/tests/main.nf.test +++ /dev/null @@ -1,87 +0,0 @@ -nextflow_process { - - name "Test Process SAMTOOLS_INDEX" - script "../main.nf" - process "SAMTOOLS_INDEX" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/index" - - test("sarscov2 [BAI]") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ - [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out.bai).match("bai") }, - { assert path(process.out.versions.get(0)).getText().contains("samtools") } - ) - } - } - - test("homo_sapiens [CRAI]") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ - [ id:'test' ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out.crai).match("crai") }, - { assert path(process.out.versions.get(0)).getText().contains("samtools") } - ) - } - } - - test("homo_sapiens [CSI]") { - - config "./csi.nextflow.config" - - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ - [ id:'test' ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert path(process.out.csi.get(0).get(1)).exists() }, - { assert path(process.out.versions.get(0)).getText().contains("samtools") } - ) - } - } -} diff --git a/modules/nf-core/samtools/index/tests/main.nf.test.snap b/modules/nf-core/samtools/index/tests/main.nf.test.snap deleted file mode 100644 index b3baee7fb..000000000 --- a/modules/nf-core/samtools/index/tests/main.nf.test.snap +++ /dev/null @@ -1,28 +0,0 @@ -{ - "crai": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.paired_end.recalibrated.sorted.cram.crai:md5,14bc3bd5c89cacc8f4541f9062429029" - ] - ] - ], - "timestamp": "2023-11-15T15:17:37.30801" - }, - "bai": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.paired_end.sorted.bam.bai:md5,704c10dd1326482448ca3073fdebc2f4" - ] - ] - ], - "timestamp": "2023-11-15T15:17:30.869234" - } -} \ No newline at end of file diff --git a/modules/nf-core/samtools/index/tests/tags.yml b/modules/nf-core/samtools/index/tests/tags.yml deleted file mode 100644 index e0f58a7a3..000000000 --- a/modules/nf-core/samtools/index/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/index: - - modules/nf-core/samtools/index/** diff --git a/modules/nf-core/samtools/sort/environment.yml b/modules/nf-core/samtools/sort/environment.yml deleted file mode 100644 index cd50868c5..000000000 --- a/modules/nf-core/samtools/sort/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: samtools_sort -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::samtools=1.18 diff --git a/modules/nf-core/samtools/sort/main.nf b/modules/nf-core/samtools/sort/main.nf index 4a666d42e..2b7753fd8 100644 --- a/modules/nf-core/samtools/sort/main.nf +++ b/modules/nf-core/samtools/sort/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_SORT { tag "$meta.id" label 'process_medium' - conda "${moduleDir}/environment.yml" + conda "bioconda::samtools=1.17" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : + 'biocontainers/samtools:1.17--h00cdaf9_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/samtools/sort/meta.yml b/modules/nf-core/samtools/sort/meta.yml index 2200de72f..073284316 100644 --- a/modules/nf-core/samtools/sort/meta.yml +++ b/modules/nf-core/samtools/sort/meta.yml @@ -46,6 +46,3 @@ output: authors: - "@drpatelh" - "@ewels" -maintainers: - - "@drpatelh" - - "@ewels" diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test b/modules/nf-core/samtools/sort/tests/main.nf.test deleted file mode 100644 index abb80978e..000000000 --- a/modules/nf-core/samtools/sort/tests/main.nf.test +++ /dev/null @@ -1,73 +0,0 @@ -nextflow_process { - - name "Test Process SAMTOOLS_SORT" - script "../main.nf" - process "SAMTOOLS_SORT" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/sort" - - test("test_samtools_sort") { - - config "./nextflow.config" - - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ - [ id:'test', single_end:false ], - [ - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) - ] - ] - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out).match() } - ) - } - - } - - test("test_samtools_sort_stub") { - - config "./nextflow.config" - options "-stub-run" - - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ - [ id:'test', single_end:false ], - [ - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) - ] - ] - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot( - file(process.out.bam[0][1]).name, - process.out.versions - ).match() } - ) - } - - } - -} diff --git a/modules/nf-core/samtools/sort/tests/main.nf.test.snap b/modules/nf-core/samtools/sort/tests/main.nf.test.snap deleted file mode 100644 index ff7222597..000000000 --- a/modules/nf-core/samtools/sort/tests/main.nf.test.snap +++ /dev/null @@ -1,48 +0,0 @@ -{ - "test_samtools_sort": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,ea6a0fef94eb534e901f107a05a33a06" - ] - ], - "1": [ - - ], - "2": [ - "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" - ], - "bam": [ - [ - { - "id": "test", - "single_end": false - }, - "test.sorted.bam:md5,ea6a0fef94eb534e901f107a05a33a06" - ] - ], - "csi": [ - - ], - "versions": [ - "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" - ] - } - ], - "timestamp": "2023-12-04T11:11:22.005628301" - }, - "test_samtools_sort_stub": { - "content": [ - "test.sorted.bam", - [ - "versions.yml:md5,33b6a403dc19a0d28e4219ccab0a1d80" - ] - ], - "timestamp": "2023-12-04T17:47:22.314445935" - } -} \ No newline at end of file diff --git a/modules/nf-core/samtools/sort/tests/nextflow.config b/modules/nf-core/samtools/sort/tests/nextflow.config deleted file mode 100644 index d0f350868..000000000 --- a/modules/nf-core/samtools/sort/tests/nextflow.config +++ /dev/null @@ -1,7 +0,0 @@ -process { - - withName: SAMTOOLS_SORT { - ext.prefix = { "${meta.id}.sorted" } - } - -} diff --git a/modules/nf-core/samtools/sort/tests/tags.yml b/modules/nf-core/samtools/sort/tests/tags.yml deleted file mode 100644 index cd63ea208..000000000 --- a/modules/nf-core/samtools/sort/tests/tags.yml +++ /dev/null @@ -1,3 +0,0 @@ -samtools/sort: - - modules/nf-core/samtools/sort/** - - tests/modules/nf-core/samtools/sort/** diff --git a/modules/nf-core/samtools/stats/environment.yml b/modules/nf-core/samtools/stats/environment.yml deleted file mode 100644 index b89ce6475..000000000 --- a/modules/nf-core/samtools/stats/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: samtools_stats -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::samtools=1.18 diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf index 7539140ab..4a2607ded 100644 --- a/modules/nf-core/samtools/stats/main.nf +++ b/modules/nf-core/samtools/stats/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_STATS { tag "$meta.id" label 'process_single' - conda "${moduleDir}/environment.yml" + conda "bioconda::samtools=1.17" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.18--h50ea8bc_1' : - 'biocontainers/samtools:1.18--h50ea8bc_1' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.17--h00cdaf9_0' : + 'biocontainers/samtools:1.17--h00cdaf9_0' }" input: tuple val(meta), path(input), path(input_index) diff --git a/modules/nf-core/samtools/stats/meta.yml b/modules/nf-core/samtools/stats/meta.yml index 735ff8122..90e6345f5 100644 --- a/modules/nf-core/samtools/stats/meta.yml +++ b/modules/nf-core/samtools/stats/meta.yml @@ -57,7 +57,3 @@ authors: - "@drpatelh" - "@FriederikeHanssen" - "@ramprasadn" -maintainers: - - "@drpatelh" - - "@FriederikeHanssen" - - "@ramprasadn" diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test b/modules/nf-core/samtools/stats/tests/main.nf.test deleted file mode 100644 index 20c3efe12..000000000 --- a/modules/nf-core/samtools/stats/tests/main.nf.test +++ /dev/null @@ -1,78 +0,0 @@ -nextflow_process { - - name "Test Process SAMTOOLS_STATS" - script "../main.nf" - process "SAMTOOLS_STATS" - tag "modules" - tag "modules_nfcore" - tag "samtools" - tag "samtools/stats" - - test("SAMTOOLS STATS Should run without failures") { - - when { - params { - - outdir = "$outputDir" - } - process { - """ - // define inputs of the process here. - input[0] = [ - [ id:'test', single_end:false ], // 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[1] = [[],[]] - """ - - } - } - - then { - assertAll( - {assert process.success}, - {assert snapshot(process.out).match()} - ) - } - - } - - test("SAMTOOLS CRAM Should run without failures") { - - when { - params { - - outdir = "$outputDir" - } - process { - """ - // define inputs of the process here - input[0] = [ - [ id:'test', single_end:false ], // meta map - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram'], checkIfExists: true), - file(params.test_data['homo_sapiens']['illumina']['test_paired_end_recalibrated_sorted_cram_crai'], checkIfExists: true) - - ] - input[1] = [ - [ id:'genome' ], - file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - ] - """ - } - - - } - - then { - assertAll( - {assert process.success}, - {assert snapshot(process.out).match()} - ) - } - - } - - -} diff --git a/modules/nf-core/samtools/stats/tests/main.nf.test.snap b/modules/nf-core/samtools/stats/tests/main.nf.test.snap deleted file mode 100644 index 025c83a55..000000000 --- a/modules/nf-core/samtools/stats/tests/main.nf.test.snap +++ /dev/null @@ -1,64 +0,0 @@ -{ - "SAMTOOLS STATS Should run without failures": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" - ] - ], - "1": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" - ], - "stats": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,045a48208b1c6f5b8af4347fe31f4def" - ] - ], - "versions": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" - ] - } - ], - "timestamp": "2023-12-04T11:07:28.26821485" - }, - "SAMTOOLS CRAM Should run without failures": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" - ] - ], - "1": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" - ], - "stats": [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,dfbfa130d4a6925ddd1931dcd8354a43" - ] - ], - "versions": [ - "versions.yml:md5,650a365c6635001436008350ae83337c" - ] - } - ], - "timestamp": "2023-12-04T11:07:50.356233402" - } -} \ No newline at end of file diff --git a/modules/nf-core/samtools/stats/tests/tags.yml b/modules/nf-core/samtools/stats/tests/tags.yml deleted file mode 100644 index 7c28e30f3..000000000 --- a/modules/nf-core/samtools/stats/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -samtools/stats: - - modules/nf-core/samtools/stats/** diff --git a/modules/nf-core/trimgalore/environment.yml b/modules/nf-core/trimgalore/environment.yml deleted file mode 100644 index 6cd0f51b3..000000000 --- a/modules/nf-core/trimgalore/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: trimgalore -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::trim-galore=0.6.7 diff --git a/modules/nf-core/trimgalore/main.nf b/modules/nf-core/trimgalore/main.nf index 24ead8714..dcb77ae7b 100644 --- a/modules/nf-core/trimgalore/main.nf +++ b/modules/nf-core/trimgalore/main.nf @@ -2,7 +2,7 @@ process TRIMGALORE { tag "$meta.id" label 'process_high' - conda "${moduleDir}/environment.yml" + conda "bioconda::trim-galore=0.6.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/trim-galore:0.6.7--hdfd78af_0' : 'biocontainers/trim-galore:0.6.7--hdfd78af_0' }" diff --git a/modules/nf-core/trimgalore/meta.yml b/modules/nf-core/trimgalore/meta.yml index e649088ce..f84c4d771 100644 --- a/modules/nf-core/trimgalore/meta.yml +++ b/modules/nf-core/trimgalore/meta.yml @@ -62,7 +62,3 @@ authors: - "@drpatelh" - "@ewels" - "@FelixKrueger" -maintainers: - - "@drpatelh" - - "@ewels" - - "@FelixKrueger" diff --git a/modules/nf-core/trimgalore/tests/main.nf.test b/modules/nf-core/trimgalore/tests/main.nf.test deleted file mode 100644 index bc6812ccd..000000000 --- a/modules/nf-core/trimgalore/tests/main.nf.test +++ /dev/null @@ -1,105 +0,0 @@ -nextflow_process { - - name "Test Process TRIMGALORE" - script "../main.nf" - process "TRIMGALORE" - tag "modules" - tag "modules_nfcore" - tag "trimgalore" - - test("test_trimgalore_single_end") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] - ] - """ - } - } - - then { - def read_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1)).linesGzip.contains(read_line) } - } - }, - { report1_lines.each { report1_line -> - { assert path(process.out.log.get(0).get(1)).getText().contains(report1_line) } - } - } - ) - } - } - - test("test_trimgalore_paired_end") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ [ 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) ] - ] - """ - } - } - - then { - def read1_lines = ["@ERR5069949.2151832 NS500628:121:HK3MMAFX2:2:21208:10793:15304/1", - "TCATAAACCAAAGCACTCACAGTGTCAACAATTTCAGCAGGACAACGCCGACAAGTTCCGAGGAACATGTCTGGACCTATAGTTTTCATAAGTCTACACACTGAATTGAAATATTCTGGTTCTAGTGTGCCCTTAGTTAGCAATGTGCGT", - "AAAAAAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEAAEEEEE - { assert path(process.out.reads.get(0).get(1).get(0)).linesGzip.contains(read1_line) } - } - }, - { read2_lines.each { read2_line -> - { assert path(process.out.reads.get(0).get(1).get(1)).linesGzip.contains(read2_line) } - } - }, - { report1_lines.each { report1_line -> - { assert path(process.out.log.get(0).get(1).get(0)).getText().contains(report1_line) } - } - }, - { report2_lines.each { report2_line -> - { assert path(process.out.log.get(0).get(1).get(1)).getText().contains(report2_line) } - } - } - ) - } - } -} diff --git a/modules/nf-core/trimgalore/tests/main.nf.test.snap b/modules/nf-core/trimgalore/tests/main.nf.test.snap deleted file mode 100644 index 84feacca2..000000000 --- a/modules/nf-core/trimgalore/tests/main.nf.test.snap +++ /dev/null @@ -1,148 +0,0 @@ -{ - "test_trimgalore_single_end": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": true - }, - "test_trimmed.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4" - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastq.gz_trimming_report.txt:md5,a1ab3958205f1ddf48af623242b5b429" - ] - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "html": [ - - ], - "log": [ - [ - { - "id": "test", - "single_end": true - }, - "test.fastq.gz_trimming_report.txt:md5,a1ab3958205f1ddf48af623242b5b429" - ] - ], - "reads": [ - [ - { - "id": "test", - "single_end": true - }, - "test_trimmed.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4" - ] - ], - "unpaired": [ - - ], - "versions": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "zip": [ - - ] - } - ], - "timestamp": "2023-10-17T15:24:57.782141441" - }, - "test_trimgalore_paired_end": { - "content": [ - { - "0": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1_val_1.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4", - "test_2_val_2.fq.gz:md5,f3d61189e6d10202da7b8686f1dbb71b" - ] - ] - ], - "1": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastq.gz_trimming_report.txt:md5,315d40465412f9909bbaabf52269274d", - "test_2.fastq.gz_trimming_report.txt:md5,34436303da1c78811103427a2fb57f7b" - ] - ] - ], - "2": [ - - ], - "3": [ - - ], - "4": [ - - ], - "5": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "html": [ - - ], - "log": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastq.gz_trimming_report.txt:md5,315d40465412f9909bbaabf52269274d", - "test_2.fastq.gz_trimming_report.txt:md5,34436303da1c78811103427a2fb57f7b" - ] - ] - ], - "reads": [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1_val_1.fq.gz:md5,e0a7516b8ea8d6467d6306acb2cd13c4", - "test_2_val_2.fq.gz:md5,f3d61189e6d10202da7b8686f1dbb71b" - ] - ] - ], - "unpaired": [ - - ], - "versions": [ - "versions.yml:md5,47d966cbb31c80eb8f7fe860d55659b7" - ], - "zip": [ - - ] - } - ], - "timestamp": "2023-10-17T15:25:08.513589909" - } -} \ No newline at end of file diff --git a/modules/nf-core/trimgalore/tests/tags.yml b/modules/nf-core/trimgalore/tests/tags.yml deleted file mode 100644 index e9937691a..000000000 --- a/modules/nf-core/trimgalore/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -trimgalore: - - modules/nf-core/trimgalore/** diff --git a/modules/nf-core/umitools/dedup/environment.yml b/modules/nf-core/umitools/dedup/environment.yml deleted file mode 100644 index f443735f4..000000000 --- a/modules/nf-core/umitools/dedup/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: umitools_dedup -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::umi_tools=1.1.4 diff --git a/modules/nf-core/umitools/dedup/main.nf b/modules/nf-core/umitools/dedup/main.nf index 64ab8f98e..56ea04691 100644 --- a/modules/nf-core/umitools/dedup/main.nf +++ b/modules/nf-core/umitools/dedup/main.nf @@ -2,7 +2,7 @@ process UMITOOLS_DEDUP { tag "$meta.id" label "process_medium" - conda "${moduleDir}/environment.yml" + conda "bioconda::umi_tools=1.1.4" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" @@ -42,7 +42,7 @@ process UMITOOLS_DEDUP { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) + umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') END_VERSIONS """ @@ -56,7 +56,7 @@ process UMITOOLS_DEDUP { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) + umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') END_VERSIONS """ } diff --git a/modules/nf-core/umitools/dedup/meta.yml b/modules/nf-core/umitools/dedup/meta.yml index 38d3fd465..534d4c6b0 100644 --- a/modules/nf-core/umitools/dedup/meta.yml +++ b/modules/nf-core/umitools/dedup/meta.yml @@ -7,8 +7,8 @@ keywords: tools: - umi_tools: description: > - UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) and single cell RNA-Seq cell barcodes - + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) + and single cell RNA-Seq cell barcodes documentation: https://umi-tools.readthedocs.io/en/latest/ license: ["MIT"] input: @@ -61,11 +61,8 @@ output: type: file description: File containing software versions pattern: "versions.yml" + authors: - "@drpatelh" - "@grst" - "@klkeys" -maintainers: - - "@drpatelh" - - "@grst" - - "@klkeys" diff --git a/modules/nf-core/umitools/extract/environment.yml b/modules/nf-core/umitools/extract/environment.yml deleted file mode 100644 index 7d08ac0ec..000000000 --- a/modules/nf-core/umitools/extract/environment.yml +++ /dev/null @@ -1,7 +0,0 @@ -name: umitools_extract -channels: - - conda-forge - - bioconda - - defaults -dependencies: - - bioconda::umi_tools=1.1.4 diff --git a/modules/nf-core/umitools/extract/main.nf b/modules/nf-core/umitools/extract/main.nf index 4bd79e79f..2f94fa93e 100644 --- a/modules/nf-core/umitools/extract/main.nf +++ b/modules/nf-core/umitools/extract/main.nf @@ -3,7 +3,7 @@ process UMITOOLS_EXTRACT { label "process_single" label "process_long" - conda "${moduleDir}/environment.yml" + conda "bioconda::umi_tools=1.1.4" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/umi_tools:1.1.4--py38hbff2b2d_1' : 'biocontainers/umi_tools:1.1.4--py38hbff2b2d_1' }" @@ -33,7 +33,7 @@ process UMITOOLS_EXTRACT { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) + umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') END_VERSIONS """ } else { @@ -49,7 +49,7 @@ process UMITOOLS_EXTRACT { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) + umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') END_VERSIONS """ } diff --git a/modules/nf-core/umitools/extract/meta.yml b/modules/nf-core/umitools/extract/meta.yml index 7695b2717..db64a0f88 100644 --- a/modules/nf-core/umitools/extract/meta.yml +++ b/modules/nf-core/umitools/extract/meta.yml @@ -1,16 +1,15 @@ name: umitools_extract description: Extracts UMI barcode from a read and add it to the read name, leaving any sample barcode in place keywords: - - UMI - - barcode - - extract - umitools + - extract tools: - umi_tools: description: > - UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) and single cell RNA-Seq cell barcodes + UMI-tools contains tools for dealing with Unique Molecular Identifiers (UMIs)/Random Molecular Tags (RMTs) + and single cell RNA-Seq cell barcodes documentation: https://umi-tools.readthedocs.io/en/latest/ - license: "MIT" + license: ["MIT"] input: - meta: type: map @@ -30,7 +29,9 @@ output: - reads: type: file description: > - Extracted FASTQ files. | For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. + Extracted FASTQ files. | + For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | + For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. pattern: "*.{fastq.gz}" - log: type: file @@ -40,9 +41,7 @@ output: type: file description: File containing software versions pattern: "versions.yml" + authors: - "@drpatelh" - "@grst" -maintainers: - - "@drpatelh" - - "@grst" diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test b/modules/nf-core/umitools/extract/tests/main.nf.test deleted file mode 100644 index 22242d1df..000000000 --- a/modules/nf-core/umitools/extract/tests/main.nf.test +++ /dev/null @@ -1,35 +0,0 @@ -nextflow_process { - - name "Test Process UMITOOLS_EXTRACT" - script "../main.nf" - process "UMITOOLS_EXTRACT" - config "./nextflow.config" - tag "modules_nfcore" - tag "modules" - tag "umitools" - tag "umitools/extract" - - test("Should run without failures") { - - when { - params { - outdir = "$outputDir" - } - process { - """ - input[0] = [ [ id:'test', single_end:true ], // meta map - [ file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) ] - ] - """ - } - } - - then { - assertAll ( - { assert process.success }, - { assert snapshot(process.out.versions).match("versions") } - ) - } - - } -} \ No newline at end of file diff --git a/modules/nf-core/umitools/extract/tests/main.nf.test.snap b/modules/nf-core/umitools/extract/tests/main.nf.test.snap deleted file mode 100644 index 6d5944f1d..000000000 --- a/modules/nf-core/umitools/extract/tests/main.nf.test.snap +++ /dev/null @@ -1,10 +0,0 @@ -{ - "versions": { - "content": [ - [ - "versions.yml:md5,5a18da2d3a5a4de15e7aaae9082d7abb" - ] - ], - "timestamp": "2023-12-08T09:41:43.540658352" - } -} \ No newline at end of file diff --git a/modules/nf-core/umitools/extract/tests/nextflow.config b/modules/nf-core/umitools/extract/tests/nextflow.config deleted file mode 100644 index c866f5a00..000000000 --- a/modules/nf-core/umitools/extract/tests/nextflow.config +++ /dev/null @@ -1,9 +0,0 @@ -process { - - publishDir = { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" } - - withName: UMITOOLS_EXTRACT { - ext.args = '--bc-pattern="NNNN"' - } - -} diff --git a/modules/nf-core/umitools/extract/tests/tags.yml b/modules/nf-core/umitools/extract/tests/tags.yml deleted file mode 100644 index c3fb23de4..000000000 --- a/modules/nf-core/umitools/extract/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -umitools/extract: - - modules/nf-core/umitools/extract/** diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml index e655484e7..f11e7ab6f 100644 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml +++ b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/meta.yml @@ -53,9 +53,7 @@ output: description: | Files containing software versions Structure: [ path(versions.yml) ] + authors: - "@drpatelh" - "@KamilMaliszArdigen" -maintainers: - - "@drpatelh" - - "@KamilMaliszArdigen" diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test deleted file mode 100644 index e3214d4f2..000000000 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test +++ /dev/null @@ -1,51 +0,0 @@ -nextflow_workflow { - - name "Test Workflow BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" - script "../main.nf" - workflow "BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/bam_dedup_stats_samtools_umitools" - tag "subworkflows/bam_stats_samtools" - tag "bam_dedup_stats_samtools_umitools" - tag "bam_stats_samtools" - tag "samtools" - tag "samtools/index" - tag "samtools/stats" - tag "samtools/idxstats" - tag "samtools/flagstat" - tag "umitools" - tag "umitools/dedup" - - test("sarscov2_bam_bai") { - - when { - params { - outdir = "$outputDir" - } - workflow { - """ - 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) - ] - input[1] = false - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, - { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, - { assert snapshot(workflow.out.stats).match("test_bam_dedup_stats_samtools_umitools_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_dedup_stats_samtools_umitools_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_dedup_stats_samtools_umitools_idxstats") } - ) - } - - } - -} diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap deleted file mode 100644 index 036a63bbe..000000000 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/main.nf.test.snap +++ /dev/null @@ -1,41 +0,0 @@ -{ - "test_bam_dedup_stats_samtools_umitools_idxstats": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.idxstats:md5,1adb27b52d4d64b826f48b59d61dcd4d" - ] - ] - ], - "timestamp": "2023-11-06T09:58:40.394333937" - }, - "test_bam_dedup_stats_samtools_umitools_flagstats": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.flagstat:md5,0bb716e40fae381b97484b58e0b16efe" - ] - ] - ], - "timestamp": "2023-11-06T09:58:40.385185447" - }, - "test_bam_dedup_stats_samtools_umitools_stats": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.stats:md5,6c296bce3659651fb5a08c31db314d91" - ] - ] - ], - "timestamp": "2023-12-04T11:06:41.700472756" - } -} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml b/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml deleted file mode 100644 index bfd5e023e..000000000 --- a/subworkflows/nf-core/bam_dedup_stats_samtools_umitools/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_dedup_stats_samtools_umitools: - - subworkflows/nf-core/bam_dedup_stats_samtools_umitools/** diff --git a/subworkflows/nf-core/bam_markduplicates_picard/meta.yml b/subworkflows/nf-core/bam_markduplicates_picard/meta.yml index fe63068e6..b924596d8 100644 --- a/subworkflows/nf-core/bam_markduplicates_picard/meta.yml +++ b/subworkflows/nf-core/bam_markduplicates_picard/meta.yml @@ -6,6 +6,7 @@ keywords: - bam - sam - cram + components: - picard/markduplicates - samtools/index @@ -13,6 +14,7 @@ components: - samtools/idxstats - samtools/flagstat - bam_stats_samtools + input: - ch_bam: description: | @@ -58,6 +60,3 @@ output: authors: - "@dmarron" - "@drpatelh" -maintainers: - - "@dmarron" - - "@drpatelh" diff --git a/subworkflows/nf-core/bam_rseqc/main.nf b/subworkflows/nf-core/bam_rseqc/main.nf index bf530f09d..a698b30ab 100644 --- a/subworkflows/nf-core/bam_rseqc/main.nf +++ b/subworkflows/nf-core/bam_rseqc/main.nf @@ -28,153 +28,141 @@ workflow BAM_RSEQC { // // Run RSeQC bam_stat.py // - ch_bamstat = Channel.empty() + bamstat_txt = Channel.empty() if ('bam_stat' in rseqc_modules) { RSEQC_BAMSTAT ( ch_bam ) - ch_bamstat = RSEQC_BAMSTAT.out.txt + bamstat_txt = RSEQC_BAMSTAT.out.txt ch_versions = ch_versions.mix(RSEQC_BAMSTAT.out.versions.first()) } // // Run RSeQC inner_distance.py // - ch_innerdistance = Channel.empty() - ch_innerdistance_distance = Channel.empty() - ch_innerdistance_freq = Channel.empty() - ch_innerdistance_mean = Channel.empty() - ch_innerdistance_pdf = Channel.empty() - ch_innerdistance_rscript = Channel.empty() + innerdistance_distance = Channel.empty() + innerdistance_freq = Channel.empty() + innerdistance_mean = Channel.empty() + innerdistance_pdf = Channel.empty() + innerdistance_rscript = Channel.empty() if ('inner_distance' in rseqc_modules) { RSEQC_INNERDISTANCE ( ch_bam, ch_bed ) - ch_innerdistance_distance = RSEQC_INNERDISTANCE.out.distance - ch_innerdistance_freq = RSEQC_INNERDISTANCE.out.freq - ch_innerdistance_mean = RSEQC_INNERDISTANCE.out.mean - ch_innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf - ch_innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript - ch_innerdistance = ch_innerdistance_distance.mix(ch_innerdistance_freq, ch_innerdistance_mean, ch_innerdistance_pdf, ch_innerdistance_rscript) - ch_versions = ch_versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) + innerdistance_distance = RSEQC_INNERDISTANCE.out.distance + innerdistance_freq = RSEQC_INNERDISTANCE.out.freq + innerdistance_mean = RSEQC_INNERDISTANCE.out.mean + innerdistance_pdf = RSEQC_INNERDISTANCE.out.pdf + innerdistance_rscript = RSEQC_INNERDISTANCE.out.rscript + ch_versions = ch_versions.mix(RSEQC_INNERDISTANCE.out.versions.first()) } // // Run RSeQC infer_experiment.py // - ch_inferexperiment = Channel.empty() + inferexperiment_txt = Channel.empty() if ('infer_experiment' in rseqc_modules) { RSEQC_INFEREXPERIMENT ( ch_bam, ch_bed ) - ch_inferexperiment = RSEQC_INFEREXPERIMENT.out.txt - ch_versions = ch_versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) + inferexperiment_txt = RSEQC_INFEREXPERIMENT.out.txt + ch_versions = ch_versions.mix(RSEQC_INFEREXPERIMENT.out.versions.first()) } // // Run RSeQC junction_annotation.py // - ch_junctionannotation = Channel.empty() - ch_junctionannotation_bed = Channel.empty() - ch_junctionannotation_interact_bed = Channel.empty() - ch_junctionannotation_xls = Channel.empty() - ch_junctionannotation_pdf = Channel.empty() - ch_junctionannotation_events_pdf = Channel.empty() - ch_junctionannotation_rscript = Channel.empty() - ch_junctionannotation_log = Channel.empty() + junctionannotation_bed = Channel.empty() + junctionannotation_interact_bed = Channel.empty() + junctionannotation_xls = Channel.empty() + junctionannotation_pdf = Channel.empty() + junctionannotation_events_pdf = Channel.empty() + junctionannotation_rscript = Channel.empty() + junctionannotation_log = Channel.empty() if ('junction_annotation' in rseqc_modules) { RSEQC_JUNCTIONANNOTATION ( ch_bam, ch_bed ) - ch_junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed - ch_junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed - ch_junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls - ch_junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf - ch_junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf - ch_junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript - ch_junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log - ch_junctionannotation = ch_junctionannotation_bed.mix(ch_junctionannotation_interact_bed, ch_junctionannotation_xls, ch_junctionannotation_pdf, ch_junctionannotation_events_pdf, ch_junctionannotation_rscript, ch_junctionannotation_log) - ch_versions = ch_versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) + junctionannotation_bed = RSEQC_JUNCTIONANNOTATION.out.bed + junctionannotation_interact_bed = RSEQC_JUNCTIONANNOTATION.out.interact_bed + junctionannotation_xls = RSEQC_JUNCTIONANNOTATION.out.xls + junctionannotation_pdf = RSEQC_JUNCTIONANNOTATION.out.pdf + junctionannotation_events_pdf = RSEQC_JUNCTIONANNOTATION.out.events_pdf + junctionannotation_rscript = RSEQC_JUNCTIONANNOTATION.out.rscript + junctionannotation_log = RSEQC_JUNCTIONANNOTATION.out.log + ch_versions = ch_versions.mix(RSEQC_JUNCTIONANNOTATION.out.versions.first()) } // // Run RSeQC junction_saturation.py // - ch_junctionsaturation = Channel.empty() - ch_junctionsaturation_pdf = Channel.empty() - ch_junctionsaturation_rscript = Channel.empty() + junctionsaturation_pdf = Channel.empty() + junctionsaturation_rscript = Channel.empty() if ('junction_saturation' in rseqc_modules) { RSEQC_JUNCTIONSATURATION ( ch_bam, ch_bed ) - ch_junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf - ch_junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript - ch_junctionsaturation = ch_junctionsaturation_pdf.mix(ch_junctionsaturation_rscript) - ch_versions = ch_versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) + junctionsaturation_pdf = RSEQC_JUNCTIONSATURATION.out.pdf + junctionsaturation_rscript = RSEQC_JUNCTIONSATURATION.out.rscript + ch_versions = ch_versions.mix(RSEQC_JUNCTIONSATURATION.out.versions.first()) } // // Run RSeQC read_distribution.py // - ch_readdistribution = Channel.empty() + readdistribution_txt = Channel.empty() if ('read_distribution' in rseqc_modules) { RSEQC_READDISTRIBUTION ( ch_bam, ch_bed ) - ch_readdistribution = RSEQC_READDISTRIBUTION.out.txt - ch_versions = ch_versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) + readdistribution_txt = RSEQC_READDISTRIBUTION.out.txt + ch_versions = ch_versions.mix(RSEQC_READDISTRIBUTION.out.versions.first()) } // // Run RSeQC read_duplication.py // - ch_readduplication = Channel.empty() - ch_readduplication_seq_xls = Channel.empty() - ch_readduplication_pos_xls = Channel.empty() - ch_readduplication_pdf = Channel.empty() - ch_readduplication_rscript = Channel.empty() + readduplication_seq_xls = Channel.empty() + readduplication_pos_xls = Channel.empty() + readduplication_pdf = Channel.empty() + readduplication_rscript = Channel.empty() if ('read_duplication' in rseqc_modules) { RSEQC_READDUPLICATION ( ch_bam ) - ch_readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls - ch_readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls - ch_readduplication_pdf = RSEQC_READDUPLICATION.out.pdf - ch_readduplication_rscript = RSEQC_READDUPLICATION.out.rscript - ch_readduplication = ch_readduplication_seq_xls.mix(ch_readduplication_pos_xls, ch_readduplication_pdf, ch_readduplication_rscript) - ch_versions = ch_versions.mix(RSEQC_READDUPLICATION.out.versions.first()) + readduplication_seq_xls = RSEQC_READDUPLICATION.out.seq_xls + readduplication_pos_xls = RSEQC_READDUPLICATION.out.pos_xls + readduplication_pdf = RSEQC_READDUPLICATION.out.pdf + readduplication_rscript = RSEQC_READDUPLICATION.out.rscript + ch_versions = ch_versions.mix(RSEQC_READDUPLICATION.out.versions.first()) } // // Run RSeQC tin.py // - ch_tin = Channel.empty() + tin_txt = Channel.empty() if ('tin' in rseqc_modules) { RSEQC_TIN ( ch_bam_bai, ch_bed ) - ch_tin = RSEQC_TIN.out.txt + tin_txt = RSEQC_TIN.out.txt ch_versions = ch_versions.mix(RSEQC_TIN.out.versions.first()) } emit: - ch_bamstat // channel: [ val(meta), txt ] + bamstat_txt // channel: [ val(meta), txt ] - ch_innerdistance - ch_innerdistance_distance // channel: [ val(meta), txt ] - ch_innerdistance_freq // channel: [ val(meta), txt ] - ch_innerdistance_mean // channel: [ val(meta), txt ] - ch_innerdistance_pdf // channel: [ val(meta), pdf ] - ch_innerdistance_rscript // channel: [ val(meta), r ] + innerdistance_distance // channel: [ val(meta), txt ] + innerdistance_freq // channel: [ val(meta), txt ] + innerdistance_mean // channel: [ val(meta), txt ] + innerdistance_pdf // channel: [ val(meta), pdf ] + innerdistance_rscript // channel: [ val(meta), r ] - ch_inferexperiment // channel: [ val(meta), txt ] + inferexperiment_txt // channel: [ val(meta), txt ] - ch_junctionannotation - ch_junctionannotation_bed // channel: [ val(meta), bed ] - ch_junctionannotation_interact_bed // channel: [ val(meta), bed ] - ch_junctionannotation_xls // channel: [ val(meta), xls ] - ch_junctionannotation_pdf // channel: [ val(meta), pdf ] - ch_junctionannotation_events_pdf // channel: [ val(meta), pdf ] - ch_junctionannotation_rscript // channel: [ val(meta), r ] - ch_junctionannotation_log // channel: [ val(meta), log ] + junctionannotation_bed // channel: [ val(meta), bed ] + junctionannotation_interact_bed // channel: [ val(meta), bed ] + junctionannotation_xls // channel: [ val(meta), xls ] + junctionannotation_pdf // channel: [ val(meta), pdf ] + junctionannotation_events_pdf // channel: [ val(meta), pdf ] + junctionannotation_rscript // channel: [ val(meta), r ] + junctionannotation_log // channel: [ val(meta), log ] - ch_junctionsaturation - ch_junctionsaturation_pdf // channel: [ val(meta), pdf ] - ch_junctionsaturation_rscript // channel: [ val(meta), r ] + junctionsaturation_pdf // channel: [ val(meta), pdf ] + junctionsaturation_rscript // channel: [ val(meta), r ] - ch_readdistribution // channel: [ val(meta), txt ] + readdistribution_txt // channel: [ val(meta), txt ] - ch_readduplication - ch_readduplication_seq_xls // channel: [ val(meta), xls ] - ch_readduplication_pos_xls // channel: [ val(meta), xls ] - ch_readduplication_pdf // channel: [ val(meta), pdf ] - ch_readduplication_rscript // channel: [ val(meta), r ] + readduplication_seq_xls // channel: [ val(meta), xls ] + readduplication_pos_xls // channel: [ val(meta), xls ] + readduplication_pdf // channel: [ val(meta), pdf ] + readduplication_rscript // channel: [ val(meta), r ] - ch_tin // channel: [ val(meta), txt ] + tin_txt // channel: [ val(meta), txt ] - versions = ch_versions // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] } diff --git a/subworkflows/nf-core/bam_rseqc/meta.yml b/subworkflows/nf-core/bam_rseqc/meta.yml index 2fef88737..428b83e6d 100644 --- a/subworkflows/nf-core/bam_rseqc/meta.yml +++ b/subworkflows/nf-core/bam_rseqc/meta.yml @@ -12,16 +12,8 @@ keywords: - readdistribution - readduplication - tin -components: +modules: - rseqc - - rseqc/tin - - rseqc/readduplication - - rseqc/readdistribution - - rseqc/junctionsaturation - - rseqc/junctionannotation - - rseqc/innerdistance - - rseqc/inferexperiment - - rseqc/bamstat input: - meta: type: map @@ -46,107 +38,91 @@ input: List of rseqc modules to run e.g. [ 'bam_stat', 'infer_experiment' ] output: - - ch_bamstat: + - bamstat_txt: type: file description: bam statistics report pattern: "*.bam_stat.txt" - - ch_innerdistance: - type: file - description: All the output files from RSEQC_INNERDISTANCE - pattern: "*.{txt,pdf,R}" - - ch_innerdistance_distance: + - innerdistance_distance: type: file description: the inner distances pattern: "*.inner_distance.txt" - - ch_innerdistance_freq: + - innerdistance_freq: type: file description: frequencies of different insert sizes pattern: "*.inner_distance_freq.txt" - - ch_innerdistance_mean: + - innerdistance_mean: type: file description: mean/median values of inner distances pattern: "*.inner_distance_mean.txt" - - ch_innerdistance_pdf: + - innerdistance_pdf: type: file description: distribution plot of inner distances pattern: "*.inner_distance_plot.pdf" - - ch_innerdistance_rscript: + - innerdistance_rscript: type: file description: script to reproduce the plot pattern: "*.inner_distance_plot.R" - - ch_inferexperiment: + - inferexperiment_txt: type: file description: infer_experiment results report pattern: "*.infer_experiment.txt" - - ch_junctionannotation: - type: file - description: All the output files from RSEQC_JUNCTIONANNOTATION - pattern: "*.{bed,xls,pdf,R,log}" - - ch_junctionannotation_bed: + - junctionannotation_bed: type: file description: bed file of annotated junctions pattern: "*.junction.bed" - - ch_junctionannotation_interact_bed: + - junctionannotation_interact_bed: type: file description: Interact bed file pattern: "*.Interact.bed" - - ch_junctionannotation_xls: + - junctionannotation_xls: type: file description: xls file with junction information pattern: "*.xls" - - ch_junctionannotation_pdf: + - junctionannotation_pdf: type: file description: junction plot pattern: "*.junction.pdf" - - ch_junctionannotation_events_pdf: + - junctionannotation_events_pdf: type: file description: events plot pattern: "*.events.pdf" - - ch_junctionannotation_rscript: + - junctionannotation_rscript: type: file description: Rscript to reproduce the plots pattern: "*.r" - - ch_junctionannotation_log: + - junctionannotation_log: type: file description: Log file generated by tool pattern: "*.log" - - ch_junctionsaturation: - type: file - description: All the output files from RSEQC_JUNCTIONSATURATION - pattern: "*.{pdf,R}" - - ch_junctionsaturation_pdf: + - junctionsaturation_pdf: type: file description: Junction saturation report pattern: "*.pdf" - - ch_junctionsaturation_rscript: + - junctionsaturation_rscript: type: file description: Junction saturation R-script pattern: "*.r" - - ch_readdistribution: + - readdistribution_txt: type: file description: the read distribution report pattern: "*.read_distribution.txt" - - ch_readduplication: - type: file - description: All the output files from RSEQC_READDUPLICATION - pattern: "*.{xls,pdf,R}" - - ch_readduplication_seq_xls: + - readduplication_seq_xls: type: file description: Read duplication rate determined from mapping position of read pattern: "*seq.DupRate.xls" - - ch_readduplication_pos_xls: + - readduplication_pos_xls: type: file description: Read duplication rate determined from sequence of read pattern: "*pos.DupRate.xls" - - ch_readduplication_pdf: + - readduplication_pdf: type: file description: plot of duplication rate pattern: "*.pdf" - - ch_readduplication_rscript: + - readduplication_rscript: type: file description: script to reproduce the plot pattern: "*.R" - - ch_tin: + - tin_txt: type: file description: TXT file containing tin.py results summary pattern: "*.txt" @@ -157,6 +133,3 @@ output: authors: - "@drpatelh" - "@kevinmenden" -maintainers: - - "@drpatelh" - - "@kevinmenden" diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test deleted file mode 100644 index 171476a91..000000000 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test +++ /dev/null @@ -1,96 +0,0 @@ -nextflow_workflow { - - name "Test Workflow BAM_RSEQC" - script "../main.nf" - workflow "BAM_RSEQC" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/bam_rseqc" - tag "bam_rseqc" - tag "rseqc" - tag "rseqc/bamstat" - tag "rseqc/inferexperiment" - tag "rseqc/innerdistance" - tag "rseqc/junctionannotation" - tag "rseqc/junctionsaturation" - tag "rseqc/readdistribution" - tag "rseqc/readduplication" - tag "rseqc/tin" - - test("sarscov2 paired-end [bam]") { - - when { - workflow { - """ - input[0] = Channel.of([ - [ 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[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) - input[2] = ['bam_stat', 'inner_distance', 'infer_experiment', 'junction_annotation', 'junction_saturation', 'read_distribution', 'read_duplication', 'tin'] - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert snapshot(workflow.out.ch_bamstat).match("bamstat")}, - - { assert snapshot(workflow.out.ch_innerdistance.findAll { it[1].endsWith('.pdf') == false }).match("inner_distance")}, - { assert workflow.out.ch_innerdistance.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - - { assert snapshot(workflow.out.ch_inferexperiment).match("inferexperiment")}, - - { assert snapshot(workflow.out.ch_junctionannotation.findAll { - it[1].endsWith('.xls') == false && - it[1].endsWith('.r') == false }).match("junction_annotation")}, - - { assert snapshot(workflow.out.ch_junctionsaturation.findAll { it[1].endsWith('.pdf') == false }).match("junction_saturation")}, - { assert workflow.out.ch_junctionsaturation.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - - { assert snapshot(workflow.out.ch_readdistribution).match("readdistribution")}, - - { assert snapshot(workflow.out.ch_readduplication.findAll { it[1].endsWith('.pdf') == false }).match("read_duplication")}, - { assert workflow.out.ch_readduplication.any { it[1].endsWith('.pdf') && file(it[1]).exists() } }, - - { assert snapshot(workflow.out.ch_tin).match("tin")}, - { assert snapshot(workflow.out.versions).match("versions")}, - ) - } - } - - test("sarscov2 paired-end [bam] no modules") { - - when { - workflow { - """ - input[0] = Channel.of([ - [ 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[1] = file(params.test_data['sarscov2']['genome']['test_bed12'], checkIfExists: true) - input[2] = [] - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert workflow.out.ch_bamstat.size() == 0 }, - { assert workflow.out.ch_innerdistance.size() == 0 }, - { assert workflow.out.ch_inferexperiment.size() == 0 }, - { assert workflow.out.ch_junctionannotation.size() == 0 }, - { assert workflow.out.ch_junctionsaturation.size() == 0 }, - { assert workflow.out.ch_readdistribution.size() == 0 }, - { assert workflow.out.ch_readduplication.size() == 0 }, - { assert workflow.out.ch_tin.size() == 0 }, - { assert workflow.out.versions.size() == 0 }, - ) - } - } - -} diff --git a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap b/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap deleted file mode 100644 index 13285ef06..000000000 --- a/subworkflows/nf-core/bam_rseqc/tests/main.nf.test.snap +++ /dev/null @@ -1,151 +0,0 @@ -{ - "inner_distance": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.inner_distance.txt:md5,a1acc9def0f64a5500d4c4cb47cbe32b" - ], - [ - { - "id": "test" - }, - "test.inner_distance_freq.txt:md5,3fc037501f5899b5da009c8ce02fc25e" - ], - [ - { - "id": "test" - }, - "test.inner_distance_mean.txt:md5,58398b7d5a29a5e564f9e3c50b55996c" - ], - [ - { - "id": "test" - }, - "test.inner_distance_plot.r:md5,5859fbd5b42046d47e8b9aa85077f4ea" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.734509133" - }, - "junction_saturation": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.junctionSaturation_plot.r:md5,caa6e63dcb477aabb169882b2f30dadd" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.825157699" - }, - "versions": { - "content": [ - [ - "versions.yml:md5,07b3ad789260bd746d872e7ff18153b2", - "versions.yml:md5,59d1ee2d13b29d10549187562d8fe1e0", - "versions.yml:md5,5eb5515f8009effdbb601170bb90ba29", - "versions.yml:md5,71818a5705b87b9d5c2532403a436bd8", - "versions.yml:md5,a09f406b0da71ca4291fd935e49d377d", - "versions.yml:md5,c9124387d6090cb4c94aaa9bf0e1c321", - "versions.yml:md5,e1e69eaa546288ace5e97285313e1420", - "versions.yml:md5,fe3bf0ac57c99687880ee62b28a4d4df" - ] - ], - "timestamp": "2023-12-08T14:37:45.942304603" - }, - "tin": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.paired_end.sorted.summary.txt:md5,9d98447e178b89a89f6f5aba7a772fe6" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.935155313" - }, - "bamstat": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.bam_stat.txt:md5,2675857864c1d1139b2a19d25dc36b09" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.671792186" - }, - "inferexperiment": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.infer_experiment.txt:md5,f9d0bfc239df637cd8aeda40ade3c59a" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.747507043" - }, - "read_duplication": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.DupRate_plot.r:md5,3c0325095cee4835b921e57d61c23dca" - ], - [ - { - "id": "test" - }, - "test.pos.DupRate.xls:md5,a859bc2031d46bf1cc4336205847caa3" - ], - [ - { - "id": "test" - }, - "test.seq.DupRate.xls:md5,ee8783399eec5a18522a6f08bece338b" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.927253593" - }, - "junction_annotation": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.junction_annotation.log:md5,d75e0f5d62fada8aa9449991b209554c" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.757733033" - }, - "readdistribution": { - "content": [ - [ - [ - { - "id": "test" - }, - "test.read_distribution.txt:md5,56893fdc0809d968629a363551a1655f" - ] - ] - ], - "timestamp": "2023-12-08T14:37:45.841855468" - } -} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_rseqc/tests/tags.yml b/subworkflows/nf-core/bam_rseqc/tests/tags.yml deleted file mode 100644 index c8dfce3a9..000000000 --- a/subworkflows/nf-core/bam_rseqc/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_rseqc: - - subworkflows/nf-core/bam_rseqc/** diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml b/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml index e01f9ccf6..69c16be41 100644 --- a/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml +++ b/subworkflows/nf-core/bam_sort_stats_samtools/meta.yml @@ -65,6 +65,3 @@ output: authors: - "@drpatelh" - "@ewels" -maintainers: - - "@drpatelh" - - "@ewels" diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test deleted file mode 100644 index 59b749d8f..000000000 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test +++ /dev/null @@ -1,78 +0,0 @@ -nextflow_workflow { - - name "Test Workflow BAM_SORT_STATS_SAMTOOLS" - script "../main.nf" - workflow "BAM_SORT_STATS_SAMTOOLS" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/bam_sort_stats_samtools" - tag "bam_sort_stats_samtools" - tag "subworkflows/bam_stats_samtools" - tag "bam_stats_samtools" - tag "samtools" - tag "samtools/index" - tag "samtools/sort" - tag "samtools/stats" - tag "samtools/idxstats" - tag "samtools/flagstat" - - test("test_bam_sort_stats_samtools_single_end") { - - when { - params { - outdir = "$outputDir" - } - workflow { - """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_single_end_bam'], checkIfExists: true) - ] - input[1] = [ [ id:'genome' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, - { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, - { assert snapshot(workflow.out.stats).match("test_bam_sort_stats_samtools_single_end_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_sort_stats_samtools_single_end_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_sort_stats_samtools_single_end_idxstats") } - ) - } - } - - test("test_bam_sort_stats_samtools_paired_end") { - - when { - params { - outdir = "$outputDir" - } - workflow { - """ - input[0] = [ [ id:'test', single_end:false ], // meta map - file(params.test_data['sarscov2']['illumina']['test_paired_end_bam'], checkIfExists: true) - ] - input[1] = [ [ id:'genome' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert workflow.out.bam.get(0).get(1) ==~ ".*.bam"}, - { assert workflow.out.bai.get(0).get(1) ==~ ".*.bai"}, - { assert snapshot(workflow.out.stats).match("test_bam_sort_stats_samtools_paired_end_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_sort_stats_samtools_paired_end_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_sort_stats_samtools_paired_end_idxstats") } - ) - } - } -} diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap deleted file mode 100644 index 77afbf176..000000000 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/main.nf.test.snap +++ /dev/null @@ -1,86 +0,0 @@ -{ - "test_bam_sort_stats_samtools_paired_end_flagstats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" - ] - ] - ], - "timestamp": "2023-10-22T20:25:03.687121177" - }, - "test_bam_sort_stats_samtools_paired_end_idxstats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" - ] - ] - ], - "timestamp": "2023-10-22T20:25:03.709648916" - }, - "test_bam_sort_stats_samtools_single_end_stats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,f281507081517414eb1a04b2d9c855b2" - ] - ] - ], - "timestamp": "2023-12-04T11:06:50.951881479" - }, - "test_bam_sort_stats_samtools_paired_end_stats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,e32e7e49dce1fbe327a89e0fb7bc01b1" - ] - ] - ], - "timestamp": "2023-12-04T11:06:59.253905951" - }, - "test_bam_sort_stats_samtools_single_end_idxstats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,613e048487662c694aa4a2f73ca96a20" - ] - ] - ], - "timestamp": "2023-10-22T20:25:58.451364604" - }, - "test_bam_sort_stats_samtools_single_end_flagstats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,2191911d72575a2358b08b1df64ccb53" - ] - ] - ], - "timestamp": "2023-10-22T20:25:58.416859285" - } -} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml b/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml deleted file mode 100644 index 30b69d6a4..000000000 --- a/subworkflows/nf-core/bam_sort_stats_samtools/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_sort_stats_samtools: - - subworkflows/nf-core/bam_sort_stats_samtools/** diff --git a/subworkflows/nf-core/bam_stats_samtools/meta.yml b/subworkflows/nf-core/bam_stats_samtools/meta.yml index 809bf736b..87863b11b 100644 --- a/subworkflows/nf-core/bam_stats_samtools/meta.yml +++ b/subworkflows/nf-core/bam_stats_samtools/meta.yml @@ -39,5 +39,3 @@ output: Structure: [ path(versions.yml) ] authors: - "@drpatelh" -maintainers: - - "@drpatelh" diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test deleted file mode 100644 index 972108905..000000000 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test +++ /dev/null @@ -1,102 +0,0 @@ -nextflow_workflow { - - name "Test Workflow BAM_STATS_SAMTOOLS" - script "../main.nf" - workflow "BAM_STATS_SAMTOOLS" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "bam_stats_samtools" - tag "subworkflows/bam_stats_samtools" - tag "samtools" - tag "samtools/flagstat" - tag "samtools/idxstats" - tag "samtools/stats" - - test("test_bam_stats_samtools_single_end") { - - when { - params { - outdir = "$outputDir" - } - workflow { - """ - input[0] = [ [ id:'test', single_end:true ], // meta map - file(params.test_data['sarscov2']['illumina']['test_single_end_sorted_bam'], checkIfExists: true), - file(params.test_data['sarscov2']['illumina']['test_single_end_sorted_bam_bai'], checkIfExists: true) - ] - input[1] = [ [ id:'genome' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_single_end_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_single_end_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_single_end_idxstats") } - ) - } - } - - test("test_bam_stats_samtools_paired_end") { - - when { - params { - outdir = "$outputDir" - } - workflow { - """ - input[0] = [ [ id:'test', single_end:true ], // 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[1] = [ [ id:'genome' ], - file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_paired_end_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_paired_end_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_paired_end_idxstats") } - ) - } - } - - test("test_bam_stats_samtools_paired_end_cram") { - - when { - params { - outdir = "$outputDir" - } - workflow { - """ - input[0] = [ [ 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) - ] - input[1] = [ [ id:'genome' ], - file(params.test_data['homo_sapiens']['genome']['genome_fasta'], checkIfExists: true) - ] - """ - } - } - - then { - assertAll( - { assert workflow.success}, - { assert snapshot(workflow.out.stats).match("test_bam_stats_samtools_paired_end_cram_stats") }, - { assert snapshot(workflow.out.flagstat).match("test_bam_stats_samtools_paired_end_cram_flagstats") }, - { assert snapshot(workflow.out.idxstats).match("test_bam_stats_samtools_paired_end_cram_idxstats") } - ) - } - } - -} diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap b/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap deleted file mode 100644 index d3af13769..000000000 --- a/subworkflows/nf-core/bam_stats_samtools/tests/main.nf.test.snap +++ /dev/null @@ -1,128 +0,0 @@ -{ - "test_bam_stats_samtools_paired_end_cram_flagstats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.flagstat:md5,a53f3d26e2e9851f7d528442bbfe9781" - ] - ] - ], - "timestamp": "2023-11-06T09:31:26.194017574" - }, - "test_bam_stats_samtools_paired_end_stats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.stats:md5,49e2b43344ff92bc4c02463a58f7ba4a" - ] - ] - ], - "timestamp": "2023-12-04T11:07:13.965061942" - }, - "test_bam_stats_samtools_paired_end_flagstats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.flagstat:md5,4f7ffd1e6a5e85524d443209ac97d783" - ] - ] - ], - "timestamp": "2023-11-06T09:31:11.668517251" - }, - "test_bam_stats_samtools_single_end_flagstats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.flagstat:md5,2191911d72575a2358b08b1df64ccb53" - ] - ] - ], - "timestamp": "2023-11-06T09:26:10.340046381" - }, - "test_bam_stats_samtools_paired_end_cram_idxstats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.idxstats:md5,e179601fa7b8ebce81ac3765206f6c15" - ] - ] - ], - "timestamp": "2023-11-06T09:31:26.207052003" - }, - "test_bam_stats_samtools_single_end_stats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.stats:md5,5a6667d97806e5002731e9cf23674fad" - ] - ] - ], - "timestamp": "2023-12-04T11:07:06.676820877" - }, - "test_bam_stats_samtools_paired_end_idxstats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.idxstats:md5,df60a8c8d6621100d05178c93fb053a2" - ] - ] - ], - "timestamp": "2023-11-06T09:31:11.68246157" - }, - "test_bam_stats_samtools_single_end_idxstats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": true - }, - "test.idxstats:md5,613e048487662c694aa4a2f73ca96a20" - ] - ] - ], - "timestamp": "2023-11-06T09:26:10.349439801" - }, - "test_bam_stats_samtools_paired_end_cram_stats": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.stats:md5,2cf2fe93596ee3d74f946097b204a629" - ] - ] - ], - "timestamp": "2023-12-04T11:07:22.30295557" - } -} \ No newline at end of file diff --git a/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml b/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml deleted file mode 100644 index ec2f2d68f..000000000 --- a/subworkflows/nf-core/bam_stats_samtools/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/bam_stats_samtools: - - subworkflows/nf-core/bam_stats_samtools/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml index 220e8db1c..f76b40261 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml +++ b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/meta.yml @@ -69,10 +69,8 @@ output: - reads: type: file description: > - Extracted FASTQ files. | For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | - - - + Extracted FASTQ files. | + For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. pattern: "*.{fastq.gz}" - fastqc_html: @@ -124,5 +122,3 @@ output: pattern: "versions.yml" authors: - "@robsyme" -maintainers: - - "@robsyme" diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test deleted file mode 100644 index cdd73984c..000000000 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test +++ /dev/null @@ -1,60 +0,0 @@ -nextflow_workflow { - - name "Test Workflow FASTQ_FASTQC_UMITOOLS_FASTP" - script "../main.nf" - workflow "FASTQ_FASTQC_UMITOOLS_FASTP" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "subworkflows/fastq_fastqc_umitools_fastp" - tag "fastq_fastqc_umitools_fastp" - tag "fastqc" - tag "umitools/extract" - tag "fastp" - - - test("sarscov2 paired-end [fastq]") { - - when { - workflow { - """ - input[0] = [ - [ 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) - ] - ] - input[1] = false // skip_fastqc - input[2] = false // with_umi - input[3] = false // skip_umi_extract - input[4] = 1 // umi_discard_read - input[5] = false // skip_trimming - input[6] = [] // adapter_fasta - input[7] = false // save_trimmed_fail - input[8] = false // save_merged - input[9] = 1 // min_trimmed_reads - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(workflow.out.reads).match("reads") }, - { assert snapshot(workflow.out.umi_log).match("umi_log") }, - { assert snapshot(workflow.out.trim_json).match("trim_json") }, - { assert snapshot(workflow.out.trim_reads_fail).match("trim_reads_fail") }, - { assert snapshot(workflow.out.trim_reads_merged).match("trim_reads_merged") }, - { assert snapshot(workflow.out.trim_read_count).match("trim_read_count") }, - { assert snapshot(workflow.out.versions).match("versions") }, - - { assert workflow.out.fastqc_raw_html }, - { assert workflow.out.fastqc_raw_zip }, - { assert workflow.out.trim_html }, - { assert workflow.out.trim_log }, - { assert workflow.out.fastqc_trim_html }, - { assert workflow.out.fastqc_trim_zip } - ) - } - } -} diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap deleted file mode 100644 index 38a65aebe..000000000 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/main.nf.test.snap +++ /dev/null @@ -1,81 +0,0 @@ -{ - "trim_reads_merged": { - "content": [ - [ - - ] - ], - "timestamp": "2023-11-26T02:28:26.26920982" - }, - "trim_reads_fail": { - "content": [ - [ - - ] - ], - "timestamp": "2023-11-26T02:28:26.25861515" - }, - "versions": { - "content": [ - [ - "versions.yml:md5,85bd0117e5778fff18e3920972a296ad", - "versions.yml:md5,c50aa59475ab901bc6f9a2cf7b1a14e0", - "versions.yml:md5,f3dcaae948e8eed92b4a5557b4c6668e" - ] - ], - "timestamp": "2023-11-26T02:28:26.30891403" - }, - "trim_json": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - "test.fastp.json:md5,1e0f8e27e71728e2b63fc64086be95cd" - ] - ] - ], - "timestamp": "2023-11-26T02:28:26.24768259" - }, - "reads": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - [ - "test_1.fastp.fastq.gz:md5,67b2bbae47f073e05a97a9c2edce23c7", - "test_2.fastp.fastq.gz:md5,25cbdca08e2083dbd4f0502de6b62f39" - ] - ] - ] - ], - "timestamp": "2023-12-04T11:30:32.061644815" - }, - "umi_log": { - "content": [ - [ - - ] - ], - "timestamp": "2023-11-26T02:28:26.238536" - }, - "trim_read_count": { - "content": [ - [ - [ - { - "id": "test", - "single_end": false - }, - 198 - ] - ] - ], - "timestamp": "2023-11-26T02:28:26.27984169" - } -} \ No newline at end of file diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml b/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml deleted file mode 100644 index 84a4b5676..000000000 --- a/subworkflows/nf-core/fastq_fastqc_umitools_fastp/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/fastq_fastqc_umitools_fastp: - - subworkflows/nf-core/fastq_fastqc_umitools_fastp/** diff --git a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml index a7df97f77..e32e90f43 100644 --- a/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml +++ b/subworkflows/nf-core/fastq_fastqc_umitools_trimgalore/meta.yml @@ -47,14 +47,13 @@ input: type: integer description: | Inputs with fewer than this reads will be filtered out of the "reads" output channel + output: - reads: type: file description: > - Extracted FASTQ files. | For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | - - - + Extracted FASTQ files. | + For single-end reads, pattern is \${prefix}.umi_extract.fastq.gz. | For paired-end reads, pattern is \${prefix}.umi_extract_{1,2}.fastq.gz. pattern: "*.{fastq.gz}" - fastqc_html: @@ -96,6 +95,3 @@ output: authors: - "@drpatelh" - "@KamilMaliszArdigen" -maintainers: - - "@drpatelh" - - "@KamilMaliszArdigen" diff --git a/workflows/rnaseq.nf b/workflows/rnaseq.nf index 5827b753a..f8def2d10 100755 --- a/workflows/rnaseq.nf +++ b/workflows/rnaseq.nf @@ -40,15 +40,15 @@ if (!params.skip_alignment) { prepareToolIndices << params.aligner } if (!params.skip_pseudo_alignment && params.pseudo_aligner) { prepareToolIndices << params.pseudo_aligner } // Determine whether to filter the GTF or not -def filterGtf = +def filterGtf = (( // Condition 1: Alignment is required and aligner is set !params.skip_alignment && params.aligner - ) || + ) || ( // Condition 2: Pseudoalignment is required and pseudoaligner is set !params.skip_pseudo_alignment && params.pseudo_aligner - ) || + ) || ( // Condition 3: Transcript FASTA file is not provided !params.transcript_fasta @@ -774,14 +774,14 @@ workflow RNASEQ { PREPARE_GENOME.out.gene_bed, rseqc_modules ) - ch_bamstat_multiqc = BAM_RSEQC.out.ch_bamstat - ch_inferexperiment_multiqc = BAM_RSEQC.out.ch_inferexperiment - ch_innerdistance_multiqc = BAM_RSEQC.out.ch_innerdistance_freq - ch_junctionannotation_multiqc = BAM_RSEQC.out.ch_junctionannotation_log - ch_junctionsaturation_multiqc = BAM_RSEQC.out.ch_junctionsaturation_rscript - ch_readdistribution_multiqc = BAM_RSEQC.out.ch_readdistribution - ch_readduplication_multiqc = BAM_RSEQC.out.ch_readduplication_pos_xls - ch_tin_multiqc = BAM_RSEQC.out.ch_tin + ch_bamstat_multiqc = BAM_RSEQC.out.bamstat_txt + ch_inferexperiment_multiqc = BAM_RSEQC.out.inferexperiment_txt + ch_innerdistance_multiqc = BAM_RSEQC.out.innerdistance_freq + ch_junctionannotation_multiqc = BAM_RSEQC.out.junctionannotation_log + ch_junctionsaturation_multiqc = BAM_RSEQC.out.junctionsaturation_rscript + ch_readdistribution_multiqc = BAM_RSEQC.out.readdistribution_txt + ch_readduplication_multiqc = BAM_RSEQC.out.readduplication_pos_xls + ch_tin_multiqc = BAM_RSEQC.out.tin_txt ch_versions = ch_versions.mix(BAM_RSEQC.out.versions) ch_inferexperiment_multiqc @@ -816,7 +816,7 @@ workflow RNASEQ { // ch_pseudo_multiqc = Channel.empty() ch_pseudoaligner_pca_multiqc = Channel.empty() - ch_pseudoaligner_clustering_multiqc = Channel.empty() + ch_pseudoaligner_clustering_multiqc = Channel.empty() if (!params.skip_pseudo_alignment && params.pseudo_aligner) { if (params.pseudo_aligner == 'salmon') { @@ -851,7 +851,7 @@ workflow RNASEQ { ch_versions = ch_versions.mix(DESEQ2_QC_PSEUDO.out.versions) } } - + // // MODULE: Pipeline reporting // @@ -922,7 +922,7 @@ workflow.onComplete { if (params.email || params.email_on_fail) { NfcoreTemplate.email(workflow, params, summary_params, projectDir, log, multiqc_report, pass_mapped_reads, pass_trimmed_reads, pass_strand_check) } - + NfcoreTemplate.dump_parameters(workflow, params) NfcoreTemplate.summary(workflow, params, log, pass_mapped_reads, pass_trimmed_reads, pass_strand_check) From a59a6f3b761737496bde271cce547ca95451a5bb Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 3 Jan 2024 15:01:33 +0000 Subject: [PATCH 33/62] Patch modules to fix #1103 --- modules.json | 12 ++++--- modules/nf-core/fastp/fastp.diff | 32 +++++++++++++++++++ modules/nf-core/fastp/main.nf | 6 ++-- modules/nf-core/fastqc/fastqc.diff | 23 +++++++++++++ modules/nf-core/fastqc/main.nf | 4 +-- modules/nf-core/umitools/dedup/main.nf | 4 +-- .../umitools/dedup/umitools-dedup.diff | 23 +++++++++++++ modules/nf-core/umitools/extract/main.nf | 4 +-- .../umitools/extract/umitools-extract.diff | 23 +++++++++++++ 9 files changed, 118 insertions(+), 13 deletions(-) create mode 100644 modules/nf-core/fastp/fastp.diff create mode 100644 modules/nf-core/fastqc/fastqc.diff create mode 100644 modules/nf-core/umitools/dedup/umitools-dedup.diff create mode 100644 modules/nf-core/umitools/extract/umitools-extract.diff diff --git a/modules.json b/modules.json index e78ca060c..d22e252fe 100644 --- a/modules.json +++ b/modules.json @@ -28,12 +28,14 @@ "fastp": { "branch": "master", "git_sha": "d497a4868ace3302016ea8ed4b395072d5e833cd", - "installed_by": ["fastq_fastqc_umitools_fastp", "modules"] + "installed_by": ["fastq_fastqc_umitools_fastp", "modules"], + "patch": "modules/nf-core/fastp/fastp.diff" }, "fastqc": { "branch": "master", "git_sha": "102cc9b709a6da9f7cee2373563ab1464fca9c0a", - "installed_by": ["fastq_fastqc_umitools_trimgalore", "fastq_fastqc_umitools_fastp"] + "installed_by": ["fastq_fastqc_umitools_trimgalore", "fastq_fastqc_umitools_fastp"], + "patch": "modules/nf-core/fastqc/fastqc.diff" }, "fq/subsample": { "branch": "master", @@ -222,12 +224,14 @@ "umitools/dedup": { "branch": "master", "git_sha": "7297204bf49273300a3dbfa4b7a4027c8683f1bd", - "installed_by": ["bam_dedup_stats_samtools_umitools"] + "installed_by": ["bam_dedup_stats_samtools_umitools"], + "patch": "modules/nf-core/umitools/dedup/umitools-dedup.diff" }, "umitools/extract": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"] + "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"], + "patch": "modules/nf-core/umitools/extract/umitools-extract.diff" }, "untar": { "branch": "master", diff --git a/modules/nf-core/fastp/fastp.diff b/modules/nf-core/fastp/fastp.diff new file mode 100644 index 000000000..b50d8e387 --- /dev/null +++ b/modules/nf-core/fastp/fastp.diff @@ -0,0 +1,32 @@ +Changes in module 'nf-core/fastp' +--- modules/nf-core/fastp/main.nf ++++ modules/nf-core/fastp/main.nf +@@ -45,7 +45,7 @@ + $adapter_list \\ + $fail_fastq \\ + $args \\ +- 2> ${prefix}.fastp.log \\ ++ 2> >(tee ${prefix}.fastp.log >&2) \\ + | gzip -c > ${prefix}.fastp.fastq.gz + + cat <<-END_VERSIONS > versions.yml +@@ -66,7 +66,7 @@ + $adapter_list \\ + $fail_fastq \\ + $args \\ +- 2> ${prefix}.fastp.log ++ 2> >(tee ${prefix}.fastp.log >&2) + + cat <<-END_VERSIONS > versions.yml + "${task.process}": +@@ -91,7 +91,7 @@ + --thread $task.cpus \\ + --detect_adapter_for_pe \\ + $args \\ +- 2> ${prefix}.fastp.log ++ 2> >(tee ${prefix}.fastp.log >&2) + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + +************************************************************ diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index 831b7f128..8cade07f0 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -45,7 +45,7 @@ process FASTP { $adapter_list \\ $fail_fastq \\ $args \\ - 2> ${prefix}.fastp.log \\ + 2> >(tee ${prefix}.fastp.log >&2) \\ | gzip -c > ${prefix}.fastp.fastq.gz cat <<-END_VERSIONS > versions.yml @@ -66,7 +66,7 @@ process FASTP { $adapter_list \\ $fail_fastq \\ $args \\ - 2> ${prefix}.fastp.log + 2> >(tee ${prefix}.fastp.log >&2) cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -91,7 +91,7 @@ process FASTP { --thread $task.cpus \\ --detect_adapter_for_pe \\ $args \\ - 2> ${prefix}.fastp.log + 2> >(tee ${prefix}.fastp.log >&2) cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/fastqc/fastqc.diff b/modules/nf-core/fastqc/fastqc.diff new file mode 100644 index 000000000..0518d2b8f --- /dev/null +++ b/modules/nf-core/fastqc/fastqc.diff @@ -0,0 +1,23 @@ +Changes in module 'nf-core/fastqc' +--- modules/nf-core/fastqc/main.nf ++++ modules/nf-core/fastqc/main.nf +@@ -37,7 +37,7 @@ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": +- fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) ++ fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) + END_VERSIONS + """ + +@@ -49,7 +49,7 @@ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": +- fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) ++ fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) + END_VERSIONS + """ + } + +************************************************************ diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 67209f793..c9f64702b 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -37,7 +37,7 @@ process FASTQC { cat <<-END_VERSIONS > versions.yml "${task.process}": - fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) + fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) END_VERSIONS """ @@ -49,7 +49,7 @@ process FASTQC { cat <<-END_VERSIONS > versions.yml "${task.process}": - fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) + fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) END_VERSIONS """ } diff --git a/modules/nf-core/umitools/dedup/main.nf b/modules/nf-core/umitools/dedup/main.nf index 56ea04691..824ebeeb3 100644 --- a/modules/nf-core/umitools/dedup/main.nf +++ b/modules/nf-core/umitools/dedup/main.nf @@ -42,7 +42,7 @@ process UMITOOLS_DEDUP { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) END_VERSIONS """ @@ -56,7 +56,7 @@ process UMITOOLS_DEDUP { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) END_VERSIONS """ } diff --git a/modules/nf-core/umitools/dedup/umitools-dedup.diff b/modules/nf-core/umitools/dedup/umitools-dedup.diff new file mode 100644 index 000000000..327583445 --- /dev/null +++ b/modules/nf-core/umitools/dedup/umitools-dedup.diff @@ -0,0 +1,23 @@ +Changes in module 'nf-core/umitools/dedup' +--- modules/nf-core/umitools/dedup/main.nf ++++ modules/nf-core/umitools/dedup/main.nf +@@ -42,7 +42,7 @@ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": +- umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') ++ umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) + END_VERSIONS + """ + +@@ -56,7 +56,7 @@ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": +- umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') ++ umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) + END_VERSIONS + """ + } + +************************************************************ diff --git a/modules/nf-core/umitools/extract/main.nf b/modules/nf-core/umitools/extract/main.nf index 2f94fa93e..5ffe4eb76 100644 --- a/modules/nf-core/umitools/extract/main.nf +++ b/modules/nf-core/umitools/extract/main.nf @@ -33,7 +33,7 @@ process UMITOOLS_EXTRACT { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) END_VERSIONS """ } else { @@ -49,7 +49,7 @@ process UMITOOLS_EXTRACT { cat <<-END_VERSIONS > versions.yml "${task.process}": - umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') + umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) END_VERSIONS """ } diff --git a/modules/nf-core/umitools/extract/umitools-extract.diff b/modules/nf-core/umitools/extract/umitools-extract.diff new file mode 100644 index 000000000..464a23c00 --- /dev/null +++ b/modules/nf-core/umitools/extract/umitools-extract.diff @@ -0,0 +1,23 @@ +Changes in module 'nf-core/umitools/extract' +--- modules/nf-core/umitools/extract/main.nf ++++ modules/nf-core/umitools/extract/main.nf +@@ -33,7 +33,7 @@ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": +- umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') ++ umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) + END_VERSIONS + """ + } else { +@@ -49,7 +49,7 @@ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": +- umitools: \$(umi_tools --version 2>&1 | sed 's/^.*UMI-tools version://; s/ *\$//') ++ umitools: \$( umi_tools --version | sed '/version:/!d; s/.*: //' ) + END_VERSIONS + """ + } + +************************************************************ From a2ae1e59fa7daa6d9e8967ee27806ab83dd1c74f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 3 Jan 2024 15:04:03 +0000 Subject: [PATCH 34/62] Update ci.yml - fix test matrix --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 87232a271..66bd47cf9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: matrix: NXF_VER: - "23.04.0" - #- "latest-everything" + - "latest-everything" steps: - name: Check out pipeline code uses: actions/checkout@v4 From 2945c25fc33d673efe3c07b3396af65e1b248920 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 3 Jan 2024 15:21:28 +0000 Subject: [PATCH 35/62] Reinstate non-schema fasta checking --- lib/WorkflowRnaseq.groovy | 4 ++++ nextflow_schema.json | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/WorkflowRnaseq.groovy b/lib/WorkflowRnaseq.groovy index 25e52ffe4..29a1724e3 100755 --- a/lib/WorkflowRnaseq.groovy +++ b/lib/WorkflowRnaseq.groovy @@ -14,6 +14,10 @@ class WorkflowRnaseq { public static void initialise(params, log) { genomeExistsError(params, log) + if (!params.fasta) { + Nextflow.error("Genome fasta file not specified with e.g. '--fasta genome.fa' or via a detectable config file.") + } + if (!params.gtf && !params.gff) { Nextflow.error("No GTF or GFF3 annotation specified! The pipeline requires at least one of these files.") } diff --git a/nextflow_schema.json b/nextflow_schema.json index 9e28206a4..a3cae09bf 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -211,8 +211,7 @@ "hidden": true, "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." } - }, - "oneOf": [{ "required": ["fasta"] }, { "required": ["genome"] }] + } }, "read_trimming_options": { "title": "Read trimming options", From 4312325727a4408d00c7de904578c9ebb6313519 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 3 Jan 2024 15:37:44 +0000 Subject: [PATCH 36/62] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba6701c2f..706845656 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling. - [PR #1138](https://github.com/nf-core/rnaseq/pull/1138) - Updates FASTQC and UMITOOLS modules and their dependencies which have had their version string extraction commands updated ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) - Update Rseqc and Fastp modules to print STDERR to screen and file. +- [PR #1143](https://github.com/nf-core/rnaseq/pull/1143) - Move fasta check back to Groovy ### Software dependencies From 0bb288a7f644221ec77eeda70b4e193e6947f7d3 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 3 Jan 2024 15:39:41 +0000 Subject: [PATCH 37/62] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6544378a..1a8ce9bf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Enhancements & fixes - [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling. +- [PR #1149](https://github.com/nf-core/rnaseq/pull/1149) - Patch modules to fix #1103 ### Software dependencies From b6a2d529fc34e797f240ba44ae1f47637ede97bb Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 3 Jan 2024 16:44:40 +0100 Subject: [PATCH 38/62] Update CHANGELOG.md --- CHANGELOG.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a8ce9bf6..4ad8ceab7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,14 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Credits -### Enhancements & fixes +Special thanks to the following for their contributions to the release: -- [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling. -- [PR #1149](https://github.com/nf-core/rnaseq/pull/1149) - Patch modules to fix #1103 +- [Adam Talbot](https://github.com/adamrtalbot) +- [Jonathan Manning](https://github.com/pinin4fjords) +- [Mahesh Binzer-Panchal](https://github.com/mahesh-panchal) +- [Matthias Zepper](https://github.com/MatthiasZepper) +- [Maxime Garcia](https://github.com/maxulysse) +- [Phil Ewels](https://github.com/ewels) +- [Vlad Savelyev](https://github.com/vladsavelyev) -### Software dependencies +### Enhancements & fixes -### Modules / Subworkflows +- [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling +- [PR #1149](https://github.com/nf-core/rnaseq/pull/1149) - Fix and patch version commands for Fastp, FastQC and UMI-tools modules ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) ## [[3.13.2](https://github.com/nf-core/rnaseq/releases/tag/3.13.2)] - 2023-11-21 From 91004b184daaad0e97bf21c770751db3655eec6f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 3 Jan 2024 17:30:18 +0000 Subject: [PATCH 39/62] Be more flexible on attribute values in GTFs --- bin/tx2gene.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/bin/tx2gene.py b/bin/tx2gene.py index 8e0c1c6a5..20f57524c 100755 --- a/bin/tx2gene.py +++ b/bin/tx2gene.py @@ -6,6 +6,7 @@ import argparse import glob import os +import re from collections import Counter, defaultdict, OrderedDict from collections.abc import Set from typing import Dict @@ -50,14 +51,18 @@ def discover_transcript_attribute(gtf_file: str, transcripts: Set[str]) -> str: Returns: str: The attribute name that corresponds to transcripts in the GTF file. """ + votes = Counter() with open(gtf_file) as inh: - # Read GTF file, skipping header lines + # Read GTF file, skipping header lines for line in filter(lambda x: not x.startswith("#"), inh): cols = line.split("\t") - # Parse attribute column and update votes for each attribute found - attributes = dict(item.strip().split(" ", 1) for item in cols[8].split(";") if item.strip()) - votes.update(key for key, value in attributes.items() if value.strip('"') in transcripts) + + # Use regular expression to correctly split the attributes string + attributes_str = cols[8] + attributes = dict(re.findall(r'(\S+) "(.*?)(? Date: Wed, 3 Jan 2024 17:32:31 +0000 Subject: [PATCH 40/62] Update tx2gene.py --- bin/tx2gene.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/tx2gene.py b/bin/tx2gene.py index 20f57524c..963676ef1 100755 --- a/bin/tx2gene.py +++ b/bin/tx2gene.py @@ -54,7 +54,7 @@ def discover_transcript_attribute(gtf_file: str, transcripts: Set[str]) -> str: votes = Counter() with open(gtf_file) as inh: - # Read GTF file, skipping header lines + # Read GTF file, skipping header lines for line in filter(lambda x: not x.startswith("#"), inh): cols = line.split("\t") From 745696ad1015ec3b23a205729e2c79288f9a51f2 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Wed, 3 Jan 2024 17:33:52 +0000 Subject: [PATCH 41/62] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index de4b47e4d..2dfb7c48b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Special thanks to the following for their contributions to the release: - [PR #1141](https://github.com/nf-core/rnaseq/pull/1141) - Important! Template update for nf-core/tools v2.11 - [PR #1149](https://github.com/nf-core/rnaseq/pull/1149) - Fix and patch version commands for Fastp, FastQC and UMI-tools modules ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) - [PR #1144](https://github.com/nf-core/rnaseq/pull/1144) - Interface to kmer size for pseudoaligners +- [PR #1150](https://github.com/nf-core/rnaseq/pull/1150) - Be more flexible on attribute values in GTFs ## [[3.13.2](https://github.com/nf-core/rnaseq/releases/tag/3.13.2)] - 2023-11-21 From 8d7edfb54efe6a08eb771e92d1d6e193411e1b58 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 3 Jan 2024 19:13:01 +0100 Subject: [PATCH 42/62] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fe602495..def85be13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,7 +33,7 @@ Special thanks to the following for their contributions to the release: - [PR #1141](https://github.com/nf-core/rnaseq/pull/1141) - Important! Template update for nf-core/tools v2.11 - [PR #1149](https://github.com/nf-core/rnaseq/pull/1149) - Fix and patch version commands for Fastp, FastQC and UMI-tools modules ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) - [PR #1144](https://github.com/nf-core/rnaseq/pull/1144) - Interface to kmer size for pseudoaligners -- [PR #1143](https://github.com/nf-core/rnaseq/pull/1143) - Move fasta check back to Groovy +- [PR #1143](https://github.com/nf-core/rnaseq/pull/1143) - Move fasta check back to Groovy ([#1142](https://github.com/nf-core/rnaseq/issues/1142)) ## [[3.13.2](https://github.com/nf-core/rnaseq/releases/tag/3.13.2)] - 2023-11-21 From c08e204925a34abefba854cdfa0c29c4facb794d Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Wed, 3 Jan 2024 19:37:47 +0100 Subject: [PATCH 43/62] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2dfb7c48b..a0e997952 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,7 +33,7 @@ Special thanks to the following for their contributions to the release: - [PR #1141](https://github.com/nf-core/rnaseq/pull/1141) - Important! Template update for nf-core/tools v2.11 - [PR #1149](https://github.com/nf-core/rnaseq/pull/1149) - Fix and patch version commands for Fastp, FastQC and UMI-tools modules ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) - [PR #1144](https://github.com/nf-core/rnaseq/pull/1144) - Interface to kmer size for pseudoaligners -- [PR #1150](https://github.com/nf-core/rnaseq/pull/1150) - Be more flexible on attribute values in GTFs +- [PR #1150](https://github.com/nf-core/rnaseq/pull/1150) - Be more flexible on attribute values in GTFs ([#1132](https://github.com/nf-core/rnaseq/issues/1132)) ## [[3.13.2](https://github.com/nf-core/rnaseq/releases/tag/3.13.2)] - 2023-11-21 From 05cc3970bf142972151bdbe80ab946dc0425e17d Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 4 Jan 2024 09:44:14 +0000 Subject: [PATCH 44/62] fix to #1150 --- bin/tx2gene.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/tx2gene.py b/bin/tx2gene.py index 963676ef1..d8256f5f9 100755 --- a/bin/tx2gene.py +++ b/bin/tx2gene.py @@ -62,7 +62,7 @@ def discover_transcript_attribute(gtf_file: str, transcripts: Set[str]) -> str: attributes_str = cols[8] attributes = dict(re.findall(r'(\S+) "(.*?)(? Date: Thu, 4 Jan 2024 09:46:09 +0000 Subject: [PATCH 45/62] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8614fd74e..b4c728e20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ Special thanks to the following for their contributions to the release: - [PR #1144](https://github.com/nf-core/rnaseq/pull/1144) - Interface to kmer size for pseudoaligners - [PR #1149](https://github.com/nf-core/rnaseq/pull/1149) - Fix and patch version commands for Fastp, FastQC and UMI-tools modules ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) - [PR #1150](https://github.com/nf-core/rnaseq/pull/1150) - Be more flexible on attribute values in GTFs ([#1132](https://github.com/nf-core/rnaseq/issues/1132)) +- [PR #1151](https://github.com/nf-core/rnaseq/pull/1151) - fix to #1150: reinstate conditional ### Parameters From 5017588b90423849a7fc19707e569587d3c4f8ed Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 4 Jan 2024 10:41:50 +0000 Subject: [PATCH 46/62] Bump qualimap version to 2.3 --- modules/nf-core/qualimap/rnaseq/main.nf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/nf-core/qualimap/rnaseq/main.nf b/modules/nf-core/qualimap/rnaseq/main.nf index 044c983fc..b8a370973 100644 --- a/modules/nf-core/qualimap/rnaseq/main.nf +++ b/modules/nf-core/qualimap/rnaseq/main.nf @@ -2,10 +2,10 @@ process QUALIMAP_RNASEQ { tag "$meta.id" label 'process_medium' - conda "bioconda::qualimap=2.2.2d" + conda "bioconda::qualimap=2.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/qualimap:2.2.2d--1' : - 'biocontainers/qualimap:2.2.2d--1' }" + 'https://depot.galaxyproject.org/singularity/qualimap:2.3--hdfd78af_0' : + 'biocontainers/qualimap:2.3--hdfd78af_0' }" input: tuple val(meta), path(bam) From 709b7ba1e59dff722c098f02ed0a9925ab861a7b Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 4 Jan 2024 10:42:10 +0000 Subject: [PATCH 47/62] Bump rseqc version to 5.0.3 --- modules/nf-core/rseqc/bamstat/main.nf | 6 +++--- modules/nf-core/rseqc/inferexperiment/main.nf | 6 +++--- modules/nf-core/rseqc/innerdistance/main.nf | 6 +++--- modules/nf-core/rseqc/junctionannotation/main.nf | 6 +++--- modules/nf-core/rseqc/junctionsaturation/main.nf | 6 +++--- modules/nf-core/rseqc/readdistribution/main.nf | 6 +++--- modules/nf-core/rseqc/readduplication/main.nf | 6 +++--- modules/nf-core/rseqc/tin/main.nf | 6 +++--- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/modules/nf-core/rseqc/bamstat/main.nf b/modules/nf-core/rseqc/bamstat/main.nf index 04c1eefd0..66c9a7451 100644 --- a/modules/nf-core/rseqc/bamstat/main.nf +++ b/modules/nf-core/rseqc/bamstat/main.nf @@ -2,10 +2,10 @@ process RSEQC_BAMSTAT { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "bioconda::rseqc=5.0.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : - 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" + 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : + 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/rseqc/inferexperiment/main.nf b/modules/nf-core/rseqc/inferexperiment/main.nf index 5f9f4b111..df24d7262 100644 --- a/modules/nf-core/rseqc/inferexperiment/main.nf +++ b/modules/nf-core/rseqc/inferexperiment/main.nf @@ -2,10 +2,10 @@ process RSEQC_INFEREXPERIMENT { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "bioconda::rseqc=5.0.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : - 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" + 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : + 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/rseqc/innerdistance/main.nf b/modules/nf-core/rseqc/innerdistance/main.nf index a63a2bf03..b84115cee 100644 --- a/modules/nf-core/rseqc/innerdistance/main.nf +++ b/modules/nf-core/rseqc/innerdistance/main.nf @@ -2,10 +2,10 @@ process RSEQC_INNERDISTANCE { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "bioconda::rseqc=5.0.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : - 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" + 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : + 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/rseqc/junctionannotation/main.nf b/modules/nf-core/rseqc/junctionannotation/main.nf index 4029ac765..9f9c96725 100644 --- a/modules/nf-core/rseqc/junctionannotation/main.nf +++ b/modules/nf-core/rseqc/junctionannotation/main.nf @@ -2,10 +2,10 @@ process RSEQC_JUNCTIONANNOTATION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "bioconda::rseqc=5.0.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : - 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" + 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : + 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/rseqc/junctionsaturation/main.nf b/modules/nf-core/rseqc/junctionsaturation/main.nf index 93cc61b23..f99049c0d 100644 --- a/modules/nf-core/rseqc/junctionsaturation/main.nf +++ b/modules/nf-core/rseqc/junctionsaturation/main.nf @@ -2,10 +2,10 @@ process RSEQC_JUNCTIONSATURATION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "bioconda::rseqc=5.0.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : - 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" + 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : + 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/rseqc/readdistribution/main.nf b/modules/nf-core/rseqc/readdistribution/main.nf index f3e588d69..3bf42d1e3 100644 --- a/modules/nf-core/rseqc/readdistribution/main.nf +++ b/modules/nf-core/rseqc/readdistribution/main.nf @@ -2,10 +2,10 @@ process RSEQC_READDISTRIBUTION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "bioconda::rseqc=5.0.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : - 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" + 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : + 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/rseqc/readduplication/main.nf b/modules/nf-core/rseqc/readduplication/main.nf index 023118536..d83547205 100644 --- a/modules/nf-core/rseqc/readduplication/main.nf +++ b/modules/nf-core/rseqc/readduplication/main.nf @@ -2,10 +2,10 @@ process RSEQC_READDUPLICATION { tag "$meta.id" label 'process_medium' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "bioconda::rseqc=5.0.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : - 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" + 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : + 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" input: tuple val(meta), path(bam) diff --git a/modules/nf-core/rseqc/tin/main.nf b/modules/nf-core/rseqc/tin/main.nf index 872938b62..38f1c1757 100644 --- a/modules/nf-core/rseqc/tin/main.nf +++ b/modules/nf-core/rseqc/tin/main.nf @@ -2,10 +2,10 @@ process RSEQC_TIN { tag "$meta.id" label 'process_high' - conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" + conda "bioconda::rseqc=5.0.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : - 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" + 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : + 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" input: tuple val(meta), path(bam), path(bai) From 6edb3c1bfb975cdbad8f9afe36289340b4a96847 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 4 Jan 2024 10:44:27 +0000 Subject: [PATCH 48/62] [skip ci] Patch qualimap and rseqc modules --- modules.json | 27 ++++++++++++------- .../qualimap/rnaseq/qualimap-rnaseq.diff | 19 +++++++++++++ .../nf-core/rseqc/bamstat/rseqc-bamstat.diff | 19 +++++++++++++ .../rseqc-inferexperiment.diff | 19 +++++++++++++ .../innerdistance/rseqc-innerdistance.diff | 19 +++++++++++++ .../rseqc-junctionannotation.diff | 19 +++++++++++++ .../rseqc-junctionsaturation.diff | 19 +++++++++++++ .../rseqc-readdistribution.diff | 19 +++++++++++++ .../rseqc-readduplication.diff | 19 +++++++++++++ modules/nf-core/rseqc/tin/rseqc-tin.diff | 19 +++++++++++++ 10 files changed, 189 insertions(+), 9 deletions(-) create mode 100644 modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff create mode 100644 modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff create mode 100644 modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff create mode 100644 modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff create mode 100644 modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff create mode 100644 modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff create mode 100644 modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff create mode 100644 modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff create mode 100644 modules/nf-core/rseqc/tin/rseqc-tin.diff diff --git a/modules.json b/modules.json index d22e252fe..d404c7fdd 100644 --- a/modules.json +++ b/modules.json @@ -90,7 +90,8 @@ "qualimap/rnaseq": { "branch": "master", "git_sha": "4657d98bc9f565e067c4d924126ce107056f5e2f", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff" }, "rsem/calculateexpression": { "branch": "master", @@ -105,42 +106,50 @@ "rseqc/bamstat": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"] + "installed_by": ["bam_rseqc"], + "patch": "modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff" }, "rseqc/inferexperiment": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"] + "installed_by": ["bam_rseqc"], + "patch": "modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff" }, "rseqc/innerdistance": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"] + "installed_by": ["bam_rseqc"], + "patch": "modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff" }, "rseqc/junctionannotation": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"] + "installed_by": ["bam_rseqc"], + "patch": "modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff" }, "rseqc/junctionsaturation": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"] + "installed_by": ["bam_rseqc"], + "patch": "modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff" }, "rseqc/readdistribution": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"] + "installed_by": ["bam_rseqc"], + "patch": "modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff" }, "rseqc/readduplication": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"] + "installed_by": ["bam_rseqc"], + "patch": "modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff" }, "rseqc/tin": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"] + "installed_by": ["bam_rseqc"], + "patch": "modules/nf-core/rseqc/tin/rseqc-tin.diff" }, "salmon/index": { "branch": "master", diff --git a/modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff b/modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff new file mode 100644 index 000000000..48f498081 --- /dev/null +++ b/modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff @@ -0,0 +1,19 @@ +Changes in module 'nf-core/qualimap/rnaseq' +--- modules/nf-core/qualimap/rnaseq/main.nf ++++ modules/nf-core/qualimap/rnaseq/main.nf +@@ -2,10 +2,10 @@ + tag "$meta.id" + label 'process_medium' + +- conda "bioconda::qualimap=2.2.2d" ++ conda "bioconda::qualimap=2.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/qualimap:2.2.2d--1' : +- 'biocontainers/qualimap:2.2.2d--1' }" ++ 'https://depot.galaxyproject.org/singularity/qualimap:2.3--hdfd78af_0' : ++ 'biocontainers/qualimap:2.3--hdfd78af_0' }" + + input: + tuple val(meta), path(bam) + +************************************************************ diff --git a/modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff b/modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff new file mode 100644 index 000000000..a8ee45a91 --- /dev/null +++ b/modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff @@ -0,0 +1,19 @@ +Changes in module 'nf-core/rseqc/bamstat' +--- modules/nf-core/rseqc/bamstat/main.nf ++++ modules/nf-core/rseqc/bamstat/main.nf +@@ -2,10 +2,10 @@ + tag "$meta.id" + label 'process_medium' + +- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" ++ conda "bioconda::rseqc=5.0.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : +- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" ++ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : ++ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" + + input: + tuple val(meta), path(bam) + +************************************************************ diff --git a/modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff b/modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff new file mode 100644 index 000000000..728b4799f --- /dev/null +++ b/modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff @@ -0,0 +1,19 @@ +Changes in module 'nf-core/rseqc/inferexperiment' +--- modules/nf-core/rseqc/inferexperiment/main.nf ++++ modules/nf-core/rseqc/inferexperiment/main.nf +@@ -2,10 +2,10 @@ + tag "$meta.id" + label 'process_medium' + +- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" ++ conda "bioconda::rseqc=5.0.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : +- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" ++ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : ++ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" + + input: + tuple val(meta), path(bam) + +************************************************************ diff --git a/modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff b/modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff new file mode 100644 index 000000000..dc760c5da --- /dev/null +++ b/modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff @@ -0,0 +1,19 @@ +Changes in module 'nf-core/rseqc/innerdistance' +--- modules/nf-core/rseqc/innerdistance/main.nf ++++ modules/nf-core/rseqc/innerdistance/main.nf +@@ -2,10 +2,10 @@ + tag "$meta.id" + label 'process_medium' + +- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" ++ conda "bioconda::rseqc=5.0.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : +- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" ++ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : ++ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" + + input: + tuple val(meta), path(bam) + +************************************************************ diff --git a/modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff b/modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff new file mode 100644 index 000000000..b210db990 --- /dev/null +++ b/modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff @@ -0,0 +1,19 @@ +Changes in module 'nf-core/rseqc/junctionannotation' +--- modules/nf-core/rseqc/junctionannotation/main.nf ++++ modules/nf-core/rseqc/junctionannotation/main.nf +@@ -2,10 +2,10 @@ + tag "$meta.id" + label 'process_medium' + +- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" ++ conda "bioconda::rseqc=5.0.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : +- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" ++ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : ++ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" + + input: + tuple val(meta), path(bam) + +************************************************************ diff --git a/modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff b/modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff new file mode 100644 index 000000000..663340cf6 --- /dev/null +++ b/modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff @@ -0,0 +1,19 @@ +Changes in module 'nf-core/rseqc/junctionsaturation' +--- modules/nf-core/rseqc/junctionsaturation/main.nf ++++ modules/nf-core/rseqc/junctionsaturation/main.nf +@@ -2,10 +2,10 @@ + tag "$meta.id" + label 'process_medium' + +- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" ++ conda "bioconda::rseqc=5.0.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : +- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" ++ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : ++ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" + + input: + tuple val(meta), path(bam) + +************************************************************ diff --git a/modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff b/modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff new file mode 100644 index 000000000..4219e2ac3 --- /dev/null +++ b/modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff @@ -0,0 +1,19 @@ +Changes in module 'nf-core/rseqc/readdistribution' +--- modules/nf-core/rseqc/readdistribution/main.nf ++++ modules/nf-core/rseqc/readdistribution/main.nf +@@ -2,10 +2,10 @@ + tag "$meta.id" + label 'process_medium' + +- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" ++ conda "bioconda::rseqc=5.0.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : +- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" ++ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : ++ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" + + input: + tuple val(meta), path(bam) + +************************************************************ diff --git a/modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff b/modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff new file mode 100644 index 000000000..748685c0b --- /dev/null +++ b/modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff @@ -0,0 +1,19 @@ +Changes in module 'nf-core/rseqc/readduplication' +--- modules/nf-core/rseqc/readduplication/main.nf ++++ modules/nf-core/rseqc/readduplication/main.nf +@@ -2,10 +2,10 @@ + tag "$meta.id" + label 'process_medium' + +- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" ++ conda "bioconda::rseqc=5.0.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : +- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" ++ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : ++ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" + + input: + tuple val(meta), path(bam) + +************************************************************ diff --git a/modules/nf-core/rseqc/tin/rseqc-tin.diff b/modules/nf-core/rseqc/tin/rseqc-tin.diff new file mode 100644 index 000000000..aa4727128 --- /dev/null +++ b/modules/nf-core/rseqc/tin/rseqc-tin.diff @@ -0,0 +1,19 @@ +Changes in module 'nf-core/rseqc/tin' +--- modules/nf-core/rseqc/tin/main.nf ++++ modules/nf-core/rseqc/tin/main.nf +@@ -2,10 +2,10 @@ + tag "$meta.id" + label 'process_high' + +- conda "bioconda::rseqc=3.0.1 'conda-forge::r-base>=3.5'" ++ conda "bioconda::rseqc=5.0.3" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/rseqc:3.0.1--py37h516909a_1' : +- 'biocontainers/rseqc:3.0.1--py37h516909a_1' }" ++ 'https://depot.galaxyproject.org/singularity/rseqc:5.0.3--py39hf95cd2a_0' : ++ 'biocontainers/rseqc:5.0.3--py39hf95cd2a_0' }" + + input: + tuple val(meta), path(bam), path(bai) + +************************************************************ From 5b0a148a3c09220ac43b76f88ef3b000622b5f50 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Thu, 4 Jan 2024 10:46:26 +0000 Subject: [PATCH 49/62] Update CHANGELOG --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b4c728e20..5798077d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ Special thanks to the following for their contributions to the release: - [PR #1149](https://github.com/nf-core/rnaseq/pull/1149) - Fix and patch version commands for Fastp, FastQC and UMI-tools modules ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) - [PR #1150](https://github.com/nf-core/rnaseq/pull/1150) - Be more flexible on attribute values in GTFs ([#1132](https://github.com/nf-core/rnaseq/issues/1132)) - [PR #1151](https://github.com/nf-core/rnaseq/pull/1151) - fix to #1150: reinstate conditional +- [PR #1152](https://github.com/nf-core/rnaseq/pull/1152) - Bump container versions for tools using Docker V1 manifest ([#1140](https://github.com/nf-core/rnaseq/issues/1140)) ### Parameters @@ -37,6 +38,19 @@ Special thanks to the following for their contributions to the release: > **NB:** Parameter has been **added** if just the new parameter information is present. > **NB:** Parameter has been **removed** if new parameter information isn't present. +### Software dependencies + +| Dependency | Old version | New version | +| ---------- | ----------- | ----------- | +| `qualimap` | 2.2.2d | 2.3 | +| `rseqc` | 3.0.1 | 5.0.3 | + +> **NB:** Dependency has been **updated** if both old and new version information is present. +> +> **NB:** Dependency has been **added** if just the new version information is present. +> +> **NB:** Dependency has been **removed** if new version information isn't present. + ## [[3.13.2](https://github.com/nf-core/rnaseq/releases/tag/3.13.2)] - 2023-11-21 ### Credits From cc63dff641d04da8c0fff0cea31d903a918de2b3 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 4 Jan 2024 12:01:45 +0000 Subject: [PATCH 50/62] Disable additional multiqc versions section --- assets/multiqc_config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 16bf186b3..3dfec8dcb 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -9,6 +9,7 @@ report_section_order: order: -1002 export_plots: true +disable_version_detection: true # Run only these modules run_modules: From e86ea029b8e34e0e9a50fb7e90024ac14e147719 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 4 Jan 2024 14:58:35 +0000 Subject: [PATCH 51/62] Defer strand inference until after trimming and filtering --- workflows/rnaseq.nf | 95 +++++++++++++++++++++++---------------------- 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/workflows/rnaseq.nf b/workflows/rnaseq.nf index f8def2d10..178d9003a 100755 --- a/workflows/rnaseq.nf +++ b/workflows/rnaseq.nf @@ -244,47 +244,6 @@ workflow RNASEQ { .set { ch_cat_fastq } ch_versions = ch_versions.mix(CAT_FASTQ.out.versions.first().ifEmpty(null)) - // Branch FastQ channels if 'auto' specified to infer strandedness - ch_cat_fastq - .branch { - meta, fastq -> - auto_strand : meta.strandedness == 'auto' - return [ meta, fastq ] - known_strand: meta.strandedness != 'auto' - return [ meta, fastq ] - } - .set { ch_strand_fastq } - - // - // SUBWORKFLOW: Sub-sample FastQ files and pseudoalign with Salmon to auto-infer strandedness - // - // Return empty channel if ch_strand_fastq.auto_strand is empty so salmon index isn't created - PREPARE_GENOME.out.fasta - .combine(ch_strand_fastq.auto_strand) - .map { it.first() } - .first() - .set { ch_genome_fasta } - - FASTQ_SUBSAMPLE_FQ_SALMON ( - ch_strand_fastq.auto_strand, - ch_genome_fasta, - PREPARE_GENOME.out.transcript_fasta, - PREPARE_GENOME.out.gtf, - PREPARE_GENOME.out.salmon_index, - !params.salmon_index && !('salmon' in prepareToolIndices) - ) - ch_versions = ch_versions.mix(FASTQ_SUBSAMPLE_FQ_SALMON.out.versions) - - FASTQ_SUBSAMPLE_FQ_SALMON - .out - .json_info - .join(ch_strand_fastq.auto_strand) - .map { meta, json, reads -> - return [ meta + [ strandedness: WorkflowRnaseq.getSalmonInferredStrandedness(json) ], reads ] - } - .mix(ch_strand_fastq.known_strand) - .set { ch_strand_inferred_fastq } - // // SUBWORKFLOW: Read QC, extract UMI and trim adapters with TrimGalore! // @@ -295,7 +254,7 @@ workflow RNASEQ { ch_trim_read_count = Channel.empty() if (params.trimmer == 'trimgalore') { FASTQ_FASTQC_UMITOOLS_TRIMGALORE ( - ch_strand_inferred_fastq, + ch_cat_fastq, params.skip_fastqc || params.skip_qc, params.with_umi, params.skip_umi_extract, @@ -316,7 +275,7 @@ workflow RNASEQ { // if (params.trimmer == 'fastp') { FASTQ_FASTQC_UMITOOLS_FASTP ( - ch_strand_inferred_fastq, + ch_cat_fastq, params.skip_fastqc || params.skip_qc, params.with_umi, params.skip_umi_extract, @@ -388,6 +347,48 @@ workflow RNASEQ { ch_sortmerna_multiqc = SORTMERNA.out.log ch_versions = ch_versions.mix(SORTMERNA.out.versions.first()) } + + // + // SUBWORKFLOW: Sub-sample FastQ files and pseudoalign with Salmon to auto-infer strandedness + // + + // Branch FastQ channels if 'auto' specified to infer strandedness + ch_filtered_reads + .branch { + meta, fastq -> + auto_strand : meta.strandedness == 'auto' + return [ meta, fastq ] + known_strand: meta.strandedness != 'auto' + return [ meta, fastq ] + } + .set { ch_strand_fastq } + + // Return empty channel if ch_strand_fastq.auto_strand is empty so salmon index isn't created + PREPARE_GENOME.out.fasta + .combine(ch_strand_fastq.auto_strand) + .map { it.first() } + .first() + .set { ch_genome_fasta } + + FASTQ_SUBSAMPLE_FQ_SALMON ( + ch_strand_fastq.auto_strand, + ch_genome_fasta, + PREPARE_GENOME.out.transcript_fasta, + PREPARE_GENOME.out.gtf, + PREPARE_GENOME.out.salmon_index, + !params.salmon_index && !('salmon' in prepareToolIndices) + ) + ch_versions = ch_versions.mix(FASTQ_SUBSAMPLE_FQ_SALMON.out.versions) + + FASTQ_SUBSAMPLE_FQ_SALMON + .out + .json_info + .join(ch_strand_fastq.auto_strand) + .map { meta, json, reads -> + return [ meta + [ strandedness: WorkflowRnaseq.getSalmonInferredStrandedness(json) ], reads ] + } + .mix(ch_strand_fastq.known_strand) + .set { ch_strand_inferred_filtered_fastq } // // SUBWORKFLOW: Alignment with STAR and gene/transcript quantification with Salmon @@ -402,7 +403,7 @@ workflow RNASEQ { ch_aligner_clustering_multiqc = Channel.empty() if (!params.skip_alignment && params.aligner == 'star_salmon') { ALIGN_STAR ( - ch_filtered_reads, + ch_strand_inferred_filtered_fastq, PREPARE_GENOME.out.star_index.map { [ [:], it ] }, PREPARE_GENOME.out.gtf.map { [ [:], it ] }, params.star_ignore_sjdbgtf, @@ -521,7 +522,7 @@ workflow RNASEQ { ch_rsem_multiqc = Channel.empty() if (!params.skip_alignment && params.aligner == 'star_rsem') { QUANTIFY_RSEM ( - ch_filtered_reads, + ch_strand_inferred_filtered_fastq, PREPARE_GENOME.out.rsem_index, PREPARE_GENOME.out.fasta.map { [ [:], it ] } ) @@ -555,7 +556,7 @@ workflow RNASEQ { ch_hisat2_multiqc = Channel.empty() if (!params.skip_alignment && params.aligner == 'hisat2') { FASTQ_ALIGN_HISAT2 ( - ch_filtered_reads, + ch_strand_inferred_filtered_fastq, PREPARE_GENOME.out.hisat2_index.map { [ [:], it ] }, PREPARE_GENOME.out.splicesites.map { [ [:], it ] }, PREPARE_GENOME.out.fasta.map { [ [:], it ] } @@ -826,7 +827,7 @@ workflow RNASEQ { } QUANTIFY_PSEUDO_ALIGNMENT ( - ch_filtered_reads, + ch_strand_inferred_filtered_fastq, ch_pseudo_index, ch_dummy_file, PREPARE_GENOME.out.gtf, From 282e972219d55fbd921639dd2bdf3db80de52c0f Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 4 Jan 2024 16:53:15 +0000 Subject: [PATCH 52/62] [skip ci] bump versions --- CHANGELOG.md | 2 +- assets/multiqc_config.yml | 2 +- nextflow.config | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8614fd74e..13d46a64a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v3.14.0dev - [date] +## v3.14.0 - 2024-01-05 ### Credits diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 3dfec8dcb..e738f4854 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,5 +1,5 @@ report_comment: > - This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. + This report has been generated by the nf-core/rnaseq analysis pipeline. For information about how to interpret these results, please see the documentation. report_section_order: "nf-core-rnaseq-methods-description": order: -1000 diff --git a/nextflow.config b/nextflow.config index 9a4276636..f4d9f87e2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -322,7 +322,7 @@ manifest { description = """RNA sequencing analysis pipeline for gene/isoform quantification and extensive quality control.""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '3.14.0dev' + version = '3.14.0' doi = 'https://doi.org/10.5281/zenodo.1400710' } From 213d904a320abaa1199b52c2edacd8e3346fafb0 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 4 Jan 2024 18:18:54 +0000 Subject: [PATCH 53/62] Fix conditional publishing to avoid empty dirs --- conf/modules.config | 97 ++++++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 46 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 466521922..1257ea68c 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -39,9 +39,9 @@ process { process { withName: 'GUNZIP_.*|MAKE_TRANSCRIPTS_FASTA' { publishDir = [ - path: { "${params.outdir}/genome" }, + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } @@ -51,26 +51,26 @@ process { withName: 'UNTAR_.*|STAR_GENOMEGENERATE|STAR_GENOMEGENERATE_IGENOMES|HISAT2_BUILD' { publishDir = [ - path: { "${params.outdir}/genome/index" }, + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } withName: 'GFFREAD' { ext.args = '--keep-exon-attrs -F -T' publishDir = [ - path: { "${params.outdir}/genome" }, + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } withName: 'HISAT2_EXTRACTSPLICESITES' { publishDir = [ - path: { "${params.outdir}/genome/index" }, + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } @@ -80,68 +80,68 @@ process { params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}": '' ].join(' ').trim() } publishDir = [ - path: { "${params.outdir}/genome/index" }, + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } withName: 'KALLISTO_INDEX' { ext.args = params.pseudo_aligner_kmer_size ? "-k ${params.pseudo_aligner_kmer_size}" : '' publishDir = [ - path: { "${params.outdir}/genome/index" }, + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } withName: 'RSEM_PREPAREREFERENCE_GENOME' { ext.args = '--star' publishDir = [ - path: { "${params.outdir}/genome/index" }, + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } withName: 'GTF2BED' { publishDir = [ - path: { "${params.outdir}/genome" }, + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } withName: 'CAT_ADDITIONAL_FASTA|PREPROCESS_TRANSCRIPTS_FASTA_GENCODE' { publishDir = [ - path: { "${params.outdir}/genome" }, + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } withName: 'GTF_FILTER' { ext.args = { params.skip_gtf_transcript_filter ?: '--skip_transcript_id_check' } publishDir = [ - path: { "${params.outdir}/genome" }, + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } withName: 'CUSTOM_GETCHROMSIZES' { publishDir = [ - path: { "${params.outdir}/genome" }, + path: { params.save_reference ? "${params.outdir}/genome" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } withName: 'CAT_FASTQ' { publishDir = [ - path: { "${params.outdir}/fastq" }, + path: { params.save_merged_fastq ? "${params.outdir}/fastq" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_merged_fastq ? filename : null } + saveAs: { filename -> (filename.endsWith('.fastq.gz') && params.save_merged_fastq) ? filename : null } ] } } @@ -151,9 +151,9 @@ if (!params.skip_bbsplit && params.bbsplit_fasta_list) { withName: '.*:PREPARE_GENOME:BBMAP_BBSPLIT' { ext.args = 'build=1' publishDir = [ - path: { "${params.outdir}/genome/index" }, + path: { params.save_reference ? "${params.outdir}/genome/index" : params.outdir }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : params.save_reference ? filename : null } + saveAs: { filename -> (filename != 'versions.yml' && params.save_reference) ? filename : null } ] } } @@ -228,7 +228,7 @@ if (!params.skip_trimming) { pattern: "*.{html,zip}" ], [ - path: { "${params.outdir}/${params.trimmer}" }, + path: { params.save_trimmed ? "${params.outdir}/${params.trimmer}" : params.outdir }, mode: params.publish_dir_mode, pattern: "*.fq.gz", saveAs: { params.save_trimmed ? it : null } @@ -259,7 +259,7 @@ if (!params.skip_trimming) { pattern: "*.log" ], [ - path: { "${params.outdir}/${params.trimmer}" }, + path: { params.save_trimmed ? "${params.outdir}/${params.trimmer}" : params.outdir }, mode: params.publish_dir_mode, pattern: "*.fastq.gz", saveAs: { params.save_trimmed ? it : null } @@ -286,7 +286,7 @@ if (params.with_umi && !params.skip_umi_extract) { pattern: "*.log" ], [ - path: { "${params.outdir}/umitools" }, + path: { params.save_umi_intermeds ? "${params.outdir}/umitools" : params.outdir }, mode: params.publish_dir_mode, pattern: "*.fastq.gz", saveAs: { params.save_umi_intermeds ? it : null } @@ -311,7 +311,7 @@ if (!params.skip_bbsplit) { pattern: '*.txt' ], [ - path: { "${params.outdir}/bbsplit" }, + path: { params.save_bbsplit_reads ? "${params.outdir}/bbsplit" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', saveAs: { params.save_bbsplit_reads ? it : null } @@ -332,7 +332,7 @@ if (params.remove_ribo_rna) { pattern: "*.log" ], [ - path: { "${params.outdir}/sortmerna" }, + path: { params.save_non_ribo_reads ? "${params.outdir}/sortmerna" : params.outdir }, mode: params.publish_dir_mode, pattern: "*.fastq.gz", saveAs: { params.save_non_ribo_reads ? it : null } @@ -360,7 +360,9 @@ if (!params.skip_alignment) { withName: 'NFCORE_RNASEQ:RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { ext.prefix = { "${meta.id}.sorted" } publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, + path: { ( ['star_salmon','hisat2'].contains(params.aligner) && + ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) + ) || params.save_align_intermeds || params.skip_markduplicates ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: "*.bam", saveAs: { ( ['star_salmon','hisat2'].contains(params.aligner) && @@ -372,6 +374,9 @@ if (!params.skip_alignment) { withName: 'NFCORE_RNASEQ:RNASEQ:.*:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { ext.args = { params.bam_csi_index ? '-c' : '' } publishDir = [ + path: { ( ['star_salmon','hisat2'].contains(params.aligner) && + ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) + ) || params.save_align_intermeds || params.skip_markduplicates ? "${params.outdir}/${params.aligner}" : params.outdir }, path: { "${params.outdir}/${params.aligner}" }, mode: params.publish_dir_mode, pattern: "*.{bai,csi}", @@ -438,7 +443,7 @@ if (!params.skip_alignment) { pattern: '*.tsv' ], [ - path: { "${params.outdir}/${params.aligner}" }, + path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.bam', saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null } @@ -450,7 +455,7 @@ if (!params.skip_alignment) { ext.args = { params.bam_csi_index ? '-c' : '' } ext.prefix = { "${meta.id}.umi_dedup.sorted" } publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, + path: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.{bai,csi}', saveAs: { params.save_align_intermeds || params.with_umi || params.save_umi_intermeds ? it : null } @@ -556,13 +561,13 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { pattern: '*.{out,tab}' ], [ - path: { "${params.outdir}/${params.aligner}" }, + path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.bam', saveAs: { params.save_align_intermeds ? it : null } ], [ - path: { "${params.outdir}/${params.aligner}/unmapped" }, + path: { params.save_unaligned ? "${params.outdir}/${params.aligner}/unmapped" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', saveAs: { params.save_unaligned ? it : null } @@ -611,7 +616,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { ext.args = '-n' ext.prefix = { "${meta.id}.umi_dedup.transcriptome" } publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.bam', saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } @@ -627,7 +632,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { pattern: '*.log' ], [ - path: { "${params.outdir}/${params.aligner}" }, + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.bam', saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } @@ -638,7 +643,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_SORT' { ext.prefix = { "${meta.id}.transcriptome.sorted" } publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.bam', saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } @@ -647,7 +652,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:SAMTOOLS_INDEX' { publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.bai', saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } @@ -657,7 +662,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { ext.prefix = { "${meta.id}.transcriptome.sorted.bam" } publishDir = [ - path: { "${params.outdir}/${params.aligner}/samtools_stats" }, + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.{stats,flagstat,idxstats}', saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } @@ -678,7 +683,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { pattern: '*.tsv' ], [ - path: { "${params.outdir}/${params.aligner}" }, + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.bam', saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } @@ -688,7 +693,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { withName: '.*:BAM_DEDUP_STATS_SAMTOOLS_UMITOOLS_TRANSCRIPTOME:SAMTOOLS_INDEX' { publishDir = [ - path: { "${params.outdir}/${params.aligner}" }, + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.bai', saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } @@ -747,7 +752,7 @@ if (!params.skip_alignment && params.aligner == 'star_rsem') { pattern: "*.{stat,results}" ], [ - path: { "${params.outdir}/${params.aligner}" }, + path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: "*.bam", saveAs: { params.save_align_intermeds ? it : null } @@ -804,13 +809,13 @@ if (!params.skip_alignment && params.aligner == 'hisat2') { pattern: '*.log' ], [ - path: { "${params.outdir}/${params.aligner}" }, + path: { params.save_align_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.bam', saveAs: { params.save_align_intermeds ? it : null } ], [ - path: { "${params.outdir}/${params.aligner}/unmapped" }, + path: { params.save_unaligned ? "${params.outdir}/${params.aligner}/unmapped" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', saveAs: { params.save_unaligned ? it : null } From 7843299751f1a64fb3d5a526a06f22a2dcaec686 Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Thu, 4 Jan 2024 18:27:03 +0000 Subject: [PATCH 54/62] [skip ci] update changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13d46a64a..8a066269d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,9 +22,10 @@ Special thanks to the following for their contributions to the release: - [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling - [PR #1141](https://github.com/nf-core/rnaseq/pull/1141) - Important! Template update for nf-core/tools v2.11 - [PR #1143](https://github.com/nf-core/rnaseq/pull/1143) - Move fasta check back to Groovy ([#1142](https://github.com/nf-core/rnaseq/issues/1142)) -- [PR #1144](https://github.com/nf-core/rnaseq/pull/1144) - Interface to kmer size for pseudoaligners +- [PR #1144](https://github.com/nf-core/rnaseq/pull/1144) - Interface to kmer size for pseudoaligners ([#1111](https://github.com/nf-core/rnaseq/issues/1111)) - [PR #1149](https://github.com/nf-core/rnaseq/pull/1149) - Fix and patch version commands for Fastp, FastQC and UMI-tools modules ([#1103](https://github.com/nf-core/rnaseq/issues/1103)) - [PR #1150](https://github.com/nf-core/rnaseq/pull/1150) - Be more flexible on attribute values in GTFs ([#1132](https://github.com/nf-core/rnaseq/issues/1132)) +- [PR #1154](https://github.com/nf-core/rnaseq/pull/1154) - Prerelease 3.14.0 fixes ([#1111](https://github.com/nf-core/rnaseq/issues/1111), [#1153](https://github.com/nf-core/rnaseq/issues/1153)) ### Parameters From f06f298abe39a6efd5e1d2f31e7ea1e09911dd2e Mon Sep 17 00:00:00 2001 From: Jonathan Manning Date: Fri, 5 Jan 2024 09:49:33 +0000 Subject: [PATCH 55/62] Apply suggestions from code review Co-authored-by: Harshil Patel --- CHANGELOG.md | 2 +- conf/modules.config | 3 +-- workflows/rnaseq.nf | 4 +++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73b3e39ac..7a0938d17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v3.14.0 - 2024-01-05 +## v3.14.0 - 2024-01-08 ### Credits diff --git a/conf/modules.config b/conf/modules.config index 1257ea68c..16d635cdb 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -377,7 +377,6 @@ if (!params.skip_alignment) { path: { ( ['star_salmon','hisat2'].contains(params.aligner) && ( params.save_align_intermeds || ( !params.with_umi && params.skip_markduplicates ) ) ) || params.save_align_intermeds || params.skip_markduplicates ? "${params.outdir}/${params.aligner}" : params.outdir }, - path: { "${params.outdir}/${params.aligner}" }, mode: params.publish_dir_mode, pattern: "*.{bai,csi}", saveAs: { ( ['star_salmon','hisat2'].contains(params.aligner) && @@ -662,7 +661,7 @@ if (!params.skip_alignment && params.aligner == 'star_salmon') { withName: 'NFCORE_RNASEQ:RNASEQ:BAM_SORT_STATS_SAMTOOLS:BAM_STATS_SAMTOOLS:.*' { ext.prefix = { "${meta.id}.transcriptome.sorted.bam" } publishDir = [ - path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}" : params.outdir }, + path: { params.save_align_intermeds || params.save_umi_intermeds ? "${params.outdir}/${params.aligner}/samtools_stats" : params.outdir }, mode: params.publish_dir_mode, pattern: '*.{stats,flagstat,idxstats}', saveAs: { params.save_align_intermeds || params.save_umi_intermeds ? it : null } diff --git a/workflows/rnaseq.nf b/workflows/rnaseq.nf index 178d9003a..9250125dc 100755 --- a/workflows/rnaseq.nf +++ b/workflows/rnaseq.nf @@ -364,7 +364,9 @@ workflow RNASEQ { .set { ch_strand_fastq } // Return empty channel if ch_strand_fastq.auto_strand is empty so salmon index isn't created - PREPARE_GENOME.out.fasta + PREPARE_GENOME + .out + .fasta .combine(ch_strand_fastq.auto_strand) .map { it.first() } .first() From 0fb6002be0fa2f1dfe9a448e7f5b69dc6f7eef04 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Fri, 5 Jan 2024 10:36:30 +0000 Subject: [PATCH 56/62] [skip ci] Add slash to outdir for cloud tests to fix Azure validation issue --- .github/workflows/cloud_tests_small.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cloud_tests_small.yml b/.github/workflows/cloud_tests_small.yml index 4c0cd2596..0fe3cddd1 100644 --- a/.github/workflows/cloud_tests_small.yml +++ b/.github/workflows/cloud_tests_small.yml @@ -28,7 +28,7 @@ jobs: profiles: test parameters: | { - "outdir": "${{ secrets.TOWER_BUCKET_AWS }}/rnaseq/results-test-${{ github.sha }}" + "outdir": "${{ secrets.TOWER_BUCKET_AWS }}/rnaseq/results-test-${{ github.sha }}/" } - uses: actions/upload-artifact@v3 with: @@ -48,7 +48,7 @@ jobs: profiles: test parameters: | { - "outdir": "${{ secrets.TOWER_BUCKET_GCP }}/rnaseq/results-test-${{ github.sha }}" + "outdir": "${{ secrets.TOWER_BUCKET_GCP }}/rnaseq/results-test-${{ github.sha }}/" } - uses: actions/upload-artifact@v3 with: @@ -68,7 +68,7 @@ jobs: profiles: test parameters: | { - "outdir": "${{ secrets.TOWER_BUCKET_AZURE }}/rnaseq/results-test-${{ github.sha }}" + "outdir": "${{ secrets.TOWER_BUCKET_AZURE }}/rnaseq/results-test-${{ github.sha }}/" } - uses: actions/upload-artifact@v3 with: From 5899b4cde50d12ac4115798ad054fd97645a1609 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Fri, 5 Jan 2024 10:38:47 +0000 Subject: [PATCH 57/62] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a0938d17..a9925e0b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ Special thanks to the following for their contributions to the release: - [PR #1151](https://github.com/nf-core/rnaseq/pull/1151) - fix to #1150: reinstate conditional - [PR #1152](https://github.com/nf-core/rnaseq/pull/1152) - Bump container versions for tools using Docker V1 manifest ([#1140](https://github.com/nf-core/rnaseq/issues/1140)) - [PR #1154](https://github.com/nf-core/rnaseq/pull/1154) - Prerelease 3.14.0 fixes ([#1111](https://github.com/nf-core/rnaseq/issues/1111), [#1153](https://github.com/nf-core/rnaseq/issues/1153)) +- [PR #1157](https://github.com/nf-core/rnaseq/pull/1157) - Add slash to `--outdir` for cloud tests to fix Azure validation issue ### Parameters From 665ea7ddaaace81607b21d75529731ade2182246 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 7 Jan 2024 10:12:51 +0000 Subject: [PATCH 58/62] Bump MultiQC version from 1.17 -> 1.19 --- modules.json | 220 +++++++++++++----- modules/local/multiqc/main.nf | 6 +- .../custom-dumpsoftwareversions.diff | 19 ++ .../custom/dumpsoftwareversions/main.nf | 6 +- 4 files changed, 191 insertions(+), 60 deletions(-) create mode 100644 modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff diff --git a/modules.json b/modules.json index d404c7fdd..cf86f6707 100644 --- a/modules.json +++ b/modules.json @@ -8,168 +8,235 @@ "bbmap/bbsplit": { "branch": "master", "git_sha": "de3e6fc949dcffb8d3508c015f435ace5773ff08", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cat/fastq": { "branch": "master", "git_sha": "5c460c5a4736974abde2843294f35307ee2b0e5e", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "bba7e362e4afead70653f84d8700588ea28d0f9e", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ], + "patch": "modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff" }, "custom/getchromsizes": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fastp": { "branch": "master", "git_sha": "d497a4868ace3302016ea8ed4b395072d5e833cd", - "installed_by": ["fastq_fastqc_umitools_fastp", "modules"], + "installed_by": [ + "fastq_fastqc_umitools_fastp", + "modules" + ], "patch": "modules/nf-core/fastp/fastp.diff" }, "fastqc": { "branch": "master", "git_sha": "102cc9b709a6da9f7cee2373563ab1464fca9c0a", - "installed_by": ["fastq_fastqc_umitools_trimgalore", "fastq_fastqc_umitools_fastp"], + "installed_by": [ + "fastq_fastqc_umitools_trimgalore", + "fastq_fastqc_umitools_fastp" + ], "patch": "modules/nf-core/fastqc/fastqc.diff" }, "fq/subsample": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["modules", "fastq_subsample_fq_salmon"] + "installed_by": [ + "modules", + "fastq_subsample_fq_salmon" + ] }, "gffread": { "branch": "master", "git_sha": "4ab13872435962dadc239979554d13709e20bf29", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gunzip": { "branch": "master", "git_sha": "e06548bfa36ee31869b81041879dd6b3a83b1d57", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "hisat2/align": { "branch": "master", "git_sha": "a1881f6374506f9e031b7af814768cdb44a6a7d3", - "installed_by": ["fastq_align_hisat2"] + "installed_by": [ + "fastq_align_hisat2" + ] }, "hisat2/build": { "branch": "master", "git_sha": "f2f48836bf5c59434966a6c3b2211b29363f31ab", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "hisat2/extractsplicesites": { "branch": "master", "git_sha": "735e1e04e7e01751d2d6e97055bbdb6f70683cc1", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kallisto/index": { "branch": "master", "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kallisto/quant": { "branch": "master", "git_sha": "bdc2a97ced7adc423acfa390742db83cab98c1ad", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "picard/markduplicates": { "branch": "master", "git_sha": "2ee934606f1fdf7fc1cb05d6e8abc13bec8ab448", - "installed_by": ["bam_markduplicates_picard"] + "installed_by": [ + "bam_markduplicates_picard" + ] }, "preseq/lcextrap": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "qualimap/rnaseq": { "branch": "master", "git_sha": "4657d98bc9f565e067c4d924126ce107056f5e2f", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff" }, "rsem/calculateexpression": { "branch": "master", "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "rsem/preparereference": { "branch": "master", "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "rseqc/bamstat": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], + "installed_by": [ + "bam_rseqc" + ], "patch": "modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff" }, "rseqc/inferexperiment": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], + "installed_by": [ + "bam_rseqc" + ], "patch": "modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff" }, "rseqc/innerdistance": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], + "installed_by": [ + "bam_rseqc" + ], "patch": "modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff" }, "rseqc/junctionannotation": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], + "installed_by": [ + "bam_rseqc" + ], "patch": "modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff" }, "rseqc/junctionsaturation": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], + "installed_by": [ + "bam_rseqc" + ], "patch": "modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff" }, "rseqc/readdistribution": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], + "installed_by": [ + "bam_rseqc" + ], "patch": "modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff" }, "rseqc/readduplication": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], + "installed_by": [ + "bam_rseqc" + ], "patch": "modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff" }, "rseqc/tin": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["bam_rseqc"], + "installed_by": [ + "bam_rseqc" + ], "patch": "modules/nf-core/rseqc/tin/rseqc-tin.diff" }, "salmon/index": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["fastq_subsample_fq_salmon"] + "installed_by": [ + "fastq_subsample_fq_salmon" + ] }, "salmon/quant": { "branch": "master", "git_sha": "c5b528d0a51c31621b485ab3bcc008f483619ea6", - "installed_by": ["modules", "fastq_subsample_fq_salmon"] + "installed_by": [ + "modules", + "fastq_subsample_fq_salmon" + ] }, "samtools/flagstat": { "branch": "master", "git_sha": "570ec5bcfe19c49e16c9ca35a7a116563af6cc1c", - "installed_by": ["bam_stats_samtools"] + "installed_by": [ + "bam_stats_samtools" + ] }, "samtools/idxstats": { "branch": "master", "git_sha": "e662ab16e0c11f1e62983e21de9871f59371a639", - "installed_by": ["bam_stats_samtools"] + "installed_by": [ + "bam_stats_samtools" + ] }, "samtools/index": { "branch": "master", @@ -183,69 +250,96 @@ "samtools/sort": { "branch": "master", "git_sha": "a0f7be95788366c1923171e358da7d049eb440f9", - "installed_by": ["bam_sort_stats_samtools"] + "installed_by": [ + "bam_sort_stats_samtools" + ] }, "samtools/stats": { "branch": "master", "git_sha": "735e1e04e7e01751d2d6e97055bbdb6f70683cc1", - "installed_by": ["bam_stats_samtools"] + "installed_by": [ + "bam_stats_samtools" + ] }, "sortmerna": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "star/align": { "branch": "master", "git_sha": "cc08a888069f67cab8120259bddab8032d4c0fe3", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "star/genomegenerate": { "branch": "master", "git_sha": "cc08a888069f67cab8120259bddab8032d4c0fe3", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "stringtie/stringtie": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "subread/featurecounts": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "trimgalore": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["fastq_fastqc_umitools_trimgalore"] + "installed_by": [ + "fastq_fastqc_umitools_trimgalore" + ] }, "ucsc/bedclip": { "branch": "master", "git_sha": "240937a2a9c30298110753292be041188891f2cb", - "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] + "installed_by": [ + "bedgraph_bedclip_bedgraphtobigwig" + ] }, "ucsc/bedgraphtobigwig": { "branch": "master", "git_sha": "66290981ab6038ea86177ade40b9449bc790b0ce", - "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] + "installed_by": [ + "bedgraph_bedclip_bedgraphtobigwig" + ] }, "umitools/dedup": { "branch": "master", "git_sha": "7297204bf49273300a3dbfa4b7a4027c8683f1bd", - "installed_by": ["bam_dedup_stats_samtools_umitools"], + "installed_by": [ + "bam_dedup_stats_samtools_umitools" + ], "patch": "modules/nf-core/umitools/dedup/umitools-dedup.diff" }, "umitools/extract": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"], + "installed_by": [ + "fastq_fastqc_umitools_fastp", + "fastq_fastqc_umitools_trimgalore" + ], "patch": "modules/nf-core/umitools/extract/umitools-extract.diff" }, "untar": { "branch": "master", "git_sha": "d0b4fc03af52a1cc8c6fb4493b921b57352b1dd8", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } }, @@ -254,22 +348,30 @@ "bam_dedup_stats_samtools_umitools": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "bam_markduplicates_picard": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "bam_rseqc": { "branch": "master", "git_sha": "a9784afdd5dcda23b84e64db75dc591065d64653", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "bam_sort_stats_samtools": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": ["fastq_align_hisat2"] + "installed_by": [ + "fastq_align_hisat2" + ] }, "bam_stats_samtools": { "branch": "master", @@ -283,30 +385,40 @@ "bedgraph_bedclip_bedgraphtobigwig": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "fastq_align_hisat2": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "fastq_fastqc_umitools_fastp": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] }, "fastq_subsample_fq_salmon": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": ["subworkflows"] + "installed_by": [ + "subworkflows" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/local/multiqc/main.nf b/modules/local/multiqc/main.nf index a59d8a533..be0dfe2c3 100644 --- a/modules/local/multiqc/main.nf +++ b/modules/local/multiqc/main.nf @@ -1,10 +1,10 @@ process MULTIQC { label 'process_medium' - conda "bioconda::multiqc=1.17" + conda "bioconda::multiqc=1.19" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.17--pyhdfd78af_1' : - 'biocontainers/multiqc:1.17--pyhdfd78af_1' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : + 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" input: path multiqc_config diff --git a/modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff b/modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff new file mode 100644 index 000000000..2ec89807d --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff @@ -0,0 +1,19 @@ +Changes in module 'nf-core/custom/dumpsoftwareversions' +--- modules/nf-core/custom/dumpsoftwareversions/main.nf ++++ modules/nf-core/custom/dumpsoftwareversions/main.nf +@@ -2,10 +2,10 @@ + label 'process_single' + + // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container +- conda "${moduleDir}/environment.yml" ++ conda "bioconda::multiqc=1.19" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/multiqc:1.17--pyhdfd78af_0' : +- 'biocontainers/multiqc:1.17--pyhdfd78af_0' }" ++ 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : ++ 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" + + input: + path versions + +************************************************************ diff --git a/modules/nf-core/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf index 7685b33cd..b2dcf480e 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/main.nf +++ b/modules/nf-core/custom/dumpsoftwareversions/main.nf @@ -2,10 +2,10 @@ process CUSTOM_DUMPSOFTWAREVERSIONS { label 'process_single' // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container - conda "${moduleDir}/environment.yml" + conda "bioconda::multiqc=1.19" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.17--pyhdfd78af_0' : - 'biocontainers/multiqc:1.17--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.19--pyhdfd78af_0' : + 'biocontainers/multiqc:1.19--pyhdfd78af_0' }" input: path versions From 0d859f7d877d2f57e486924e1621c5e0f24f5b7a Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 7 Jan 2024 10:13:08 +0000 Subject: [PATCH 59/62] [skip ci] Bump CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9925e0b2..45a107a87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ Special thanks to the following for their contributions to the release: | Dependency | Old version | New version | | ---------- | ----------- | ----------- | +| `multiqc` | 1.17 | 1.19 | | `qualimap` | 2.2.2d | 2.3 | | `rseqc` | 3.0.1 | 5.0.3 | From aa1e043cd1ff6e594acda1c35e006694c6005ba8 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 7 Jan 2024 10:17:42 +0000 Subject: [PATCH 60/62] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45a107a87..7f66ad420 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ Special thanks to the following for their contributions to the release: - [PR #1152](https://github.com/nf-core/rnaseq/pull/1152) - Bump container versions for tools using Docker V1 manifest ([#1140](https://github.com/nf-core/rnaseq/issues/1140)) - [PR #1154](https://github.com/nf-core/rnaseq/pull/1154) - Prerelease 3.14.0 fixes ([#1111](https://github.com/nf-core/rnaseq/issues/1111), [#1153](https://github.com/nf-core/rnaseq/issues/1153)) - [PR #1157](https://github.com/nf-core/rnaseq/pull/1157) - Add slash to `--outdir` for cloud tests to fix Azure validation issue +- [PR #1159](https://github.com/nf-core/rnaseq/pull/1159) - Issues loading MultiQC report ([#1158](https://github.com/nf-core/rnaseq/issues/1158)) ### Parameters From 46eaf78662fb04afbd53d47207924d1972a8a72a Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Sun, 7 Jan 2024 10:20:34 +0000 Subject: [PATCH 61/62] Fix prettier --- modules.json | 219 +++++++++++++-------------------------------------- 1 file changed, 54 insertions(+), 165 deletions(-) diff --git a/modules.json b/modules.json index cf86f6707..113f5139f 100644 --- a/modules.json +++ b/modules.json @@ -8,235 +8,169 @@ "bbmap/bbsplit": { "branch": "master", "git_sha": "de3e6fc949dcffb8d3508c015f435ace5773ff08", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", "git_sha": "5c460c5a4736974abde2843294f35307ee2b0e5e", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "bba7e362e4afead70653f84d8700588ea28d0f9e", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/custom/dumpsoftwareversions/custom-dumpsoftwareversions.diff" }, "custom/getchromsizes": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "fastp": { "branch": "master", "git_sha": "d497a4868ace3302016ea8ed4b395072d5e833cd", - "installed_by": [ - "fastq_fastqc_umitools_fastp", - "modules" - ], + "installed_by": ["fastq_fastqc_umitools_fastp", "modules"], "patch": "modules/nf-core/fastp/fastp.diff" }, "fastqc": { "branch": "master", "git_sha": "102cc9b709a6da9f7cee2373563ab1464fca9c0a", - "installed_by": [ - "fastq_fastqc_umitools_trimgalore", - "fastq_fastqc_umitools_fastp" - ], + "installed_by": ["fastq_fastqc_umitools_trimgalore", "fastq_fastqc_umitools_fastp"], "patch": "modules/nf-core/fastqc/fastqc.diff" }, "fq/subsample": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "modules", - "fastq_subsample_fq_salmon" - ] + "installed_by": ["modules", "fastq_subsample_fq_salmon"] }, "gffread": { "branch": "master", "git_sha": "4ab13872435962dadc239979554d13709e20bf29", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gunzip": { "branch": "master", "git_sha": "e06548bfa36ee31869b81041879dd6b3a83b1d57", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "hisat2/align": { "branch": "master", "git_sha": "a1881f6374506f9e031b7af814768cdb44a6a7d3", - "installed_by": [ - "fastq_align_hisat2" - ] + "installed_by": ["fastq_align_hisat2"] }, "hisat2/build": { "branch": "master", "git_sha": "f2f48836bf5c59434966a6c3b2211b29363f31ab", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "hisat2/extractsplicesites": { "branch": "master", "git_sha": "735e1e04e7e01751d2d6e97055bbdb6f70683cc1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kallisto/index": { "branch": "master", "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kallisto/quant": { "branch": "master", "git_sha": "bdc2a97ced7adc423acfa390742db83cab98c1ad", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "picard/markduplicates": { "branch": "master", "git_sha": "2ee934606f1fdf7fc1cb05d6e8abc13bec8ab448", - "installed_by": [ - "bam_markduplicates_picard" - ] + "installed_by": ["bam_markduplicates_picard"] }, "preseq/lcextrap": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "qualimap/rnaseq": { "branch": "master", "git_sha": "4657d98bc9f565e067c4d924126ce107056f5e2f", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/qualimap/rnaseq/qualimap-rnaseq.diff" }, "rsem/calculateexpression": { "branch": "master", "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "rsem/preparereference": { "branch": "master", "git_sha": "603ecbd9f45300c9788f197d2a15a005685b4220", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "rseqc/bamstat": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "bam_rseqc" - ], + "installed_by": ["bam_rseqc"], "patch": "modules/nf-core/rseqc/bamstat/rseqc-bamstat.diff" }, "rseqc/inferexperiment": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "bam_rseqc" - ], + "installed_by": ["bam_rseqc"], "patch": "modules/nf-core/rseqc/inferexperiment/rseqc-inferexperiment.diff" }, "rseqc/innerdistance": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "bam_rseqc" - ], + "installed_by": ["bam_rseqc"], "patch": "modules/nf-core/rseqc/innerdistance/rseqc-innerdistance.diff" }, "rseqc/junctionannotation": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "bam_rseqc" - ], + "installed_by": ["bam_rseqc"], "patch": "modules/nf-core/rseqc/junctionannotation/rseqc-junctionannotation.diff" }, "rseqc/junctionsaturation": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "bam_rseqc" - ], + "installed_by": ["bam_rseqc"], "patch": "modules/nf-core/rseqc/junctionsaturation/rseqc-junctionsaturation.diff" }, "rseqc/readdistribution": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "bam_rseqc" - ], + "installed_by": ["bam_rseqc"], "patch": "modules/nf-core/rseqc/readdistribution/rseqc-readdistribution.diff" }, "rseqc/readduplication": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "bam_rseqc" - ], + "installed_by": ["bam_rseqc"], "patch": "modules/nf-core/rseqc/readduplication/rseqc-readduplication.diff" }, "rseqc/tin": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "bam_rseqc" - ], + "installed_by": ["bam_rseqc"], "patch": "modules/nf-core/rseqc/tin/rseqc-tin.diff" }, "salmon/index": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "fastq_subsample_fq_salmon" - ] + "installed_by": ["fastq_subsample_fq_salmon"] }, "salmon/quant": { "branch": "master", "git_sha": "c5b528d0a51c31621b485ab3bcc008f483619ea6", - "installed_by": [ - "modules", - "fastq_subsample_fq_salmon" - ] + "installed_by": ["modules", "fastq_subsample_fq_salmon"] }, "samtools/flagstat": { "branch": "master", "git_sha": "570ec5bcfe19c49e16c9ca35a7a116563af6cc1c", - "installed_by": [ - "bam_stats_samtools" - ] + "installed_by": ["bam_stats_samtools"] }, "samtools/idxstats": { "branch": "master", "git_sha": "e662ab16e0c11f1e62983e21de9871f59371a639", - "installed_by": [ - "bam_stats_samtools" - ] + "installed_by": ["bam_stats_samtools"] }, "samtools/index": { "branch": "master", @@ -250,96 +184,69 @@ "samtools/sort": { "branch": "master", "git_sha": "a0f7be95788366c1923171e358da7d049eb440f9", - "installed_by": [ - "bam_sort_stats_samtools" - ] + "installed_by": ["bam_sort_stats_samtools"] }, "samtools/stats": { "branch": "master", "git_sha": "735e1e04e7e01751d2d6e97055bbdb6f70683cc1", - "installed_by": [ - "bam_stats_samtools" - ] + "installed_by": ["bam_stats_samtools"] }, "sortmerna": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "star/align": { "branch": "master", "git_sha": "cc08a888069f67cab8120259bddab8032d4c0fe3", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "star/genomegenerate": { "branch": "master", "git_sha": "cc08a888069f67cab8120259bddab8032d4c0fe3", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "stringtie/stringtie": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "subread/featurecounts": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "trimgalore": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "fastq_fastqc_umitools_trimgalore" - ] + "installed_by": ["fastq_fastqc_umitools_trimgalore"] }, "ucsc/bedclip": { "branch": "master", "git_sha": "240937a2a9c30298110753292be041188891f2cb", - "installed_by": [ - "bedgraph_bedclip_bedgraphtobigwig" - ] + "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] }, "ucsc/bedgraphtobigwig": { "branch": "master", "git_sha": "66290981ab6038ea86177ade40b9449bc790b0ce", - "installed_by": [ - "bedgraph_bedclip_bedgraphtobigwig" - ] + "installed_by": ["bedgraph_bedclip_bedgraphtobigwig"] }, "umitools/dedup": { "branch": "master", "git_sha": "7297204bf49273300a3dbfa4b7a4027c8683f1bd", - "installed_by": [ - "bam_dedup_stats_samtools_umitools" - ], + "installed_by": ["bam_dedup_stats_samtools_umitools"], "patch": "modules/nf-core/umitools/dedup/umitools-dedup.diff" }, "umitools/extract": { "branch": "master", "git_sha": "911696ea0b62df80e900ef244d7867d177971f73", - "installed_by": [ - "fastq_fastqc_umitools_fastp", - "fastq_fastqc_umitools_trimgalore" - ], + "installed_by": ["fastq_fastqc_umitools_fastp", "fastq_fastqc_umitools_trimgalore"], "patch": "modules/nf-core/umitools/extract/umitools-extract.diff" }, "untar": { "branch": "master", "git_sha": "d0b4fc03af52a1cc8c6fb4493b921b57352b1dd8", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } }, @@ -348,30 +255,22 @@ "bam_dedup_stats_samtools_umitools": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "bam_markduplicates_picard": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "bam_rseqc": { "branch": "master", "git_sha": "a9784afdd5dcda23b84e64db75dc591065d64653", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "bam_sort_stats_samtools": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": [ - "fastq_align_hisat2" - ] + "installed_by": ["fastq_align_hisat2"] }, "bam_stats_samtools": { "branch": "master", @@ -385,40 +284,30 @@ "bedgraph_bedclip_bedgraphtobigwig": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "fastq_align_hisat2": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_fastp": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "fastq_fastqc_umitools_trimgalore": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] }, "fastq_subsample_fq_salmon": { "branch": "master", "git_sha": "dedc0e31087f3306101c38835d051bf49789445a", - "installed_by": [ - "subworkflows" - ] + "installed_by": ["subworkflows"] } } } } } -} \ No newline at end of file +} From 36c89c1f1bd523820deb9a1363a6e9c52d3fc8b7 Mon Sep 17 00:00:00 2001 From: Harshil Patel Date: Mon, 8 Jan 2024 15:01:52 +0000 Subject: [PATCH 62/62] Final prerelease fixes --- .github/workflows/cloud_tests_full.yml | 36 ++++++++++++------------- .github/workflows/cloud_tests_small.yml | 29 +++++++++++--------- CHANGELOG.md | 4 ++- nextflow_schema.json | 2 +- 4 files changed, 39 insertions(+), 32 deletions(-) diff --git a/.github/workflows/cloud_tests_full.yml b/.github/workflows/cloud_tests_full.yml index 0396119f6..c7ba753bb 100644 --- a/.github/workflows/cloud_tests_full.yml +++ b/.github/workflows/cloud_tests_full.yml @@ -25,12 +25,12 @@ jobs: steps: - uses: seqeralabs/action-tower-launch@v2 with: - revision: ${{ github.sha }} workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} compute_env: ${{ secrets.TOWER_CE_AWS_CPU }} workdir: "${{ secrets.TOWER_BUCKET_AWS }}/work/rnaseq/work-${{ github.sha }}" run_name: "aws_rnaseq_full_${{ matrix.aligner }}" + revision: ${{ github.sha }} profiles: test_full_aws parameters: | { @@ -43,8 +43,8 @@ jobs: name: Tower debug log file path: tower_action_*.log - run-full-tests-on-gcp: - if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'gcp' || !github.event.inputs }} + run-full-tests-on-azure: + if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'azure' || !github.event.inputs }} runs-on: ubuntu-latest strategy: matrix: @@ -52,26 +52,27 @@ jobs: steps: - uses: seqeralabs/action-tower-launch@v2 with: - revision: ${{ github.sha }} workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} - compute_env: ${{ secrets.TOWER_CE_GCP_CPU }} - workdir: "${{ secrets.TOWER_BUCKET_GCP }}/work/rnaseq/work-${{ github.sha }}" - run_name: "gcp_rnaseq_full_${{ matrix.aligner }}" - profiles: test_full_gcp + compute_env: ${{ secrets.TOWER_CE_AZURE_CPU }} + workdir: "${{ secrets.TOWER_BUCKET_AZURE }}/work/rnaseq/work-${{ github.sha }}" + run_name: "azure_rnaseq_full_${{ matrix.aligner }}" + revision: ${{ github.sha }} + profiles: test_full_azure parameters: | { "hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}", "aligner": "${{ matrix.aligner }}", - "outdir": "${{ secrets.TOWER_BUCKET_GCP }}/rnaseq/results-${{ github.sha }}/aligner_${{ matrix.aligner }}/" + "outdir": "${{ secrets.TOWER_BUCKET_AZURE }}/rnaseq/results-${{ github.sha }}/aligner_${{ matrix.aligner }}/", + "igenomes_base": "${{ secrets.TOWER_IGENOMES_BASE_AZURE }}" } - uses: actions/upload-artifact@v3 with: name: Tower debug log file path: tower_action_*.log - run-full-tests-on-azure: - if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'azure' || !github.event.inputs }} + run-full-tests-on-gcp: + if: ${{ github.event.inputs.platform == 'gcp' || !github.event.inputs }} runs-on: ubuntu-latest strategy: matrix: @@ -79,19 +80,18 @@ jobs: steps: - uses: seqeralabs/action-tower-launch@v2 with: - revision: ${{ github.sha }} workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} - compute_env: ${{ secrets.TOWER_CE_AZURE_CPU }} - workdir: "${{ secrets.TOWER_BUCKET_AZURE }}/work/rnaseq/work-${{ github.sha }}" - run_name: "azure_rnaseq_full_${{ matrix.aligner }}" - profiles: test_full_azure + compute_env: ${{ secrets.TOWER_CE_GCP_CPU }} + workdir: "${{ secrets.TOWER_BUCKET_GCP }}/work/rnaseq/work-${{ github.sha }}" + run_name: "gcp_rnaseq_full_${{ matrix.aligner }}" + revision: ${{ github.sha }} + profiles: test_full_gcp parameters: | { "hook_url": "${{ secrets.MEGATESTS_ALERTS_SLACK_HOOK_URL }}", "aligner": "${{ matrix.aligner }}", - "outdir": "${{ secrets.TOWER_BUCKET_AZURE }}/rnaseq/results-${{ github.sha }}/aligner_${{ matrix.aligner }}/", - "igenomes_base": "${{ secrets.TOWER_IGENOMES_BASE_AZURE }}" + "outdir": "${{ secrets.TOWER_BUCKET_GCP }}/rnaseq/results-${{ github.sha }}/aligner_${{ matrix.aligner }}/" } - uses: actions/upload-artifact@v3 with: diff --git a/.github/workflows/cloud_tests_small.yml b/.github/workflows/cloud_tests_small.yml index 0fe3cddd1..69647ff04 100644 --- a/.github/workflows/cloud_tests_small.yml +++ b/.github/workflows/cloud_tests_small.yml @@ -25,6 +25,7 @@ jobs: compute_env: ${{ secrets.TOWER_CE_AWS_CPU }} workdir: "${{ secrets.TOWER_BUCKET_AWS }}/work/rnaseq/work-${{ github.sha }}" run_name: "aws_rnaseq_small" + revision: ${{ github.sha }} profiles: test parameters: | { @@ -34,41 +35,45 @@ jobs: with: name: Tower debug log file path: tower_action_*.log - run-small-tests-on-gcp: - if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'gcp' }} + + run-small-tests-on-azure: + if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'azure' }} runs-on: ubuntu-latest steps: - uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} - compute_env: ${{ secrets.TOWER_CE_GCP_CPU }} - workdir: "${{ secrets.TOWER_BUCKET_GCP }}/work/rnaseq/work-${{ github.sha }}" - run_name: "gcp_rnaseq_small" + compute_env: ${{ secrets.TOWER_CE_AZURE_CPU }} + workdir: "${{ secrets.TOWER_BUCKET_AZURE }}/work/rnaseq/work-${{ github.sha }}" + run_name: "azure_rnaseq_small" + revision: ${{ github.sha }} profiles: test parameters: | { - "outdir": "${{ secrets.TOWER_BUCKET_GCP }}/rnaseq/results-test-${{ github.sha }}/" + "outdir": "${{ secrets.TOWER_BUCKET_AZURE }}/rnaseq/results-test-${{ github.sha }}/" } - uses: actions/upload-artifact@v3 with: name: Tower debug log file path: tower_action_*.log - run-small-tests-on-azure: - if: ${{ github.event.inputs.platform == 'all' || github.event.inputs.platform == 'azure' }} + + run-small-tests-on-gcp: + if: ${{ github.event.inputs.platform == 'gcp' }} runs-on: ubuntu-latest steps: - uses: seqeralabs/action-tower-launch@v2 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} access_token: ${{ secrets.TOWER_ACCESS_TOKEN }} - compute_env: ${{ secrets.TOWER_CE_AZURE_CPU }} - workdir: "${{ secrets.TOWER_BUCKET_AZURE }}/work/rnaseq/work-${{ github.sha }}" - run_name: "azure_rnaseq_small" + compute_env: ${{ secrets.TOWER_CE_GCP_CPU }} + workdir: "${{ secrets.TOWER_BUCKET_GCP }}/work/rnaseq/work-${{ github.sha }}" + run_name: "gcp_rnaseq_small" + revision: ${{ github.sha }} profiles: test parameters: | { - "outdir": "${{ secrets.TOWER_BUCKET_AZURE }}/rnaseq/results-test-${{ github.sha }}/" + "outdir": "${{ secrets.TOWER_BUCKET_GCP }}/rnaseq/results-test-${{ github.sha }}/" } - uses: actions/upload-artifact@v3 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f66ad420..e2d4c8fc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v3.14.0 - 2024-01-08 +## [[3.14.0](https://github.com/nf-core/rnaseq/releases/tag/3.14.0)] - 2024-01-08 ### Credits @@ -17,6 +17,8 @@ Special thanks to the following for their contributions to the release: - [Phil Ewels](https://github.com/ewels) - [Vlad Savelyev](https://github.com/vladsavelyev) +Thank you to everyone else that has contributed by reporting bugs, enhancements or in any other way, shape or form. + ### Enhancements & fixes - [PR #1135](https://github.com/nf-core/rnaseq/pull/1135) - Update [action-tower-launch](https://github.com/marketplace/actions/action-tower-launch) to v2 which supports more variable handling diff --git a/nextflow_schema.json b/nextflow_schema.json index 36ba670c9..42e4e8967 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -403,7 +403,7 @@ }, "min_mapped_reads": { "type": "number", - "default": 5, + "default": 5.0, "fa_icon": "fas fa-percentage", "description": "Minimum percentage of uniquely mapped reads below which samples are removed from further processing.", "help_text": "Some downstream steps in the pipeline will fail if this threshold is too low."